<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <contrib-group>
        <aff id="aff0">
          <label>0</label>
          <institution>TeleLOGIC AB</institution>
          ,
          <addr-line>Allrorum 1,951 75 Lulea</addr-line>
          ,
          <country country="SE">Sweden</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>1986</year>
      </pub-date>
      <abstract>
        <p>This paper tries to define and exampJify the concept of "integration" in the context of soflware development support environments. TIle benefits of tight integration are discussed, together with different approaches on how to achieve this properlY under the constraint of having to include existing software components and tools. The paper finally reports on the initial experience gained in building an Ada programming support environment according to those principles.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>(3)</p>
      <p>The cost of activating a service in tcnns of finding it and providing tile light parameters.
The cost, in waiting time, for tile user while the computer is working.</p>
      <p>The cost of finally"utilizing and assimilating the result of the service in tile context where
the user needs it.</p>
      <p>We call the sum of those costs the tl4rnaround time, and the purpose of our work is to
minimize it.</p>
      <p>Observe that we discuss not only the turnaround time of currenUy identified atomic ser­
vices, but Ule minimization of the cost for any typical pattern of work. For example, if the
looking up of an imported interface is a common task, one could expect its turnaround time to
be large in a traditional environment since it probably involves leaving an editor to go out in a
file system, explicitly locating a file holding the interface, studying the interface and remember­
ing it, and then returning to the first point of editing without any oUler result than what could
be memorized during the break.</p>
      <p>Given the above view of the goal, it is clear Ulat imegratioll is a a key issue. The first
and third components of the turnaround cost can obviously be very effectively attacked by util­
izing context information - making one tool explicitly utilize knowledge about the detailed state
and context of the other tool. As will be described later, it also turns out that much less CPU­
cycles are consumed in a carefully built integrated system, making it effective in reducing even
the second cost component.</p>
    </sec>
    <sec id="sec-2">
      <title>1.1. A Definition of Integration</title>
      <p>Despite Um fact that integration is often mentioned as a highly desirable property of sup­
port environments, it still lacks a more precise cOlnmonly agreed on definition, and most publi­
cations never even try to be more explicit on the nature and meaning of the concept. However,
as a concluding remark on the subject of integration, we propose the following:</p>
      <p>In Ule context of software development environments, we discuss integration in terms of
three characterizing properties of tools: IIIlijonllity, communicational ability, and openlless of
representation. Each of UlOse are explained below together with examplcs.</p>
    </sec>
    <sec id="sec-3">
      <title>1.1.1. Uniformity.</title>
      <p>Measures the degree to which different tools behave in a similar way in similar situations.
This spans from reusing Ule same abstract concepts whcnever possible, to the unification of
syntactical aspects of the user interface. The word external imegratioll has frequenUy been
used to denote the latter part of this spectrum.</p>
      <p>Examples:
Use of Ule same command language and line editing conventions.</p>
      <p>Use of the same conventions for managing windows and menues.</p>
      <p>Use of the same user interaction style, such as pointing-at-object, iconization, parameter
defaults, and command result reporting.</p>
      <p>Use of the same editing, viewing, and searching tool for all texts.</p>
      <p>Use of the same conceptual model for representation of data. In a Entity-Relationship­
Attribute based environment it would be natural to view most data in terms of typed,
attributed, directed graphs. Other environments present other conceptual models, like
strings, lists, and (mathematical) relations.</p>
      <p>Use of similar operations on diffcrent data represented using the same model.
