Designing for change

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.

Efficacy

  • 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

Major Risks

  • 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