Prototyping

From Dr. Joey Paquet Web Site
Jump to: navigation, search

A prototype is an operational model that is functionally equivalent to a subset of the product. Prototyping techniques can be used in various manners and even introduced as part of some software development models. By definition, prototyping is not a process, but only a tool that can be used as part of a process in order to increase feedback. There are two approaches to prototyping:

Throw-away prototyping

The objectives of throw-away prototyping are to :

  • Validate or derive the system requirements.
  • Come to an agreement with the client on what is the problem to be solved.
  • The prototype is thrown away after it has been validated by the client.
  • Can be used in conjunction with any other software process, at the level of analysis.
  • Get user feedback on the look and feel of the system before it is designed.
  • Provide feedback in the early stages, so that less usage of the feedback loops/iterations in the development results in less modifications to the product as it is being developed.
  • Throwing away has to be enforced:
    • Performance, security, robustness was not taken into consideration.
    • Changes have been made in an uncontrollable manner.
    • The requirements and specification are materialized as code, this is not sufficient support for design.

Evolutionary prototyping

Evolutionary prototyping is highly similar to prototyping, with the notable exception that the prototype is gradually improved following user feedback, with the general goal of eventually forming a final version that will become operational. The objectives and limitations of evolutionary prototyping are :

  • Allows to deliver a working system to the client from incremental improvements to the prototype.
  • Can be a solution to develop early solutions to open problems.
  • Can easily degenerate to a build-and-fix development model if a proper development process is not followed.
  • With fast evolution, it is hard and not cost effective to produce good documentation.
  • Highly specialized skills are needed, along with experience to come to good results.
  • Evolutionary prototyping + good development process = incremental models.