33 Software Configuration Management- Overview
A configuration management, system can be defined as a collection of components organized to accomplish a specific function or set of functions. The configuration of a system is the function and/or physical characteristics of hardware, firmware, software or a combination thereof as set forth in technical documentation and achieved in a product. Configuration management is the discipline of identifying the configuration of a system at distinct points in time for systematically controlling changes to the configuration and maintaining the integrity and traceability of the configuration throughout the system life cycle. Software configuration management can be defined as the set of activities that have been developed to manage change throughout the software life cycle. A set of management disciplines within a software engineering process to develop a baseline. Software Configuration Management encompasses the disciplines and techniques of initiating, evaluating and controlling change to software products during and after a software project.
The configuration management activities include:
Promotion: A promotion is a version of a configuration item/CM aggregate that has been available to other developers in a project.
Release: A release is a version that has been available to the user or the client.
Repository: It stores the various releases of a CM item/aggregate.
Workspace: It is a library of promotions.
The configuration management activities include:
- Configuration Item Identification:
Modeling the system as a set of evolving components.
- Promotion Management:
The creation of versions for other developers.
- Release Management:
The creation of versions for clients and users.
- Change Management:
The handling, approval & tracking of change requests
- Branch Management:
The management of concurrent development
- Variant Management:
The management of coexisting versions
The major tasks in software configuration management includes:
Identification:
Tracking multiple versions to enable efficient changes.
Version Control:
Control changes before and after release to customer.
Change Control:
Authority to approve and prioritize changes.
Configuration Auditing:
- Ensure changes made properly.
Reporting:
- Tell others about changes made.
Configuration management standards always be based on a set of standards which are applied within an organization. It should be based on an evolutionary process model rather than something like the waterfall model. Baseline is a specification or product that has been formally reviewed and agreed to by responsible management that thereafter serves as the basis for further development, and can be changed only through formal change control procedures.
Examples:
Baseline A: The API has been completely been defined; the bodies of the methods are empty
Baseline B: All data access methods are implemented and tested
Baseline C: The GUI is implemented.
As systems are developed, a series of baselines is developed, usually after a review (analysis review, design review, code review, system testing, client acceptance)
- Developmental Baseline
- Functional Baseline
- Product Baseline
Software systems are subject to continual change requests
- From users
- From developers
- From market forces
Fig 2: Configuration Management Cycle
In change management process Request change by completing a change request form Analyze change request
If change is valid then
- Assess how change might be implemented.
- Assess change cost.
- Submit request to change control board
else
- Reject Change request
If change is accepted by change control board then
Repeat
- Make changes to Software.
- Submit changed software for quality approval.
- Create new System Version
else
- Reject change request.
Definition of change request form is part of the CM planning process, records change required, suggestor of change, reason why change was suggested and urgency of change(from requestor of the change). Records change evaluation, impact analysis, change cost and recommendations (System maintenance staff). Change control board should be reviewed by an external group who decide whether or not they are cost-effective from a strategic and organizational viewpoint rather than a technical viewpoint. It should be independent of project responsible for system. The group is sometimes called a change control board. This must include representatives from client and contractor staff. Change request specifies the procedures for requesting a change to a baselined configuration item and the information to be documented: Name(s) and version(s) of the configuration item(s) where the problem appears.
Evaluation of a change Specifies the analysis required to determine the impact of proposed changes and the procedure for reviewing the results of the analysis.
Summary
Configuration management is very crucial for evolving software systems. Careful planning is required considering aspects like the components that are likely to be changed, any other subsystems that may have to be changed for the modification of the given system, analysis of cost etc. Configuration management makes sure that these changes do not cause undesired impact on the other subsystems.