A prototype is a working model of one or more aspects of the projected system. It is constructed and tested quickly and inexpensively in order to test out assumptions.
Prototypes can be classified as throw -away, evolutionary or incremental.
Throw-away prototypes Here the prototype is used only to test out some ideas and is then discarded when the development of the operational system is commenced. The prototype could be developed using a different software environment (for example, a 4GL as opposed to a 3GL for the final system where machine efficiency is important) or even on a different kind of hardware platform.
Evolutionary prototypes The prototype is developed and modified until it is finally in a state where it can become the operational system. In this case, the standards that are used to develop the software have to be carefully considered.
A good book on the general topic of prototyping is R. Vbnk's Prototyping: the effective use of CASE Technology. Prentice Hall, 1990.
The most important justification lor a prototype is the need to reduce uncertainty by conducting an experiment.
Incremental prototypes It could be argued that this is, strictly speaking, not prototyping. The operational system is developed and implemented in small stages so that the feed-back from the earlier stages can influence the development of the later stages.
Some of the reasons that have been put forward for prototyping are the following.
learning by doing When we have just done something for the first time we can usually look back and see w here we have made mistakes.
Improved communication Users are often reluctant to read the massive documents produced by structured methods. Even if they do read this documentation, they do not get a feel for how the system is likely to work in practice.
Improved user involvement The users may be more actively involved in design decisions about the new system.
Clarification of partially-known requirements Where there is no existing system to mimic, users can often get a better idea of what might be useful to them in a potential system by try ing out prototypes.
Demonstration of the consistency and completeness of a specification Any mechanism that attempts to implement a specification on a computer is likely to uncover ambiguities and omissions.
Reduced need for documentation Because a working prototype can be examined, there is less need for detailed documentation. Some may argue, however, that this is a very dangerous suggestion.
Reduced maintenance costs (that is, changes after the system goes live) If the user is unable to suggest modifications at the prototyping stage the chances are that they will ask for the changes as modifications to the operational system. This reduction of maintenance costs is the main plank in the financial case for creating prototypes.
Feature constraint If an application building tool is used, then the prototype w ill tend to have features that are easily implemented by that tool. A paper-based design might suggest features that are expensive to implement.
Production of expected results The problem with creating test runs is generally not the creation of the test data but the accurate calculation of the expected results. A prototype can be of assistance here.
Software prototyping is not without its draw backs and dangers, however.
Users sometimes misunderstand the role of the prototype For example, they might expect the prototype to be as robust as an operational system w hen incorrect data is entered or they might expect the prototype to have as fast a response as the operational system, although this was not the intention.
l^ck of project standards possible Evolutionary prototyping could just be an excuse for a sloppy 'hack it out and see what happens* approach.
Lack of control It is sometimes difficult to control the prototyping cycle as the driving force could be the users' propensity to try out new things.
Additional expense Building and exercising a prototype will incur additional expenses. The additional expense might be less than expected, however, because many analysis and design tasks would have to be undertaken anyway. Some research suggests that typically there is a extra cost to produce a prototype.
Machine efficiency A system built through prototyping, while sensitive to the users' needs, might not be as efficient in machine terms as one developed using more conventional methods.
Close proximity of developers Prototyping often means that code developers have to be sited close to the users. One trend has been for organizations in developed countries to get program coding done cheaply in Third World countries such as India. Prototyping generally w ill not allow this.
Was this article helpful?
What you need to know about… Project Management Made Easy! Project management consists of more than just a large building project and can encompass small projects as well. No matter what the size of your project, you need to have some sort of project management. How you manage your project has everything to do with its outcome.