The nature of prototyping as a method for developing computer systems is described
in some detail in many textbooks. However a good definition of prototyping is:
“building a physical, working model of the proposed system, and using it to identify
weaknesses in our understanding of the requirements for this system”
There are two basic approaches to prototyping. The first is throwaway prototyping
and the second is evolutionary prototyping. Throwaway prototyping involves creating
a working model of various parts of the system at a very early stage, after a short
investigation. The important factor is the speed at which the prototype is built. The
method used to build it is of secondary importance. The model is used to clarify
requirements and examine the expectations of users from the computer system.
When this has been achieved the prototype is thrown away, and the computer system
is developed using other methods.
On the other hand, evolutionary prototyping takes place after more considered and
careful investigation. More structured methods are used to build the prototype. The
reason for this is that the resulting working model, rather than being thrown away,
forms the heart of the new computer system. Additional requirements and extensions
are added to this prototype. Prototyping and the RAD method are often linked as
RAD often produces prototypes of this form.
Prototyping has always been a common technique in other engineering disciplines.
However, until recently, it had not been feasible in software engineering. The
programming languages available were insufficiently powerful to permit rapid
construction of working models. However, the advent of fourth generation languages,
the wider uptake of reuse libraries and greater use of CASE tools have made
prototyping possible. And it has been taken up with a vengeance.
Loucopoulos P. & Karakostas V., 1995, ‘System Requirements Engineering’, MacGraw-Hill.
Pressman R.S., 1992, ‘Software Engineering: A Practitioner’s Approach’, McGraw-Hill.
Reference: Reference: Neil Maiden (2011) Requirements Engineering Lecture Notes