Page 259 -
P. 259
230 PART TWO MANAGING SOFTWARE PROJECTS
If a change were made to the source code object, the interrelationships enable a soft-
ware engineer to determine what other objects (and SCIs) might be affected. 1
9.2 THE SCM PROCESS
Software configuration management is an important element of software quality
assurance. Its primary responsibility is the control of change. However, SCM is also
responsible for the identification of individual SCIs and various versions of the soft-
ware, the auditing of the software configuration to ensure that it has been properly
developed, and the reporting of all changes applied to the configuration.
Any discussion of SCM introduces a set of complex questions:
WebRef • How does an organization identify and manage the many existing versions of
The Configuration a program (and its documentation) in a manner that will enable change to be
Management Yellow accommodated efficiently?
Pages contains the most • How does an organization control changes before and after software is
comprehensive listing of
SCM resources on the released to a customer?
Web at • Who has responsibility for approving and ranking changes?
www.cs.colorado.
edu/users/andre/ • How can we ensure that changes have been made properly?
configuration_ • What mechanism is used to appraise others of changes that are made?
management.html
These questions lead us to the definition of five SCM tasks: identification, version con-
trol, change control, configuration auditing, and reporting.
9.3 IDENTIFICATION OF OBJECTS IN THE SOFTWARE
CONFIGURATION
To control and manage software configuration items, each must be separately named
and then organized using an object-oriented approach. Two types of objects can be
2
identified [CHO89]: basic objects and aggregate objects. A basic object is a "unit of
text" that has been created by a software engineer during analysis, design, code, or
test. For example, a basic object might be a section of a requirements specification,
a source listing for a component, or a suite of test cases that are used to exercise the
code. An aggregate object is a collection of basic objects and other aggregate objects.
Referring to Figure 9.2, Design Specification is an aggregate object. Conceptually,
it can be viewed as a named (identified) list of pointers that specify basic objects such
as data model and component N.
Each object has a set of distinct features that identify it uniquely: a name, a descrip-
tion, a list of resources, and a "realization." The object name is a character string that
identifies the object unambiguously. The object description is a list of data items that
identify
1 These relationships are defined within the database. The structure of the project database will be
discussed in greater detail in Chapter 31.
2 The concept of an aggregate object [GUS89] has been proposed as a mechanism for representing
a complete version of a software configuration.