IRAC Preface |
1 Introduction |
2 General Design Objectives |
3 General Syntax and Semantics of the Abstract Specification |
4 Object Management System |
5 Program Execution Facilities |
6 Input and Output |
7 Protection and Security |
8 Requirements for Tool Management and Services for Tools |
9 Ancillary Requirements |
10 Definitions |
Submission of Comments
4.4 Data Manipulation
Specific, named operations (and sets of operations) on objects,
attributes, relationships and their types are an important constituent
of an OMS. A major function of the OMS is to regulate the interaction
of objects and operations, such that a defined set of rules is not
violated.
4.4A
Objects. The PCIS shall provide facilities to:
a) Create objects
b) Delete objects
c) Copy objects
d) Examine objects (by examining their attributes, relationships
and components)
e) Modify objects (by modifying their attributes and components)
f) Identify objects (as specified in
Section 4.3)
g) Identify the type of an object
h) Identify the components of an object
i) Identify the objects of which an object is a component
4.4B Relationships. The PCIS shall provide facilities to:
a) Create relationships
b) Delete relationships
c) Examine relationships (by examining their attributes)
d) Modify relationships (by modifying their attributes)
e) Identify relationships (as specified in
Section 4.3)
f) Identify the type of a relationship
g) Identify the objects of which a relationship is a component
4.4C Attributes. The PCIS shall provide facilities to:
a) Examine attributes
b) Modify attributes
c) Identify the type of an attribute
4.4D Components. The PCIS shall provide facilities to:
a) Associate a component with an object
b) Dissociate a component from an object
4.4E Binding language features for Input and Output.
a) PCIS shall provide basic Input/Output operations on bulk data
attributes.
b) PCIS shall define the effect on the object base of standard
Input/Output facilities of a given binding language.
c) It is desirable that compilers support PCIS semantics in
implementations of the standard language Input/Output facilities.
Requirement 4.4E(a) requires that PCIS shall provide a set of
operations to read and write bulk data (for example, uninterpreted
sequences of data such as files or communication pipes). Furthermore,
the semantics of such operations shall not depend on any binding
language. PCTE provides such primitive I/O operations which can be used
instead of the language dependent I/O operations. This solution is
portable on any compiler.
Requirement 4.4E(b) requires that, for any binding language which has
I/O operations, the semantics of these binding defined operations be
specified when they apply to contents of PCIS objects. In particular,
such semantics will be, as far as possible, expressed in terms of the
basic language independent I/O operations provided by PCIS Requirement
4.4E(a). This will provide a guarantee that any PCIS tool using the I/O
features defined within the language binding will have the same common
effect on any implementation of PCIS and therefore will be portable.
This will also document the effect of these operations on many aspects
which are usually unclear in many specifications, for instance, the
security behavior and the locking policies.
Regarding Requirement 4.4E(c), it is unlikely that compiler suppliers
will have much interest in customizing language I/O operations to
interface with PCIS but on some platforms there may be hooks into the
implementation that allow those operations to be adapted to the
required semantics on PCIS objects. Also PCIS does not require compiler
vendors to supply such an implementation but Requirement 4.4E(b)
implies that if they do supply it, they all will have to comply with a
common well-defined semantics.
4.4F Concurrency Control. The PCIS shall provide mechanisms to
control concurrent access to data represented in the Object Management
System.
A software project will have many users active simultaneously. To allow
them to work productively and without mutual interference, it must be
possible to isolate the collections of objects with which they are
working. This need is similar to that for configuration management.
A tool with the access rights to change some particular part of the OMS
data needs to be able to lock out changes by other tools with similar
rights, so that it can perform a series of operations without
interference. This is different from the changing of access rights to
the data in that it must be legal for a tool which has only the right
to change the data, not necessarily the right to change other tools'
access rights to the data.
4.4G Version and Configuration Support.
a) The PCIS shall provide a mechanism for specifying and
implementing policies of versioning, in which multiple versions of
objects are maintained and access by default to a preferred or current
version is allowed.
During the development of a product it is inevitable that intermediate
versions of elements of the product will be produced. These elements
will, during the development process, be integrated. Subsequent changes
to these elements must be strictly controlled since the work of many
users can depend on a particular version. There needs to be some way of
introducing new versions in a controlled manner such that users of a
previous version can adjust to the new version at a time of their
choosing. It is desirable that the existence of multiple versions be
transparent to the majority of tools. However, that is not mandated by
the IRAC.
This relates to the topic of transaction support. "Long-term"
transactions may need to either keep intermediate versions or have a
way of recovering intermediate work-product objects by identification
of such intermediate versions.
The mechanisms by which versions are related, for example, by version
number or successor/predecessor relationships, is left to the PCIS
designer. The manner in which versions are recorded (for example,
whether difference techniques are used) is largely an implementation
issue.
b) The PCIS shall provide versioning of both elementary and
composite objects.
Objects for which versioning is required can be simple objects like
source files but more generally, they can be composite such as
structured documents or complex software configurations.
c) The PCIS shall support the building of different types of
configuration management systems.
There are many possible policy choices to be made so far as
configuration management is concerned. For instance, it must be
possible to allow the version naming policies to be made consistent
with company-wide policies. It must be possible to let change-control
and the methodology influence the organization of configurations, the
context within which they can be modified or the language governing the
selection of configuration components. No single policy is perceived as
adequate for all kinds of organizations and all sizes of projects. The
PCIS shall therefore not impose an exclusive choice but rather allow
for the building of several configuration management systems.
4.4H History Mechanism. The PCIS shall support a mechanism for
collecting and using history. The history mechanism shall provide
sufficient information to support comprehensive configuration control.
The reader is referred to the definition of
HISTORY
in the list of definitions.
The history mechanism discussed in this section is not necessarily
different from a particular use of the basic object, attribute, and
relationship facilities provided by the OMS. The history of objects
that are important to a development project may be recorded in special
relationships, attributes, and objects defined for that purpose. It is
not intended that the recording of history be either mandatory or
all-inclusive. The management of a particular project should be able to
decide which objects will have their history recorded and whether that
recording is to be mandatory. For example, the history of an a
compiler's output file might refer to the corresponding source code
file, the compiler used, compiler options, etc.
4.4I Uniformity of Mechanisms. The PCIS shall provide mechanisms
which apply to:
a) An object and transitively to all of its components
b) An object without its components
Equivalent mechanisms (including concurrency control mechanisms) shall
be provided for each of these two cases.
This requirement specifies the key feature of composite objects. It
requires that the PCIS provide facilities that, in one step, apply to
all components of an object. Some operations for which this would be
desirable include copy and delete. Such a capability naturally models
actions performed in software engineering, such as removing a complete
outdated version of a product. Item (b) of the requirement simply
points out that it must at the same time be possible to operate on
composite objects in their own right, without their components. It is
most natural for both mechanisms to be equivalent and, it is expected,
consistent with one another.
Go forward to
Section 4.5, Transactions.