Software prototyping, refers to the activity of making prototypes of software applications, i.e., incomplete versions of the software program being developed. It is an activity that can occur in software development and is comparable to prototyping in other fields. A prototype typically simulates the final product.
Prototype models have one specialty, they can used as a standalone process model or it can be used in combination with other models. Actually while developing a software product prototyping can be combined with any other model.
Prototype model is generally used when the requirements are unclear. It is used when the customer is unclear about the details of the input, process and the output needs of the software.
In such situation Prototype Model is the most suitable approach.
Like other models prototype model also starts with the communication phase between the software engineer and customer.
In prototyping quick iteration are planned and quick modeling occurs.
The quick design emphasizes on a representation of those features of the software visible to the customer or end-user. In a simple language the input forms and output reports are quickly designed by the software engineers and are shown to the customers.
The prototype is implemented and then assessed by the customer or user. An important thing is feedback from the customer is used to refine requirements for the software.
The prototyping is tuned and iterated till the customer satisfaction. At the same time developers perfectly understands what the customers’ needs are and how to fulfill them.
The prototype mainly serves a mechanism for identifying software needs. If a working prototype is built, the developer tries to make use of existing program fragments or applies some tools like report generators, windows managers, etc.
These tools allow working programs to be created very fast. It is true and even visible that both customers as well as developers like the prototype development model. Users can actually view the future system which is going to get develop.