This article includes a list ofgeneral references, butit lacks sufficient correspondinginline citations. Please help toimprove this article byintroducing more precise citations.(September 2010) (Learn how and when to remove this message) |
| IEEE software life cycle |
|---|
| Part of a series on |
| Software development |
|---|
Paradigms and models |
Standards and bodies of knowledge |
Software configuration management (SCM), a.k.a.software change and configuration management (SCCM),[1] is thesoftware engineering practice of tracking and controlling changes to asoftware system. It is part of the larger cross-disciplinary field ofconfiguration management (CM).[2] SCM includesversion control and the establishment ofbaselines.
The goals of SCM include:[citation needed]
With the introduction ofcloud computing andDevOps 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.[3]
The history of software configuration management (SCM) can be traced back as early as the 1950s, when CM (configuration management), originally for hardware development and production control, was being applied to software development. Early software had a physical footprint, such ascards,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.[4] Industry-wide practices were offered as solutions, either in an open or proprietary manner (such asRevision Control System). With the growing use of computers, systems emerged that handled a broader scope, includingrequirements management, design alternatives, quality control, and more; later tools followed the guidelines of organizations, such as theCapability Maturity Model of theSoftware Engineering Institute.