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
   57   58   59   60   61   62   63   64   65   66   67