Introduction
In the intricate world of software development, managing changes and maintaining the consistency and integrity of a system is paramount. Software Configuration Management (SCM) serves as the bedrock of this effort, orchestrating the complex interplay of code, documentation, and related artifacts throughout the software development life cycle (SDLC).
SCM encompasses a suite of processes, methodologies, and tools that enable teams to systematically manage changes, ensure that they align with the overall project goals, and mitigate the potential risks that may arise from overlapping modifications. By providing a clear roadmap of what has been changed, by whom, and why, SCM fosters transparency, collaboration, and control.
The importance of SCM extends beyond mere version control. It supports seamless collaboration between cross-functional teams, enforces compliance with defined standards and regulations, and provides a holistic view of the project at any given point in time. From the initial planning and development to testing, deployment, and maintenance, SCM acts as a guardrail, guiding the project towards its defined objectives while accommodating necessary adaptations.
In an era where software development is increasingly agile, complex, and customer-driven, the role of SCM has never been more critical. It acts as a stabilizing force, allowing organizations to pivot rapidly without losing sight of their core values and quality standards.
This article serves as a complete procedural reference for Software Configuration Management that can be applied across various software development projects. It offers an in-depth guide covering best practices, methodologies, tools, and practical steps to ensure that integrity is maintained throughout the software development life cycle. This comprehensive guide is designed to equip developers, managers, and stakeholders with the essential knowledge and resources to implement SCM effectively, aligning the software process with organizational goals and creating a cohesive, successful development environment.
Complete Procedural reference for Software Configuration management that can be used in any Software Development Projects
Software Configuration Management Process Template
Purpose
The purpose of Software Configuration Management (CM) is to establish and maintain the integrity of the products of a software project throughout the software development life cycle. Software CM involves four key activities:
Identification of work products and baselines that are subject to configuration control;
Approval/rejection of proposed changes to controlled items;
Status tracking and reporting of changes and configuration data; and
Audits to ensure that controlled items meet their requirements and are correctly documented.
Policy
Team members of all software projects shall institute configuration management of project process assets. The CM plan shall be documented, either as part of the Project Management Plan or in a separate plan.
The SEPG (Software Engineering Process Group) organization shall ensure that CM processes are available and deployed to preserve the integrity of systems and work products. These CM processes shall include the establishment and use of a change control authority. SEPG projects and organizations shall document and use these CM processes. SEPG projects and organizations shall periodically evaluate their own CM processes to ensure that they remain effective. It shall include following activities
There will be a configuration-controlled repository of policies, processes, procedures, standards, guidelines, checklists and templates.
There will be a Configuration Control Board (CCB) to authorize additions and changes to the repository.
The CCB will approve (“baseline”) versions of documents for use.
The contents of the repository will be available to Team Lead.
There will be a mechanism to suggest corrections or improvements Discrepancy / Change Requests to Baselined documents.
The CCB will maintain a history of the disposition of these Discrepancies / Change Requests.
The CCB will maintain a history of changes to the repository contents.
Typical Roles and Responsibilities to perform effective Software Configuration management:
Project Manager
Defines levels of control, responsibilities, and methods for change authorization
Is responsible for CM planning and for the overall control, evaluation, and approval of CM activities and tools for a software development project.
Appoints members to the software development Configuration Control Board.
Approves all software documentation, baseline versions, and Discrepancy Change Requests.
Approve and maintains the project’s CM Plan.
Release Manager
Reviews Configuration Management Guidelines.
Creates Configuration Management Plan.
Establishes Configuration Management Access Control Policy.
Establishes Configuration Management System.
Establishes Configuration Management Records.
Build Engineer
Defines integration engineering activities within a project under configuration control
Maintain, enhance, run, build and install scripts, and investigates any integration issues that may arise in building various applications for various environments.
Lead Developer
Identify Configuration Items
Uses the CM library to obtain configured items.
Supports the configuration management activities of the Project management, Configuration Controller.
Follows the project’s established CM procedures and guidelines
Tester
Baselines all the test related documents and submits it under configuration
Configuration Controller
Establish new product baselines.
Reports directly to the Project Manager.
Implements and maintains the CM system according to the project’s CM Plan.
Coordinates, supports, and performs CM activities and reports on those activities to the Project Manager.
Ensures that items selected for implementation are approved
Uses the CM system to ensure the integrity of all items placed under configuration control.
Organizes the software files and documentation received from software developers and builds a centralized software library.
Sets up a support for retention and controlled retrieval of software support documentation and change control records.
Quality Assurance
QA monitors CM Process performance for adherence to the standards referenced in this process,
QA conduct of formal CM verification activities (e.g. Functional and Physical Configuration Audits) as prescribed by the projects Configuration management plan.
SEPG
Plan and participate all audits and provide visibility to the senior management about the product and process quality
SQA
Review Configuration management area, tools
Conduct Audits to assess the effectiveness of the process
Objectively evaluate adherence to product and process quality assurance
Interact with the respective owners of the project to make sure that the deliverables are in line with the customer expectations and organizations QMS
Plan for SQA activities required for Configuration management process
The Inputs for the CM Process are listed below:
Programmatic data: project plans and schedules (e.g., Project Management Plan); reports, and review results.
Technical data: specifications, requirements, designs, code, documentation, etc.
Other baseline documents
Change requests
Key Activities and Tasks to be performed during the implementation of CM process
Identify Configuration Items
Identify the configuration items, components, and related work products that will be placed under configuration management.
Provide guidelines about which kinds of work products are configuration items, and which are not. For example, source files are configuration items while intermediate files such as object files are not.
Unique identifiers (including the associated baseline) are assigned to configuration items and related technical documentation and data.
Identify the important characteristics of each configuration item. Example characteristics of configuration items include author, document or file type, and programming language for software code files.
Identify the owner of each configurable item.
Assign tracking numbers to Change Requests.
Create Configuration Management Plan
The Configuration Management plan includes the purpose of CM; governing standards; CM organization, roles, and responsibilities; Configuration Items; control boards; and CM functions, activities, tools, and procedures.
Identify different types of baseline Example: functional, Development, Review, Release baseline.
Identify which level of control and configuration management policies apply to each type of baseline.
Describe Change Control Process which include submitting a change request, reviewing and approving the request, and delivering the changed code into a build. Refer to Change Management Procedure
Identify the number and types of Configuration Audit to be performed. Audits are used to ensure completeness of the baseline in that all necessary configuration items are included, and traceability in that configuration management records exist to describe all changes to the baseline.
Describe the relation between the configuration management milestones and the software development milestones. The configuration management activities must be fully integrated with the software development activities.
The Project Manager and other affected groups review and approve the CMP and provide commitment to the plan.
The CMP is used as the basis for all planned CM activities, schedules, and resource requirements.
Establish Configuration Management Access Control Policy
Examine the configuration items in the CMP and determine which groups are necessary to maintain the integrity of each configuration item along with their required permissions.
Define configuration management policies.
Ensure that all work products exchanged between development tasks go through the configuration management system.
Determine check-in notes that should apply to the project.
Document all of the policy decisions (security, check-in policy, check-in notes) in the configuration management access control policy.
Establish Baselines.
A software baseline can be a set of requirements, design, source code files and the associated executable code, build files, and user documentation (associated entities) that have been assigned a unique identifier.
Create a configuration management baseline by placing configuration items related to configuration management into the configuration system. Configuration items to include are identified in the configuration management plan, and include items such as the configuration management plan itself, configuration management guidelines, configuration management access control policy, and configuration management tools.
Update the revision history and change log for each configuration item. Be sure all configuration management items are reviewed and in an acceptable state for the baseline.
Document the set of configuration items that are contained in a baseline Build a configuration management baseline report that includes the revision history, change log, and current status of each of these configuration items.
Perform configuration control.
Accept change requests from members of the software development team, testers, users or customers who feel they have encountered a problem with the software or would like to see implementation of an enhancement to the software.
Record change requests
Review all proposed changes to determine their potential impact to the project’s approved software and documentation baselines.
Recommend that each change request be approved, rejected, or deferred for further study.
Approve, reject, or defer the change request.
Track the status of change requests and authorize their closure.
Perform configuration status accounting.
Maintain records of the status and contents of the software throughout the project’s life cycle.
Record and monitor all changes to controlled software and documents to assure that the configuration of all identified items is known at all times.
Document the contents of versions, builds, and releases.
Make CM records readily available to affected groups and individuals.
Produce periodic status reports. Include such information as the number of changes made to date, the reason for each change, the number of system releases to date, the functionality provided with each release, and the latest version and revision identifiers.
Perform Configuration Audit.
Perform ad hoc audits of baselines. Confirm that CM records correctly identify the configuration items in the baseline. Check Change Requests to ensure that changes have been incorporated correctly and completely and that the integrity of the baseline has been maintained.
After testing is complete, perform a functional configuration audit. Examine the Requirements-to-Test Matrices for selected configuration items to verify that the items function as specified in the requirements.
Prior to each release or baseline delivery, perform a physical configuration audit to verify that every delivery item (e.g., program input file, test software, or document) is as reported in the delivery documentation and release letter. Check each item on the delivery list or in the Version Description Document/Memo to ensure that the item is present, is complete, is the correct version, is in the specified delivery format, and is correctly identified.
Verify that configuration audits are performed and configuration management procedures are followed.
Verification to ensure the SCM process is being executed as per the expectations:
Configuration Audit
Configuration Plan Review
Exit Criteria - when do we say that the CM process is complete ?
Baselined and controlled project products
Collected, analyzed and archived measures of CM performance, and audits of CM products
The effectiveness of this process has been assessed in accordance with project plans
The outputs for the CM process are listed below - What should be the tangible output artifacts expected from the implementation of the configuration management process ?
Project CM plans documented in the project CMP or PMP and supporting project schedule
CM review and audit reports
Baseline register
Analyzed and archived Configuration Status Accounting Reports
Measures - how do we measure the performance of Configuration Management Process ?
Effort expended for CM tasks (planned vs. actual).
Impact of requirements changes on project cost and schedule (this measure may be collected collaboratively with project development personnel).
Number of configuration audits completed (planned vs. actual).
Numbers Change Requests (by status), Trouble Reports (by status), Waivers & Deviations.
Number of changes to configuration items
Conclusion:
In conclusion, software configuration management plays a vital role in ensuring the integrity and reliability of software products throughout the entire software development life cycle. By establishing robust processes for configuration identification, control, status accounting, and audits, organizations can effectively manage changes, maintain version control, and mitigate risks.
Software configuration management enables teams to streamline collaboration, track changes, and ensure that all stakeholders are working with the correct and up-to-date versions of software components. It helps maintain consistency, reduces errors, and facilitates efficient troubleshooting.
By implementing sound software configuration management practices, organizations can enhance product quality, accelerate software delivery, and minimize the impact of changes. It fosters a controlled and structured approach to software development, enabling teams to adapt to evolving requirements, manage complex projects, and deliver software solutions that meet customer expectations.
In the dynamic landscape of software development, software configuration management serves as a guiding principle for maintaining integrity, version control, and traceability. Embracing these practices empowers organizations to navigate the complexities of the software development life cycle and deliver high-quality, reliable, and successful software products.