Software Changes
• Change is inevitable in all large software projects.
• What are the reasons for changes?
• Business changes lead to new and changed system requirements
• New technologies open up new possibilities for improving implementations
• Changing platforms require application changes
• What is the results of applying changes?
• Change leads to rework so the costs of change include both rework
(e.g. re-analysing requirements) as well as the costs of implementing
new functionality
How to handle change? Or Cope up with
change?
• Change avoidance, where the software process includes activities that
can anticipate possible changes before significant rework is required.
• For example, a prototype system may be developed to show some key
features of the system to customers.
• Change tolerance, where the process is designed so that changes can
be accommodated at relatively low cost.
• This normally involves some form of incremental development. Proposed
changes may be implemented in increments that have not yet been
developed. If this is impossible, then only a single increment (a small part of
the system) may have be altered to incorporate the change.
Purpose of a prototype model?
• A prototype is an initial version of a system used to demonstrate
concepts and try out design options.
• A prototype can be used in:
• The requirements engineering process to help with requirements elicitation
and validation;
• In design processes to explore options and develop a UI design;
• In the testing process to run back-to-back tests.
Example of prototype
• A classic example of prototyping is the first consumer computer
mouse developed by Apple. After seeing a mouse designed by
Xerox, which was a complicated device costing several hundred
dollars to produce, Steve Jobs tasked design engineer
JimYurchenco to come up with something more simple and less
expensive. Yurchenco put together the first prototype in a few
hours, using a butter dish and the plastic ball from a roll-on
deodorant stick.
Prototype for a website interface
• Professional web developers usually spend some time
producing prototypes for their clients to illustrate how the
website will work and what its features will look like. If the client
wants changes, modifications can be made quickly because
none of the back-end code has been put in place yet. Only
when the client is satisfied with the prototype does the
developer invest the time to make a finished website.
Prototype Development Process
• Prototyping usually goes through a series of phases. A designer
typically sketches a few ideas, often on paper or even on a
napkin, before prototyping begins. Although the number of
stages may vary, there are usually five prototype stages,
followed by the final matured version of the product.
Appearance Model
• An appearance model may be images of the product developed
by a designer or a physical mock-up made with a 3D printer,
foam or cardboard. The images are more than sketches and are
usually a series of drawings used to explore different
configurations of the product. The primary use of an appearance
model is to examine and evaluate the size, color and visual
features of the product.
• If someone is starting a company based on a new product, it's
often the appearance model that is used when presenting the
business plan.
Proof of Concept
• Proof of concept is a quick and dirty assembly of the product.
Unlike an appearance model, it isn't always supposed to look
like the finished version. Instead, the focus is on the feasibility of
the idea to evaluate its performance or the performance of
some of its components.
• Designers use this prototype to consider risks and to determine
which components are needed in the final version. This can
include testing the user interface or evaluating specific technical
components. Primarily used for internal development, it can also
be used to present to investors to prove the concept works.
Alpha Prototype
• An alpha prototype usually resembles the finished product and
works much the same as the finished product is intended to
work. It's used for testing to evaluate design flaws and evaluate
the appearance of the product. User testing is sometimes done
with the alpha prototype.
• Developing the alpha prototype is more expensive than the
previous versions. It may take months to construct an alpha
prototype, while earlier prototypes may have been done in a
matter of days or weeks. It gives designers an idea of how the
final version will be produced because much of the process
involves constructing parts that will appear in the final design
and showing how they fit together.
Beta Prototype
• A beta prototype is a refined version of the alpha prototype. It's
as much as a 90% approximation of how the final product will
look and behave. It is usually made by the production
department rather than the design department, using the
machinery or tools that will be used to produce the final version.
• Several beta prototypes may be made for user testing or clinical
trials. It's with the beta prototype that production tests and
protocols are documented as the product is made and
assembled. Changes to the beta prototype usually involve minor
tweaks rather than major changes.
Pilot Production and Matured Product
• When the beta prototype testing is complete, companies usually
launch a pilot production of the product. The production and quality
management departments often take control of the project at this
point. They may produce up to 100 or so units of the product, which
are suitable to be released to the market or used for additional
clinical trials.
• After all the issues have been resolved with the pilot production, the
prototype development process is complete, and the product is ready
for its final stage as a matured product. Any modifications required
after testing of the pilot production are incorporated into the mature
product, which is the product released to the market.
• Reference : bizfluent
Some rapid prototyping tool (Reference Wiki)
• Sketch. Sketch is a vector-based design tool which helps you design
interfaces quickly and intuitively. ...
• Zeplin. Working with Sketch becomes really great when using it with
plugins. ...
• FIGMA. Figma is a relatively new tool, with almost the same interface
as Sketch. ...
• MockFlow. ...
• Balsamiq. ...
• Webflow. ...
• Flinto. ...
• Framer.
Advantages of Prototyping
• Improved system usability.
• A closer match to users’ real needs.
• Improved design quality.
• Improved maintainability.
• Reduced development effort
Process of Prototyping
Prototype development
• May be based on rapid prototyping languages or tools
• May involve leaving out functionality
• Prototype should focus on areas of the product that are not well-understood;
• Error checking and recovery may not be included in the prototype;
• Focus on functional rather than non-functional requirements such as
reliability and security
Throwaway prototypes
• Prototypes should be discarded after development as they are not a
good basis for a production system:
• It may be impossible to tune the system to meet non-functional
requirements;
• Prototypes are normally undocumented;
• The prototype structure is usually degraded through rapid change;
• The prototype probably will not meet normal organisational quality
standards.
Prototype and incremental delivery
• Rather than deliver the system as a single delivery, the development
and delivery is broken down into increments with each increment
delivering part of the required functionality.
• User requirements are prioritised and the highest priority
requirements are included in early increments.
• Once the development of an increment is started, the requirements
are frozen though requirements for later increments can continue to
evolve.
Incremental Approach to development
• Incremental development
• Develop the system in increments and evaluate each increment before
proceeding to the development of the next increment;
• Normal approach used in agile methods;
• Evaluation done by user/customer proxy.
• Incremental delivery
• Deploy an increment for use by end-users;
• More realistic evaluation about practical use of software;
• Difficult to implement for replacement systems as increments have less
functionality than the system being replaced.
Incremental delivery of software
Advantages of the incremental delivery
• Customer value can be delivered with each increment so system
functionality is available earlier.
• Early increments act as a prototype to help elicit requirements for
later increments.
• Lower risk of overall project failure.
• The highest priority system services tend to receive the most testing.
Disadvantages of the incremental delivery
• Most systems require a set of basic facilities that are used by different
parts of the system.
• As requirements are not defined in detail until an increment is to be
implemented, it can be hard to identify common facilities that are needed by
all increments.
• The essence of iterative processes is that the specification is
developed in conjunction with the software.
• However, this conflicts with the procurement model of many organizations,
where the complete system specification is part of the system development
contract
Boehm Spiral Model
• Process is represented as a spiral rather than as a sequence of
activities with backtracking.
• Each loop in the spiral represents a phase in the process.
• No fixed phases such as specification or design - loops in the spiral are
chosen depending on what is required.
• Risks are explicitly assessed and resolved throughout the process.
Boehms Spiral Model
Boehms Spiral Model
• Objective setting
• Specific objectives for the phase are identified.
• Risk assessment and reduction
• Risks are assessed and activities put in place to reduce the key risks.
• Development and validation
• A development model for the system is chosen which can be any of the
generic models.
• Planning
• The project is reviewed and the next phase of the spiral is planned.
Boehms Spiral Model
• Spiral model has been very influential in helping people think about
iteration in software processes and introducing the risk-driven
approach to development.
• In practice, however, the model is rarely used as published for
practical software development.
Rational Unified Process Model
• A modern generic process derived from the work on the UML and
associated process.
• Brings together aspects of the 3 generic process models discussed
previously.
• Normally described from 3 perspectives
• A dynamic perspective that shows phases over time;
• A static perspective that shows process activities;
• A practive perspective that suggests good practice
Phases in the Rational Unified Process
RUP Phases
• Inception
• Establish the business case for the system.
• Elaboration
• Develop an understanding of the problem domain and the system
architecture.
• Construction
• System design, programming and testing.
• Transition
• Deploy the system in its operating environment
RUP Phases
• In-phase iteration
• Each phase is iterative with results developed incrementally.
• Cross-phase iteration
• As shown by the loop in the RUP model, the whole set of phases may be
enacted incrementally.
RUP Workflows
Static Workflows
RUP MODEL
Good Practices
• Develop software iteratively
• Plan increments based on customer priorities and deliver highest priority
increments first.
• Manage requirements
• Explicitly document customer requirements and keep track of changes to
these requirements.
• Use component-based architectures
• Organize the system architecture as a set of reusable components.
Good Practices
• Visually model software
• Use graphical UML models to present static and dynamic views of the
software.
• Verify software quality
• Ensure that the software meet’s organizational quality standards.
• Control changes to software
• Manage software changes using a change management system and
configuration management tools.
References
• Ian Sommerville, Software Engineering, Pearson education, 9th
edition
• Wikipedia
• Bizfluent
• Prototyping for tiny fingers by Marc Rettig