Software Configuration Management
Overview
This tutorial will teach us about Software Configuration Management (SCM). SCM is a Software engineering discipline that manages software product changes using standard procedures and SCM tools. It is the organized control of changes in software product development.
Software Configuration Management
Software Configuration Management is a set of activities that identify, organize, and control changes throughout a software project’s lifecycle.
A configuration item( CI ) is an item (a service component, an infrastructure element, files, etc.) that must be managed for successful project delivery.
Baselines
Baselines are formally reviewed and agreed-upon versions of software artifacts from which all changes are measured. They serve as the basis for further development and can be changed only through formal change procedures.
SCM Activities
SCM activities comprise several activities:
- Change Management
- Version Control
- Change Control
- Build Management
- Release Management
Change management
Change management is the process of managing changes to software systems. Changes can be in requirements, new features, bug fixes, source code changes, etc. It involves documenting change requests, assessing their impact, prioritizing changes, and coordinating their implementation. Change management helps ensure that changes are properly reviewed, tested, and integrated into the software system and that their impact on other components or dependencies is assessed.
Version control
Version Control combines procedures and tools to manage different versions of
configuration objects created during the software process. It allows developers to work collaboratively on a software project, keeping track of changes made by different team members and enabling the ability to revert to previous versions if needed. It is also known as Source control or Revision control.
Change Control
Change control is a set of procedures for evaluating the need for change and controlling the application of the changes requested by the user.
Build management
Build management involves compiling source code and other software artifacts into executable software components or packages. It includes tasks such as compiling code, creating libraries, linking components, and generating executable files, jars, or installable packages. Build management helps ensure that software is built consistently and reproducibly and that dependencies are managed effectively.
Release management
Release management is the process of planning, coordinating, and executing the release of software products. It involves packaging software, creating release notes, managing version numbers, and deploying software to production or other environments. Release management helps ensure that software is released in a controlled and coordinated manner and that releases are properly documented and communicated to stakeholders.
SCM Tools
Some popular SCM Tools are as follows:
- Git
- Subversion (SVN)
- Mercurial
- Perforce
- Puppet
- SaltStack
More information:
https://en.wikipedia.org/wiki/Software_configuration_management