Page 62 -
P. 62
2.3 Coping with change 45
Establish Define
Prototype Prototype Develop Evaluate
Objectives Functionality Prototype Prototype
Figure 2.9 The process Prototyping Outline Executable Evaluation
of prototype Plan Definition Prototype Report
development
2.3.1 Prototyping
A prototype is an initial version of a software system that is used to demonstrate
concepts, try out design options, and find out more about the problem and its possi-
ble solutions. Rapid, iterative development of the prototype is essential so that costs
are controlled and system stakeholders can experiment with the prototype early in
the software process.
A software prototype can be used in a software development process to help
anticipate changes that may be required:
1. In the requirements engineering process, a prototype can help with the elicita-
tion and validation of system requirements.
2. In the system design process, a prototype can be used to explore particular soft-
ware solutions and to support user interface design.
System prototypes allow users to see how well the system supports their work.
They may get new ideas for requirements, and find areas of strength and weakness in
the software. They may then propose new system requirements. Furthermore, as the
prototype is developed, it may reveal errors and omissions in the requirements that
have been proposed. A function described in a specification may seem useful and well
defined. However, when that function is combined with other functions, users often
find that their initial view was incorrect or incomplete. The system specification may
then be modified to reflect their changed understanding of the requirements.
A system prototype may be used while the system is being designed to carry out
design experiments to check the feasibility of a proposed design. For example, a
database design may be prototyped and tested to check that it supports efficient data
access for the most common user queries. Prototyping is also an essential part of the
user interface design process. Because of the dynamic nature of user interfaces, tex-
tual descriptions and diagrams are not good enough for expressing the user interface
requirements. Therefore, rapid prototyping with end-user involvement is the only
sensible way to develop graphical user interfaces for software systems.
A process model for prototype development is shown in Figure 2.9. The objec-
tives of prototyping should be made explicit from the start of the process. These may
be to develop a system to prototype the user interface, to develop a system to validate
functional system requirements, or to develop a system to demonstrate the feasibility