Software configuration management

In software engineering, software configuration management (SCM)[1] is the task of tracking and controlling changes in the software, part of the larger cross-discipline field of configuration management.[2] 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.[3] However, "configuration" is generally understood to cover changes typically made by a system administrator; management of source code undergoing software development is considered separately (see revision control).

Purposes

The goals of SCM are generally:

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.[4]

History

The history of software configuration management (SCM) in computing can be traced back as early as the 1950s, when CM (for Configuration Management), 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.[5] Industry-wide practices were offered as solutions, either in an open or proprietary manner (see Revision Control). 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

References

  1. Atria (later Rational Software, now a part of IBM)
  2. Software Engineering: A Practitioner's Approach, 7th International edition by Roger S. Pressman (2009)McGraw-Hill, New York
  3. Gartner and Forrester Research
  4. Amies, A; Peddle S; Pan T M; Zou P X (June 5, 2012). "Develop cloud applications with Rational tools". IBM developerWorks (IBM).
  5. "1988 "A Guide to Understanding Configuration Management in Trusted Systems" National Computer Security System (via Google)

Further reading

External links