Chapter 8. Software Prototyping
-. The benefits of developing a prototype early in the software process are :
(1) Misunderstandings between software developers and users may be identified as the system functions
are demonstrated.
(2) Missing user services may be detected.
(3) Difficult-to-use or confusing user services may be identified and refined.
(4) Software development staff may find incomplete and/or inconsistent requirements as the prototype is
developed.
(5) A working, albeit limited, system is available quickly to demonstrate the feasibility and usefulness of
the application to management.
(6) The prototype serces as a basis for writing the specification for a production quality system.
-. Software prototypes also have other uses:
(1) User training
(2) System testing
-. The final stage of the process is prototype evaluation.
-. There are non-technical managerial problems which may make it difficult to use prototyping in some organizations.
8.1 Prototyping in the software process
-. One way of tackling this difficulty is to use an evolutionary approach to systems development.
-. Alternatively, a deliverate decision mignt be made to build a 'throw-away' prototype to help requirements analysis
and validation.
-. There is an important difference between the objectives of evolutionary and throw-away programming:
(1) The objective of evolutionary prototyping is to deliver a working system to end-users.
(2) The objective of throw-away prototyping is to validate or derive the system requirements.
8.1.1 Evolutionary prototyping
-. There are three main problems with evolutionary prototyping which are particularly important when large,
long-lifetime systems are to be developed:
-. Difficulties do not mean that evolutionary prototyping should be rejected.
8.1.2 Throw-away prototyping
-. This approach extends the requirements analysis process with the intention of reducing overall lige cycle costs.
-. Customers and end-users should resist the temptation to turn the throw-away prototyping into a delivered system
that is put into use.
8.1.3 Incremental development
-. This incremental development model involves developing the requirements and delivering the system in an
incremental fashion.
-. Incremental development is more manageable than evolutionary prototyping as the normal software process
standards are followed.
-. A problem with incremental development is that the system architecture has to be estabilished before the
requirements are complete.
8.2 Prototyping techniques
-. There are a number of techniques which have been used for system prototyping. These include:
+. Executable specification languages,
+. very high level language,
+. application generators and fourth-generation languages,
+. composition of reusable components.
8.2.1 Executable specification languages
-. There are practical difficulties in applying this approach.
8.2.2 Very high level languages
-. Very high level languages are programming languages which include powerful data management facilities.
-. Very high level dynamic languages are not normally used for large system development because they
need a large run-time support system.
8.2.3 Fourth-generation languages
-. Fourth-generation languages are successful because there is a great deal of commonality across data
processing applications.
-. There is no standardization or uniformity across fourth-generation languages.
8.2.4 Composition of reusable components
-. Prototyping with reusable components involves developing a system specification by taking account of
what reusable components are available.
-. Prototyping using reusable components is often combined with other approaches using very high level
or fourth-generation languages.
8.3 User interface prototyping
-. Interface generation systems may be based aroun user interface management systems which provide basic user interface
functionality such as menu selection, object display and so on.
-. From a software engineering point of view, it is important to realize that user interface prototyping is an essential part
of the process.