Prototyping approach, also known as evolutionary approach, came to picture because of failures that occurred in the final version of the software application developed using the waterfall approach. The failure generally occurs because of the changes in the requirement of the proposed system or because of the gap in understanding the customer requirement by the development team. A gap in the first version of the developed application, inevitably leads to the need for redoing the application. To overcome these limitations, the concept of prototyping was introduced.
A prototype is the sample implementation of the system that shows limited and main functional capabilities of the proposed system. After a prototype is built, it is delivered to the customer for the evaluation. The prototype helps the customer determine how the feature will function in the final software. The customer provides suggestion and improvements on the prototype. The development team implements the suggestion in the new prototype, which is again evaluated by the customer. The process continues until the customer and the development team understands the exact requirement of the proposed system. When the final prototype is developed, the requirement is considered to be frozen.
The prototyping approach is used in the requirement gathering and in the analysis phase to capture the exact requirement of the proposed system. After the requirements are frozen, the remaining phases of the development process needs to be executed to complete the development of the software system.
An e-commerce website, such as shopping site is an example where you can implement the prototyping approach. You can develop the prototype of the various web pages of the shopping site such as catalogue page, product order page etc., and present it to the customer for approval. If the customer approves the prototype of the site, requirements are states again and the design of the web site is initiated. If the customer does not approve the web site, the development team revisits the prototype and resubmits it to the customer for approval. This process continues until the prototype is approved.
Prototypes are of two types:
Throwaway prototypes: Prototypes that are eventually discarded rather than becoming a part of the finally delivered software. Examples of throwaway prototypes include screen mock-ups and story boards.
Evolutionary Prototypes: prototypes that evolve into the final system through iterative incorporation of user feedback.
Although prototyping is a very useful technique to obtain accurate requirements of the system and to speed up the development process, it has some disadvantage associated with it. Some disadvantages of Prototyping are:
It gives client a false impression that a few minor changes to the prototype will give them the required system.
It may comprise on the overall quality of the software in the rush to develop the prototype. For example, the developer may use insufficient algorithm or inappropriate programming languages for developing the prototype quickly and the same may find place in the final application thus leading to insufficient code running in the final application.