- Iterative Development
- Risk-Driven and Client-Driven Iterative Planning
- Timeboxed Iterative Development
- During the Iteration, No Changes from External Stakeholders
- Evolutionary and Adaptive Development
- Evolutionary Requirements Analysis
- Early "Top Ten" High-Level Requirements and Skillful Analysis
- Evolutionary and Adaptive Planning
- Incremental Delivery
- Evolutionary Delivery
- The Most Common Mistake?
- Specific Iterative & Evolutionary Methods
- What's Next?
- Recommended Readings
Evolutionary and Adaptive Planning
As with evolutionary requirements, with evolutionary and adaptive planning it is not the case that estimates and schedules are forever unbounded or unknown. Yet, due to early requirements change and other factors, there is an initial phase of high uncertainty, which drops as time passes and information accumulates. This has been called the cone of uncertainty (Figure 2.5) [McConnell98].
Figure 2.5. cone of uncertainty
The iterative response to this uncertainty is to defer an expectation of semi-reliable estimates for cost, effort or schedule until a few iterations have passed. Perhaps 10% to 20% into a project.
This is consistent with management practice in other new product development domains, where an initial exploratory phase is common. Further, the practice of adaptive planning is encouraged rather than predictive planning. That is, a detailed schedule is not created beyond a relatively short time horizon, so that the level of detail and commitment is commensurate with the quality of information.
With respect to fixed-price bidding and evolutionary estimates, some IID methods (such as the UP) recommend running projects in two contract phases, each of multiple timeboxed iterations.
The first phase, a relatively short fixed-time and fixed-price contract, has the goal of completing a few iterations, doing early but partial software development and evolutionary requirements analysis. Note the key point that partial software is produced, not merely documents.
The outputs of phase oneincluding the software base—are then shared with bidders for a phase two fixed-price contract. The evolutionary refinement of specifications and code in phase one provides higher quality data for phase two estimators, and advances the software for the project (Figure 2.6).
Figure 2.6. two contract phases