Before a software development project can be taken up; a feasibility study is required to find out if it is financially and technically feasible to do so. A financial feasibility study will entail whether the costs for developing a software product can be justified from the view of revenue generation opportunities or cutting costs. A technical feasibility study will entail whether it is technically possible to build the software product given the current technology possibilities.
Only after it is found that it is financially and technically feasible to do so; the software development project can be taken up.
For finding out feasibility for a software development project; a software prototype is developed. There are 2 approaches to build a software prototype: throwaway prototype and evolutionary prototype.
A throwaway prototype is used when the development team needs to build and show a prototype to the end users in a short time. One more goal for developing such a prototype is that it should not be costly to develop it. Once the end users approve the prototype then the development team will discard the source code written for building the prototype. The prototype will only be used to create requirement specifications.
An evolutionary prototype is used when the development team needs to build a robust prototype. This prototype can be used to create the software product. The source code written for building the prototype will be used in building the software product. Since the source code of the prototype will be reused for building the software product; the quality of the source code should be very high. The name of this kind of prototypes: ‘evolutionary’ specifies that the prototype evolves to become the software product.
In both types of prototypes, the prototyping is an evolutionary phenomenon. The development team keeps refining the prototype until the end users find it suitable for their use. In each evolution of the prototype, user feedback is incorporated. The difference in approach between the 2 is that while throwaway prototyping uses superficial way of building product features. This type of prototype may look and feel like the actual product at the user screen level but may have bare minimum source code written for implementing the business logic.
The evolutionary prototype on the other hand will have at least some business logic written so that the prototype actually works. Since good quality of source code needs to be written for such a prototype, it will take time and will be costly to build such a prototype.
A throwaway prototype is mostly used with waterfall model based software development projects. Evolutionary prototypes can be used with agile projects.