Designing for Change is a broad label that encompasses several change-oriented design practices. These practices need to be employed early in the software lifecycle to be effective.
The success of Designing for Change depends on identifying likely changes, developing a change plan and hiding design decisions so that changes do not ripple through a program.
Some of the change-oriented design practices are more difficult than people think but when they are done well, they lay the groundwork for long-lived programs and for flexibility that can help to minimize the schedule impacts of late-breaking change requests.
Potential reduction from nominal schedule: Fair
Improvement in progress visibility: None
Effect on schedule risk: Decreased Risk
Chance of first-time success: Good
Chance of long-term success: Excellent
- Over reliance on the use of programming languages to solve design problems rather than on change-oriented design practices
Major Interaction and Trade-Offs
- Provides necessary support for incremental-development practices
- Design methods involved work hand-in-hand with software reuse