In software engineering, software configuration management is the task of tracking and controlling
changes in the software, part of the larger cross-discipline field of configuration management.
SCM practices include revision control and the establishment of baselines.
If something goes wrong, SCM can determine what was changed and who changed it.
If a configuration is working well, SCM can determine how to replicate it across many
hosts.
The acronym "SCM" is also expanded as source configuration management and software change
and configuration management.
However, "configuration" is generally understood to cover changes typically made by a system
administrator; management of source code undergoing software development is considered separately.
Purposes The goals of SCM are generally:
Configuration identification - Identifying configurations, configuration items and baselines.
Configuration control - Implementing a controlled change process.
This is usually achieved by setting up a change control board whose primary function is to
approve or reject all change requests that are sent against any baseline.
Configuration status accounting - Recording and reporting all the necessary information
on the status of the development process.
Configuration auditing - Ensuring that configurations contain all their intended parts and are sound
with respect to their specifying documents, including requirements, architectural specifications
and user manuals.
Build management - Managing the process and tools used for builds.
Process management - Ensuring adherence to the organization's development process.
Environment management - Managing the software and hardware that host the system.
Teamwork - Facilitate team interactions related to the process.
Defect tracking - Making sure every defect has traceability back to the source.
With the introduction of cloud computing the purposes of SCM tools have become merged in
some cases.
The SCM tools themselves have become virtual appliances that can be instantiated as virtual
machines and saved with state and version.
The tools can model and manage cloud-based virtual resources, including virtual appliances,
storage units, and software bundles.
The roles and responsibilities of the actors have become merged as well with developers
now being able to dynamically instantiate virtual servers and related resources.
History The history of software configuration management
in computing can be traced back as early as the 1950s, when CM, originally for hardware
development and production control, was being applied to software development.
Early software had a physical footprint, such as cards, tapes, and other media.
The first software configuration management was a manual operation.
With the advances in language and complexity, software engineering, involving configuration
management and other methods, became a major concern due to issues like schedule, budget,
and quality.
Practical lessons, over the years, had led to the definition, and establishment, of procedures
and tools.
Eventually, the tools became systems to manage software changes.
Industry-wide practices were offered as solutions, either in an open or proprietary manner.
With the growing use of computers, systems emerged that handled a broader scope, including
requirements management, design alternatives, quality control, and more; later tools followed
the guidelines of organizations, such as the Capability Maturity Model of the Software
Engineering Institute.
See also Application lifecycle management
Change control Comparison of open source configuration management
software Comparison of revision control software
Configuration item Configuration management
List of revision control software Matrix of pain
Revision control References
Further reading Aiello, R..
Configuration Management Best Practices: Practical Methods that Work in the Real World.
Addison-Wesley.
ISBN 0-321-68586-5.
Babich, W.A..
Software Configuration Management, Coordination for Team Productivity.
1st edition.
Boston: Addison-Wesley Berczuk, Appleton;.
Software Configuration Management Patterns: Effective TeamWork, Practical Integration.
Addison-Wesley.
ISBN 0-201-74117-2.
Bersoff, E.H..
Elements of Software Configuration Management.
IEEE Computer Society Press, Los Alamitos, CA, 1-32
Dennis, A., Wixom, B.H.
& Tegarden, D..
System Analysis & Design: An Object-Oriented Approach with UML.
Hoboken, New York: John Wiley & Sons, Inc.
Department of Defense, USA.
Military Handbook: Configuration management guidance.
Retrieved January 5, 2010, from http:www.everyspec.comMIL-HDBK-0001-0099 Futrell, R.T. et al..
Quality Software Project Management.
1st edition.
Prentice-Hall.
International Organization for Standardization.
ISO 10007: Quality management systems – Guidelines for configuration management.
Saeki M..
Embedding Metrics into Information Systems Development Methods: An Application of Method
Engineering Technique.
CAiSE 2003, 374-389.
Scott, J.A.
& Nisse, D..
Software configuration management.
In: Guide to Software Engineering Body of Knowledge.
Retrieved January 5, 2010, from http:www.computer.orgwebhtmlformat Paul M. Duvall, Steve Matyas, and Andrew Glover.
Continuous Integration: Improving Software Quality and Reducing Risk..
Addison-Wesley Professional.
ISBN 0-321-33638-0.
External links Software Configuration Management and ISO
9001 by Robert Bamford and William Deibler, SSQC
Use Cases and Implementing Application Lifecycle Management
Parallel Development Strategies for Software Configuration Management
iNTCCM, iNTernational Certification for Configuration Management professionals
SCM Certification, Software Configuration Management: Strategies, Techniques, & Tools