Software Configuration Management in Software Engineering

Software Configuration Management in Software Engineering

What is Software Configuration Management?

Software Configuration Management in simple terms is the process of controlling changes that are made to the software to maintain existing products. The purpose of any SCM system is to track change in a way that is easy to understand and manage. Configuration management software makes it possible to manage all the versions of a software package in a single repository. This lets project managers keep track of releases and use previous versions if needed. Some organizations have a single SCM solution that can be used throughout the SDLC, whereas, other organizations have different tools specific to each phase of the SDLC.

The configuration management of a project is a key area that developers should focus on. There are various reasons behind the importance but the main two reasons are to control the large set of images for different environments and to run different sets or sets of images in parallel (for testing).

  • To develop and maintain a coordinated approach to configuration management, including the joint application of configuration management techniques and practices across the software life cycle
  • To assure that any new or changed system elements are adequately controlled throughout their life cycles
  • To maintain knowledge, traceability, and transparency of system entities and relationships throughout their life cycles; and of interactions between these entities and their environment, both static and dynamic.

Click Here to Read: Understanding Software Development Life Cycle (SDLC)

Tasks in Software Configuration Management

Configuration Identification

Identifying configurations is to identify defining, listing the attributes of the configuration. The goal of configuration identification is to have a fully documented collection of information that provides the audience with all the necessary details about an item independent of its representation.

Activities during this process are given below:

  • The identification of configuration items is essential in configuration management. The identification of each object stored in the repository will allow you to prevent conflicts between multiple versions of the same file.
  • The configuration management process starts with individual objects. That’s the basic level. After the individual objects are grouped, they form an aggregate object. When necessary, information is added to the aggregate object. 
  • Every object has its properties, actions, and interrelationships with other objects, which help define it. Maintaining a framework for configuration management is necessary. This includes checking the updates and changes of the system and more.

Baseline

A baseline is a snapshot of the code at a particular point in time. Baselines are usually created manually, or by some kind of auto-build or continuous integration system. The purpose of a baseline is to have an unchanging reference point that can be easily identified if it has been changed so that you can know what was different between the old version and the new version.

Activities during this process are given below:

  • Provide programmers with the means to construct various versions of an application
  • Software configuration management is all about ensuring that the different versions of work products are easily accessed.
  • The functional baseline is a comparison between what was originally specified and what was built.
  • Baselines are widely used in software configuration management but are infrequently used in product development management. They include functional, developmental, and product baselines.

Click Here to Read: What is DevOps? The Beginner’s Guide

Change Control

The configuration management process allows you to compare your software’s current version with a standard version. The configuration can be source code, object code, test cases, documentation, or any other software artifacts. The change control process ensures that changes that have been approved are implemented in a controlled manner. This means that decisions are made before making changes; that there is an audit trail of change decisions; and that there is a record of the effects of the change.

The change control process does not dictate what changes should be made to the project, but rather how to make them in a consistent and repeatable fashion.

Activities during this process are given below:

  • We use a repository to control how software is changed. Changes are committed to a repository.
  • The subject of this request will be reviewed by the program’s administrators based on its technical merits and possible side effects concerning other elements of the program.

Configuration Status Accounting

Configuration status accounting may sound like a mysterious practice, but it’s very simple. The idea is to record what your configuration management system is doing, and why, and when. 

Activities during this process are given below:

  • Activities related to the control of the configuration items and the status accounting data.

Configuration Status

Activities related to the collection, reporting, and dissemination of configuration status accounting data. Activities related to the presentation, management, and reporting of configuration status accounting data.

Configuration Audits and Reviews

A configuration audit is simply an examination of the system to determine whether it complies with the specified configuration management plan. Configuration audits can be conducted by internal or external auditors, by customers or contractors, or by the project team members themselves.

Activities during this process are given below:

  • Audits should focus on requirements and plans rather than on actual product artifacts. An audit determines whether your plan is being followed, not whether your software is bug-free.
  • The scope of the audit must be consistent with the amount of time available to complete it. Otherwise, the audit loses its value as part of a continuous improvement process. It will also tend to distract from day-to-day work if it becomes an end in itself.
  • Audits are normally scheduled at intervals set by the CM process owner to check that CM processes are being followed correctly. This interval may vary from daily to annually depending on the size and complexity of the project and the maturity level of its CM processes.

Click Here to Read: Git Tutorial: Everything you need to know

Participants of the SCM Process

Configuration Manager: Configuration Manager is responsible for managing software development by collecting, analyzing, and storing all changes of the software configuration.

Developer: People who write software are called “developers.” I am not sure why this word was chosen for both jobs, but I suspect it has something to do with the fact that both activities involve developing physical property.

Auditor: The auditor is the participant of SCM who is responsible for detecting operation errors within the system. An auditor should have a complete understanding of the business to figure out what to look for when auditing.

Project manager: A project manager is a person who leads and manages an organization to fulfill the project’s objectives. The project manager is responsible for defining project objectives, establishing the scope of the project definition, providing technical leadership and management, planning and coordinating resources, monitoring and controlling the progress of work, ensuring compliance with legal requirements, managing risks and issues, managing communications, reporting on status to stakeholders, and usually developing an overall schedule

User: A user is a person who uses something that has been created or uses information about it. A participant is someone who creates, provides, or processes the material for the product. Users are people who apply SCM to suit their own needs. They are both customers and users. They are the ones who make purchases and create requests for changes to existing products.

Software Configuration Management Plan

The purpose of the configuration management plan is to establish and maintain control over the creation and modification of all software documentation and software itself. The configuration management plan

Addresses:

  • Configuration identification (software products, system components, etc.)
  • Configuration status accounting (what is in the system and what is not)
  • Software configuration status accounting (what has been authorized, what has been verified, what has been tested, what has been installed)
  • Software configuration changes (instances of change requests and their implementation) and impact analysis (changes and their impact on the system and its operating environment)
  • Configuration status control (monitoring and controlling change)
  • Technical data control (documentation and other technical data)
  • Identification of configuration items for test purposes

Software Configuration Management Tools

The majority of open source tools are available for free. For those who don’t know what a configuration management tool is I’ll give a quick introduction. A software configuration management tool is a piece of software that a team of developers uses to manage the versions of files that they are working on. It is typically used to track changes in source code, documentation, and computer binaries.

Well-known software configuration management tools

Git

Git is widely used in the Linux operating system, and it’s considered one of the more innovative software products. This is used in most software projects these days, even in Microsoft! Microsoft has embraced Git, and it’s present in most of its development tools.

Team Foundation server

Team Foundation Server (TFS) is a Microsoft-developed application for source code management (SCM) and project management for software development teams using Microsoft Visual Studio. TFS is part of the Visual Studio platform and its use of the Windows Server platform employs a relational database management system (RDBMS).

Ansible

Ansible is a great way to ensure that you’re consistently deploying your application in an automated manner. The official website states that Ansible works over SSH, but also includes a module to communicate over JSON, which can be used to communicate with certain applications that provide JSON-formatted output over HTTP, for example.

Leave a Reply