Page 262 -
P. 262
CHAPTER 9 SOFTWARE CONFIGURATION MANAGEMENT 233
FIGURE 9.4 Variants
Object pool
representation
of components,
variants, and
versions [REI89]
Entities
Versions
Objects
3
posed of entities 1, 2, 3, 4, and 5. Entity 4 is used only when the software is imple-
mented using color displays. Entity 5 is implemented when monochrome displays
are available. Therefore, two variants of the version can be defined: (1) entities 1, 2,
3, and 4; (2) entities 1, 2, 3, and 5.
To construct the appropriate variant of a given version of a program, each entity
can be assigned an "attribute-tuple"—a list of features that will define whether the
“Any change, even a entity should be used when a particular variant of a software version is to be con-
change for the structed. One or more attributes is assigned for each variant. For example, a color
better, is always attribute could be used to define which entity should be included when color displays
accompanied by are to be supported.
drawbacks and
discomforts." Another way to conceptualize the relationship between entities, variants and ver-
Arnold Bennett sions (revisions) is to represent them as an object pool [REI89]. Referring to Figure
9.4, the relationship between configuration objects and entities, variants and ver-
sions can be represented in a three-dimensional space. An entity is composed of a
collection of objects at the same revision level. A variant is a different collection of
objects at the same revision level and therefore coexists in parallel with other vari-
ants. A new version is defined when major changes are made to one or more objects.
A number of different automated approaches to version control have been pro-
posed over the past decade. The primary difference in approaches is the sophistica-
tion of the attributes that are used to construct specific versions and variants of a
system and the mechanics of the process for construction.
3 In this context, the term entity refers to all composite objects and basic objects that exist for a
baselined SCI. For example, an "input" entity might be constructed with six different software
components, each responsible for an input subfunction.