Evolutionary delivery

Evolutionary Delivery is a lifecycle model that strikes a balance between Staged Delivery’s control and Evolutionary Prototyping’s flexibility.

It provides its rapid-development benefit by delivering selected portions of the software earlier than would otherwise be possible but it does not necessarily deliver the final software product any faster. It provides some ability to change product direction mid-course in response to customer requests.

Evolutionary Delivery has been used successfully on in-house business software and shrink-wrap software. Used thoughtfully , it can lead to improved product quality, reduced code size and more even distribution of development and testing procedures.

As with other lifecycle models, Evolutionary Delivery is a whole-project practice: if we want to use it, we need to start planning to use it early in the project(s).

Efficacy

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

Major Risks

  • Feature creep
  • Diminished project control
  • Unrealistic schedule and budget expectations
  • Inefficient use of development time by developers

Major Interaction and Trade-Offs

Repeat this cycle until we run out of time, run out of money, we complete the iterations planned or the user is satisfied.

With the evolutionary-delivery model we draw from the control we get with staged delivery and the flexibility we get with evolutionary prototyping. We can tailor it to provide as much control or flexibility as we need.