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