As you’re no doubt aware, in software engineering, software configuration management (SCM) refers to a process for maintaining computer systems, servers, and software in a desired, consistent state.
Sometimes called software change management or IT automation, the idea is to have a system in place to track and compare changes made across a system throughout the development process and also identify who made these revisions.
The purpose is to make project management easier, minimize errors, increase traceability, and improve overall software quality.
The benefits of a SCM process are:
Multi-User Updates: Often many people work on software development, meaning there are constant updates and changes. SCM allows you to track all code and configurations deployed into production (aka a configuration audit) and also introduces traceability by determining which contributor made each one.
Productivity: SCM enhances the productivity of the software as it ensures minimal errors. For example, you can always make sure that your test and production environments match.
Communication and Collaboration: Communication between team members is easy with SCM, making it simple for stakeholders involved in the project to work together and enhance the quality of the product.
Platform and OS Testing: Ensure that the software runs effectively across multiple platforms and operating systems.
Change Accommodation: SCM makes it easier to accommodate changes in schedule, policy, and users.
Cost Control: By tracking team members and project workflow, SCM helps to control costs and increased efficiency.
In this article, I’ll take you through the different steps of a SCM process, who needs to be involved, and what tools are available to help.
The 5 steps of a SCM plan
The software configuration management process is a series of steps designed to track and manage all the defects, resources, codes, documents, hardware and budgets throughout a project.
SCM is an interdisciplinary process involving people at every level, including DevOps, developers, project managers/owners, SysAdmin and testers.
1. Planning and Identification
The first step in the process is planning and identification. In this step, the goal is to plan for the development of the software project and identify the items within the scope. This is accomplished by having meetings and brainstorming sessions with your team to figure out the basic criteria for the rest of the project.
Part of this process involves figuring out how the project will proceed and identifying the exit criteria. This way, your team will know how to recognize when all of the goals of the project have been met.
Specific activities during this step include:
Identifying items like test cases, specification requirements, and code modules
Identifying each computer software configuration item in the process
Group basic details of why, when, and what changes will be made and who will be in charge of making them
Create a list of necessary resources, like tools, files, documents, etc.
2. Version Control and Baseline
The version control and baseline step ensures the continuous integrity of the product by identifying an accepted version of the software. This baseline is designated at a specific time in the SCM process and can only be altered through a formal procedure.
The point of this step is to control the changes being made to the product. As the project develops, new baselines are established, resulting in several versions of the software.
This step involves the following activities:
Identifying and classifying the components that are covered by the project
Developing a way to track the hierarchy of different versions of the software
Identifying the essential relationships between various components
Establishing various baselines for the product, including developmental, functional, and product baselines
Developing a standardized label scheme for all products, revisions, and files so that everyone is on the same page.
Baselining a project attribute forces formal configuration change control processes to be enacted in the event that these attributes are changed.
3. Change Control
Change control is the method used to ensure that any changes that are made are consistent with the rest of the project. Having these controls in place helps with quality assurance, and the approval and release of new baseline(s). Change control is essential to the successful completion of the project.
In this step, requests to change configurations are submitted to the team and approved or denied by the software configuration manager. The most common types of requests are to add or edit various configuration items or change user permissions.
This procedure includes:
Controlling ad-hoc changes requested by the client
Checking the merit of the change request by examining the overall impact they will have on the project
Making approved changes or explaining why change requests were denied.
4. Configuration Status Accounting
The next step is to ensure the project is developing according to the plan by testing and verifying according to the predetermined baselines. It involves looking at release notes and related documents to ensure the software meets all functional requirements.
Configuration status accounting tracks each version released during the process, assessing what is new in each version and why the changes were necessary. Some of the activities in this step include:
Recording and evaluating changes made from one baseline to the next
Monitoring the status and resolution of all change requests
Maintaining documentation of each change made as a result of change requests and to reach another baseline
Checking previous versions for analysis and testing.
5. Audits and Reviews
The final step is a technical review of every stage in the software development life cycle. Audits and reviews look at the process, configurations, workflow, change requests, and everything that has gone into developing each baseline throughout the project’s development.
The team performs multiple reviews of the application to verify its integrity and also put together essential accompanying documentation such as release notes, user manuals, and installation guides.
Activities in this step include:
Making sure that the goals laid out in the planning and identification step are met
Ensuring that the software complies with identified configuration control standards
Making sure changes from baselines match the reports
Validating that the project is consistent and complete according to the goals of the project.
Who is involved in the software configuration process?
The SCM process is multidisciplinary, involving just about every member of the software development team.
The configuration manager is in charge of determining who is responsible for what throughout the development process. They make sure everyone follows the SCM process across the project and have the final say on all change requests.
The project manager’s role is integral to the SCM process. They set the timeframe of the project to ensure that it meets completion deadlines and they also generate reports about the team’s progress. Another important role of the project manager is to ensure that every member of the team is following the predetermined guidelines for creating, making changes to, and testing the software.
Developers are responsible for writing code during development as well as accommodating any approved change requests.
This role is in charge of all audits and reviews and must make sure that the final release is complete and consistent.
What are the advantages of using configuration management tools?
There are a number of tools available to help facilitate the software configuration management process. The purpose of these tools is the automation of traditionally manual tasks, allowing for greater accuracy, speed and control. More specifically, they can help with:
Alerts and Reports: A good SCM tool will provide alerts and reports if there are any deviations from the agreed upon baseline. This data will be pushed through in close to real-time, allowing managers to act fast if something goes off track.
Track Changes: SCM tools will automatically track changes to servers or applications and will also allow manual entry of such data. Change auditing can also be done via monitoring script outputs.
Configuration Comparisons: The best software configuration management tools will provide a way to identify differences between configurations.
Faster Troubleshooting: Errors, missteps, and issues are identified quickly so that developers can take action before the problem grows.
Inventory Tracking: Most SCM tools will feature a way to track hardware and software assets so that you don’t have to keep a manual list.
Patch Management: SCM tools can help you track all the details surrounding patch management as you distribute updated software.
Are there any downsides to using a software configuration management tool?
There are some things to consider before embracing an SCM tool, including:
Resource Drain: You must have the resources to support the process from beginning to end
Knowledge Limitations: Everyone involved must have a profound knowledge of the software management tools being used
SMB Disadvantage: The scope of what is needed to use these tools effectively may be difficult for a small business to support
Hardware Specs: Fast and highly configured hardware is required for the process to run smoothly.
Final Word on Software Configuration Management
Above I presented a general outline of what you need to know to set up a software configuration management process to track, control, and manage your projects.
SCM tools, such as Ansible or TeamCity, help automate many aspects of the SCM process and can be a great return on investment. You can see our pick of these in the 10 best software configuration management tools article. The world of software configuration management and QA is developing fast. Sign up for The QA Lead newsletter for more handy tips, tricks, and tools delivered right to your inbox.