Software Prototyping
Software Prototyping
Rapid software development to
validate requirements
Objectives
To describe the use of prototypes in different
types of development project
To discuss evolutionary and throw-away
prototyping
To introduce three rapid prototyping techniques -
high-level language development, database
programming and component reuse
To explain the need for user interface prototyping
Topics covered
Prototyping in the software process
Prototyping techniques
User interface prototyping
System prototyping
Prototyping is the rapid development of a system
In the past, the developed system was normally
thought of as inferior in some way to the required
system so further development was required
Now, the boundary between prototyping and
normal system development is blurred and many
systems are developed using an evolutionary
approach
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 benefits
Misunderstandings between software users and
developers are exposed
Missing services may be detected and confusing
services may be identified
A working system is available early in the process
The prototype may serve as a basis for deriving a
system specification
The system can support user training and system
testing
Prototyping process
Establish Define
Develop Evaluate
prototype prototype
prototype prototype
objectives functionality
Evolutionary Delivered
prototyping system
Outline
Requirements
Throw-away Executable Prototype +
Prototyping System Specification
Evolutionary prototyping
Must be used for systems where the specification
cannot be developed in advance e.g. AI systems
and user interface systems
Based on techniques which allow rapid system
iterations
Verification is impossible as there is no
specification. Validation means demonstrating the
adequacy of the system
Evolutionary prototyping
NO
Reusable
components
Delivered
Develop Validate software
software system system
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
Rapid prototyping techniques
Various techniques may be used for rapid
development
• Dynamic 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
Dynamic high-level languages
Languages which include powerful data
management facilities
Need a large run-time support system. Not
normally used for large system development
Some languages offer excellent UI development
facilities
Some languages have an integrated support
environment whose facilities may be used in the
prototype
Prototyping languages
Choice of prototyping language
What is the application domain of the problem?
What user interaction is required?
What support environment comes with the
language?
Different parts of the system may be programmed
in different languages. However, there may be
problems with language communications
Database programming languages
Domain specific languages for business systems
based around a database management system
Normally include a database query language, a screen
generator, a report generator and a spreadsheet.
May be integrated with a CASE toolset
The language + environment is sometimes known as
a fourth-generation language (4GL)
Cost-effective for small to medium sized business
systems
Database programming
Interface
generator Spreadsheet
DB Report
programming generator
language
Reusable Component
software Executable
composition
prototype
components framework
Control and
integration code
Compound documents
For some applications, a prototype can be created
by developing a compound document
This is a document with active elements (such as
a spreadsheet) that allow user computations
Each active element has an associated application
which is invoked when that element is selected
The document itself is the integrator for the
different applications
Application linking in compound documents
Compound document
Tree display
component
Problems with visual development
Difficult to coordinate team-based development
No explicit system architecture
Complex dependencies between parts of the
program can cause maintainability problems
User interface prototyping
It is impossible to pre-specify the look and feel of a
user interface in an effective way. prototyping is
essential
UI development consumes an increasing part of
overall system development costs
User interface generators may be used to ‘draw’ the
interface and simulate its functionality with
components associated with interface entities
Web interfaces may be prototyped using a web site
editor
Key points
A prototype can be used to give end-users a concrete
impression of the system’s capabilities
Prototyping is becoming increasingly used for
system development where rapid development is
essential
Throw-away prototyping is used to understand the
system requirements
In evolutionary prototyping, the system is developed
by evolving an initial version to the final version
Key points
Rapid development of prototypes is essential. This
may require leaving out functionality or relaxing non-
functional constraints
Prototyping techniques include the use of very high-
level languages, database programming and prototype
construction from reusable components
Prototyping is essential for parts of the system such as
the user interface which cannot be effectively pre-
specified. Users must be involved in prototype
evaluation