Software Configuration Management


During the software development cycle, the continuous application of changes in software code is inevitable. Any change to be made to the software needs to be analyzed, recorded, controlled, and reported to those with a need to know.

Software configuration management (SCM) is an umbrella activity that is applied throughout the software process. SCM activities are incorporated to:

1. Identify the changes
2. Control changes
3. Ensure that change is properly implemented
4. Report the changes

SCM is a set of activities that control changes by identifying the work products, establishing relationships among them, defining mechanisms for managing different versions of these work products, controlling the changes along with auditing and reporting on the changes made.

The output of the software process is the information that may be divided into 3 broad categories:

1. Software programs (in the form of source code and executable form)
2. Documentations pertaining to designing, technical spec, and so on.
3. Data contained within the program or external to it.

These work products that comprising all the info generated as part of the software development process is collectively called software configuration items (SCI).

Below are a few software configuration items that grow rapidly as the software process progresses:-

System specification
Software project plan,
Software requirement specifications
Design documents
Software source code
Software executables
Test documents (test plan, test cases, strategy, etc.)

What are the different Software configuration tasks?


The SCM tasks include-

1. Identification
2. Version control
3. Change control
4. Configuration auditing
5. Reporting


Configuration objects:

A subset or portion of SCI can be considered as a configuration object. For example a section of requirement specification, a particular suite of test cases. Each object has a set of distinct features that identify it uniquely for e.g a name, a description, a list of resources, etc.


Version control:

Version control can be defined as the application of tools and procedures to manage different versions of the software configuration objects that are generated during the software process. Each version of the software is a collection of various SCIs i.e. source code, documents, data, and each version may be composed of different variants.


Change control:

Changes are inevitable in the software development process. An uncontrolled change may create chaos. Thus change control is a combination of human procedures and the application of tools to provide a mechanism for the control of changes that happens across the software development process.




Configuration audit:

Configuration audit is performed to ensure that the change has been properly implemented. Configuration audit accesses the configuration object and answers the following questions:

1. Has the change mentioned in the ECO been made? Are there any additional modifications that are incorporated?

2. Has the formal technical review been conducted to access technical correctness?

3. Has the software process been followed and have the software engineering standards been applied?

4. Has the change been highlighted in the SCI? Do the attributes of the configuration object reflect the change?

5. Have SCM procedures been followed for noting, recording, and reporting the change?

6. Have all the related SCIs been properly updated?