Managing change is more than just checking-in and checking-out files. It includes management of workspaces, parallel
development, integration, and builds.
A key challenge when you're developing software-intensive systems is that you must cope with multiple developers,
organized into different teams, possibly at different sites, working together on multiple iterations, releases,
products, and platforms. In the absence of disciplined control, the development process rapidly degenerates into chaos.
In the Rational Unified Process, the Configuration & Change Management discipline describes how you
meet this challenge.
Coordinating the activities and artifacts of developers and teams involves establishing repeatable procedures for
managing changes to software and other development artifacts. This coordination allows a better allocation of resources
based on the project's priorities and risks, and it actively manages the work on those changes across iterations.
Coupled with developing your software iteratively, this practice lets you continuously monitor changes so that you can
actively discover, and then react to problems.
See the Activity: Manage Change Requests for further information on this
Coordinating iterations and releases involves establishing and releasing a tested baseline at the completion of each
iteration. Maintaining traceability among the elements of each release and among elements across multiple, parallel
releases is essential for assessing and actively managing the impact of change.
See the Activity: Manage Baselines Releases for more details.
Controlling changes to software offers a number of solutions to the root causes of software development problems:
The workflow of requirements change is defined and repeatable.
Change requests facilitate clear communications.
Isolated workspaces reduce interference among team members working in parallel.
Change rate statistics provide good metrics for objectively assessing project status.
Workspaces contain all artifacts, which facilitates consistency.
Change propagation is assessable and controlled.
Changes can be maintained in a robust, customizable system.