written 8.5 years ago by |
Software Configuration Management
- Software Configuration Management is a set of activities carried out for identifying, organising, and controlling changes throughout the lifecycle of computer software
- During the development of software change must be managed and controlled in order to improve quality and reduce error. Hence software configuration management is a quality assurance activity that is applied throughout the software process.
- To manage and control Software Configuration Item (SCI), each should be separately named and organized using object oriented approaches.
The SCM process defines a series of tasks that have four primary objectives:
- To identify all items that collectively define the software configuration (Identification).
- To manage changes to one or more of these items (Change Control).
- To facilitate the construction of different versions of an application (Version Control).
- To ensure that software quality is maintained over time (Configuration Audit).
Following fig shows the layers of SCM process.
Version Control
- Version Control Combines procedures and tools to manage different version of configuration objects that are created during the software process.
A version control system implements or is directly integrated with four major capabilities:
- A project database that stores all relevant configuration objects,
- A version management capability that stores all version of configuration object,
- A make facility that enables the software engineer to collect all relevant configuration objects, and
- Construct a specific version of the software.
A number of version control systems establish a set – a collection of all changes (to some baseline configuration) that are required to create a specific version of the software.
“Changes set” captures all changes to all files in the configuration along with reason for changes and details of who made the changes and when.
A number of named change set can be identified for an application or system. This enables a software engineer to construct a version of the software by specifying the changes set (by name) that must be applied to the baseline configuration.
To accomplish this, a system modelling approach is applied. The system model contains
- A template that include a component hierarchy and build order for the component that describe how the system must be constructed,
- Construction rules, and
- Verification rules.
Change Control
Change control is manual step in software lifecycle. It combines human procedures and automated tools.
Change control process is illustrated in following figure 2.
Change request submitted and evaluated to assess technical merit, potential side effects, overall impact on other configuration object and system function, and project cost of change.
The result of the evaluation are presented as a change report, which is used by the change control authority(CCA) – A person or group who make final decision on the status and priority of the change.
An engineering change order (ECO) is generated for each approved change. The ECO describes the change order to be made, the constraints that must be respected, and the criteria for view and audit.
The object to be changed can be placed in a directory that is controlled by software engineer making the change. As an alternative, the object to be changed can be “checked out” of the project database, change is made, and appropriate SQA activities are applied.
The object are then “checked in” to the database and appropriate version control mechanism are used to create the next version of the software.
Checked in and Checked out mechanism require two important elements
Access Control
Synchronization Control
The Access control mechanism gives the authority to the software engineer to access and modify the specific configuration object.
The Synchronization control mechanism allows to make parallel changes or the change made by two different people without overwriting each other’s work.
Version Control and change control system often implements an issue tracking (also called bug tracking) capability that enables the team to record and track the status of all outstanding issues associated with each configuration object.