Software Prototyping
Rapid software
development to validate
requirements
Aim and Objectives
Aim
To understand Prototyping
Objectives
To understand
What a Prototype is
Prototype process
Horizontal Prototype
Vertical Prototype
Throw-away Prototype
Evolutionary Prototype
Prototyping
Designing and building a scaled down but functional
version of a desired system is known as PROTOTYPING
Prototyping could replace the System Development Life
Cycle
Alternatively Prototyping could augment the System
Development Life Cycle
Prototypes can be built using Programming Languages or
development tools
Uses of system prototypes
The principal use is to help customers and developers
understand the requirements for the system
Requirements elicitation. Users can experiment with a
prototype to see how the system supports their work
Requirements validation. The prototype can reveal errors
and omissions in the requirements
Prototyping can be considered as a risk reduction
activity which reduces requirements risks
Prototyping process
Establish Define
Develop Evaluate
prototype prototype
prototype prototype
objectives functionality
Prototyping Outline Executable Evaluation
plan definition prototype report
Prototype process
Analyst works with the user to determine the initial
requirements.
The analyst then quickly builds a prototype.
When the prototype is built the user works with it and
tells the analyst
What they like
What they don’t like
The analyst uses this feedback to improve the prototype
New version is reviewed by the customer
Prototyping benefits
Large extent to which the user is involved in the
requirement process.
Ability to capture the requirements in a concrete rather
than an abstract or verbal form
Improved system usability
Closer match to the system needed
Improved design quality
Improved maintainability
Reduced overall development effort
Prototyping in the software process
•Rapid Throwaway Prototyping
•Evolutionary Prototyping
•Incremental Prototyping
•Extreme Prototyping
Evolutionary prototyping
An approach to system development where an initial
prototype is produced and refined through a number of
stages to the final system
Throw-away prototyping
A prototype which is usually a practical implementation of
the system is produced to help discover requirements
problems and then discarded. The system is then
developed using some other development process
Prototyping objectives
The objective of evolutionary prototyping is to deliver
a working system to end-users. The development starts
with those requirements which are best understood.
The objective of throw-away prototyping is to validate
or derive the system requirements. The prototyping
process starts with those requirements which are poorly
understood
Approaches to prototyping
Evolutionary Delivered
prototyping system
Outline
Requirements
Throw-away Executable Prototype +
Prototyping System Specification
Evolutionary prototyping
Develop abstract Build prototype Use prototype
specification system system
Refine
N
Until
Acceptable
Deliver YES System
system adequate?
Evolutionary prototyping
A key aspect of this approach is that the prototype
becomes the actual production system
Start with the parts of the system that are most difficult and
uncertain
If the difficult parts can be modelled then the rest of the
system should follow without much difficulty.
If the difficult parts can not be modelled then consider
cancelling the project.
Must be used for systems where the specification cannot be
developed in advance e.g. user interface systems
Specification, design and implementation are inter-twined
Techniques for rapid system development are used such as
CASE tools and 4GLs
User interfaces are usually developed using a GUI
development toolkit
Evolutionary prototyping advantages
Accelerated delivery of the system
Rapid delivery and deployment are sometimes more
important than functionality or long-term software
maintainability
User engagement with the system
Not only is the system more likely to meet user
requirements, they are more likely to commit to the use
of the system
Evolutionary prototyping
problems
Management problems
Existing management processes assume a waterfall model
of development
Specialist skills are required which may not be available in
all development teams
Maintenance problems
Continual change tends to corrupt system structure so
long-term maintenance is expensive
Contractual problems
No detailed system specification on which to base a
contract.
Evolutionary prototyping
problems
Prototypes are designed to handle typical cases.
It is reckoned that 90% of system design handles
exceptional cases.
Though prototyping is good at developing easy to see
functionality, there are a lot of other areas that
could be missed because they are not easily viewed
such as:-
Facilitating database access
Database integrity
System security
Multi-platform support
Scalability
Throw-away prototyping
Used to reduce requirements risk
The prototype is developed from an initial specification,
delivered for experiment then discarded
Outline Develop Evaluate Specify
requirements prototype prototype system
Reusable
components
Delivered
Develop Validate software
software system system
Throwaway prototyping
Never any intention to keep the prototype
Developed quickly to demonstrate
some aspects of a system design that is unclear
Help users decide between different features or interface
characteristics
When the uncertainity of the requirements are reduced
the prototype can be discarded
The principles of the prototype can then be applied to
the design specification
Prototype delivery
Developers may be pressurised to deliver a throw-away
prototype as a final system
This is not recommended
It may be impossible to tune the prototype to meet non-
functional requirements
The prototype is inevitably undocumented
The system structure will be degraded through changes
made during development
Normal organisational quality standards may not have been
applied
Incremental development
System is developed and delivered in increments after
establishing an overall architecture
Requirements and specifications for each increment
may be developed
Users may experiment with delivered increments while
others are being developed. therefore, these serve as a
form of prototype system
Intended to combine some of the advantages of
prototyping but with a more manageable process and
better system structure
Incremental development
process
Define system
deliverables
Design system Specify system Build system Validate
architectur e increment increment increment
NO
Deliver final System Validate Integrate
system complete? system increment
YES
Rapid prototyping techniques
Various techniques may be used for rapid development
High-level language development
Database programming
Component and application assembly
These are not exclusive techniques - they are often
used together
Visual programming is an inherent part of most
prototype development systems
Visual programming
Languages such as Visual Basic support visual
programming where the prototype is developed by
creating a user interface from standard items and
associating components with these items
A large library of components exists to support this type
of development
These may be tailored to suit the specific application
requirements
Visual programming with
reuse
Hypertext
Date component display component
File Edit Views Layout Options Help
General
12th January 2000 Index
Range checking 3.876
script
User prompt
component +
Draw canvas script
component
Tree display
component
Where to use:
Small project
No parallel (no large number of modules)
Else increase risk
No updation
Testing
Poor documentation
Summary
Prototype - Designing and building a scaled down but functional version of a desired system
Horizontal Prototype
Horizontal prototypes demonstrate a broad spectrum of the product's features, but
without extensive functionality behind each function.
Vertical Prototype
Vertical prototyping involves testing the exact functionality of a small section of your
site.
Evolutionary prototyping
An initial prototype is produced and refined through a number of stages to the final
system
Throw-away prototyping
A prototype which is usually a practical implementation of the system is produced to
help discover requirements problems and then discarded. The system is then
developed using some other development process
Prototype process -
Establish Define
Develop Evaluate
prototype prototype
prototype prototype
objectives functionality
Prototyping Outline Executable Evaluation
plan definition prototype report