Page 114 - DCAP305_PRINCIPLES_OF_SOFTWARE_ENGINEERING
P. 114

Principles of Software Engineering



                   Notes         Managing Simultaneous Update
                                 Simultaneous  update  of  the  same component  by  several  programmers  cannot  always  be
                                 prevented. The configuration management system must note such situations and supply tools
                                 for merging competing changes later. In so doing it helps prevent problems like the following:
                                   •  “Why did my change to this module disappear?”
                                   •  “What happened to my unfinished modules while I was out of town?”
                                   •  “How do I merge these changes into my version?”
                                   •  “Do our changes conflict?”
                                 The software tools for automating the functions introduced. The basis of all tools is representation,
                                 so we develop a model for representing multi-version multi configuration systems.

                                 5.7.1 Basic SCM Concepts
                                 The basic elements of a data base for software configuration management. The data base stores
                                 all software objects produced during the life-cycle of a project.
                                 A software object is any kind of identifiable, machine-readable document generated during the
                                 course of a project. The document must be stored online to be fully controllable by an SCM system.
                                 Examples of software objects are requirements documents, design documents, specifications,
                                 interface descriptions, program code, test programs, test data, test output, binary code, user
                                 manuals, or VLSI designs.

                                 Every software object has a unique identifier and a body containing the actual information. A
                                 set of attributes associated with software objects and a facility for linking objects via various
                                 relations are also needed. For example, attributes record time of creation and last read access,
                                 and  relations link objects  to their revisions  and  variants. The  set of  attributes and  relations
                                 must be extensible; later sections will introduce a basic set. We also need a facility to describe
                                 subclasses or subtypes of the general software object. For instance, the subclass may fix the
                                 language in which the body is written, or the structure editor used to compose the body, or
                                 whether the object represents an interface or an implementation. The subclass also defines the
                                 set of operations available on objects of that class, such as compiling, configuring, printing, etc.
                                 The body of a software object is immutable, that is, once the body has been completed, it can only
                                 be read. Any “change” of a body actually creates a new software object with the changed body.
                                 Immutability is important for configuration management, because it prevents misidentification:
                                 an object identifier is associated with one and only one constant body, and not with several
                                 different versions. Most other attributes and relations of software objects remain changeable;
                                 however, so new information can be added.
                                 Software objects have two orthogonal refinements, one according to how they were created, the
                                 other according to the structure of their body. For creation, we distinguish source and derived
                                 objects. For internal structure, we distinguish atomic objects and configurations.
                                 5.7.2 Creation of Software Objects
                                 A source object is a software object that is composed manually, for instance with an interactive
                                 editor. Creating a source object requires human action; it cannot be produced automatically.
                                 A derived object is generated fully automatically by a program, usually from other software
                                 objects.  A  program  that  produces  derived  objects  is  called  a  deriver.  Examples  of  derivers
                                 are compilers, linkers, document formatters, pretty printers, cross references, and call graph
                                 generators. Normally, derived objects need not be stored, since they can be regenerated, provided
                                 both the deriver and the input are available or can be re derived. To reduce the delay caused by
                                 regeneration, a smart configuration management system maintains a cache of derived objects
                                 that are likely to be reused.


        108                               LOVELY PROFESSIONAL UNIVERSITY
   109   110   111   112   113   114   115   116   117   118   119