Use of Ule same definitions of concepts; such as version, configuration, dependency,
inheritance, relation, access privilege, transaction, icon, data key, Iype, etc.
(
(
1.1.2. Communicational ability.</p>
      <p>Measures the degree to which a tool communicates its findings and actions to other tools, and
the degree to which it provides means for other tools to initiate communication with it. This
includes the temporal aspect of immediate notification, the selective aspect of communication
with a particular '001, and the granularity aspect of communicating changed circumstances
with high ptecision.
.This may be achieved either by tools explicitly addressing each other, or by means of a
"notify" mechanism provided by the object management system. It also includes the ability to
(possibly dynamically) compose tools into larger aggregates.</p>
      <p>Examples:
The notification of a tool presenting a view of a database when the underlying data is
changed.</p>
      <p>The notification of the editor when the size of the window is changed.</p>
      <p>Passing of context established in a browser, (pointing to a particular "current" object), to
the editor or other more or less independent tools.</p>
      <p>Immediate passing of result of an operation to a (set 01) tool.</p>
      <p>Notification of the user, (or the tool he is currently using), when the mail program
receives a message to that user.</p>
      <p>Activation of, and passing of context to, the debugger when an exceptional condition
occurs.</p>
      <p>Communication from the editor to the compiler, or other processing tool, that the user
changed a module, or with higher precision, a particular part of it.</p>
      <p>Notification of involved users when the configuration management tool establishes a new
version of an object for public use.
1.1.3. Openness of representation.</p>
      <p>Measures the degree to which the data generated by one tool, or data otherwise in its domain,
is made accessible for use by other tools.</p>
      <p>The openness of representation provides for successive growth of the set of integrated
tools. As new tools are 'built, or old tools are modified, the information utilization and availa­
bility will increase as a consequence of tool builders taking advantage of data defined by other
tools this far.</p>
      <p>Examples:
The representation of data from the Pert chart tool in a form such that it can be used by
the project tracking tool.</p>
      <p>The representation of persOlmel, their abilities and availability, in a fonn such as it can be
used by tile Pert chart project planning tool.</p>
      <p>The representation of the language directed cditors internal working format in a way such
tllat it can be used by the compiler, cross-referencer, data flow or complexity analyzer,
etc.</p>
      <p>The representation of tile Ada program library in a form such tlmt it can be used by tile
configuration control tool, thc graphic browser, etc.</p>
      <p>Representation of botll program code and documents in a form such that tlley can be
related to each otller by means of a single mechanism.
*</p>
      <p>Representation of any tools data within Ule agreed upon datamodel, so that all tools and
operations assuming that datamodel may be immediatelly applicable.</p>
    </sec>
    <sec id="sec-4">
      <title>2. Approaches to Building Development Environments</title>
      <p>The total effort that seem to have been invested in attempting to build development
environments over the last decade is impressing. Many of those projects have been highly
cooperative, involving participants and tools from several countries and companies. This may
have been especially true at the European scene, including projects within the ESPRIT pro­
gramme, such as PCTE/PACT, (pCfE 1986, PACT 1986, PACT 1988), and within the Eureka
cooperation, such as ESF, (Fernstrom et ai, 1988), togeUler with national programmes in most
countries. An example from Ule US is (Blumberg et a1 1988). A complete reference list over
projects in tlJis area could in fact span'several pages, and several new ones are in an initial
phase.</p>
      <p>The creation of such an environment is however a major undertaking, comparable to the
development of a new operating system, showing tlle same need for perfonnance and over all
quality before the results could really be used. Consequently, there has been a hope that the
environment could be built by putting togeUler existing tools, since developing Ulem again
would not be feasible. This approach also builds on the strategy to benefit from a large market
of existing software tools, and a desire to be equally open to every tool and teclmology.</p>
      <p>On the otller hand, the whole idea of building an integrated system out of existing tools
is an inherent paradox, at least if we are expected to accept tllOse tools as they are. If tlle
benefits of integration are to be exploited, the illlegration must be quite tight, and utilize every
chance of catching infonnation in one tool which might be of use in another place. Integration
also seems to stand in conflict with tlle desire to be equally open to every tool, since very little
can be achieved in tenn&amp; of integration if not quite far reaching assumptions about involved
tools are allowed.</p>
      <p>To support the opinion one could obselve Ule international scene where few, if any,
environment products of the first kind have evolved. Instead, tllere is an emerging set of what
might be called integration frameworks, examples of which are PCTE, (Emeraude 1987), and
Software Backplane, (Atherton 1987). Those products are usually not immediatelly useful as
end user products, but represent semi-fabricates on top of which tool manufacturers are
expected to build their products.</p>
      <p>When it comes to ambitious environment products providing tightly integrated end user
functionality, examples of which are Ule Interlisp, (Teitelman &amp; Masinter 1984), Smalltalk,
(Goldberg 1984), and the Rational Ada Environment, (Archer &amp; Devlin, Rational 1986, Mor­
gan 1988), we see tlmt they are not built out of existing tools. Instead, tlley are carefully
crafted togeUler from pieces built wiUI a single purpose: to fit into tlte environment and contri­
bute to its high levcl of integration.</p>
      <p>To conclude, we observe Ulat it is hard to sec any successful attempts on building a com­
petitive environment out of existing tools.</p>
    </sec>
    <sec id="sec-5">
      <title>2.1. Another Approach</title>
      <p>We have noted two ,existing approachcs:
(I)</p>
      <p>Build the environment out of existing tools purchased on the market.</p>
      <p>We consider Ulis approach unsound in that it can be shown to ruin the major beneficial
characteristic of the next generation envirolUuents: the high level of integration.</p>
      <p>Build the environment frolll scratch to ensure a high level of integration.</p>
      <p>Although this approach has been shown feasible in some cases. it has the drawback of
soaking up resources into development of basic capabilities and "tool kernels" which have
no real relationship to the original reason for starting from scratch: improving the integra­
tion.</p>
      <p>As an obvious alternative, we propose an approach which takes the best aspects out of
the previous proposals:</p>
      <p>Take existing tools, over which we have full technical alld cOllunercial comrol, and modify
them into a high level of integration. Both Witll respect to each other, and wiU, respect to a
possible "integration framework" on top of which the environment is built.</p>
      <p>The idea sounds simple and obvious: instead of writing all those tools from Ule begin­
ning. we modify our existing ones whenever necessary. In this way we can achieve the high
level of integration and productivity associated with the second approach. for a price that is
closer to the first approach. Furthermore. since the software to use for the environment con­
struction is assumed to be known by in house engineers, there can be a fast start and high
speed of progress.</p>
      <p>However, few organizations have Ule necessary control over a sufficienUy interesting and
complete set of software tools. For a successful project, Ule following criteria must therefore be
met by the involved organizations:
* They must have full technical and commercial control over significant software tools.
*</p>
      <p>They must have the willingness to modify UlOse tools to meet the requirements of the
integrated environment.
*</p>
      <p>They must be ready to commit to certain tools, and therefore to a particular technology
and philosophy of integration.</p>
      <p>The rest of this paper reports on the applying of this philosophy in one particular context
- the Ada product development efforts as carried out within the companies TeleLOGIC and
TeleSoft.</p>
      <p>
        The necessary prerequisites seemed to be Ulere in that it included full control over a pro­
duction quality Ada compilation system and a debugger. (TeleSoft 1988), and a set of pro­
grammer support tools as collected wiUtin the Arcs system. (Ada editor, browser, recompilation
tools. teamwork support, configuration control, program library manipulation. query tools, etc).
        <xref ref-type="bibr" rid="ref4">(Schefstrom 1988)</xref>
        . What is discussed here is Ulerefore probably best described as Ule second,
and maybe definitive. step in the development of Arcs,
        <xref ref-type="bibr" rid="ref1 ref2 ref3 ref4 ref6">(Schefstrom 1988, Schefstrom 1987,
Schefstrom 1986a, Schefstrom 1986b, Schcfstrom 1986c, Narfelt &amp; Schefstrom 1985, Narfelt
&amp; Schefstrom 1984)</xref>
        .
      </p>
    </sec>
    <sec id="sec-6">
      <title>3. An Overview of Arcs AlUlOugh integration takes away many of the traditional distinctions between tools, one could divide Arcs into Ule following components:</title>
      <p>*
*
*
*
*
*</p>
      <p>Ada oriented editor.</p>
      <p>Compiler &amp; Binder.</p>
      <p>Library database browser.</p>
      <p>Debugger.
"Integration framework", which includes program library database. query and command
languagc. common internal datastructures, (such as Graphs (Schefstrom 1988», and win­
dowing system and associated VI toolkit.</p>
      <p>Teamwork support and configuration management, which includes multiple user coordina­
tion, project control, and version management in the program library database. .</p>
      <p>The primary and most ambitious versions of the software are being built to take advan­
tage of hardware configurations of Ule category "network of powerful workstations". The pur­
pose is simple: create a significant reduction in programming turnaround time. While not all of
the components have reached the stage of a stable released product. prototypes exist and are in
use internally.</p>
      <p>Some of the components above, togeUler WiUl the philosophy of the integration frame­
work, have been described in earlier publications, (see references at end of chapter I). How­
ever, to make the presentation reasonably complete, we include a short summary of the integra­
tion framework.</p>
    </sec>
    <sec id="sec-7">
      <title>4. Integration Framework</title>
      <p>The Arcs environment is in many rcspects centered around Ule Ada program library. [n
our case this program library is much more general than is sllicUy required by the Ada LRM,
(Narfelt &amp; Schefstrom 1984, Narfelt &amp; Schefstrom 1985). Rather than being tailored to only
solving the Ada library problem. as initiaUy perceived, it supports a network, or graph-.
oriented datamodel. Arbitrary nodes may be introduced, which are connected by arbitrary rela­
tionships. Both nodes and relationships may have attribllles. and also have a type. or a
category. This is used by the compiler to represent Ada compilation units and their interrela­
tionships, as well by other tools to include non-Ada code or other information. Another usage
is to impose a mcta structure, subsystems, on top of the oUlerwise flat namespace of Ule Ada
library.</p>
      <p>Included in this ffalnework is also a query and manipulation language based upon an
extended relational algebra. Results of such queries are called graphs and nodelists, and all
tools arc made to accept such objects as their input, and produce their output in the same way.
This acts as one important integrating factor in Arcs.</p>
      <p>The library database is distributed in the scnse that a single database is construCted out of
arbitrary physically separate parts. This acts both as a means for distribution, sharing. view
creation, and version managcmcnt.</p>
      <p>All this is described in more dctail in Ule references above. The similarity in conccpts
with efforts like PCTE/PACT, (PCTE 1986, PACT 1988), and CA[S, (CA[S 1988), should be
noled. Similar ideas, and similar problems, seem to evolve out of the work around Hypertext
systems, (CACM 1988).
(
(
(
(
5. Ada oriented editor</p>
      <p>The language oriented editor is probably the most established and well-known component
in modem programming environments, (programming environment workshop 1986, ACM
1984). It is a key component for reasons that will be explained. Nevertheless, different editors
that all are called language-oriented differ dramatically in capabilities, and are often talked
about interchangeably in a way that is not reasonable. Therefore, let us distinguish between
two elasses of such editors:
..
..</p>
      <p>Syntax-directed editors, which know about the syntax of the programming language, but
not about the semantics. All of them can check the edited text for syntactic correctness;
most of them allow the user to initially produce the text in terms of "syntactic
categories"; some of them allow changes to take place in terms of "syntactic categories".
Semantics-directed editors have, usually, all the syntax directed capabilities as a subset. In
addition, they check and utilize typing information. This allows them to provide the prob­
ably more important extra benefits of type checking, interactive cross-reference, semantic
completion, and browsing between modules in a system.</p>
      <p>The Arcs editor belongs to tile second, semantics-oriented, category.</p>
      <p>Since the services we want to provide are based on that syntactic or semantic information
is available immediatelly during editing, it usually implies that this information must be main­
tained incrementally. In the semantics case, in combination with a language like Ada which
inlposes a Sb'ong type checking among separately compiled units, one must also integrate the
editor with the program library, since littie can be said semantically about a compilation unit in
isolation. The intermediate representation used by the editor must tilen, for tilings to actually
work, be tile same as for the batch compiler and code generators.</p>
      <p>AltilOugh the above renections are at least partially known from a number of language
editor projects, (Reps 84, Kaiser, Kaplan, &amp; Micallef 1987), one could from a general software
engineering standpoint observe that not many have a fair chance of actually building a seman­
tic Ada oriented editor, since it requires very close coordination WiUl a complete compilation
system and its program library database.</p>
      <p>
        When starting the work described here, we had already inlplemented an editor supporting
syntactic support and hierarchical structuring,
        <xref ref-type="bibr" rid="ref5 ref6">(Stromfors 1981, Stromfors 1986)</xref>
        , as well as
certain semantic services like interactive cross referencing of (batch) compiled units. These ser­
vices utilized the internal form generated by the compiler, and tilereby already showed a degree
of integration with the compilers internal form and tile program library.
      </p>
      <p>This was very useful for static inspection and understanding of a large system, and as a
nice interface to the debugger. However, when changing tile unit in the editor most of tile
semantic capabilities had to be turned off and the editor fell back to supporting mainly syntax.
This because the semantic aspects of the internal form were not incrementally maintained, and
must be updated in batch.</p>
      <p>However, closer investigation of tile problem revcaled that more could be achieved
without prohibitive costs, a large part of which can be attributed to a tight integration with the
existing compiler.</p>
      <p>The compiler used, (TeleSoft 1988), is structured into three phascs, a Front-End, a
Middle-Pass, and Code Gcncrators. The Front-End includes all tilC routines for checking thc
type correctness of a program, and its purposc in tilC translation process is to producc an intcr­
nal represcntation of th~ ,compiled unit, which can then be used as input to tilC Middlc-Pass.
The Front-End is well separatcd from othcr parts, and is nm complctely before starting later
•
phases of the translation process.</p>
      <p>Because of this property, it was possible to import the Front-End software into Ule editor,
and using it for very quick type-checking and internal-fonn generation. When the user needs to
execute his program, the environment checks for which units only Ule Front-End has been run,
and when necessary runs the Middle-Pass and Code Generator. As is discussed in the next sec­
tion, Ule importing of all those compiler modules into Ule editor gives furUler substantial contri­
butions to decreasing turnaround time.</p>
      <p>Further improvements of Ule editor are underway, including finer incrementality as a way
of optimizing Ule generation of Ule internal fonn. Quite naturally, those opportunities are most
obvious when a change is limited in scope or is in statements, (as opposed to in declarations).</p>
    </sec>
    <sec id="sec-8">
      <title>6. Compiler and Linker</title>
      <p>The compiler is the most obvious and basic of tools in Ule environment, and a rich source
of productivity enhancing integration opportunities. To achieve Ule high goals, Ule viewpoint
must however be much more towards Ule compiler as one of many cooperating components.
The structure of a compiler, to be possible to use in a high-integration environment, must be
such that the parts can be used and called quite independenUy of each other. Different parts
must be possible to recombine in new ways, and be possible to call independenUy and in
different orders. Finally, it must be possible to activate routines in many states, such as in a
partially completed syntactic or semantic analysis.</p>
      <p>The compiler used in this project had those properties to a quite high degree, and made it
possible to for a relatively low cost collect what we believe are Ule major benefits of tight
integration. Although incremental update of Ule internal fonn, during editing, proved to be
economic in many cases, the major benefit of Ule integration seems to come simply by avoid­
ing to throwaway computation results by repeatedly recompute datastructures from more basic
forms. Given the current operating system and language teclmology, this seems to be closely
related to whether one can keep datastructures in main memory and let tools eoooperate
through those, as opposed to repeatedly converting between this fonn and Ule (usually
different) fonnat Utat has to be used when communication Uuough fIles. This seemingly una­
voidable loss in both structural and semantic contents has been noted before, and is also
developed in an excellent"paper by R. Balzer, (Balzer 87).</p>
      <p>So, a conclusion is Ulat major gains can be achieved just by allowing tools to communi­
cate in the more precise way that is possible by sharing all datastructures in a single virtual
memory space. This opens up new possiblilities, and creates new ways of Ulinking about tool
cooperation Ulan are available when being contstrained to combine tools by pipes or reading
each others output liles.</p>
      <p>It also seems like Ada compilers are unusually rewarding to build this way, due to Ule
dependency on a context of previously compiled units as provided in the program library. Any
non-integrated Ada compiler must at every invocation open and read the program library, often
doing certain conversions of an externally stored fonn to a more suitable internal fonn, fol­
lowed by a tennination where all those internal datastructures are lost. At the next invocation,
Ule same datastmclures are created again, just to be thrown away yet another time.</p>
      <p>Initial performance results are very encouraging, showing a 75 percent gain in compila­
tion speed at medium sized modules, (400 lines). The results are even beller wilh smaller
modules, as well as in cases when errors are detected. The laller is due to that in case of
errors, no phase beyond semantics is nm, making the (alternative) batch startup overhead
(
(
(
relatively higher. Detailed results do of course depend on the characteristics of the actual com­
piler technology used, but we see no factors that would dramatically change the tendency.</p>
      <p>The tight integration also makes it easy and obvious to provide more end user services.
Examples of such are fast semantic error feedback to the editor, and quick response and sug­
gested recompilation orderings in case modules have been compiled in wrong order. Another
nice example is the direCt' communication with the browser, which makes it possible to directly
update graphical presentations whenever a compilation, (or editing session), causes a structural
change.</p>
      <p>Finally, any Ada linker must check that the modules linked togetller have been compiled
in the correct order. In the integrated compiler, all the necessary datastructures are immedi­
atelly available making this operation much less costly.</p>
    </sec>
    <sec id="sec-9">
      <title>7. Library Browser</title>
      <p>In modem programming environments, which are often based on a complex and highly
structured "database", the tools for searching and presenting data are of great importance. The
most important such tool is usually called the "browser".</p>
      <p>In our most basic case, the database contains an Ada program whose development the
environment is intended to support. The role of the browser is then to visualize that program to
the user, and allow him to move around among the packages, changing view and level of
abstraction. The browser also establishes a default context, and provides a means for changing
from typing characters into pointing at desired objects. All this immediatelly extends into han­
dling any types of objects, and is therefore the most visible manifestation of the "seamless sys­
tem".</p>
      <p>The browser in Arcs provides a number of different views and modes, and utilizes type
information to present library database structures in the most appropriate way. When presenting
nodes and relationships that can be identified as Ada modules and their interrelationships, Ada
specific knowledge is used to group nodes and select icons as to emphasize that what is viewed
is indeed an Ada program. Examples includes hiding bodies and subunits under specification
nodes, and grouping together such units that arc in the same subsystem.</p>
      <p>The browser is tightly integrated WiUl Ule rest of Arcs, some examples of which are tlle
following:
•
•
•
•</p>
      <p>When a unit is recompiled, replaced, deleted, or a new unit included into Ule scope of the
current library, this immediatelly affects the view presented by the browser.</p>
      <p>The result of operations using tlle query and manipulation language are reported in terms
of objects, called "graph variables". Those are in fact tlle variables of the query language,
and the browser, as any tool in Arcs, takes such variables as input.</p>
      <p>The unit clicked on using the browser is automatically made the default unit for any other
command in Arcs.</p>
      <p>The browser reads its information from exactly tlle same source, tlle program library data­
base, as is used by evcry otller tool. This means that graphical pictures presented by the
browser are always correct and up to datc in the sense tllat what is seen is always exactly
tlle software that would execute if the linker was called and tllC resulting program was
started.</p>
      <p>The browser was however created specifically for Arcs, and di.d not exist on beforehand .
8. Debugger</p>
      <p>Debugging is closely coupled to Ule inspection and browsing of programs. Therefore,
tools like the browser and Ule editor, with its interactive cross reference ability, fit extremely
well in Uus context. If such tools are immediatelly available in close connection to the debug­
ging session, they not only provide their original seIVice of ovelView and aiding understanding
of the program, but provides Ule context and presentation mechanisms for the pure debugger
activities. In fact, browser and "semantic" editor togeUler makes up a main part of the
debuggers user interface. Reusing those components in this new context furUler strengthens the
users feeling of system unifonnity.</p>
      <p>The tight integration here also shows the usual benefits of sharing internal datastructures.
The internal fonns used by Ule compiler in doing typechecking and managing separate compi­
lation, and by the semantic Ada editor to provide interactive cross referencing and semantic
completion, is of course also used by the debugger. The immediate availablility of those datas­
tructures, togeUler WiUI the resulting very short debugger initialization time and freedom of
context change, furUler contributes to minimizing turnaround time.</p>
      <p>The debugger existed on beforehand as a separate tool WiUI its own user interface and
own management of internal datastruetures.</p>
    </sec>
    <sec id="sec-10">
      <title>9. Teamwork Support and Configuration Control</title>
      <p>In practice we seldom work alone, but are members of a team of programmers which
concurrenUy modifies and updates different parts of the same program system. Any sel;ous
enviromnent must allow for Ulis dynamic process of continuous change to proceed, without
resorting to extensive manual work, recompilations, or purely administrative solutions. This is,
however, one of Ule major challenges in building an Ada development system. Not very
surprisingly, Ule design of Ule program library database is a very central issue here.
(I)
(2)
(3)</p>
      <p>In Arcs, we approach Ulis area in tenns of three aspects:
First, different users must be able to have differellt views of UlC same system under
development. While Ule largest part of Ule program library is common to Ule program­
mers of a project, Uley must be able to specify arbitrary individual variations. One pro­
grammer might be updating one unit, in his view, while another one need to see Ule older
stable version while testing still anoUler unit. This independence must be provided while
not forcing duplication of parts that don't need to be so.</p>
      <p>Second, partly as a consequence of the first requirement, it must be possible to have IlI/iI­
tiple versiolls of the same unit in the program library. The first requirement could infact
be approached as a question of allowing multiple versions, and allowing different people
denote different versions as the default. The related concept of a configuration must then
be introduced.</p>
      <p>Finally, but very important and sometimes forgotten, Ulere must be good support for the
work process. The configuration control scheme must be built for an interactive, dynamic,
changing, and sometimes inconsistent, environment. We have found this last aspect, of
hardening Ule configuration control system Witil respect to frequent change, as most fruit­
ful and rewarding to work wiUl.</p>
      <p>Arcs, together with the TeleGen2 program library on top of which it is built, meets those
requirements to a very high degree.
(</p>
      <p>In our case, an Ada program library is defined by composing a list of sublibraries, each
containing an arbitrary set of compilation units. Sublibraries are independent entities, and may
be combined completely freely to construct full libraries; it is just that certain combinations of
sublibraries will make Arcs generate more complaints about recompilation needs and missing
units than others. This property, independence of sublibraries, infact showed to be mOl:e
important and useful than we fully foresaw when designing it.</p>
      <p>The scheme is very general, and can be used in many ways. However, Ule method dis­
cussed here might be called "incremental baseline update", and builds on Ulat a given set of
sublibraries are said to represent the most recent stable state of the project, in other words, a
"baseline". Worl&lt; then proceeds by programmers reserving units in a baseline sublibrary, tran­
sefering them to a private sublibrary for modification and test. When finished, Ule unit can be
moved back to Ule origin sublibrary, but maybe more typically to an intended Next Version of
the Baseline sublibrary, ~\)1ce other people may not want to see the change immediatelly.</p>
      <p>The following shows a typical such sublibrary list:</p>
    </sec>
    <sec id="sec-11">
      <title>Typical sublibrary list:</title>
    </sec>
    <sec id="sec-12">
      <title>3. Standard_Sublibrary</title>
    </sec>
    <sec id="sec-13">
      <title>Showing Next Version sublibrary:</title>
    </sec>
    <sec id="sec-14">
      <title>1. Programmers_Private</title>
    </sec>
    <sec id="sec-15">
      <title>3. Standard_Sublibrary</title>
      <p>At some suitable point in time the configuration manager then decides to establish a new
Baseline, and the point here is that Ulis can be done witil a single command, in a slruclurcd
and highly automatic way given the information in the Baseline and Next Version sublibraries.
(I)
(2)
(3)
(4)</p>
      <p>The following summarizes the basic cycle:
Get a unit from Baseline sublibrary inlo a private sublibrary.</p>
      <p>Modify and test tile unit in private area without disturbing others.</p>
      <p>Return the unit 10 Next Version baseline sublibrary when finished.</p>
      <p>Generate new baseline from old Baseline and Next Version sublibraries.</p>
      <p>Going into Ule details of this kind of multiple version, multiple people environment,
reveals a large number of questions and special cases. However, most of them can be handled
using this basic structure. Let liS consider some examples:
•</p>
      <p>Assume now that other people have updated and returned units, and you want to make
those visible in your view for testing against, and you don't want to wait until a complete new
baseline makes it visible. To solve this problem, tile RESYNC command can be used, which
synchronizes the local view WiOl what has been released as Next Versions. This is done by
giving the user local versions of tile Next Version units he doesn't already have.</p>
      <p>As anotller example, consider what happens if you you have reserved and changed a cen­
tral spec, and therefore need to recompile many depending units, many of which currently are
in the baseline, (and therefore are shared between many people).</p>
      <p>This problem is directly solved by the COMPILE command, which computes tile neces­
sary recompilations, and makes sure that tltis takes place only in tile local view.</p>
      <p>Finally, consider tile case that one want to reserve a mtit for update, but there is a newer
one than the Baseline version.</p>
      <p>The answer is that the GET command will automatically select the newest version, (if it
is not reserved, in which case reselvation is denied).</p>
      <p>
        Similar schemes for doing configuration control and coordination of project groups have
been presented within NSE,
        <xref ref-type="bibr" rid="ref7">(Sun Microsystems 1988)</xref>
        and Eclipse, (pierce 1987). What
differs Arcs from those systems is the high level of integration in Arcs, between tile tools and
subsystems mentioned above, tile program library database, and tile characteristics of the Ada
language. In that sense it is similar to the Rational environment, (Morgan 1988).
      </p>
      <p>The most important component, the Ada program library, existed on beforehand. How­
ever, Arcs teamwork support and configuration management could never have been built, as is
true for all of the services presented, without the unrestricted access to internal interfaces.
10. Experience</p>
      <p>AIl parts of what IS' described above have been developed at least to the stage of proto­
types stable enough for internal use. A subset of tile functionality is currently offered, and has
been delivered, as a product to external customers, and over the next year tile externally avail­
able functionality will be successively increased. However, tltis means tilat tile major experi­
ence tllis far comes from the internal use, and tile following comments are based on this fact.
10.1. User Illterface</p>
      <p>Arcs was originally built in a bottom-up philosophy, emphasizing basic primitives and
combinational ability. The quite large body of functionality was provided by memlS of basic
building blocks, which could tllen be combined into different more elaborate services.</p>
      <p>As an example of tllis approach, consider the often wanted service of iterating through all
places in a system where a particular procedure is called. In a large system, this obviously
involves searching through many modules. According to the building block approach, the basic
service of stepping through units was made extremely simple: The command</p>
      <p>Arcs&gt; ixref init &lt;list of units&gt;
just causes tile given &lt;list_oCunits&gt; to be searched. However, the problem of creating that list
of compilation units, containing all tllOse units where it could be meaningrul to search for calls
of tile given procedure, is not part or the "ixref' command. Instead, the generally available pro­
gram library database query language should be used ror this task, utilizing the fact that Ihc
(
only units that could pOssibly contain a call to a given procedure are those that 1) directly
"withs", or 2) are secondary units, to the unit in which the procedure is declared. The Arcs
command language allows such queries to be expressed direcUy at the same command line.</p>
      <p>This kind of generality provided a lot of power, and created numerous unexpected new
usages and combination opportunities. However, only for U,e expert user. Experienced people
having the necessary curiosity, and time to invest, find it very powerful, while oU,er people.
have found Ute generality overwhelming and even disturbing.</p>
      <p>As a result of U,is experience, we are now working on providing more prepacked serviccs
corresponding to often wanted patterns of combinations of basic functions. The trick here is to
do Utis while keeping U,e combinational abilities and avoiding to create an ever more complex
system.</p>
      <p>While the Ada oriented editor provide a substantial body of well appreciated functionality
not available oUterwise, Ute mere introduction of another editor is an obstacle in many cases.
Despite the fact Utat most people learn the editor in less than a day, U,e intrusion into what is
in some cases considered to be the programmers innermost privacy - U,e editor - is creating
much discussion. The opinion has been that one should fmd a way of providing all the serviccs
while letting the user still use standard "vi", for example.</p>
      <p>However, the previous discussion in this paper, together with several investigations dedi­
cated to the editor problem, seem to show U,at accepting U,e limitations of not having "admin­
istrative and teclmical control" over the editor would be too hard. So, instead of trying to util­
ize an arbitrary editor, we invest more, and extend, the one Utat is built into Arcs. The
development goes along two lines: I) we create a number of special versions of the built in
editor to make it appear like different popular editors. 2) We introduce even more functionality
dedicated to software development, to further motivate the change to a new editor.
10.3. Configuration cOll/rol</p>
      <p>The configuration control in Arcs, or as it also is called, "Teamwork support", is an
example of functionality that successively grew out of the need and experience of the work in
the developmcnt group. Different specifications were written and evaluated, but it was not until
we had used Ada for a large system, with multiple people, for a longer time, that we could
develop a functionality that was really felt helpful. The reason it took time before reaching a
matured standpoint in Utis subject is probably just that it is a complex area where fcw well
known principal results are available. It is furU,ermore an area where the semantics of modem
separate compilation languages like Ada interact WiOl thc environment in a very elaborate way.</p>
      <p>This inherent complexity, together with U,e fact that many people, just as in U,e case with
the editor, already have some own way of working, makes lilis part of Arcs into one of thc
most difficult to explain. However, oncc the problem is understood, and UlC Arcs configuration
control functionality has becn in use for a while, the service turns out to be among thc most
valuable and appreciated.
11. Acknowledgements</p>
      <p>The ideas and results reportcd hcre are part of what has been discussed, argucd about,
and worked on ovcr U,C ycars at onc of U,e most creativc places I know: The Ada Devclop­
ment Environments conidor at TelcLOGIC/Lulea. Mikael Backinan, Nils Livingstonc, Hans
Ohman. Ola Stromfors. and Johnny Widen, are all responsible for any good ideas presented in
~tis paper.
12. References
ACM (1984).</p>
      <p>Proceedillgs of tile ACM SIGSOFT/SIGPLAN Software Ellgilleerillg Symposium 011 Prac­
tical Software Developmellt Ellvirollmellts, Peler Henderson, cd., Pittsburgh Pennsyl­
vartia, April 1984.</p>
      <p>Archer &amp; Devlin</p>
      <p>Ratiollal's Experiellce usillg Ada for Very Large Systems, "White Paper". Rational, 1501
Salado Drive. Mountain View. CA 94043.</p>
      <p>Atherton (1987),</p>
      <p>Tile Software Backplalle. Product description material, Atherton Technology, 1333 Bor­
deaux Drive, Sunnyvale, CA.</p>
      <p>Balzer (1987),</p>
      <p>Livillg ill tile Next-Gelleratioll Operatillg System, in (IEEE Software 1987).</p>
      <p>Barstow, et ai, (1984),</p>
      <p>Imeractive Programmillg Ellvirollmellts, Barstow, Shrobe, &amp; Sandewall. McGraw-Hill
1984.</p>
      <p>Blumberg et aI (1988).</p>
      <p>NASA Software Support ellvironmellt: COllfigurillg all Ellvironment for Ada Desigll,
Blumberg, Cantor, McNickle, and Reedy. in "Ada in Industry", Proceedings of the 1988
Ada-Europe Conference, Munich. Cambridge University Press.</p>
      <p>CACM (1988),</p>
      <p>Communicatiolls of tile ACM - SpeciallsSlle 011 Hypertext, July 1988.</p>
      <p>CAIS (1988),</p>
      <p>Military Stalldard Commoll APSE lllterface Set (CAlS). Proposed Military Standard, US
Dep of Defellse.</p>
      <p>Carr et aI (1987),</p>
      <p>Implemelltatioll of a Prototype CAIS Ellvironmellt, in ACM Ada Letters, Volume VII,
number 2, March,April 1987.</p>
      <p>Emeraude (1987),</p>
      <p>Emeraude PCTE Gelleral Preselltatioll, Product Description Material, G.I.E. Emeraudc,
38, bd H.-SeUier. 92154 Suresnes Cedex, France.</p>
      <p>Fersnstrom et al (1988).</p>
      <p>Eureka Software Factory Desigll Guidelines and Arcilitecture, Fernstrom, Narfell, Rccn­
skaug, Schaefer, and Weber. ESF consortia 1988.</p>
      <p>Gallo, Minot, &amp; Thomas (1986),</p>
      <p>Tile Object Managemellt System of PCTE as a Software Ellgilleerillg Database Manage­
mellt System, in Proceedings of tile ACM SIGSOFT/SIGPLAN Software Enginccring
Symposium on Practical Software Development Environments, Palo Allo, Cal, Dce 1986.
Goldberg (1984),</p>
      <p>Tile Illfluellce of all Object-Oriented Lallguage 011 tile Programming Environment, in
(
(</p>
      <p>(Ballitow 1984).</p>
      <p>IEEE Computer (1987),</p>
      <p>IEEE Computer, Nov 1987, Special issue on programming environments.</p>
      <p>IEEE Software (1987),</p>
      <p>lEEE Software, Nov 1987, Special issue on programming environments.</p>
      <p>Kaiser, Kaplan, &amp; Micallef,</p>
      <p>Multil/ser, DistribllJed Lallgl/age-Based Ellvirollmems, lEEE Software, November 1987.
Morgan (1988),</p>
      <p>COllfigllratioll Managemellt alld Versioll Comrol ill tire Ratiollal Programmillg Ellviroll­
mem, in "Ada in Industry", proceedings of the 1988 Ada-Europe Conference, Munich,
Cambridge Univelliity Press.</p>
      <p>Narfelt &amp; Schefstrom (1984),</p>
      <p>Towards a KAPSE Database, in Proceedings of the 1984 lEEE Conference on Ada
Applications and Environments, StPaul, Mirmesota 1984.</p>
      <p>Narfelt &amp; Schefslrom (1985),</p>
      <p>Extelldillg tire Scope of tire Program Library, in 1985 International ACM Ada Confer­
ence, Paris 1985.</p>
      <p>Programming Environment Workshop, (1986),</p>
      <p>Proceedillgs from [mernatiollal Workslrop 011 Advallced Programmillg EllvironmenlS,
Trondheim, Norway, June 1986.</p>
      <p>PCTE (1986),</p>
      <p>A Basis for a Portable Commoll Tool Ellvirollmem, Functional Specification. European
Strategic Programme for Research and Development in Information Technology.
PACT (1986),</p>
      <p>PACT Gelleral Descriptioll, Bull SA Louvecielmes, France, 1986.</p>
      <p>PACT (1988),</p>
      <p>PACT Commioll Services - C Lallgl/age, Bull S.A. Louveciennes, France, 1988.
Pierce (1987)</p>
      <p>ECLIPSE - All APSE Based 011 PCTE, in Proceedings of the Ada-Europe International
Conference, Stockholm, May 1987.</p>
      <p>Reps (1984),</p>
      <p>Gelleratillg Lallgl/age-Based ellvirollmems, MIT Press, Cambridge, Mass.</p>
      <p>Software Sciences (1987),</p>
      <p>Eclipse Overview, Software Scienccs Ltd, UK, OClober 1987.</p>
      <p>Rational (1986),</p>
      <p>Applicatioll of tire ratiollal EllvirOlUllem to Lifecycle Software Development, "Whilc
Paper", Rational, 1501 Salado Drive, Mountain View, CA 94043.</p>
      <p>Tei LeIman &amp; Masinter (1984),</p>
      <p>Tire [Ilterlisp Programmillg Ellvironmem, in (Ballitow 1984).</p>
      <p>TeleSoft (1988),</p>
      <p>TeleGell2 - Tire TeleSoft Second Gelleratioll Ada Developmellt System, User's GI/ide.</p>
      <p>TeleSoft, 5959 Cornellitone Court West, San Diego, 92024 California
Schefslrom (l986a)
[megralillg an Ada.. Library Syslem inlo lire Unix Configuratioll Management Toolset.
•</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          <article-title>Schefstrom (l986b), Integratillg Ada ill all Existillg Ellvirollmem - the Arcs</article-title>
          <string-name>
            <surname>Example</surname>
          </string-name>
          ,
          <year>1986</year>
          ACM Ada Conference, Edinburgh, May
          <year>1986</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          <article-title>Schefstrom (l986c), Project Support Buildillg all the Ada Program Library</article-title>
          ,
          <source>in Proceedings of Mll..COMP-86</source>
          , London,
          <year>September 1986</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          <string-name>
            <surname>Schefstrom</surname>
          </string-name>
          (
          <year>1987</year>
          ),
          <source>The System-Oriemed Editor - A Tool for Mallagillg Large Software Systems</source>
          ,
          <source>1987 ACM SIGAda Conference</source>
          , Boston,
          <year>Dec 1987</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          <string-name>
            <surname>Schefstrom</surname>
          </string-name>
          (
          <year>1988</year>
          ),
          <article-title>Programmillg-ill-the-Large with the System-Oriellted</article-title>
          <string-name>
            <surname>Editor</surname>
          </string-name>
          , -1988 AdaEurope Conference, Munich, Germany, june
          <year>1988</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          <string-name>
            <surname>Stromfors</surname>
          </string-name>
          (
          <year>1981</year>
          ),
          <article-title>The Implemelltatioll alld Experiellces of a Strtlclllre-Oriemed Text Editor</article-title>
          ,
          <source>in Proceedings of ACM SIGPLAN/SIGOA Symposium on Text Manipulation, SIGPLAN Notices</source>
          , vol
          <volume>19</volume>
          , no 6,
          <year>1981</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          <string-name>
            <surname>Stromfors</surname>
          </string-name>
          (
          <year>1986</year>
          ),
          <article-title>Editillg Large Programs Usillg a Strtlctllre-Oriellted Text-Editor, Ola Stromfors</article-title>
          , Linkoping University. In (p.
          <source>rogramming Envirorunent Workshop</source>
          ,
          <year>1986</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          <string-name>
            <given-names>Sun</given-names>
            <surname>Microsystems</surname>
          </string-name>
          (
          <year>1988</year>
          ), _ Illtroduction to
          <string-name>
            <surname>NSE</surname>
          </string-name>
          ,
          <year>March 1988</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>