Software development occurs in context of system development process: Desired characteristics
are not well known in advance. Using prototyping, the analyst can provide a practical demonstration of the relevant parts of the software to the client. This ensures better communication about requirements, and a mechanism through which to get feedback. Prototyping interactive systems enhances communication regarding suitability of human-computer interfaces. Further, they can be used to demonstrate technical, economic, & political feasibility.
In prototyping, we are interested in the PROCESS rather than the PROTOTYPE.
- Functional Selection: range of functions never same as final software product.
- Construction: emphasis on intended evaluation disregarding data validity.
- Evaluation: need a test plan & evaluation resources & all relevant user groups.
- Further Use: Throwaway learning vehicle versus component of a larger system.
Types of Prototyping
Exploratory: Clarify information requirements & desirable features & alternative design
- Analysts knows little about the business & user knows little about what is possible
with computers. Make explicit what users like & dislike & how it should be taken into account into the target
- The requirements & functional analysis of the prototype language are different from the
production language, and the prototype effort should be minimized.
Experimental: Test the adequacy of proposed solutions before large-scale implementation.
- This is a proposed system is tried out!
- A full functional simulation prototype exhibits all functions of the target system - system may not
work as a production system due to inefficiencies or data validation. A partial functional simulation prototype used to test a proposed algorithm. A human interface simulation prototype looks like a real system but there may not be real data behind the
program. Skeleton Prototyping involves a few system functions prototyped as being relevant & users perform some
normal work tasks & extend experiences to other not prototyped tasks.
Evolutionary: Adapting system gradually to changing requirements.
- System context evolves & new requirements emerge & the application once in use transforms its
usage context & causes new requirements to emerge.
- Incremental Development & stepwise extension of the system & (re)design, (re)implement,
Modular Design & Dialogue Design & Simulation.
Tools: High-level Languages & data base management systems & dialogue definition systems &
specification languages & symbolic execution systems.
Dangers: Badly thought out designs & never ending development & sabotaged system