Evolutionary prototyping

Evolutionary Prototyping is a lifecycle model in which the system is developed in increments so that it can readily be modified in response to end-user and customer feedback.

Most evolutionary-prototyping efforts begin by prototyping the user interface and then evolving the completed system from that, but prototyping can start with any high risk area.

Evolutionary Prototyping is not the same as Throwaway Prototyping and making the right choice about whether to develop an evolutionary prototype or a throwaway prototype is one key to success.

Other keys to success include using experienced developers, managing schedule and budget expectations and managing the prototyping activity itself.

Efficacy

  • Potential reduction from nominal schedule: Excellent
  • Improvement in progress visibility:  Excellent
  • Effect on schedule risk:  Increased Risk
  • Chance of first-time success:  Very Good
  • Chance of long-term success:  Excellent

Major Risks

  • Unrealistic schedule and budget expectations
  • Inefficient use of prototyping time
  • Unrealistic performance expectations
  • Poor design
  • Poor maintainability

Major Interaction and Trade-Offs

With evolutionary prototyping, we start by designing and implementing the most prominent parts of the program in a prototype and then adding to and refining the prototype until we are done. The prototype becomes the software that we would eventually release.

Evolutionary prototyping is especially useful when requirements are changing rapidly, when users are reluctant to commit to a set of requirements or when neither us or the user understands the application area well.