Software Configuration Management (Stephen A. MacKay)

The most widely used definition of software configuration management SCM comes from the standards community [IEEE87, IEEE90a, IEEE90b, Buck93]. Configuration management (CM) is a discipline that oversees the entire life cycle of a software product? or family of related products. Specifically, CM requires identification of the components to be controlled (configuration items) and the structure of the product, control over changes to the items (including documentation), accurate and complete record keeping, and a mechanism to audit or verify any actions. This definition is not complete. Dart [Dart92] suggests that the definition should be broadened to include manufacturing issues optimally managing the construction of the product?, process management?, ensuring adherence to the defined processes and team work supporting and controlling the efforts of multiple developers. Tichy [Tich88] provides a definition that is popular in the academic and research communities: software configuration management is a discipline whose goal is to control changes to large software system families, through the functions of: component identification, change tracking?, version selection and baselining, software manufacture, and managing simultaneous updates (team work).

We prefer these definitions because the emphasis is on evolution of and access to software components by teams of developers, rather than control or prevention of access in the standards definition. Concurrent or parallel, distributed configuration management is simply a recognition of the true state of software development in the 1990s managing the evolution of software produced by geographically distributed teams, working semi-autonomously, but sharing a common software base.

Stephen A. MacKay; "The State of the Art in Concurrent, Distributed Configuration Management"; Proceedings of the 5th International Workshop on Software Configuration Management (SCM5); Seattle, WA, April 24-25 1995