Saturday, August 10, 2013

Defining Traditional Software Configuration Management (SCM)

Almost all the research on software configuration management has its own definition of the subject. All of those definitions highlights the idea of "dealing with the evolution". That means managing changes to the software during its life cycle. Much older studies on software configuration management processes more focus on controlling or limiting the changes happen to the software. But the studies that take agile process development in to the picture more focus on how to adapt to the changes to the software.  Here I have listed out few definitions of traditional software configuration management.

IEEE - "Configuration Management is the process of identifying and defining the items in the system, controlling the change of these items throughout their lifecycle, recording and reporting the status of items and change requests, and verifying the completeness and correctness of items." [1]

Tichy - "Software configuration management (SCM) is the discipline of managing the evolution of large and complex software systems."[2]

CMM - "Software Configuration Management involves identifying the configuration of the software (i.e., selected software work products and their descriptions) at given points in time, systematically controlling changes to the configuration, and maintaining the integrity and traceability of the configuration throughout the software life cycle. The work products placed under software configuration management include the software products that are delivered to the customer (e.g., the software requirements document and the code) and the items that are identified with or required to create these software products (e.g., the compiler)".[3]

RUP - "The task of defining and maintaining configurations and versions of artefacts. This includes baselining, version control, status control, and storage control of the artefacts." [4]

A common list of processes that usually are included in the definition of software configuration management:
  • Identify configuration items
  • Version control of configuration items
  • Release management
  • Build management
  • Controlling/Adapting to changes
  • Tracking status
  • Auditing

[1] IEEE-Standard-729-1983, Standard Glossary for Software Engineering, ANSI/IEEE.
[2] Tools for software configuration management. In Proceedings of the International Workshop on Software Version and Configuration Control (Grassau, Germany), J. F. H. Winkler, Ed., Teubner Verlag, 1–20, 1988.
[3] Carnegie Mellon Univ. Software Engineering Inst.The Capability Maturity Model: Guidelines for Improving the Software Process, Addison Wesley, 1995.
[4] Philippe Kruchten, The Rational Unified Process: An Introduction, Addison Wesley, 2003.