Software Configuration Management (Susan Dart)

Software CM is a discipline for controlling the evolution of software systems?.... A CM solution is dependent on an organization's needs and how it defines CM. The standard definition for CM taken from IEEE standard 729-1983 includes:


 * Identification: an identification scheme is needed to reflect the structure of the product. This involves identifying the structure and kinds of components?, making them unique and accessible in some form by giving each component a name, a version identification, and a configuration identification. For example, this addresses the question, "What version of the file is this?"
 * Control: controlling the release of a product and changes to it throughout the lifecycle by having controls in place that ensure consistent software via the creation of a baseline product. For example, this addresses the question, "How many changes went into the latest version of this product?"
 * Status Accounting: recording and reporting the status of components and change requests, and gathering vital statistics about components in the product. For example, this addresses the question, "How many files were affected by fixing this one bug?"
 * Audit and review: validating the completeness of a product and maintaining consistency among the components by ensuring that components are in an appropriate state throughout the entire project life cycle and that the product is a well-defined collection of components. For example, this addresses the question, "Are all the correct versions of files used in this current release?"

The definition includes terminology such as configuration item, baseline, release and version, etc. At a high level, most designers of CM systems incorporate functionality of varying degrees to support these aspects. But at the implementation level, from the user's viewpoint, most CM systems have different functionality. Among the many reasons for these differences are: disparate hardware platforms, operating system, and programming languages. But an interesting reason is due to the different kinds of users of a CM system. This stems from the role the user plays in the organization. In particular, a manager, a software engineer developing an application, an application customer, and an environment builder tend to see CM differently. As a result, they may want differing (albeit complementary) functionality from their CM system. For example, to a manager the term "CM" conjures up the image of a Configuration Control Board. To a software engineer, the image of baselines arise. To a customer, versions of the application arise. And to the environment builder, mechanisms such as libraries and data compression arise. All these images obviously result in different requirements for a CM system and hence possibly different functionality.

When examining current technology that automates CM functions, it becomes clear that the definition of CM as given by the IEEE standard needs to be broadened to encompass the extra functionality found in CM systems. This concerns:


 * Manufacturing: managing the construction and building of the product in an optimal manner. For example, this addresses the question, "What versions of files and tools were used to generate this latest release?"
 * Process Management: ensuring the correct execution of the organization's procedures, policies, and life-cycle model. For example, this addresses the question, "Were all the files tested and checked for quality before being released to the customer?"
 * Team Work: controlling the work and interactions between multiple developers on a product?. For example, this addresses the question, "Were all the locally made changes of the programmers merged into the last release of the product?"

Susan Dart; "Spectrum of Functionality in Configuration Management Systems"; SEI Technical Report CMU/SEI-90-TR-11, December 1990; "The Past, Present, and Future of Configuration Management"; SEI Technical Report CMU/SEI-92-TR-8, July 1992.

[I (CmWiki editor) took the liberty of combining these two definitions since they had so much in common.]