9 Software Configuration Management
9 Software Configuration Management
Semester 5
2
Software Configuration Management
The output of the software process is information that may be divided into three broad
categories:
Computer programs (both source level and executable forms),
Work products that describe the computer programs (targeted at various stakeholders), and
Data or content (contained within the program or external to it).
The items that comprise all information produced as part of the software process are
collectively called a software configuration.
3
Software Configuration Management
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. (Bersoff, et
al, 1980)
5
What Are These Changes?
Four important elements that should exist when a configuration management system is
developed:
Component elements—a set of tools coupled within a file management system (e.g., a database)
that enables access to and management of each software configuration item.
Process elements—a collection of actions and tasks that define an effective approach to change
management (and related activities) for all constituencies involved in the management,
engineering, and use of computer software.
7
Elements of a Configuration Management
System
Four important elements that should exist when a configuration management system is
developed:
Construction elements—a set of tools that automate the construction of software by ensuring
that the proper set of validated components (i.e., the correct version) have been assembled. H
Human elements—a set of tools and process features (encompassing other CM elements) used
by the software team to implement effective SCM.
8
Baselines
approved
Software Formal
engineering SCIs technical SCIs
tasks reviews
stored
SCIs
extracted
SCM
SCIs
controls
BASELINES:
System Specification
Software Requirements
Design Specification
Source Code
Test Plans/Procedures/Data
Operational System
10
Software Configuration Items
Data model
Design specification
data design
architectural design
module design
interface design
Component N
interface description
algorithm description
Test specification PDL
test plan
test procedure
test cases
Source code
The SCM Repository
In the early days of software engineering, software configuration items were maintained
as paper documents
This approach was problematic for many reasons:
finding a configuration item when it was needed was often difficult,
determining which items were changed, when and by whom was often challenging,
constructing a new version of an existing program was time consuming and error prone, and
describing detailed or complex relationships between configuration items was virtually
impossible.
The SCM Repository
The SCM repository is the set of mechanisms and data structures that allow a software
team to manage change in an effective manner. It provides the obvious functions of a
modern database management system by ensuring data integrity, sharing, and integration.
To achieve these capabilities, the repository is defined in terms of a meta-model. The
meta-model determines how information is stored in the repository, how data can be
accessed by tools and viewed by software engineers, how well data security and integrity
can be maintained, and how easily the existing model can be extended to accommodate
new needs.
General Features and Content
The features and content of the repository are best understood by looking at it from two
perspectives: what is to be stored in the repository and what specific services are provided
by the repository
A robust repository provides two different classes of services
the same types of services that might be expected from any sophisticated database
management system
services that are specific to the software engineering environment.
General Features and Content
To support SCM, the repository must have a tool set that provides support for the
following features:
Versioning. As a project progresses, many versions of individual work products will be created.
The repository must be able to save all of these versions.
Requirements tracing This special function depends on link management and provides the
ability to track all the design and construction components and deliverables that result from a
specific requirements specification (forward tracing). In addition, it provides the ability to
identify which requirement generated any given work product (backward tracing).
Cont’d
Dependency tracking and change management. The repository manages a wide variety of
relationships among the data elements stored in it. The ability to keep track of all of these
relationships is crucial to the integrity of the information stored in the repository.
For example, if a UML class diagram is modified, the repository can detect whether related
classes, interface descriptions, and code components also require modification and can bring
affected SCIs to the developer’s attention.
Configuration management. A configuration management facility keeps track of a series of
configurations representing specific project milestones or production releases.
Cont’d
Audit trails An audit trail establishes additional information about when, why, and by whom
changes are made.
The SCM Process
The software configuration management process defines a series of tasks that have four
primary objectives:
to identify all items that collectively define the software configuration,
to manage changes to one or more of these items,
to facilitate the construction of different versions of an application, and
to ensure that software quality is maintained as the configuration evolves over time
Cont’d
A process that achieves these objectives need not be bureaucratic or ponderous, but it
must be characterized in a manner that enables a software team to develop answers to a
set of complex questions:
How does a software team identify the discrete elements of a software configuration?
How does an organization manage the many existing versions of a program (and its
documentation) in a manner that will enable change to be accommodated efficiently?
Cont’d
How does an organization control changes before and after software is released to a customer?
Who has responsibility for approving and ranking requested changes?
How can we ensure that changes have been made properly?
What mechanism is used to apprise others of changes that are made
Identification of Objects in the Software
Configuration
To control and manage software configuration items, each should be separately named
and then organized using an object-oriented approach.
Two types of objects can be identified
basic objects
aggregate objects
Cont’d
A basic object is a unit of information that you create during analysis, design, code, or
test.
For example, a basic object might be a section of a requirements specification, part of a
design model, source code for a component, or a suite of test cases that are used to
exercise the code
Cont’d
Each object has a set of distinct features that identify it uniquely: a name, a description
(e.g., model element, program, data), a list of resources, and a “realization” (a unit of
text).
Configuration object identification can also consider the relationships that exist between
named objects.
For example, using the simple notation
Class diagram <part-of> requirements model;
Requirements model <part-of> requirements specification;
Cont’d
The identification scheme for software objects must recognize that objects evolve
throughout the software process.
Version Control
A make facility that enables you to collect all relevant configuration objects and
construct a specific version of the software.
In addition, version control and change control systems often implement an issues
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.
Cont’d
Change control is vital. But the forces that make it necessary also make it annoying. We
worry about change because a tiny perturbation in the code can create a big failure in the
product. But it can also fix a big failure or enable wonderful new capabilities. We worry
about change because a single rogue developer could sink the project; yet brilliant ideas
originate in the minds of those rogues, and a burdensome change control process could
effectively discourage them from doing creative work
Configuration Audit
Identification, version control, and change control help you to maintain order in what
would otherwise be a chaotic and fluid situation.
However, even the most successful control mechanisms track a change only until an ECO
is generated.
How can a software team ensure that the change has been properly implemented? The
answer is twofold: technical reviews and the software configuration audit.
Cont’d
The technical review focuses on the technical correctness of the configuration object that
has been modified. The reviewers assess the SCI to determine consistency with other
SCIs, omissions, or potential side effects.
A technical review should be conducted for all but the most trivial changes.
A software configuration audit complements the technical review by assessing a
configuration object for characteristics that are generally not considered during review.
Cont’d
Has the change been “highlighted” in the SCI? Have the change date and change author been
specified? Do the attributes of the configuration object reflect the change?.
Have SCM procedures for noting the change, recording it, and reporting it been followed?.
Have all related SCIs been properly updated?
In some cases, the audit questions are asked as part of a technical review. However, when
SCM is a formal activity, the configuration audit is conducted separately by the quality
assurance group.
Status Reporting
Configuration status reporting (sometimes called status accounting) is an SCM task that
answers the following questions:
What happened?
Who did it?
When did it happen?
What else will be affected?
Cont’d