The purpose of Configuration Management (CM) (CMMI-DEV) is to establish and maintain the integrity of work products using configuration identification, configuration control, configuration status accounting, and configuration audits.
Introductory NotesThe Configuration Management process area involves the following activities:
- Identifying the configuration of selected work products that compose baselines at given points in time
- Controlling changes to configuration items
- Building or providing specifications to build work products from the configuration management system
- Maintaining the integrity of baselines
- Providing accurate status and current configuration data to developers, end users, and customers
The work products placed under configuration management include the products that are delivered to the customer, designated internal work products, acquired products, tools, and other items used in creating and describing these work products. (See the definition of “configuration management” in the glossary.)
Examples of work products that can be placed under configuration management include the following:
- Hardware and equipment
- Product specifications
- Tool configurations
- Code and libraries
- Test tools and test scripts
- Installation logs
- Product data files
- Product technical publications
- User stories
- Iteration backlogs
- Process descriptions
- Architecture documentation and design data
- Product line plans, processes, and core assets
Acquired products may need to be placed under configuration management by both the supplier and the project. Provisions for conducting configuration management should be established in supplier agreements. Methods to ensure that data are complete and consistent should be established and maintained.
Refer to the Supplier Agreement Management (SAM) (CMMI-DEV) process area for more information about establishing supplier agreements.
Configuration management of work products can be performed at several levels of granularity. Configuration items can be decomposed into configuration components and configuration units. Only the term “configuration item” is used in this process area. Therefore, in these practices, “configuration item” may be interpreted as “configuration component” or “configuration unit” as appropriate. (See the definition of “configuration item” in the glossary.)
Baselines provide a stable basis for the continuing evolution of configuration items.
An example of a baseline is an approved description of a product that includes internally consistent versions of requirements, requirement traceability matrices, design, discipline-specific items, and end-user documentation.
Baselines are added to the configuration management system as they are developed. Changes to baselines and the release of work products built from the configuration management system are systematically controlled and monitored via the configuration control, change management, and configuration auditing functions of configuration management.
This process area applies not only to configuration management on projects but also to configuration management of organizational work products such as standards, procedures, reuse libraries, and other shared supporting assets.
Configuration management is focused on the rigorous control of the managerial and technical aspects of work products, including the delivered product or service. This process area covers the practices for performing the configuration management function and is applicable to all work products that are placed under configuration management. For product lines, configuration management involves additional considerations due to the sharing of core assets across the products in the product line and across multiple versions of core assets and products. (See the definition of “product line” in the glossary.)
In Agile environments, configuration management (CM) is important because of the need to support frequent change, frequent builds (typically daily), multiple baselines, and multiple CM supported workspaces (e.g., for individuals, teams, and even for pair-programming). Agile teams may get bogged down if the organization doesn’t: 1) automate CM (e.g., build scripts, status accounting, integrity checking) and 2) implement CM as a single set of standard services. At its start, an Agile team should identify the individual who will be responsible to ensure CM is implemented correctly. At the start of each iteration, CM support needs are re-confirmed. CM is carefully integrated into the rhythms of each team with a focus on minimizing team distraction to get the job done. (See “Interpreting CMMI When Using Agile Approaches” in Part I.)
Refer to the Project Planning (PP) (CMMI-DEV) process area for information on developing plans and work breakdown structures, which may be useful for determining configuration items.
Refer to the Project Monitoring and Control (PMC) (CMMI-DEV) process area for more information about performance analyses and corrective actions.