Software Configuration Management

Pokpong Rujirachartkul
Software Engineering KMITL
6 min readApr 17, 2020

Writer : Jirapat Suksiripornrit, Pokpong Rujirachartkul

What is Software Configuration management¹

Introduction to SCM

In this article, we are going to introduce you to the concept of Software Configuration Management (SCM). First of all, we will introduce the concept of Configuration Management (CM). According to Wikipedia, CM is a systems engineering process for establishing and maintaining consistency of a product’s performance, functional, and physical attributes with its requirements, design, and operational information throughout its life.

To put it in simpler terms, CM is the management and control of any change that was made to the software or hardware features. Note that this also includes documentation and firmware.

This will bring us to the Software Configuration Management (SCM), the system to manage and control all the changes that were made to the software during development and maintenance. It should also control any support software that was used during development.

Next, we will cover some of the reasons that cause SCM to exist.

The primary reasons for Implementing Software Configuration Management are :

  1. There are multiple people working on software which is continually updating
  2. It may be a case where multiple version, branches, authors are involved in a software project, and the team is geographically distributed and works concurrently
  3. Changes in user requirement, policy, budget, schedule need to be accommodated.
  4. Software should able to run on various machines and Operating Systems
  5. Helps to develop coordination among stakeholders
  6. SCM process is also beneficial to control the costs involved in making changes to a system

As shown above, the main reasons for implementing software configuration management are to coordinate between people (developers, stakeholder) and to handle the change that was made during development. Be it change to requirement, budget , features or anything else.

Photo by Dylan Gillis on Unsplash

Goal of SCM²🎯

In this section, we are going to briefly explain the goal that SCM aims to achieve.

  • Configuration identification : Identifying configurations, configuration items and baselines. Baseline is an agreed concept / description which will serve as a basis when there is new change for the product.
  • Configuration control : Implementing a controlled change process. This is usually achieved by setting up a change control board whose primary function is to approve or reject all change requests that are sent against any baseline.
  • Configuration status accounting : Recording and reporting all the necessary information on the status of the development process.
  • Configuration auditing : Ensuring that configurations contain all their intended parts and are sound with respect to their specifying documents, including requirements, architectural specifications and user manuals.
  • Build management : Managing the process and tools used for builds.
  • Process management : Ensuring adherence to the organization’s development process.
  • Environment management : Managing the software and hardware that host the system.
  • Teamwork : Facilitate team interactions related to the process.
  • Defect tracking : Making sure every defect has traceability back to the source.

How to use SCM³

Outline of SCM Plan (IEEE 828)

Introduction 📝 : Describe purpose, scope of application, key terms and references.

Management (WHO?) 👨‍💼 : Identifies the responsibilities and authorities for accomplishing the plan.

Activities (WHAT?) 🎭 : Identifies the activities to be performed in applying to the project.

Schedule (WHEN?) 📅 : Establishes the sequence and coordination of the SCM activities with project milestones.

Resources (HOW?) 📋 : Identifies tools and techniques required for the implementation of the SCM Plan.

Maintenance 🔨 : Identifies activities and responsibilities on how the SCM Plan will be kept current during the life-cycle of the project.

The software configuration management plan

  1. Defines the types of document to be managed and a document naming scheme.
  2. Define who takes responsibility for the CM procedures and creation of baselines.
  3. Defines policies for change control and version management.
  4. Describe the tools which should be used to assist the process and any limitations on their use.
  5. Defines the Configuration management database used to record configuration information.

Software Configuration Management Tools¹

Any change management software should have the following 3 key features:

  • Concurrency management : When the same file being edited by multiple person at the same time.
  • Version control : Save every change made to file, it is possible to roll back to the previous version in case of issue.
  • Synchronization : Synchronize the local copy to stay updated with the changes made by other team members.

Popular tools

  1. Git
  2. Microsoft Team Foundation Server
  3. Red Hat Ansible

Benefits & Challenges of using SCM

Benefit of using SCM⁴ 😃

Better control of changes

Increase efficiency

  • Provides control and improves visibility with tracking

Enhanced system and process reliability

  • Detect and correct improper configuration that could impact performance

Efficient change management

  • Reduce risk of production incompatibility or problems.

Faster restoration of your service in cases of failure

  • Recovering the working configuration will be quicker and easier.

Enhances productivity and application quality

  • Automatically versions files, labels and organizes them as they change during the development process

Prevents unintentional code overwrites

  • Change requests need to be approved before change.

Enables parallel development

  • Don’t have to wait for another team to finish a task to process further, you can concurrently develop because it is safe to do.

Challenges of using SCM⁵ 😓

Multiple Environments

  • Different servers are managed by different teams. How to track and maintain consistency of change across different environments? (This includes Development, Testing, Production, Recovery environment.)

Change Validation

  • What is requested to be changed might be described, but what actually comprises the change typically is not captured. How to properly validate the request for change?

Outsourcing

  • With multiple software vendors in different locations and time zones across the world make it extremely difficult to manage change. Not only multiple environments in development, there could be communication and practice between groups involved.

Technology mash

  • Organizations typically mix system components and in-house software infrastructure, provided by external vendors. The level of knowledge and control varies between these types of systems, So it’s harder for developers to seamlessly integrate different types of systems together.

Agile Development

  • Agile changes and configuration management process is required to support agile development. The pace of changes increase rapidly and within the environment such that it support continuous integration, manual method can’t survive the pace

People

  • Specialists have the tendency to change their jobs from time to time. So it is important that every person in the operation needs to understand and be able to analyze changes that are planned.🤣

Data/Information Integration and Benchmark

  • Due to the variability of tools and methods in IT operation, The integration of all dispersed configuration data in order to scale the ability of analysis is still the question. How to ensure that the configuration changes you make are the right ones and if the change is good for the business that it will remain stable.

Conclusion

The SCM has a critical role in the software development process. The configuration artifacts are used in all subsequent phases of software planning and developing. Developing, testing, deployment and installation are made based on the software configuration. There are several difficulties when trying to synchronize the SCM activities between teams. Most of those difficulties are increased when software development teams are distributed, in fact, some new challenges can appear. SCM is performed by following a SCM Plan. This plan can either be a public standard(e.g. IEEE 828) or an internal standard. The tools to be used in the process of SCM varies, from a simple version storage tool to a very complex system with automated procedures for policy checks.

Photo by Todd Diemer on Unsplash

[1] : “Software Configuration Management in Software Engineering”, Guru99, https://www.guru99.com/software-configuration-management-tutorial.html [Accessed 15 Apr. 2020].

[2] : “Software configuration management” (2020) Wikipedia, https://en.wikipedia.org/wiki/Software_configuration_management [Accessed 15 Apr 2020].

[3] : Guenter Teubner, Lecture notes on Software Configuration Management, 26 Jan 2016, https://ase.in.tum.de/stars.globalse.org/stars1/Lectures/CM-Fall1999.pdf [PDF file].

[4] : Rana Alnajjar. “What are the benefits of Software Configuration Management to software engineering?” bayt, 22 June 2013, https://specialties.bayt.com/en/specialties/q/11008/what-are-the-benefits-of-software-configuration-management-to-software-engineering/ [Accessed 14 Apr. 2020].

[5] : Sasha Gilenson. “Top 10 Challenges for change and configuration management” EVOLVEN, 05 April 2016, https://www.evolven.com/blog/top-10-challenges-for-change-and-configuration-management.html [Accessed 14 Apr. 2020].

--

--