Software Configuration Management


Overview

To frame our discussion, consider:

What is a software configuration?

Why does a configuration require management?

How do we control and coordinate changes in the software configuration?


OUTLINE


First Law of Software Engineering

No matter where you are in the system life cycle, the system will change, and the desire to change it will persist throughout the life cycle.

Configuration management is the art of identifying, organizing, and controlling modifications to the software being built by a programming team. The goal is to maximize productivity by minimizing mistakes.

SCM Activities

1. Identify change
2. Control change
3. Ensure that change is being properly implemented
4. Report change to others who may have an interest

Software configuration management is a set of tracking and control activities that begin when a software development project begins and terminates when the software is taken out of operation.

Estimates indicate that less than 10% of programmers use modern configuration management tools. (Noted in Favre (1997) Understanding-In-The-Large.Proceedings of the 5th International Workshop on Program Comprehension, May 28-30, 1997, Dearborn, MI, pp. 29-38.)

Software Configuration

The items that comprise all information produced as part of the software engineering process are called a software configuration.

Artifacts produced during the process are called software configuration items (SCI).

Example Items

Requirements Specification
Prototype
Design Document
File Structures
Source Code Modules
Test Plan
Test Cases and recorded results
Engineering Change Orders
User 's Manual

Baseline

A baseline is "a specification or product that has been formally reviewed and agreed upon, that thereafter serves as the basis for further development, and that can be changed only through formal change control procedures." (IEEE Std. 729)

The baseline is the shared project data base. It is an SCM task to maintain the integrity of the set of artifacts. An approach to the integrity issue is to require approval for adding items to the baseline. A second part to maintaining integrity is dealing with modifications to items in the database.

Change Control

Change control involves procedures and tools to bring order to the change process. Larger projects have a formal Change Control Board whose responsibility it is to review and approve or disapprove change. It is the CCB responsibility to provide the mechanism to maintain orderly change processes.

Change Control Process


Access and Synchronization Control

Check-in and check-out support the notion of access and synchronization control.

Access control governs who has authority to access and modify a configuration item.

Synchronization control helps ensure that parallel activity does not overwrite changes made by one another.

Version Control

Version control works to help manage different versions of configuration items during the development process.


Go To Lecture [Outline] [Overview]

Go To [Course Outline]


References

van Vliet, H. (1993) Software Engineering: Principles and Practice. New York: John Wiley.