Prototyping


Prototyping is an iterative, experimental, evolutionary method of building a system or a model of a system. It relies on effective communication between the developer and the end user. Feedback from the end user results in further refinement of the model until it finally meets the user's needs and expectations.

The advantages of prototyping are:

  • faster development
  • easier for end users to learn/use
  • fewer changes needed after implementation
  • development backlog decreases
  • end-user involvement
  • users know what to expect at implementation
  • user/analyst communication enhanced
  • user requirements easier to determine
  • development costs reduced

The advantages of prototyping include the potential for making changes early in the process, stopping development on an unworkable system, and developing a system that more closely meets the needs and expectations of the end user. Disadvantages include the fact that managing the process may be more difficult because of its rapid, iterative nature. Also, incomplete prototypes may be regarded as complete systems.

Kinds of Prototypes

  1. Patched-up
    A quick-and-dirty effort; it works with all the necessary features but it may not be efficient. Needs additional refinement.
  2. Non-Working Scale Model
    Allows testing of some aspect of the design. Examples: Mock-up of an auto for wind tunnel tests; prototyping just the I-O routines of a new information system.
  3. First Full-Scale Models ("Pilot")
    Fully functional, completely operational, such as the first airplane of a series. Allows the user to experience the system but before it has been mass produced or deployed.
  4. Selected Features
    Prototype which contains only some of the essential system features. Example: menu system with blank slots or placeholders for routines that are not implemented. (Unlike #2, this is a working system however.)

Another Way to Classify Prototypes

  1. Type I - Iterative
    An almost trial-and-error cycle of development followed by review and suggestions from the user leading to further revisions. The final revision is put into production.
  2. Type II - Throw Away
    Also iterative in nature, however the final revision of the model is rewritten using traditional tools (e.g., 3GL programming languages) and the model is discarded.

Prototyping is possible now because of the existence of 4GL and other Rapid Application Development tools, and the availability of PC's to provide an isolated, test environment for experimentation.

Because prototyping allows for rapid development it can be an alternative to the traditional SDLC method. Why is prototyping faster?

  • It can be difficult for the user to know exactly what they need before having some hands-on version of the system. Not until they have something in hand to use and experiment with do they see what may be missing or needs improvement.
  • It is easier for the user to see and understand the system when he or she has some working version of it. The end user probably does not relate well to traditional system analysis and documentation tools such as flow charts, hierarchy charts, data flow diagrams, and entity-relationship diagrams.
  • The traditional SDLC approach is very documentation-oriented. This can be very time consuming. Complex information systems may require months or even years to complete. Traditional SDLC does not shorten that time; in fact the extensive documentation may actually increase the time needed for complete development.

One of the reasons prototyping can allow for more rapid development is the nature of the tools themselves. 4GL tools by their nature allow for more rapid development than 3GL programming languages.

Another reason prototyping may be faster is that it facilitates more effective communication with the end user. Communication is enhanced because it is in the user's terms rather than in the analyst's terms inasmuch as the user is able to experience the kinds of screens and reports that will be in use when the system is deployed as opposed to technical tools such as data flow diagrams.

Also, the implementation phase may be more rapid because the user knows what to expect. And, in fact, by participating so closely in the development of the system, the user has "taken ownership" of the system, may be more tolerant of minor flaws, and may act as a champion of the new system in helping to "sell it" to the rest of the organization.

Prototyping is appropriate for the development of online interactive systems when the potential capabilities of the system are beyond the user's experience. It is less suited for batch-oriented applications or highly complex mathematical processes.