Introduction to Configuration & Change Management
To paraphrase the Software Engineering Institute's Capability Maturity Model
(SEI CMM) 'Configuration and Change Request Management
controls change to, and maintains the integrity of, a project's artifacts'.
Configuration and Change Request Management (CM and CRM) involves:
- identifying configuration items,
- restricting changes to those items,
- auditing changes made to those items,
and
- defining and managing configurations
of those items.
The methods, processes, and tools used to provide change and configuration
management for an organization can be considered as the organization's CM
System.
An organization's Configuration and Change Request Management System (CM
System) holds key information about its product development,
promotion,
deployment and maintenance processes, and retains the asset base of potentially
re-usable artifacts resulting from the execution of these processes.
The CM System is an essential and integral part of the overall development
processes.
A CM System is essential for controlling the numerous artifacts produced by
the many people who work on a common project. Control helps avoid costly
confusion, and ensures that resultant artifacts are not in conflict due to some
of the following kinds of problems:
Simultaneous Update
When two or more team members work separately on the same artifact, the last one
to make changes destroys the work of the former. The basic problem is that if
a system does not support simultaneous update this leads to serial changes and
slows down the development process. However, with simultaneous update, the
challenge is to detect that updates have occurred simultaneously and to
resolve any integration issues when these changes are incorporated
Limited Notification
When a problem is fixed in artifacts shared by several developers, and some
of them are not notified of the change.
Multiple Versions
Most large programs are developed in evolutionary releases. One release
could be in customer use, while another is in test, and the third is still in
development. If problems are found in any one of the versions, fixes need to
be propagated between them. Confusion can arise leading to costly fixes and
re-work unless changes are carefully controlled and monitored.
A CM System is useful for managing multiple variants of evolving software
systems, tracking which versions are used in given software builds, performing
builds of individual programs or entire releases according to user-defined
version specifications, and enforcing site-specific development policies.
Some of the direct benefits provided by a CM System are that it:
- supports development methods,
- maintains product integrity,
- ensures completeness and correctness of the configured product,
- provides a stable environment within which to
develop the product,
- restricts changes to artifacts based on project policies, and
- provides an audit trail on why, when and by whom any artifact was changed.
In addition, a CM System stores detailed 'accounting' data on the
development process itself: who created a particular version (and when, and
why), what versions of sources went into a particular build, and other relevant
information.
An organization's CM System is used throughout the product's lifecycle,
from inception to deployment. As an organization's asset repository, the CM
system contains current and historical versions of source files of requirements,
design and implementation artifacts that define a particular version of a system
or a system component
The product directory
structure, represented in
the CM System, contains all the artifacts required to implement the product. As
such, the Configuration & Change Management (CCM) discipline is related to all
the other process disciplines as it serves as a repository for their resultant
sets of artifacts.