Software configuration management

From Example Problems
Jump to navigation Jump to search
This article is about configuration management. For other uses of SCM see SCM (disambiguation).

Software Configuration Management (SCM) is part of configuration management (CM).

Roger Pressman, in his book, Software Engineering: A Practitioner's Approach, says that software configuration management (SCM) is a "set of activities designed to control change by identifying the work products that are likely to change, establishing relationships among them, defining mechanisms for managing different versions of these work products, controlling the changes imposed, and auditing and reporting on the changes made." In other words, SCM is a methodology to control and manage a software development project.

SCM concerns itself with answering the question: somebody did something, how can one reproduce it? Often the problem involves not reproducing "it" identically, but with controlled, incremental changes. Answering the question will thus become a matter of comparing different results and of analysing their differences. Traditional CM typically focussed on controlled creation of relatively simple products. Nowadays, implementators of SCM face the challenge of dealing with relatively minor increments under their own control, in the context of the complex system being developed.


The specific terminology of SCM, as well as its history, has given rise to controversy, and often varies.

Tool vendors as well as academics may find it to their advantage to deliberately change terminology or procedures to reduce the possibility of the customer or field from changing ("lock-in"), sometimes trying in this manner to redefine established acronyms.

In particular, the former vendor, Atria (later Rational Software, now a part of IBM), used "SCM" to stand for "Software Configuration Management".


The goals of SCM are generally:

  • Configuration Identification- What code are we working with?
  • Configuration Control- Controlling the release of a product and its changes.
  • Status Accounting- Recording and reporting the status of components.
  • Review- Ensuring completeness and consistency among components.
  • Build Management- Managing the process and tools used for builds.
  • Process Management- Ensuring adherence to the organizations development process.
  • Environment Management- Managing the software and hardware that host our system.
  • Teamwork- Facilitate team interactions related to the process.


  • Berzcuk, Appleton; (2003). Software Configuration Management Patterns: Effective TeamWork, Practical Integration (1st ed.). Addison-Wesley. ISBN 0-201-74117-2.

fr:Gestion de configuration logicielle