Software Configuration Management
Software Configuration Management in
Software Engineering
What is Software Configuration Management?
In Software Engineering, Software Configuration Management(SCM) is a
process to systematically manage, organize, and control the changes in the
documents, codes, and other entities during the Software Development Life
Cycle. The primary goal is to increase productivity with minimal mistakes.
SCM is part of cross-disciplinary field of configuration management and it can
accurately determine who made which revision.
In this software engineering tutorial, you will learn-
Why do we need Configuration management?
Tasks in SCM process
Configuration Identification:
Baseline
Change Control
Configuration Status Accounting
Configuration Audits and Reviews
Participant of SCM process
Software Configuration Management Plan
Software Configuration Management Tools
Why do we need Configuration management?
The primary reasons for Implementing Technical Software Configuration
Management System are:
What is Linux Linux Beginner Tutorial
There are multiple people working on software which is continually
updating
It may be a case where multiple version, branches, authors are involved
in a software config project, and the team is geographically distributed
and works concurrently
Changes in user requirement, policy, budget, schedule need to be
accommodated.
Software should able to run on various machines and Operating
Systems
Helps to develop coordination among stakeholders
SCM process is also beneficial to control the costs involved in making
changes to a system
Any change in the software configuration Items will affect the final product.
Therefore, changes to configuration items need to be controlled and
managed.
Tasks in SCM process
Configuration Identification
Baselines
Change Control
Configuration Status Accounting
Configuration Audits and Reviews
Configuration Identification:
Configuration identification is a method of determining the scope of the
software system. With the help of this step, you can manage or control
something even if you don't know what it is. It is a description that contains the
CSCI type (Computer Software Configuration Item), a project identifier and
version information.
Activities during this process:
Identification of configuration Items like source code modules, test case,
and requirements specification.
Identification of each CSCI in the SCM repository, by using an object-
oriented approach
The process starts with basic objects which are grouped into aggregate
objects. Details of what, why, when and by whom changes in the test
are made
Every object has its own features that identify its name that is explicit to
all other objects
List of resources required such as the document, the file, tools, etc.
Example:
Instead of naming a File login.php its should be named login_v1.2.php where
v1.2 stands for the version number of the file
Instead of naming folder "Code" it should be named "Code_D" where D
represents code should be backed up daily.
Baseline:
A baseline is a formally accepted version of a software configuration item. It is
designated and fixed at a specific time while conducting the SCM process. It
can only be changed through formal change control procedures.
Activities during this process:
Facilitate construction of various versions of an application
Defining and determining mechanisms for managing various versions of
these work products
The functional baseline corresponds to the reviewed system
requirements
Widely used baselines include functional, developmental, and product
baselines
In simple words, baseline means ready for release.
Change Control:
Change control is a procedural method which ensures quality and consistency
when changes are made in the configuration object. In this step, the change
request is submitted to software configuration manager.
Activities during this process:
Control ad-hoc change to build stable software development
environment. Changes are committed to the repository
The request will be checked based on the technical merit, possible side
effects and overall impact on other configuration objects.
It manages changes and making configuration items available during
the software lifecycle
Configuration Status Accounting:
Configuration status accounting tracks each release during the SCM process.
This stage involves tracking what each version has and the changes that lead
to this version.
Activities during this process:
Keeps a record of all the changes made to the previous baseline to
reach a new baseline
Identify all items to define the software configuration
Monitor status of change requests
Complete listing of all changes since the last baseline
Allows tracking of progress to next baseline
Allows to check previous releases/versions to be extracted for testing
Configuration Audits and Reviews:
Software Configuration audits verify that all the software product satisfies the
baseline needs. It ensures that what is built is what is delivered.
Activities during this process:
Configuration auditing is conducted by auditors by checking that defined
processes are being followed and ensuring that the SCM goals are
satisfied.
To verify compliance with configuration control standards. auditing and
reporting the changes made
SCM audits also ensure that traceability is maintained during the
process.
Ensures that changes made to a baseline comply with the configuration
status reports
Validation of completeness and consistency
Participant of SCM process:
Following are the key participants in SCM
1. Configuration Manager
Configuration Manager is the head who is Responsible for identifying
configuration items.
CM ensures team follows the SCM process
He/She needs to approve or reject change requests
2. Developer
The developer needs to change the code as per standard development
activities or change requests. He is responsible for maintaining
configuration of code.
The developer should check the changes and resolves conflicts
3. Auditor
The auditor is responsible for SCM audits and reviews.
Need to ensure the consistency and completeness of release.
4. Project Manager:
Ensure that the product is developed within a certain time frame
Monitors the progress of development and recognizes issues in the
SCM process
Generate reports about the status of the software system
Make sure that processes and policies are followed for creating,
changing, and testing
5. User
The end user should understand the key SCM terms to ensure he has the
latest version of the software
Software Configuration Management Plan
The SCMP (Software Configuration management planning) process planning
begins at the early coding phases of a project. The outcome of the planning
phase is the SCM plan which might be stretched or revised during the project.
The SCMP can follow a public standard like the IEEE 828 or
organization specific standard
It defines the types of documents to be management and a document
naming. Example Test_v1
SCMP defines the person who will be responsible for the entire SCM
process and creation of baselines.
Fix policies for version management & change control
Define tools which can be used during the SCM process
Configuration management database for recording configuration
information.
Software Configuration Management Tools
Any Change management software should have the following 3 Key features:
Concurrency Management:
When two or more tasks are happening at the same time, it is known as
concurrent operation. Concurrency in context to SCM means that the same
file being edited by multiple persons at the same time.
If concurrency is not managed correctly with SCM tools, then it may create
many pressing issues.
Version Control:
SCM uses archiving method or saves every change made to file. With the
help of archiving or save feature, it is possible to roll back to the previous
version in case of issues.
Synchronization:
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
1. 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/
2. 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://azure.microsoft.com/en-us/services/devops/server/
3. Ansible: It is an open source Software configuration management tool.
Apart from configuration management it also offers application deployment &
task automation.
Download link: https://www.ansible.com/
Check more SW Configuration tools: https://www.guru99.com/software-
configuration-management-tools.html
Conclusion:
Configuration Management best practices helps organizations to
systematically manage, organize, and control the changes in the
documents, codes, and other entities during the Software Development
Life Cycle.
The primary goal of the SCM process is to increase productivity with
minimal mistakes
The main reason behind configuration management process is that
there are multiple people working on software which is continually
updating. SCM helps establish concurrency, synchronization, and
version control.
A baseline is a formally accepted version of a software configuration
item
Change control is a procedural method which ensures quality and
consistency when changes are made in the configuration object.
Configuration status accounting tracks each release during the SCM
process
Software Configuration audits verify that all the software product
satisfies the baseline needs
Project manager, Configuration manager, Developer, Auditor, and user
are participants in SCM process
The SCM process planning begins at the early phases of a project.
Git, Team foundation Sever and Ansible are few popular SCM tools.
Source:
https://www.guru99.com/software-configuration-management-
tutorial.html#:~:text=In%20Software%20Engineering%2C%20Software
%20Configuration,increase%20productivity%20with%20minimal%20mistakes.