Change is good. Actually, change is great. Why? Because most modern systems are too complex to allow you to get the requirements and the design right the first time around. Change allows you to improve upon a solution. If there is no change, then you will deliver a defective solution, possibly so defective that the application has no business value. That is why you should welcome and encourage change. And the iterative approach has been optimized to do exactly that. But change can also have severe consequences. Constant change will prevent project completion. Certain types of change late in the project typically mean a lot of rework , increased cost, reduced quality, and probable delays, all things you want to avoid. To optimize your Change Management strategy, you need to understand the relative cost of introducing different types of changes at different stages of the project lifecycle (see Figure 2.4). For simplicity, we group changes into four categories.
Figure 2.4. The Cost of Introducing Change Varies Throughout the Lifecycle. The cost of introducing a change varies according to the lifecycle phase, and each type of change has its own cost profile. The RUP milestones at the end of each phase are optimized to minimize overall cost of change, while maximizing freedom to make changes. In general, as the project progresses, you should be more careful about introducing change, especially to the overall business solution and the architecture.
These cost considerations mean that you need to manage change. You need to
Change approvals are done through a combination of manual procedures, such as Change Control Boards (CCBs), and tools, such as Configuration and Change Management (CCM) software. Assessing the impact of change is primarily done through traceability between tools for requirements, design, code, and test. When changing a class or a requirement, you should be able to understand what other things are potentially affected; this is where traceability saves a lot of grief . The cost of change is minimized by having procedures in place for managing changes and also by assessing their impact. Again, the right tool support can have a tremendous effect. Automatic synchronization between design and code is an example of automation reducing the cost of change, since it allows you to do some code changes by working on a higher level of abstraction ”the design. SummaryThe cost of change increases the further you are into a project, and different types of changes have different cost profiles. The RUP's phases have been set up to minimize overall cost of change, while maximizing the ability to allow for change. This is why the RUP forces agreement on the overall vision at the end of the Inception phase, a baselined architecture at the end of the Elaboration phase, and feature freeze at the end of the Construction phase. Using the right tools can play a powerful role in managing change and minimizing its cost. |