In this article, the software engineering discipline called Software Configuration Management (SCM) will be explained.
So, what is the SCM?
It is a software-engineering discipline comprising the tools and techniques through processes and/or methodologies that a company uses to manage change to its software envirnoment. Good practices among the software development area define the SCM. For all of the software projects that are under development or in a more advanced phase, enhancement on the reliability and quality of software is made by:
• Providing structure for identifying and controlling documentation, code, interfaces, and databases to support all life-cycle phases
• Supporting a chosen development/maintenance methodology that fits the requirements, standards, policies, organization, and management philosophy
• Producing management and product information concerning the status of baselines, change control, tests, releases, audits, etc.
There are some practices suggested when working under a SCM:
- Identify and store artifacts in a secure repository.
- Control and audit changes to artifacts.
- Organize versioned artifacts into versioned components.
- Organize versioned components and subsystems into versioned subsystems.
- Create baselines at project milestones.
- Record and track requests for change.
- Organize and integrate consistent sets of versions using activities.
- Maintain stable and consistent workspaces.
- Support concurrent changes to artifacts and components.
- Integrate early and often.
- Ensure reproducibility of software builds.