Configuration Management (CM) is essential for organizations to systematically manage, organize, and oversee changes in documents, codes, and other entities throughout the Software Development Life Cycle (SDLC). SCM, its abbreviation, is aimed at controlling costs and efforts required for altering software systems, with the core objective of enhancing productivity while minimizing errors.
The key motivations for implementing a Software Configuration Management System are as follows:
- Multiple individuals are collaboratively working on software that undergoes continuous updates.
- Software projects involve various versions, branches, authors, and geographically dispersed teams working simultaneously.
- Adaptation to changes in user requirements, policies, budget constraints, and schedules.
- Ensuring software compatibility across diverse machines and operating systems.
- Enhancing stakeholder coordination.
- SCM aids in cost control for system modifications.
Since any change in software configuration items impacts the final product, effective management and control of configuration item changes are crucial.
The SCM process encompasses several tasks:
- Configuration Identification: Defines the software system’s scope and manages items even when their nature is uncertain. This entails descriptions containing CSCI type, project ID, and version data.
- Baselines: These serve as reference points for tracking changes in configuration items.
- Change Control: Governs the process of evaluating, approving, and implementing changes.
- Configuration Status Accounting: Maintains records of configuration items and their status.
- Configuration Audits and Reviews: Ensures adherence to defined processes and identifies discrepancies.
Configuration Identification involves several activities:
- Identifying configuration items like source code modules, test cases, and requirement specifications.
- Categorizing each CSCI within the SCM repository via an object-oriented approach.
- Commencing with fundamental objects that aggregate into more complex ones.
- Each object possesses unique features for easy identification.
- Providing a detailed list of necessary resources such as documents, files, and tools.
- Naming a file “login_v1.2.php” with the version number “v1.2” signifies its version.
- A folder named “Code_D” suggests that the “Code” should be backed up daily.
Baseline: A baseline signifies a formally approved version of a software configuration item. It’s established and locked in during the SCM process, with changes requiring formal change control procedures for modification.
During this process, activities include:
- Enabling the construction of diverse application versions.
- Defining mechanisms to manage work product versions.
- Aligning the functional baseline with reviewed system requirements.
- Utilizing functional, developmental, and product baselines.
In simple terms, a baseline indicates readiness for release.
Change control is a procedural approach that ensures consistency and quality when altering a configuration object. In this step, change requests are submitted to the software configuration manager.
Activities within this process encompass:
- Regulating ad-hoc changes to establish a stable software development environment.
- Committing changes to the repository.
- Evaluating change requests for technical merit, potential side effects, and overall impact.
- Managing changes and facilitating configuration items throughout the software lifecycle.
Configuration Status Accounting:
Configuration status accounting tracks each release during the SCM process, involving monitoring version contents and changes that led to them.
Tasks within this process comprise:
- Recording changes from the previous baseline to reach a new one.
- Identifying items for software configuration definition.
- Monitoring change request statuses.
- Compiling comprehensive change listings since the last baseline.
- Enabling progress tracking toward the next baseline.
- Facilitating the extraction of previous releases/versions for testing.
Configuration Audits and Reviews:
Software configuration audits verify alignment with baseline requirements, ensuring built content matches delivered products.
Activities in this process include:
- Auditing by checking adherence to defined processes and SCM goals.
- Verifying compliance with configuration control standards, reporting changes.
- Ensuring traceability throughout the process.
- Validating that baseline changes adhere to configuration status reports.
- Ensuring completeness and consistency.
Participants of SCM Process: Key participants in SCM include:
1. Configuration Manager:
- Identifies configuration items.
- Ensures SCM process adherence.
- Approves or rejects change requests.
- Implements code changes and maintains code configuration.
- Resolves conflicts and checks changes.
- Conducts SCM audits and reviews.
- Ensures release consistency and completeness.
4. Project Manager:
- Oversees project development timing.
- Monitors progress, addresses SCM issues.
- Generates software status reports.
- Enforces SCM processes and policies.
- Understands SCM terms for accessing the latest software version.
Software Configuration Management Plan (SCMP):
The SCMP starts early in the project and yields an SCM plan that can be adapted during the project. It:
- Adheres to public standards like IEEE 828 or organization-specific standards.
- Defines document types, naming conventions (e.g., Test_v1).
- Designates an SCM process leader and baseline creator.
- Establishes policies for version and change control.
- Specifies tools for the SCM process.
- Utilizes a configuration management database for recording configuration data.
Software Configuration Management Tools:
Effective change management tools should offer three key features:
1. Concurrency Management:
- Handles concurrent operations, preventing issues when multiple individuals edit the same file simultaneously.
2. Version Control:
- Archives or saves every file change.
- Enables rolling back to previous versions in case of problems.
Users can checkout more than one files or an entire copy of the repository. The user then works on the needed file and checks in the changes back to the repository.They can synchronize their local copy to stay updated with the changes made by other team members.
Following are popular tools
- Git: Git is a free and open source tool which helps version control. It is designed to handle all types of projects with speed and efficiency.
Download link: https://git-scm.com/
- Team Foundation Server: Team Foundation is a group of tools and technologies that enable the team to collaborate and coordinate for building a product.
Download link: https://www.visualstudio.com/tfs/
- Ansible: It is an open source Software configuration management tool. Apart from configuration management it also offers application deployment & task automation.
Synchronization: Users can check out multiple files or an entire repository copy. They work on specific files and check changes back into the repository. To stay updated with others’ changes, they synchronize their local copy.
A free, open-source tool for efficient version control.
- Designed for various project types.
- Download: Git Official Site
- Team Foundation Server:
- Offers a range of tools and technologies for team collaboration.
- Facilitates coordination in building products.
- Download: Visual Studio TFS
- Open-source software configuration management tool.
- Includes application deployment and task automation.
Download: Ansible Official Site