3.5 An Adaptive Life-cycle Approach
The adaptive process attempts to balance and harmonize two seemingly opposing forces: strict control and the freedom to evolve. It combines the strengths of the waterfall and evolutionary approaches and avoids their pitfalls. It benefits from reasonable planning yet avoids becoming obsessive and inflexible. It benefits from an iterative process of optimization while avoiding the inefficiency of endless tweaking and refinement. It emphasizes maintainability as the primary goal and relies upon solid development talent, not management control, to assure change-tolerance.
In this adaptive process, you do your best to plan each module thoroughly and accurately. However, you call it quits as soon as you reach a point of diminishing returns. You don't spend endless time and effort trying to attain perfection without perfect information. Instead, you proceed with development and review the product frequently with the client experts. When they realize how the product needs to be improved, you don't panic. You empower your developers to either make the changes directly or to return it to the planning stage for another iteration of formal planning.
Such a process requires a lot of confidence in your organization. It requires the confidence that you can make evolutionary leaps through good planning. It requires the confidence that your team can recognize when it has reached the point of diminishing returns in planning. It also requires the confidence that your developers can write code that is maintainable enough to easily accommodate change without causing an avalanche of unanticipated problems. Finally, it requires the confidence that you can manage client expectations so that they can accept and work effectively within an adaptive process.
While the adaptive process should handle larger scale projects than a purely evolutionary one, there will be a point at which a stricter waterfall approach may be required. However, relatively few projects are that large. But no matter how large the project, it is never acceptable that the product becomes so complex and fragile that it cannot be maintained.
If you do have the type of project, client, and level of confidence in your team to implement an adaptive process, then it is essential that you put in place a change control process that does not inhibit iteration. The worst case is settling for incomplete planning, and then imposing change control procedures that are so cumbersome that they inhibit optimization and adaptation.
In this adaptive model, as with any life-cycle model, it is essential that you take every precaution to avoid process overlap and follow the logical planning sequence!
Figure 3-1. Planning done out of sequence is wasted effortThe Far Side® by Gary Larson © 1983 FarWorks, Inc. All Rights Reserved. Used with permission..