What is SCM?
Software Configuration Management is the discipline of identifying, controlling, and auditing software configuration items (source code, documents, tests, build scripts, binaries) as they evolve. SCM keeps chaos out of large projects.
Goals of SCM
- Reproduce any past build.
- Know who changed what, when, and why.
- Prevent unauthorized changes.
- Support parallel development.
- Automate release and deployment.
Configuration Items (CI)
A CI is any artifact placed under configuration control: source files, requirements documents, design diagrams, test scripts, build tools, libraries, user manuals. Each CI has a unique identifier and version history.
SCM Activities
- Identification — decide which items are CIs; assign IDs.
- Version control — store every change.
- Change control — formal process to approve changes.
- Configuration status accounting — report current state.
- Configuration audit — verify the product matches its CIs.
- Build and release management.
Baseline
A baseline is an approved snapshot of the CIs at a specific point (e.g., "Requirements Baseline 1.0"). Further changes require formal change control. Common baselines: functional, allocated, developmental, product.
Version Control Systems
- Centralized (CVCS) — single server (SVN, Perforce). Lock or merge.
- Distributed (DVCS) — every clone is a full repository (Git, Mercurial).
Git Workflow Basics
Typical commands: git init, git clone, git add, git commit, git push, git pull, git branch, git merge. Branching strategies include Git-Flow (develop, feature, release, hotfix) and trunk-based development.
Change Control Process
- Change request submitted.
- Impact analysis — cost, schedule, technical.
- Change Control Board (CCB) reviews.
- Approve / reject / defer.
- If approved, update plans, implement, test.
- Verify and close.
Change Control Board
The CCB typically includes the project manager, product owner, lead architect, QA lead, and a customer representative. The board balances schedule and cost against value.
Build and Release Management
Modern practice uses continuous integration (CI): every commit triggers an automated build and test. Continuous delivery/deployment (CD) pushes passing builds to staging or production. Tools: Jenkins, GitHub Actions, GitLab CI, CircleCI.
Traceability
Maintain a traceability matrix linking requirements → design → code → test. This supports impact analysis when a requirement changes and audits for quality standards.
Summary
SCM gives a software project a reliable memory. Combining version control, baselines, formal change control, and automated CI/CD enables teams to change quickly without losing control.
Important Questions
- Define SCM and its goals.
- What is a configuration item? Give five examples.
- Explain the SCM activities.
- What is a baseline? Why is it useful?
- Differentiate centralized and distributed version control.
- Describe the change control process.
- What is a Change Control Board?
- Define continuous integration and continuous delivery.