Page 261 -
P. 261

232           PART TWO  MANAGING SOFTWARE PROJECTS


         FIGURE 9.3
         Evolution                                                 obj           obj
         graph                                                     1.3           1.4
                          obj           obj          obj
                          1.0           1.1          1.2

                                                                   obj           obj
                                                                   2.0           2.1





                                                  obj         obj
                                                 1.1.1       1.1.2





                       version 2.1? How can we be sure that changes to the version 2.1 source code are
                       properly reflected in the corresponding design documentation? A key element in the
                       answer to all these questions is identification.
                          A variety of automated SCM tools has been developed to aid in identification (and
                       other SCM) tasks. In some cases, a tool is designed to maintain full copies of only the
                       most recent version. To achieve earlier versions (of documents or programs) changes
                       (cataloged by the tool) are "subtracted" from the most recent version [TIC82]. This
                       scheme makes the current configuration immediately available and allows other ver-
          CASE Tools—SCM
                       sions to be derived easily.

                 9.4   VERSION CONTROL

                       Version control combines procedures and tools to manage different versions of con-
                       figuration objects that are created during the software process. Clemm [CLE89]
                       describes version control in the context of SCM:
                       Configuration management allows a user to specify alternative configurations of the soft-
                       ware system through the selection of appropriate versions. This is supported by associat-
                       ing attributes with each software version, and then allowing a configuration to be specified
                       [and constructed] by describing the set of desired attributes.
         The naming scheme  These "attributes" mentioned can be as simple as a specific version number that is
         you establish for SCIs  attached to each object or as complex as a string of Boolean variables (switches) that
         should incorporate the  indicate specific types of functional changes that have been applied to the system
         version number.  [LIE89].
                          One representation of the different versions of a system is the evolution graph pre-
                       sented in Figure 9.3. Each node on the graph is an aggregate object, that is, a com-
                       plete version of the software. Each version of the software is a collection of SCIs
                       (source code, documents, data), and each version may be composed of different vari-
                       ants. To illustrate this concept, consider a version of a simple program that is com-
   256   257   258   259   260   261   262   263   264   265   266