Before starting out with Prototype model in software engineering first, let us see what is prototyping in software?
Software prototyping, refers to the activity of creating 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 only a few aspects of, and may be completely different from, the final product.
Source: Wikipedia.com
Prototype models have one specialty, they can use 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.
The prototype model is 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 is 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 understand what the customer’s 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 view the future system which is going to get develop.
Though there are many advantages of the prototype model, there are some drawbacks too.
Drawback Of Prototype Model:
1. The customer just views the appearance of working version of the software. But they do not understand that due to rush to get it done affects overall software quality or long-term maintainability of the software product.
2. In the case when the customer is informed that the product must be rebuilt to maintain high levels of quality, the customer may not be comfortable with it.
They think that there are just a few changes to make in prototype and the then product will be working product. Many times due to this problem the management of the software development company gives up.
3. The developer often makes implementation compromises to get a prototype working quickly.
An inappropriate operating system or programming language may be used solely because it this available and known; an inefficient algorithm may be implemented just to demonstrate capability.
4. After a time, the developer may become comfortable with these choices and forget all the reasons why they were inappropriate. The less than ideal choice has how to become an integral part of the system.
Although problems can occur, prototyping can be a useful paradigm for software engineering. The key is to define rules of the game at the beginning.
The customer and developer must both agree that the prototype is built to serve as a mechanism for determining requirements. It is then discarded, and the actual software is engineering with an eye toward quality.
We have also discussed various software engineering models previously before like