Reconciling environment integration and software evolution - CiteSeerX

0 downloads 0 Views 3MB Size Report
should not be unduly constrained; components should be reused when possi- ble; requirements evolve. But environment integration produces ...... returned by the fh-st method to terminate. ..... GARLAN, D., AND ILIAS, E. Low-cost, adaptable.
Reconciling Environment Scftware Evolution

Integration and

KEVIN J. SULLIVAN and DAVID NOTKIN University of Washington,

Seattle

Common software design approaches complicate both tool integration and software evolution when applied in the development of integrated environments. We illustrate this by tracing the evolution of three different designs for a simple integrated environment as representative changes are made to the requirements. We present an approach that eases integration and evolution by preserving tool independence in the face of integration. We design tool integration and we design tools to implicitly invoke relationships as separate components called mediators, mediators that integrate them. Mediators separate tools from each other, while implicit invocation allows tools to remain independent of mediators. To enable the use of our approach on a range of platforms, we provide a formalized model and requirements for implicit invocation mechanisms. We apply this model both to analyze existing mechanisms and in the design of a mechanism Categories

for C++.

and Subject

nance—enhancement, K.6.3 [Management Management—software

General

Descriptors: extensibdity;

of

D.2.7 [Software D.2. 10

Computing

development,

Engineering]: [Software Engineering]: and Information

software

Distribution

and Mainte-

Design—methodologies:

Systems]:

Software

maintenance

Terms: Design

Additional Key Words and Phrases: Abstract behavior type, behavior abstraction, component indepmdence, environment integration, event mechanism, implicit invocation, integrated environment, mediator, mediator\ event design, software evolution, tool integration

1. INTRODUCTION An integrated environment is a collection of software tools that freeing the user from having to coordinate them manually. programming ging, the

environment

for example, editor

scrolls

might to the

with ensure

tools that

corresponding

for text when

editing,

compiling,

the debugger

source

statement.

reaches

work together, An integrated and debuga breakpoint

Integrating

these

This research was funded in part by NSF grants CCR-8858804 and CCR-9113367, AFOSR grant 89-0282, Digital Equipment Corp., Xerox Corp., Tokyo Institute of Technology, and Osaka University. K. Sullivan was funded in part by a GTE fellowship. An earlier version of this paper appeared in the Proceedings of SIGSOFT90. Authors’ address: Department of Computer Science and Engineering, FR-35, University of Washington, Seattle, WA 98195 permission to copy without fee all or part of this material is granted provided that the copies are not made or distributed for direct commercial advantage, the ACM copyright notice and the title of the publication and its date appear, and notice is given that copying is by permission of the Association for Computing Machinery. To copy otherwise, or to republish, requires a fee and/or specific permission. 01992 1049-331X/92/0700-229 $01.50 ACM Transactions on Software Engineering and Methodology, Vol 1, No 3, July 1992, Pages 229-26S

230

.

tools

K. J Sullwan and D Notkln

relieves

the

user

from

the

tedium

of locating

numbers, and supports instead the primary Integrated environments support tasks

source

files

word processing systems integrating editors, outlining tools, and spelling checkers; financial systems integrating spreadsheets, databases,

and tax preparation

compilers,

editors,

grating analysis

Managing

the are

software

system:

should

complexity similar

integration components. Integrated gration

requires

complex manage

and

into

integrating

from

inte-

planning

is hard. medium-

and

Many

of the

to large-scale

implementation

should

coordination

designed

the tools

decisions

be reused

debugger

approach

of tools,

by merging

themselves.

and a debugger,

the

tools. In the worst complex integration

This

any

be satisfied;

components

fine-grained are often

an editor

editor

must

constrained;

life-cycle,

in

include style and portfolio

environments

environments

encountered

line

when

possi-

evolve. But environment integration produces an additension. Software evolution, which is unavoidable in when system components are largely independent; but

relationships

between

environments

software

of integrated

requirements

tools

programming

sW%ware development

of the

to those

not be unduly

ble; requirements tional, complicating practice, is easiest

tions.

and

tools for many phases through retirement.

difficulties

the

tools;

debuggers;

and

task, finding the bug. in many domains. These

case, each relationships

also distributes

might

This

can

of system

for the

be designed

regarding

inte-

of the relationship

lead

tool interacts in addition

decisions

hence

responsibility

Knowledge

for instance,

components.

and

into

both

to unmanageably

with to its

every other to own basic func-

integration

through-

out the environment: tool A has to know how it relates to B and also B to A, for instance. Furthermore, intermingled tools are statically sculpted to participate the

in

specific

connections

relationships. among

complicate Another

software approach

nents

encapsulate

that

an editor interacts

and with

tools,

The

evolution. is to design tools

resulting

and the

integration

in order

complexity

distribution

relationships

to effect

of individual

of integration

their

as separate

integration.

tools,

concerns

all

compo-

For example,

a debugger might be wrapped in a third component the user and manages the underlying tools on the

that user’s

behalf. Although the tools themselves remain independent, encapsulated tools cannot be accessed independently. This design technique complicates evolution by making it hard to change, add, and remove tools and integration relationships. We illustrate these ideas more carefully in Section 2, through three designs for a simple specification. These design styles arise in part because system specifications often merge tool and integration concerns or frame integration explicit tool invocations. To ease evolution, then,

requirements in terms of we need to structure both

specifications and designs to reduce the complexities that result tion. Our goals should be to keep tool complexity proportional to localize decisions regarding both tools and integration and to do this while also facilitating tool integration.

ACM

TransactIons

on Software

Engmeermg

and Methodology,

Vol. 1, No. 3, July

from integrato function, relationships,

1992.

Reconciling We have integration

Environment

Integration

developed an approach and software evolution

invocation mechanism. this approach yields

and visible

tool components

components,

which

of keeping

tool

relationships separately from to these integration components

a system

composed

plus a set of separate,

we call

mediators.

components

.

231

that appears to reconcile environment to a reasonable degree. The key to our

approach is to define tool integration themselves and to connect the tools an implicit Applying

and Software Evolution

visible

of a set of independent

or externalized,

At its heart,

in contrast

the tools through

we stress

integration

the importance

to encapsulated

and

indepen-

dent in contrast to intertwined. New integration relationships are easier to design when tool components are visible, while tool independence eases both evolution and integration. 1 In Section 2 we present an example that illustrates the sorts of problems encountered

when

of integration we

present

these implicit

traditional

and our

designs

evolution.

In

approach

conflicting invocation

are

Section

and

show

confronted 3, in the

how

it

interests. We also discuss more fully. In particular,

mod el that

can serve

mechanisms.

We

as a starting

discuss

point

additional

with

eases

the

that

4 discusses

integrated

present and

how

in the design

systems

that

7 are devoted

better

to a discussion

invocation

model

understanding

discuss

other

ponents

they

discussion

systems

several

separate

then

specification integration

approaches

challenge

each the

tend

briefly

Sections

mechanisms

our

to gain

In Section from

a brief

6

6 we apply

the

summary

a

7 we comand

a

of our effort.

to produce

cate evolution, either integration concerns.

design

with

each

by encapsulating

Transactions

framework. components

to tool reusability,

on Software

of two

are intended

in a simplified

JInde pendence is also closely related this article.

integrated

environments

that

evolve. We illustrate this by applying for a simple integrated environment.

enhancements

and evolution

ACM

5 we

approach.

DESIGN APPROACHES

design

and

approach.

Section

relationships 8, with

the

requirements

In Section

existing

integration

and limitations

our

this

invocasketch

to meet

and differences.

in Section

are hard to change as requirements thres such approaches to requirements We

work.

invocation

implicit

with

In

using

key similarities

We conclude,

of the strengths

2. TRADITIONAL Traclitional

that

generate. built

of related

to analyze

of their

relate.

to

we have

between

We also

can be applied

tend

that

example,

tension

of implicit

requirements

approach

environments

several

imp] icit

our

combination

of this

our use of mediators and we present a simple, formal

tion mechanisms should meet to support our approach. design of our mechanism for C++. In Sections 4 and 5 we summarize our experiences Section

the

context

Engineering

enhancements.

The

to capture

aspects

All three

key

designs

or by merging

basic of

complitool

and

but we do not stress this connection

and Methodology,

Vol. 1, No. 3, July

in

1992.

232

.

2.1

Initial

K. J, Sullivan and D Notkm Specification

The two “tools”

in our environment

manage

a set of points

and a set of pairs

of these points. The user can create points and, given two points, can create a pair. The user can also insert and delete points and point-pairs into and from the point and point-pair sets respectively. In addition, we specify an “integration relationship” between the point and point-pair sets: the two sets should form a graph. We thus will be justified in referring to points and point-pairs at vertices The

and edges,

vertex

methods

(i.e.,

respectively.

point)

for vertex

type

creation,

testing equality with another references to the two vertices getting

these

types

export

vertices

and

methods

stores

a pair

for getting

and

of

coordinates

setting

the

vertex. The edge (i.e., and exports methods

for

testing

equality

for set creation,

with

element

and

coordinates

point-pair) for edge

for

type stores creation, for

another

insertion,

exports and

edge.

deletion,

The

set

and mem-

bership testing, and for getting an iterator object that can return each element in turn. To the vertex-set and edge-set tools (which we denote VS and ES) we add a third,

a user interface,

vertices ment

and

edges.

through This

of the integration

ing an edge into

which

structure

it possible

relationship—that

ES for which

in VS or by deleting

the user can create,

makes

neither

a vertex

from

the sets form or only

VS upon

insert,

the

require-

a graph—by

insert-

one of the vertices which

and remove

to violate

one or more

of the edge is edges in ES is

incident. To

maintain

integration

the

required

relationship

constraint

G that G(VS,

is maintained. invariant—one

we

ensures ES)

integrate

that

the

tools

under

an

the invariant

= ES c VS

VS

X

Many different policies could be defined to maintain this that undoes the deletion from VS of any vertex on which

edges in ES are incident, for example. In this case we specify a policy preserves the user’s last action: when a vertex is deleted from VS, delete ES all edges incident the that

membership is not already

on that

vertex;

when

in VS of the

edge’s

vertices

an edge is inserted and insert

into

in ES, VS

that from check

each vertex

a member.

We often specify a given integration relationship as a combination of an invariant and a policy to maintain this invariant in the face of changes. Often, these policies have to satisfy additional requirements, such as preserving rather than undoing the user’s last change. 2.2 Two Representahve We now with

consider

respect

Enhancements

two

enhancements

to each forthcoming

to the

design

specification,

in order

which

we discuss

to assess the robustness

of

these designs with respect to evolution. The first enhancement is a change to an integration relationship. We enhance G to support lazy, in addition to eager, maintenance of the graph relationship. The new invariant is G’(VS, ACM

TransactIons

on Software

ES)

Engineering

= (eager

~ G)

and Methodology,

V lazy. Vol

1, No

3, July

1992

Reconciling Our

new

make

policy

for

G’

Environment is to apply

no compensating

invariant vertex

when

‘I’he

second

integration a rlew

updates

toggling

not already

from

a member

tool,

which

new

incrementing,

is that

policy

for

a tool

C, which,

and

to the

the value

the cardinality

to the

VS

any

set of tools

and

into

by integrating

an integration and

mode,

is incident.

ES

illustrate

integer

233

to reestablish

by inserting

We

.

in eager

and

is a change

both

reflect

exports

relationmethods

of this

number.

of

We thus

VS.

for

The new define

an

invariant

C(N,

Our

mode

environment.

and getting

C with

G when

mode,

any edge in

a nonnegative

N should

for

to eager which

adding

N stores

relationship

lazy

the

decrementing,

relationship integration

policy in lazy

we consider in

involves

tool

the when

upon

enhancement

relationships

shipp. The

Integration and Software Evoluhon

VS)

again,

=

N

retains

=

IVSI.

the

effects

of user

changes,

is to

increment or decrement N whenever a vertex is inserted into or deleted from VS, and to insert a vertex into or delete one from VS whenever N is changed. 2.3 Three Traditional

Designs

We now apply The resulting

three traditional design approaches to the basic designs are intended to reflect characteristics

practice

these

when

components

design

for the vertex

do not discuss

them

approaches

are applied.

and edge types

any further.

The

that

design

All

three

are defined of the

user

requirements. that arise in designs

include

identically, interface

so we differs

in

each case, but is always defined directly in terms of the visible components; we also omit further discussion of this component. ES, and N and the integration The components realizing the tools VS, relationships design

we focus 2.3.1

G, G’, and C, on the other

approach on these

applied.

hand,

differences

vary

considerably

are at the heart

based

on the

of the matter,

so

components.

Encapsulation.

components,

These

The

G, VS, and

first

design,

shown

ES. The components

in Figure

I,z defines

VS and ES realize

three

the tools

VS

and ES, while G realizes the integration relationship G through encapsulation of VS and ES.S The methods exported by G call VS and ES to insert and delete vertices and edges on the user’s behalf. Since G encapsulates VS and When

ES, only G’s methods one of these methods

in iZS are incident,

for example,

are visible to the user interface. disrupts G, by deleting a vertex on which the method

reestablishes

edges

the relationship

by

2In the figures discussed in this and the following section, components are represented by olouble-framed boxes and the methods they export by single-framed boxes. Shaded boxes denc]te hidden components or methods not accessible to the user interface, while unshaded boxes denote visible components or methods. Black arrows denote explicit, and grey arrows, implicit method invocation. The tail of an arrow designates the method making the invocation, and tbe head, the method that is invoked. If the head points to an entire component, one or more methods in that component are invoked. For clarity, only invocations made to maintain integration relationships are represented, in contrast to those implementing basic tool functions. 3We use a boldface font to denote specification components such as VS, and an italic font for corresponding design components such as VS. ACM

Transactions

on Software

Engmeermg

and Methodology,

Vol. 1, No. 3, July

1992.

234

K. J. Sullivan and D. Notkin

.

G ES_Delete(e)

[ Figure

invoking

a separate

VS. Delete(u) ensure

the

deleting

any

incident from

design

method

u from

consistency

components ods. This

update

to delete

is fairly

clean.

Separate

the

design,

VS and

does invoke relationship this,

from

aspects

G—are from

of each

ES

update

meth-

of the specification-the

represented

are independent

VS to ES,

necessary

to of ES other

separately;

other

and

to VSJ or from

tools and within

of G: there

VS or ES

are

to G. G

VS and ES explicitly, but this is reasonable since G manages the between them. However, VS and ES are encapsulated by G, and

as we shall

First,

ES

these

calls

G. G-VS-Delete(u)4

iterates over the edges VS and ES to prevent

G by bypassing

and ES and the relationship

G. VS–Delete(u)

it calls

This method u. G encapsulates

VS

no invocations

by G. After

defined

of G. on

1

1

VS, for example,

invalidating

VS_lnsert(v)

though,

see below, we note

complicates

that

integration

designing

of new tools.

G as a separate

component

G eases

evolution by localizing the effects of changing G to G’, as shown in Figure 2. We add a mode-bit (LazyFlag), a method to switch modes, and we modify the update methods are reasonable:

to maintain the they are implied

and

change

the

overall

to

the

new relationship by the change

design

is

proportional

change to the specification. Notably, VS and ES in order to change the relationship between them. The

second

encapsulates designed into

change, VS,

shown

which

as an independent

G, where

VS

in

makes

is visible.

Figure it

hard

component Thus,

to

do not

3, is harder, to integrate N,

we

G’. These changes to the specification,

but

G’s

size

with

we have

of the

to change

however, N

then

expand

the have

because

VS.

to migrate

interface

with

N

public

methods to change N and with private update methods to maintain (as well as G). The new version of G really represents a composition G and C, as the new name GC indicates.

i Our method

G

N can be

C of

names reflect the component defimng the method and the function performed. M defined in G and deletes a vertex from VS by calling VS. Delete(u); G.G_ VS_Delete(v) maintains the relationship of G in the face of the deletion of a vertex from VS, for example. Update methods, such as G. G–VS–Delete(u), are not strictly needed. This code could be placed directly into the methods exported from G. However, the separation makes the code and the explanation clearer by Isolating the basic tool activities from the actions needed to preserve G.

G. VS-Delete(u)

ACM TransactIons

on Software En~neermg

and Methodology,

Vol

1, No. 3, July 1992

Reconciling

Enwronment

Integration and Software Evolution

.

235

G’ VS_lnsert(v)

ES_Delete(e)

1

~~1

+

t

t

G’_ToggleLazyo

G’_ES_lnsert(e)

G’-VS_Delete(v)

I

I

+

II 1~1

Vs I

i

II

Lazy Flag

ES

II

Figure

2

GC N_lncremento

VS_lnsert(v)

N_Decremento

VS_Delete(v)

ES_Delete(e) --l ES_lnsett(e)

I

T

+

+

GC_N_lncremento

GC-ES_lnsert(e)

GC_N-Decremento

GC_VS_Delete(v)

I+!&-”pi

N

Vs

Figure

When faced with the integration thus forces a merging of separate

ES

3

of a new tool, the encapsulation concerns. Maintaining C should

is not possible knowledge of either ES or of G, but this separation hides VS. When N is decremented the update method of GC.GC.N.Decrement must

not only

edges

incident

delete

a vertex

on the

to restore

deleted

vertex.

sert(.e) and GC. GC–VS–Delete(v) not been changed at all.

must

because

G

( )

C, but The

approach not require

must

also access ES to delete

update

methods

be modified,

GC.GC–ES–In-

too, even

though

G has

While this design seemed promising integrated. Integrating N substantially

at first, it degrades when a new tool is increases the complexity of G and

damages

specification

the correspondence

and C in GC. These This

approach

is typical.

prod ucing the initial plify this approach. tures,

but

integrating other major

these

factors

between further

complicate

Indeed,

one can easily

and design

future

by merging

anticipate

a programmer

design given the original specification. Unix tools They often have rich and well-modularized inner

are hidden

from

other

tools.

This

G

evolution.

decreases

exemstruc-

the potential

for

Unix tools without merging their implementations or making changes to expose internal representations and activities.

2.3.2 Hard- Wiring. components, VS and ACM

The second design, shown in Figure 4, defines two ES, both of which export methods to the user interface.

Transactions

on Software

Engineering

and Methodology,

Vol. 1, No. 3, July

1992.

236

K, J, Sullivan and D. Notkin

.

mm

Delete(e)

I

Figure

1

I

Iterateo

4

Vs

m ES

Insert(v) Member(v)

Delete(v)

Delete(e)

Iterateo

1

Iterateo

G’_VS_Delete(v)

1-

G’_ES_lnseti(e)

1

LazyFlag

t G_ToggleLazyo

Y

II

t

Figure

To maintain

G, VS and

VS. Delete(u)

deletes

making

appropriate

edge is added,

ES

invoke

U, it invokes calls

each

other

directly.

VS. G-VS-Delete(v),

to the exported

ES. G–ES–Insert(

5

e ) calls

methods

For

which of ES.

VS to maintain

example, maintains

Likewise,

after G by

when

an

G.

In contrast with the previous design, this one exposes VS and ES in an attempt to ease integration of N. In doing so, however, it sacrifices the explicit representation of the relationship G in the design and creates explicit invocation dependencies between VS and ES. These structural problems complicate both enhancements. As shown represented

in Figure explicitly.

5, adding a lazy mode Instead, both VS and

to G is hard because G is not ES have to be modified when

the relationship between VS and ES is changed. This distribution of G also makes it hard to know where to place the lazy-mode bit and associated methods. In Figure 5, the change is made to VS, but the change to ES would be symmetric. ACM

TransactIons

Distributing on Software

the Eng-meermg

change

between

and Methodology,

the Vol.

components

1, No. 3, July

1992

would

be

Reconciling

Environment

Vs

237

ES

Insert(v)

•1

.

Integration and Software Evolution

Insert(e)

I

Member(v)

Member(e)

Delete(v)

Delete(e)

Iterateo

1

Iterateo

1

GC_VS_Delete(v)

GC_ES_lnsert(e)

GC_VS_lnsert(v) I

GC_N_Decremento

GC_N_lncremento

Figure

I

6

confusing. Creating another component may be the best solution, but ES would still have to change and the interactions among the three ne.mts would be similar to those in our design. Furthermore,

as shown

in Figure

6, this

design

tion of N, even though VS is exposed. VS must relationship C. Moreover, the modified design

does not ease the integra-

still be modified merges aspects

VS, further decreasing the independence of VS and spondence between specification and design. Software

designs

based

on this

approach

VS and compo-

abound.

to handle the of C and G in

complicating It is hard

the

corre-

to cite specific

systems, but not hard to find advocates of this approach. Coad and Yourdon’s object-oriented analysis method, for example, is based precisely on subsystem (subject) integrated

composition environment

produces

structures

makes

it hard

toc,ls, since 2.4 The

by explicit invocation [6]. Using this approach for an would be inadvisable. It complicates evolution and that

to change

each may

degrade and

be tightly

rapidly

as enhancements

add relationships intertwined

and with

are

made.

also to replace

many

It

or reuse

others.

Events third

design,

a variation

pklCe of the explicit

invocations

of the

second,

between

employs

VS and

implicit

ES. Briefly,

invocation implicit

in

invoca-

tion occurs when one component announces an euent that it has defined to which other components have attached methods to be executed. The key the component making an implicit invocation—the one that point is that clei~nes

invoked Sections

event—need not know when it announces the 3 and 6.

the

ACM

Transactions

on Software

the names or even the number event. We discuss this topic

Engineering

and Methodology,

of methods further in

Vol. 1, No. 3, July

1992.

238

.

K. J. Sullivan and D, Notkin

w

ES Insert(e)

Delete(e)

Member(v)

Member(e)

Iterateo

Itereteo

[

I

G.ESebtserLed(e)

G_vS_Deleted(v)

Figure

In this that

design,

they

shown

announce

ods are operates

similar on the

ponent.

To

in Figure

when

7,s VS and ES are extended with or deletions succeed. The update

insertions

to those in the component that

complete

the

7

previous defines

design,

we

it

design, rather

associate

events meth-

but in this design than on the other the

each com-

ES. G–VS–Deleted(u)

update method in ES with the VS. Deleted(u) event of VS and similarly the update method in VS with the edge addition event of ES. This design has characteristics similar to those of the previous one. Changing

G to G’

distributed

poses through

exactly

the

VS and

same

ES,

problems.

making

The

representation

it necessary

to change

of G is both

compo-

nents to change the relationship between them. Implicit invocation fundamental affect on the difficulty of making this change. This design does allow N to be integrated with VS without changing shown in Figure 8, but not without maintain C when VS changes, we events

of VS. In contrast,

delete

a vertex.

remains

This

independent,

independence

of N

when

yields but is to add

sacrificing associated

N changes,

a hybrid iV

it invokes

hard-wired

does

update

not.

and

An

N. But this requires changing VS. Thus there is no completely satisfactory

5Events

are

Implicitly event-method ACM

drawn

invoked

as

association

TransactIons

darkened

is shown

to methods

on Software

boxes;

in tabular

the

form.

VS explicitly

alternative

way

to

to add

that

preserves

with

integrate

the

events

a new

or

VS

design.

of

tool.

tool and integration concerns, and the relationships (G and C) in VS.

connection Tracing

the

between connections

events from

and

methods

events

is helpful.

Engineering

VS, as

of N. To in N with

event-based

to VS, associated

methods

Furthermore, both alternatives merge one that changes VS merges multiple

the independence update methods

has no

and Methodology,

Vol.

1, No. 3, July

1992,

through

to

be the

Reconciling

Environment

Integrahon and Software Evolution

w

.

239

ES

Insert(v)

insen(e)

Delete(v)

Delete(e)

‘a

Member(v)

Iterateo

IL-+

G_ES_kwwtad(e)

II

1

G_VS_Deleted(v)

N

I

Increment

‘~] Dacremento

C_VS_Deleted(v}

C_VS_lneerted(v)

Figure

Many

contemporary

include

FIELD

integration

to

example, takes views explicitly

(MVC)

maintain

this

section

we

present

evolution

of integrated environment.

nents

designed

or a Unix

As in the G,

These

approach.

invoked,

tools

relationships.

implicitly

update

MVC,

invoke

views,

for but

approach We

approach

program.

defined By

illustrate

is based

independent

appears it

tools,

and

independent

ease

the

a design

for

separate

implicit

compo-

invocation.

such an abstract we mean

other detail

to

with

on mediators,

as a unit,

invoke any component our approach in greater

that

data

a component

than itself. and discuss

By type, that

Following our the role played

invocation.

3.1 An Improved

and

models

environments. Our

a component

does not explicitly desj gn, we describe by implicit

implicitly

integration

a design

to integrate

we mean

an object,

When

specified

this

[5], and the Smalltalk-80

EVENT APPROACH

the graph sepcwate

[21].

the

take

SoftBench

the hybrid approach: invoke models.

3. THE MEDIATOR/ In

frameworks

[27], the Hewlett-Packard

Moclel-View-Controller themselves

8

Design

encapsulation-based

as shown ACM

in

design,

Figure

TransactIons

9. VS

on Software

we define and

ES

Engmeermg

three

realize

components, the

and Methodology,

tools

and

VS,

ES,

provide

Vol. U No. 3, JUIY 1992.

240

.

K, J Sullivan and D. Notkln

w

ES

Insert(v)

I

Insert(e)

G_ES_lnsefted(e)

Delete(v)

Delete(e)

I

Member(v)

Iterateo

J

e methods

the

G and

called

provides

tionship.

In contrast

or ES.

Instead,

tee that

update

methods

ES.

G in turn

the

encapsulation

invocation

a

as

earlier

C as a mediator is deleted

from

and

ES

ES

G and

c,

then

which

Figure which

10

depicts

would

ES,

have

and

compose.

N

More

environment

our been

the

first

eases

both

because

implicitly

be

relationships:

{ }, {G},

between

implicit

easier

{C}, and

In

addition,

by

and

N

or

{G, C},

design

a

both

C, respectively. simultaneously, In

this

understand, the

and

VS. When invokes

and

mediators

following

and

design,

reuse,

removing

of

G

designing allows us to

events

G and

to

any

in

is localized

approaches.

adding

{G’},

change

the

enhancements

previous

provide

specification

replaces

with

announcement

to restore

simply to

VS and

of

G. This

relationship

the

event

both

thus

by

changed

N the

independent,

we associate

design

invoked

the

with

under

importantly,

correspondence

is

VS

to guaran-

events

to reestablish

in

ours

design hard

are

can

integration

C that

design,

deletion

rela-

encapsulate

not

design.

G is easy

VS, for example, ES and update

relationship

integration

Specifically,

and

separate component, as in the first design. a component N that announces appropriate

design

the

the

G does

as necessary.

ES in this designs,

I

as in the third

VS and

VS

of

Changing

vertex

VSJ

G

lterateo

realizes

this

insertion

the

invokes

VS and

to of N.

called

with

G

design,

invocation,

are G

by

G by

contrast

in

of

explicitly

of

integration

implicit

I

to maintain

used

earlier

Member(e)

9

interface;

methods the

methods

update

N

with

we use

the

In

update

the

user

the

by

Figure

[

{G’,

C}.

is preserved,

the

subsets

of

Finally,

the

easing

future

enhancement. In

review,

the

independent and

ES

VS and maintain

first

design

components. made

ES G.

ACM TransactIons

it

hard

cast This

to integrate

G as a separate eased N.

to ease integration

of N,

This

both

made

it

hard

on Software Engineering

component

evolution The but to

of

second

G,

but

and

intertwined change

and Methodology,

G

and

third

designs

these and

V

and

encapsulating

to

Vol 1, No 3, July 1992.

as VS

exposed

components

integrate

E

N.

to The

Reconciling

m Member(v)

Environment

Integration and Software Evolution

.

F====

z “’E&Ed

1 II

241

Delete(e)

Member(e)

Lazy Flag

Iterateo

ToggleLazyo

1

II

c C_N_Decrementedo

C_N,Jncrementedo

Event

Method

ES.inserted(e)

G’.G_ES_lnserted(e)

VS. Delfled(v)

G’.G_VS_Deleted(v)

VS.lnsertad(v)

C.C_VS_lnserted(v)

~

VS. Dak4ed(v)

C.C_VS_Deleted(v)

N.lncrementedo

C.C_N_lncrementedO

N. Decrc!mentedo

C.C_N_Decrementedo

I

Figure

third

design

ES.

It

regards tool

used

also it

and

Our

had

the

truth, tors

notion

and

that

they

only

G and

to preserve

integrated

problems

positive

relationships

independent

tile

same

be

10

the

without

as the

second

aspects

as separate visible,

it

but

failed

in

other

to separate

from

each

components,

which

eases

of these. and

both

we

evolution

We

and

design

VS and

keep

tool

ES

integration.

and Implicit Invocation we sometimes mediators

represent

C, for example,

encounter

represent

a new could

usage

when

a new

presenting

this

of existing

be implemented

mechanisms. as objects

approach

mechanism.

programming

The

or Unix

In

mediatools.

are first-class design and state and invoke tools as

to maintain complex relationships. When implemented as objects, respect tool encapsulation boundaries. They can export abstract announce their own events, and be composed in arbitrary ways.

For example, be treated

VS,

because

This has several advantages. Since mediators implementation components, they can maintain necessary they also interfaces,

of VS and

independence

changing

concerns.

A misunderstanding is

invocation to

combines

Why Mediators

3.2

N

integration design

integration both

implicit

allowed

‘E /

they

can be used within

as tools to be integrated ACM

TransactIons

on Software

designs

with

other

Engineering

of larger tools.

components,

Finally,

and Methodology,

they

and can

can be used

Vol. 1, No. 3, July

1992

242

K. J, Sullivan and D, Notkin

.

in existing

languages

and on existing

platforms.

mechanism, but an approach to structuring Taking full advantage of our mediator-based however, ability

without

an implicit

of explicit

nent

on the

invocation

invocation

component

alone

programming

implies

invoked.

The

Mediators

abstraction.

dependence

reason

mediators

that

relate

them

dence and, as shown in Section The availability of an implicit supported

across

a wide

the invoking

to other

components,

decreasing

of languages—can

be used

dependencies. Specifically, the invoking component simply it is the component whose method is to be invoked that name

of the event.

Since

the invoking

component

compo-

component

from the component that would have to explicitly

2, complicating evolution. invocation mechanism—an

range

a

The avail-

of an invoking

is that

must import the name of the method to be invoked defines it, In a mediator-based design, components invoke

do not represent

environment designs. design approach is impossible,

indepen-

abstraction

not

to reverse

such

exports an event; must import the

does not import

the names

of the methods that it invokes, it can remain independent. This allows the designer to distinguish between situations in which a component must communicate and those in which it may communicate. We

can

now

relationships each other. the

present

We then

dependence

when

tool visibility,

an Implicit

still

resulting

between

Invocation

design

integration of tools

mediators

to eliminate

ensuring

that

combination

representation

a new

We

dependence

invoke

while

The

the conflict

is not

a nutshell.

to eliminate

to implicitly

and separate

3.3

invocation

in

on mediators

degree,

Implicit

tools

necessary.

to a reasonable

Developing

approach components

design

of tools

ods are invoked dence,

our

as separate

update of tool

of relationships

integration

on

meth-

indepenreconciles,

and evolution.

Mechanism idea.

Many

mechanisms

supporting

this

abstraction have been designed and are in use. These include, among many others, the LOOPS active values system [32], which is intended to support program debugging and simple graphical view consistency-maintenance; the change/update

protocol

of Smalltalk-80

to support complex graphical (MVC) mechanism, intended as a mechanism relational

triggers

constraint-based A formal

in

AP5

[7],

used

by the

Model

View

views; the FIELD message for integrating Unix-based

intended

to

support

declarative,

Controller multicast tools; and relational

programming.

model.

Despite

the

diversity

of purposes

abstract these mechanisms oped a minimalistic formal

have key underlying framework to try

both to better understand designing new mechanisms. We characterize implicit

existing

mechanisms

invocation

and

designs,

in

the

similarities. We have develto capture these similarities, and

mechanisms

as a starting in

terms

point

of a set

for E

of

events, each of which can be announced; a set M of methods, each of which of methcan be invoked; a mapping EM: E ~ 2 ‘1 from events to multisets ods; and an event announcement procedure A that invokes all the methods AC!M TransactIons

on Software

Engmeermg

and Methodology,

Vol

1, No

3, July

1992

Reconciling associated

with

characterize terms

a given

the

of several

Additional

explicit

design.

gramming

dual

abstractions. We

that

thus

such

.

is announced.G

invocation model

243

We thus

mechanisms

as the basis

in Section

to this

requirements to each

in

for the

6 we apply

model,

we have

mechanisms

intended

reflect

other

and

it to an

in

the

usage

as the

patterns

inclusion

and

implicit

and

as pro-

to mechanisms

maintenance

established of event

by

a

to support

importance

to lead

design

developed

the idea that

of equal

are also intended

help

adopt

ticm mechanisms,

event

and

invocation

They

characteristics

systems.

C++,

In addition

These

are

that

of implicit

A). We use this

for implicit

invocation

and Software Evolution

mechanisms.

requirements.

mediator-based

whenever

extending

existing

set of requirements

Integration

structure

(E, M, EM,

of a mechanism

analysis

have

event

underlying

of a four-tuple

design

Environment

that

of complex

explicit

declarations

invoca-

in component

interfaces. First, its

because

the events

specification

declared

as its

in component

it harder

out difficulties

owing

integrating

source

control any

designer the

readers

implicit

invocation

Many which

systems

fail

events; These

programming

events

this

arise

in FIELD,

which

to

should

requirement

Meyers

[25]

be

makes

has pointed

particularly

obviously

is

in

important

when

involved.

with

and

this

implicit

experiences

were

significantly Fourth,

constrain design. the designer should The available

with

events

the cannot can.

limits

not

primarily

be

able

[34], events

in

to other

to

specify

not be limited

that

include

the of use

freedom

to

cannot

be

LOOPS,

in

only

to abstract

relations

syntax

tree

to support

general

be faulted

in

that new

can

events

in which

cannot

indicate

allows

independent

designer’s

intended

so they

some of them

the

announce These

APPL/A

which

should

This

components

by limiting

invocation,

but

events.

it seems appropriate,

requirement.

events;

Gandalf,

systems

be explicit

can be passed

and when.

to declare

Limiting

design

to meet

announcement control

behaviors in this way eases reasoning invocation. It also gives the designer

be able

invocation

announce

event when

are announced

should

dimension,

signatures.

is that precisely

complicates

only variables [16].

are as important

signatures

events.

which

dependencies: components that in the same way as those that

armounce ncldes

over which component

of component

organize integrated

and

to satisfy

announced,

component use implicit

to use implicit

kind

are

requirement

tells

components. Clarifying about Components that Third,

Failure announce

problem,

that

announces

names

new tools.

related,

code. This

precise

event

that

to this

events

A second,

a component

interfaces.

to use components

urlderstanding when

that

methods,

these event

to those

this

limitations names

defined

and by the

GThe range of EM is a multiset because many implicit invocation mechanisms allow multiple copies of a method to be associated with an event, with each being invoked on announcement of the event. 7Signatures are appropriate in languages in which method signatures are also declared. ACM Transactions

on Software Engineering

and Methodology, Vol. 1, No. 3, July 1992.

244

.

system. the

K, J. Sullivan and D. Notkin Failure

same

denying

to

way the

meet

this

as restricting designer

full

the

requirement

the control

extensively

exploit

the systems A system

we have built. that fails to meet

ability

over

operations.

this

Smalltalk-80,

AP5,

requirement.

FIELD

events

In

events,

encoding

of arbitrary

Design

and

costly

in which

our

systems

nonstatic

the

set

event ified all

article,

in

Gandalf

kernel.

It

using

the

other

hand,

relational

expressions. event

to invoke action read and write

Smalltalk-80

parameters,

meet

predicates. defines

which

a

enables

model.

to implement

It should

take

implicit

no more

than

a

makes

broadens

it

easy

the range

Mechanisms

to use

our

we now discuss,

model,

we require

domains

for platforms

extends

that

approach

of application

other

than

of procedure examples and

C++

[33].8

each C++

object

be able to

hence our E consists of the collection of events exported by all a system. To a given event we want to be able to associfunctions member

multisets

of

sequential

defined

order.

methods

other

exported

member

functions

these

A

behaves

objects. by

returned.

using

Actual

standard

all

with

as follows.

associated with the event Event announcements

have

methods

by

functions

procedure

the methods

to the invoked

and

which

announcement

invoked

on our

can be applied.

member

announced,

on

efforts,

platforms,

of nonstatic

associates

events

one in any object-oriented language. The ease with can be implemented has significant benefits. It

of our formal

declare events, the objects in ate

FIELD, specified

by We

arbitrary

languages are feasible given the equivalent primary mechanism, used to implement the

in this

In terms

are

It is straightforward

based

approach

object-oriented pointers. Our

is the

much

invocation.

events that are used limits events to variable

regular

development

changing

of implicit

to declare

for unrestricted

implementation.

mechanisms

eliminates

use

in

events,

events.

day or two to implement which such mechanisms without

with

but allows

the

design

can announce

requirement

and

events

are specified

few fixed

invocation

AP5,

that

of components

defines about a dozen special-purpose routines. Another is LOOPS, which this

complicates

components

our EM

events

in

When

an

are executed should not

event

C++

Thus objects.

is

then

E.

Our

event

is

in an unspecreturn until

parameters

parameter

M

are

passing.

passed

One limita-

tion of the mechanism we describe here is that events do not support return values: signatures are not fully first class. Our design can be extended easily to fix this, if necessary. A critical decision in specifying an implicit invocation mechanism is deciding how

the

designer

specifies

EM.

We take

the

simplest

an object can register one of its member functions typed visible event. We require that the signatures

‘These we

systems

present

in

CommonLisp/CLOS ACM

TransactIons

were

actually

built

using

this

article.

The

program

a number

of minor

restructuring

route.

variations tool,

of the

described

Engineering

and Methodolo=q,

Vol. 1. No. 3, July

mechanism

later,

[3] implementation. on Software

At runtime

with any appropriately of events and associated

1992

used

a

Reconciling member

functions

furiction

m with

unregister

conform. event

methods,

on manipulation adopt, but manipulate tuples, method

In

terms

of EM

deletes

and Software Evolution

of our

model,

registering

(e, m) to EM.

tuples

from

EM.

as a set of tuples.

which we discuss in EM indirectly—using

key

Integration

e adds the tuple

which

for example. connections,

The

Environment

An

.

a member

We also allow Our

objects

mechanism

alternative

Section 6, is to allow high-level expressions

245

that

we do not

the programmer to that specify sets of

Nor does our mechanism support statically-bound although it would be desirable to do so.

to implementing

this

mechanism

is to

to

is based

design

event-

events

as C++

classes. instance

An object declares an event by including an event object as an variable in its public interface. An event object maintains a bag of

pointers exports

to member functions, to invoke when the event is announced, a method which is used to announce the event. When invoked

and (i.e.,

when the event is announced), this method simply iterates over the elements of the bag invoking the designated member functions. A complicating factor is that in C++ nonstatic member functions cannot be treated polymorphically lists and return types

(except appear

member

an implicit

functions

have

the class that declares the member functions unrelated maintain Rather,

bags of pointers so if their define

functions, implicitly

all

of the

invoked

parameter list first parameter

same

identical of type

is announced object

event

parameters.

actual

member member

types

appear

to

type.

store

this,

with

type

“pointer

to

For

each

to the member void’. A nonstatic

functions. functions

have

no implicit

to conform,

they

do conform.

bags

of pointers

nonstatic

a corresponding

static

member

static

function’s, member

to

member except function

this We

member

function function

to be with

a

for an additional is registered with

a pointer to the object in which to invoke the member to the corresponding static member function. When an

it invokes

the specified

argument,

static

objects

we define

an event by registering function and a pointer event

to nonstatic

declared

event

first

even if their declared parameter This problem is that nonstatic

function.” This makes the types of nonstatic in general. Thus, our event objects do not

we use the fact that

parameter; therefore

as uoid”s), to conform.

pointer

these

static

as the first The static

member

parameter

member

functions, followed

function

passing by the rest

casts the object

to each of the pointer

to a pointer of the type of the receiving object and invokes the nonstatic member function through this pointer, passing it the rest of the argument list. ]Ivent classes themselves export three methods. One implements event announcement. The signature event. The other two support ber function/object-pointer declare

and

implement

of this method defines the registration and unregistration

pairs, event

as described

classes

with

above.

event

signature of static

We use C++

signatures

of the mem-

macros

specified

to

by the

designer. This frees the designer from having to know about how events are actually announced and associated with methods. We also use C++ macros to reciuce the clutter required for the auxiliary static member functions, and to make it appear to the designer that nonstatic member functions are beimg registered directly with events. ACM

Transactions

on Software

Engineering

and Methodology,

Vol

1, No. 3. July

1992

246

.

K. J. Sullwan and D. Notkln

Extending

this

class could invoke

methods

C++

design

be defined

to meet

respecting

threads

order.

such

We have

are reasonably

not

confident

as

Presto

there

In

present

ways

we

especially tation

approach

common

of a shared

for solving

in

database

some common

to

of these

our

to model

as a collection that

key characteristics

encapsulation an example

4.1 Views

so that [11].

types

views,

each

or representations,

provides

In merging,

a different

separate

are selected and

can then fixed

of shared

view

interfaces

inductively

relationships.

our

idioms

sorts

while

visibility,

solutions

and

through

be used restriction

and composition An advantage

ease integration than

abstract

data

of a shared

are preserved,

based

by different

data rather

by

on interfaces types

(merged)

(ADTs)

representation

but multiple

implementa-

implementation that supports both the views relationships among them. A system kernel automatically using compatibility maps,

Different

set of compatibility

ened this

styles

and events;

of these

independence,

tools to operate on natural interfaces, up to support a range of tools. provides views for tools by merging

tions are replaced with a single and any necessary consistency produces merged implementations which

implicit

is the represen-

mediators

details. We present environment.

so.

for Tools

Tool-specific allowing conjured Garlan

such as component

of implementation extending the graph

and of design

We also present

in using

one example is avoiding unbounded circularities. We have developed idioms for meeting requirements retaining

but

in doing

mediator

a variety

of views.

use a

methods

enhancements,

problems

one example

arise

and to

could

registered

be no great

environments;

problems

method

invoke

which

can be used

to integrated

is easy. A new event

on the bag of methods

either

would

STYLES

section

[I]

implemented

that

DESIGN

this

order

The announcement

4. MEDIATOR-BASED

invocation-based

requirements

a partial

this

package

concurrently.

additional

to impose

on the

system’s

interfaces tools.

maps

by providing

rules [17]. of this approach

and

In

onto

Garlan’s

composition

approach,

a system

follow-on

language

it allows

of the basic

implementation

rules;

a programming is that

knowledge

a merged

merged

work

for defining

has

a

loosmaps

implementations

to

be optimized, with potentially significant savings in both time and space. For example, two views containing identical elements may share a single instance of that element in a merged view. On the other hand, the approach prevents types from being integrated simultaneously in several relationships: a view interface can be bound to only one merged implementation. Nor is merging desirable in all cases: protection or reuse concerns may suggest separate implementations, for example. Finally, in practice, generating merged implementations

ACM

Transactions

may

be costly,

on Software

since

Engineering

the

types

and

and Methodology,

relationships

Vol. 1, No

3, July

needed

1992

for

a

Reconciling broad

range

Environment

of environments

are

Integration not

and Software Evolution

likely

to be known

by the

.

247

system

in

advance. Our

design

approach

structure.

We have

as views

of a shared

map,

maintaining

Our

illustrates

presented graph.

G then

consistency

approach

reuses

a different

VS and

serves

among

existing

way

ES as tools, the

same

multiple

view

of achieving

but

views

they role

as a compatibility

of shared

implementations

a similar

can also be seen data.

by composing

them

using mediators. This obviates the need for merged implementations or for a system to generate such implementations. It also allows types to participate in multiple relationships simultaneously. Consider, for example, the way in which component Vfl can participate in both the G and C relationships. In the Garlan-style VS, ES, Our

and

approach,

a single

merged

N and the relationships

approach,

however,

views,

because

we stress

nents

independent.

does not naturally the

Thus

importance

we

are

instances of the identical elements are unacceptable, a hand-crafted However, more

in the

absence

allow for

consistent. alternative

of a clear

for optimization

of keeping

driven,

need

the components

be produced. the

of a set of

underlying

example,

to

keep

compomultiple

In cases where the costs of this is required in our approach.

for

optimization,

our

approach

is

flexible.

4L.2 Views The

type representing

G and C would

of Tools

converse

problem

representing A common as ADTs

is to provide

the states, solution

is to view

implemented

theory Our

at least, approach

ADTs

define

contrast, behcwioral ing events

functions, in terms

since ADT is similar,

abstractions

also include

integrated

views

and activities tools

as ADTs

of these

and to design

tool A13Ts. This

in terms explicitly

of method

exported

in

integrated

integration

relationships

Our solution to providing integrated views view tools as ABTs and to design integrated

views

is straightforward,

interfaces;

events.

views

tools.

composition is well understood. but is based on an extension of the notion

in

of ADT.

our abstractions,

We use the

type (ABT) to distinguish our components in the interface, ABTs model components

concretely participate independence.

of tools—single

of multiple

term

in

abstract

from ADTs. By includthat can abstractly and without

sacrificing

of a collection of tools, then, views as ABTs implemented

their is to on

top of these tools. Although we have not developed either a formal theory of ABT composition or even rules of thumb about how to apply this notion, our experiences may

with

be useful

this

approach

as a more

general

provide design

some evidence

that

ABT

composition

technique.

We illustrate the approach by extending G to implement a graph ABT in terms of VS and ES. The main problem in making this extension is to ensure that the event announcements of G reflect a graph abstraction. Specifically, viewing the sequence of event announcements of the underlying vertex and edge sets is not at all the same as viewing a sequence of event announcements that are natural to the graph. For example, a vertex deletion should be

ACM

Transactions

m Software

Enjgneering

and Methodology,

Vol. 1, No. 3, July

1992

248

.

K J. Sullivan and D. Notkln

G I

VS_lnserl(v)

[

VS_Delete(v)

Vs

I

ES

ES_lnsert(e)

[

Insert(v)

\

Delete(v)

Delete(e)

I

Member(v)

Member(e)

I

iterateo

1

Insert(e)

ES_Delete(e)

I

I ,

G_VS_lnsert(v)

[

‘f

Y

G_E$_lnean(e) G_ES_Deiete(e)

Figure

announced the

only

underlying

after

the incident

vertex

VS is visible.

the viewer

11

happens of the graph

which

abstraction

will

underlying

components, events

for

such those

as the

graph and

public

insertion

vate

methods update

and

events

methods

for

for

vertex

maintaining

vertex

components

components rather than the graph itself. A new version of G in which the sistent sequence of event announcements, in Fi~re tent view of Cl, is presented the

11.

are

temporarily

that is, the viewer of the graph will not be guaranteed relationship G always holds. It is important, however, to

announcing

there

since

nonexistent vertices; that the integration the

in which

from

is possible

view

allow

graph

even if the deletion

first,

see an inconsistent

continue

of the

I

edges are deleted,

set VS actually

Otherwise,

I

I

G_VS_Delete(v)

[

lterateo

edges

and

viewing

containing

edge the

sets,

to

underlying

viewers both see a conalso never see an inconsisThis

graph and

consistency

ABT

G

deletion of

VS

and

exports and

pri-

ES.

The

public methods are implemented as direct calls to corresponding methods in ES. G. VS–Delete( u), for example, simply calls VS. Delete(u). The VS and update methods implement the solution to the event announcement problem. The two update methods G. G–VS–Insert (u ) and G. G–ES–Delete( e ), are simple, announcing the events G. VS–Inserted(u) and G. ES–Deleted( e ), respectively.

ACM

TransactIons

The

other

on Software

update

Engmeermg

methods,

and Methodology,

G. G_ES_Insert(e

Vol. 1, No. 3, July

1992.

)

and

Reconciling G .G–VS–Delete(v),

Environment

maintain

consistency

G .G-VS-Delete(u),

for example,

first

ES

deletes

from

nounces

the

however,

each deletion

announces announce

vertex

edges

incident

deletion

G. Before

ES implicitly

a graph ABT ES. Components

249

events.

vertex

this

invokes

.

of a vertex

deleted

and

event

When

from

is

VS, it

then

G

an-

announced,

G. G-ES-Delete(e),

the edge deletion event of G as described the vertex deletion until after announcing

which

above. Thus, G does not deletion of all incident as a composition interested directly

of the in the

or edge sets are unaffected.

4.3 Abstract Chiron-1 tency

Depictions

[20] is characteristic

between

artists

internal

are used

another which

to maintain data

type.

a concrete

(i.e.,

graphical)

the

manager, In our

data

the

In

methods

and

explicitly

can be directly

[22].

Dot

type

example,

by

by

depictions

for

instance,

and

of a picture.

dot

defining

dots and

segment system,

from

P

with

of G and

a mediator

P. When

G, a corresponding

from

P. Likewise,

This

design

when

supports

both

dot

P changes, display

GP

a vertex or segment GP

and

updates

direct

that

graphical

that

exports into

stores

and

a graphic

such as InterViews graphics

as line

realizations,

maintains

or edge

new

to repre-

segments

graphical

G and

as filled

and

or

deleted

An

depiction

concrete

segments; these are the concrete depictions, abstract depictions, as in Chiron- 1. elements

and from

appropriate

P (for picture)

by a user interface

are drawn

abstract

to create

deleting

Each

the

and new mediators

a new component

for inserting displayed

invoked

segment

integrate

depiction

can be generated.

and

between

consis-

In Chiron-1,

is a representation

circles

We

graphics

the abstract

our

a representation

that

of the

1 system. this structure

G we define

events

maintain

an abstract

depiction

display

when

to represent artists.

between

abstract

that

of components.

that updates an abstract depiction when implicitly of an operation exported by the data type, and that

type

of the graph

from

An

a part of the Chironapproach, we model

components

systems

representations

consistency

arbitrary

updates

views

of user interface

and visual

artist is a component invoked by invocation

sent

of

announce

by deletion

on the

event

from

and

is invoked

edges. This design implements underlying set ABTs VS and vertex

Integration and Software Evolution

a bijection

is inserted

is inserted

into

G to restore

manipulation:

of

into

or

or deleted consistency.

when

any

tool

changes G, P is updated, and when a tool such as a mouse handler changes P, G is updated. P thus serves as an abstract depiction and GP as an artist. In contrast to Chiron-1, P and GP are undistinguished in our design, while abstract depictions and artists Both approaches have benefits.

are fixed Chiron-1

types used by all Chiron-1 instances. provides extensive support for user

interface development, including a rich abstract depiction language, a specialized version of Ada for implementing artists, and a mechanism implementing implicit invocation in a style similar to CLOS wrapper methods [3]. Our approach lacks these mechanisms but generalizes the technique, making it possible

to integrate

ACM

existing

Transactions

and new user interface

on Software

Engineering

systems

and Methodology,

more

flexibly.

Vol. 1, No. 3, July

1992.

250 4.4

K J Sullwan and D. Notkln

.

Compound

Relationships

Relationships part,

among

complex

as sets of simpler

provide

an

example,

vertices

in

G by further

and vertices useful

An idiom

of

of

dot-vertex dots

and

pair.

Each to

submediators This well

with idiom

those

diator

would

Integrating

Another into

key problem

new

tools;

equivalent most

do not

is, limiting and events

and dots

would

be

and

dot

can

sets plus

a

pairs. to maintain

for

each

deploy

by G

keep

an

corresponding

announced

to

indepen-

could

Similarly,

edges

in the

Chiron-

associated

might edge

1 system.

of submediators can be kept images

deploy locations

small,g

[23],

This

are needed.

in an image

a design

using

works

Although analy-

one subme-

be impractical.

Tools

The are

events

often

is to integrate

are limited

inadequate.

to allow

by which

designer

designers

possibilities

with

While

most

invocation

tools

can be made

obvious

choices:

required invariants; integration. There

the latter choice: by modifying the component that exports a sufficient

existing

by interfaces

explicit

the two

its usage to guarantee as needed to enable tight

to implement inside another

P

relationship

example,

events

incident

number

interfaces

the

for

equal.

of subartists

probably

these

export

other tools. This leaves

and

for environment

of method

vertex

dot-vertex) to

mediators

environments.

by existing

This

dot-vertex

GP,

in

a relationship

interfaces.

locations

millions-of-pixel

Existing

Such

dots

vertices.

use

of simple with

4.5

(for

respond

of their the

sis environment per pixel

DV

their

a “moderate”

implementations

sort.

in To

of corresponding

is to use submediators

vertices

mirrors

only

when

would keep

between

on the

this

of

between

consistent

useful

mediator

vertices

is moved. user

be expressed,

of the representations.

locations

on corresponding

relationships

a new

the

relationship

relationships

parts

relationships

that

as either

we have found

parts

our

intuitive

as a bijectivity

set of equality

instance

extend

equal

can frequently

among

requiring

constructing

be expressed

dent

we

remain

for

representations

relationships

tools

exported

tools

export

of tool

to interact to

use

the

functions, with

a tool

as

or to add methods are at least two ways

tool or by encapsulating interface implemented

it in

terms of the encapsulated tool. FIELD [27] takes the first approach; the Hewlett-Packard Encapsulator is a tool designed to facilitate the latter [10]. Our mediator approach does not dictate any of these choices, but facilitates integration once a choice is made. We have had several successes integrating existing

tools without

a user interface delete, and move

9In our C++ 25 bytes,

ACM

implementation

8 to reference

one to store

modification,

a boolean

Transactions

for example.

To illustrate,

we hypothesize

component D (for display) exporting methods graphic elements, but exporting no events.

the value

on Software

a mediator two

integers,

to limit

to keep

two

the propagation

Engineering

integer-maintaining

16 to register

with

each

classes

of their

changed

of updates,

and Methodology,

Vol.

1, No. 3, July

1992

to

insert,

equal

requires

events,

and

Reconciling

We integrate or deleting

P and

graphics

and deletion

Environment D through

into

This

D upon

of dots and segments

is sufficient

to maintain

because

into

and Software Evolutlon PD that

being

so that

than

PD

D does not announce

that

updates of P. We used this design in integrating InterViews with our graph ABT G. To complete

the

system

we defined

We handle

mouse

clicks

frolm

P (since

we cannot

change

D directly).

edly

moving

VS and “existing”

update

interface

in integrating

a program

toolkit

could

without

design

both tightly

This

system

is

to a vertex

in

integrates

an

used

graph

described

to or

by repeat-

Griswold

dependence

on

a mouse

elements

dragging

modification.

program

tool.

thus

is

based

to handle

or deleting

We handle

of D and

restriction

interface

H

each dot

be used to trigger

a user

by adding

This

an existing

restructuring

This

of a dot is reflected

to D by submediators.

user

approach into

a dot in P. Each

back

elements

D.

a component

device.

by addition

a dot or segment

between changes

events

input

D by inserting

invoked

whenever

251

.

P. We also integrate

a correspondence other

updates

implicitly

or from

submediators,

as no component

necessary

a mediator

or from

or segment with D, using moves, D is updated. P as long

Integration

this

component in

the

next

section. 4.6

Miscellaneous

In this and

section,

idioms

following tions,

we discuss

that definition

are

a number

common shows

and the implementation

the

and

of mediator useful.

instance

implementation

We use variables,

of one of these

update

GP

strategies

as an example.

update

method

methods

The

declara-

in C++.

class GP { / * lJpDATE METHODS *\ void WhenVertexDeleted(Vetlex & v); void WhenVertexAdded(Vertex & v); void WhenEdgeDeleted( Edge & e), void WhenEdgeAdded(Edge & e); void When DotDeleted(Dot & d); void When DotAdded(Dot & d); void WhenSegmentl>eleted( Segment & s); void WhenSegmentAdded(Seg merit & s); /“ INSTANCE VARIABLES *\ G* graph; P* picture; Boolean VertexDotInterlock; Boolean EdgeSegmentInterlock; Binary Relation VertexToDot; Binary Relation DotToVertex; Binary Relation EdgeToSegment; Binary Relation SegmentToEdge; }; void GP: :WhenSegmentAdded(Segment { if (ESlnterlock = false) { ACM

Transactions

on Software

& s)

Engineering

and Methodology,

Vol. 1, No. 3, July

19%3.

252

K. J. Sullivan and D, Notkin

.

ESlnterlock = true; Vertex+ VI = new Vertex(s.Orig,X, s.Ong.Y); Vertex’ V2 = new Vertex(s.Dest X, s.Dest Y): Edge & e = *new Edge(’vi, ‘v2); EdgeToSegment InsertPair(e, s); SegmentToEdge.lnsertPair(s, e); graph ~ ES _lnsert(e); ESlnterlock = false; } } Avoiding ponents

In general,

circularities. participating

allowing

in a relationship

updates

requires

to either

ensuring

that

of two

circular

compropa-

gation makes

of updates is avoided. The mutual update dependence of G and P this necessary. For instance, if G changes P is updated, but this

should

not necessarily

One common mediators.

structure

In

variables

our

GP,

edges

are needed requires

for

again.

in this

is to add interlocks we use

two

one is sufficient.

one is used

segments;

the other

and dots.

design

because

addition

of an edge to G, which

of a segment

may

in turn

the addition of vertices to G, and hence of dots to P. Thus the first P may require the propagation of additional updates back to P. Consider

adding

mentAdded(s of GP. This incident

to P, which

method

sets the

are then

added

to the

implicitly

vertex

invoke

G,

since

implicitly

this

event

This

the

vertex-dot

set

of

G. The

but

is now

the

set.

to

GP. WhenSeg-

in the

above

resulting

definition

vertex

v ). Since

Finally,

edge-segment

the

insertion vertex-dot

an edge

interlock

dots are

is added

is already

to

set, so

is dismissed.

design

will

not work

in the presence

of concurrency.

is that updates having both local and nonlocal appears that a general solution compatible nested transaction mechanism [26], although The

change

sets it and then adds corresponding but these events invokes GP again,

interlock

GP;

invoking

invokes

is given

GP. When VertexAdded(

interlock is not yet set, this method to P. Each dot addition implicitly ignored

implicitly

of which

to

require

segment-edge interlock and then adds an edge, the consistency of G, these to G. 10 To maintain

on two new vertices,

vertices events

a segment

), the implementation

to the

boolean-valued

Here,

and corresponding

vertices

addition

this

instance,

designs,

involving

cycles involving

interlocks

P, for example,

of

In many

circularities

is used to break

G to be updated

we use to overcome

design

as interlocks.

to break Two

cause

design

consequence

of GP of our

also

seems

approach,

complex.

but

of the

One key problem

effects need to be serialized. with our approach requires we have not verified this.

However,

this

requirement

dependence between G and P. A similar interlock-based be necessary under the hardwired and event approaches

complexity for

is not

a mutual

approach discussed

It a a

update

would also in Section

— 10A more useful sponding or both ACM

implementation

to the endpoints vertices

Transactions

would

would

of the new

be mstantlated,

on Software

define

segment.

Engineering

GP

to look

If found,

for vertices

these

vertices

m

G at locations

would

be used;

as necessary. and Methodology.

Vol.

1, No. 3, July

1992

corre-

if not,

one

Reconciling 2. Of the approaches this

complexity:

visible, tools

with

G and

stand

the

That

Integration and Software Evolution

only the encapsulation-based

mutual

G and

Implementing P. It is true, of the

presented,

the

hiding

Environment

dependence

P entirely.

P more

This,

is

avoided

in turn,

approach

by

makes

making

of G and

types

need

P. However,

not

the

be known

as a composition

by

GP

invocations

the events of these

rather

components,

than

which

of ABTs.

implicit

might

more

make

details

implementor ES

of

GP.

can be ignored

by

On the other

accurately

reasoning

G and under-

implementation

the

of VS and

in the specifications

explicit

GP

of other

of both must

clients of G, such as GP. Reasoning in terms of ABTs and ABT may be more complex than in terms of ADTs, owing to the implicit

avoids

difficult.

specifications

G is implemented

253

only

integration

GP seems to require a deep understanding and reasonable, that the implementor of

underlying

.

hand,

models

easier,

interactions inclusion of making

the behavior

not harder.

Externalized relations. We make extensive use of separate components to track relations among independent components. GP, for example, uses its instance variable DotToVertex to track the association between dots and vertices:

given

a dot,

it

returns

the

associated

vertex.

Rumbaugh

discuss a number of advantages of externalized representations in contrast to representations based on embedded pointers [29]. l?rom they

our

perspective,

support

integration

can be viewed that

define

includes

externalized

as externalized the

a pair

relations

of independent associationsll

semantics

of the

of pointers,

have

two

components. with

association.

for example,

advantages.

Mediators

implicitly The

et

First,

themselves

invoked

methods

implementation

one to G and

al.

of relations,

of

one to P. This

GP

is an

externalized representation of the association between these components. Second, efficiently implemented relations enable more efficient integration. For

example,

method number incident

we can improve

the

performance

0( IES 1)in space, to represent the relation pe~ event announced by ES to keep these 5. APPLICATIONS We have based noting

of the vertex-deletion

update

of G by an order of magnitude—from 0(1 ESI) to 0(] ES( u) I), the of edges incident on -by replacing the exhaustive search of ES for edges with a lookup in a hash table keyed by vertex. The cost is

a number

of medium-scale

systemslz

approach. In this section, we briefly where our approach was most useful.

Computer-Aided

time

AND EXPERIENCES

developed

design places

and its inverse, and constant relations up to date.

Geometric

Design

(CAGD).

using

describe

McCabe

our mediatorthese

systems,

developed

a proto-

type CAGD [24] kernel that extends our graph environment. This environment supports editing of a mesh, a representation of surface (technically, a two-manifold) in an n-dimensional Euclidean space. A mesh is similar

11We use the terms assoczatzon to denote a tuple and relation a set of tuples, 12The systems we describe range in size from ten to thirty thousand lines of code ACM

Transactions

on Software

Engineering

and Methodology,

Vol. 1, No. 3, July

1992.

254

K. J Suliwan and D. Notkin

.

to a graph,

but

edges around This

also

maintains in this

supports

in

view,

for

with

n-dimensional

one

a mesh

multiple

in VS have ES

relations

property stores

over

topological They

cal property,

by operating

tool

such set

ABT

views

to create

on ES;

As a vertex

the

motion.

is

This

be viewed

as vertex

of edges

a mesh

geometrical

one

of

as

a

set VS and an edge set ES. Vertices

algebra—a

and

allow

animate (n > 2) to

information

set. 13 A4 implements

are

ordering

of a mesh.

views

geometry

storing

a topological

this

information—the

views

other

projections. as a vertex

lists

and ES. Separate useful.

graphical

example,

collection of two-dimensional A mesh, M, is represented labels.

topological

case.

system

dragged allows

it

vertices,

and

geometry several

and

ordering

as a composition

an integrated

a torus

another

plus

mesh

or a sphere,

to assign

VS

of

view

a topologi-

a geometric

layout

by

operating on VS; and a third to compute a smooth surface or a projection the mesh by operating on M. For example, McCabe defined a mediator that projects n-dimensional meshes

into

Another serve

two-dimensional

subspaces,

mediator

composes

as abstract

depictions.

A third to keep

sistent.

from

the

mapping

tion, the reverse mapping of the general ambiguity

two-dimensional

implementing

n and

plane.

abstract

The tent

restructuring. tool, which

key

the

the

engineer

system

13ES implements

represents

the

fill to

in the missing information n-dimensional movements provide

policies

of this

program to indicate

updates

a quad-edge

manifolds

vertices discards

TransactIons

con-

informa-

for

a convenient

any

given

by mapparallel to

framework

instance

of the

over any ambiguity.

system

without

tool

to

is

be

local

to compensate

the

maintenance A

restructured.

for ambithat

changes for

and such

provides changes.

of two

consis-

syntactic

view

representations A semantic

on Software

view

data structure [ 15]. This is not perfect for a CAGD system; it only however, makes it useful for our boundary. Its clean structure,

work. ACM

a

Griswold applied our approach in his program allows an engineer to restructure a software system

design

of

the

that with

its meaning, in preparation for making functional enhanceformal parameters in a procedure declaration are swapped, system compensates by swapping actual parameters at all this would change the meaning of the program.

views

allows that

to

depictions

dimensions

guity problem. This approach increases flexibility constrains designers by fixing a policy for handling

while preserving ments [ 14]. If the for example, the call sites, unless

unchanged.

components

two-dimensional

n to two

Mediators

designer-defined

Program restructuring

topology with

from two to n is ambiguous. This is an instance problem for systems supporting views. McCabe

solved this with mediators that ping two-dimensional movements the

their

meshes

composes

display based on InterViews. McCabe used submediators Because

leaving

two-dimensional

of

Engmeermg

and Methodology,

Vol. 1, No

3, July

1992

Reconciling

Environment

Integration

and Software Evolution

255

.

H allows ing

the

and

system

to find

meaning

to determine

all

aspects

in the face of a local

Figure

12 shows

tool;

AST

PDG

the

RELS

the

the

representation

is a mediator

consistent. MED employs 10,000

lines

without

code,

includes

RELS.

because

computation

of program

trees

expensive,15

and

beginning the

of

AST

supporting

views:

implementing from

slippage

Parallel

each

processor

‘I’he

The

phase

is a parallel

l~Griswold’s article,

supports and

sequential

event

mechanism,

uses CLOS

complexity

PDG

it allowed

integrated of AST

over almost

and

PDG,

relations

from

syntax

only

changes

a general

issue

to allow

slippage

provide

a convenient

in

Third,

abstract

is required caches

and

and

representation.

graphs

the

tree; graph;

nodes;

AST

of these

program

applied

for

at

the

made

to

systems

in the consistency

required

of

framework

implemention

for details

wrapper

is not known, ACM Transactions

a program language.

are

graphs,

but

tools

based.

an earlier

to announce

is thought

design

of a

on an interconnected a sequential

is represented

version

tool,

tool

of the

pro-

programs

The process fourth

of

system

as

used to

provides

a

specified

in

events.

to be roughly Engineering

manipulating

depicting The

process

as a collection

for

graphical,

is text

on Software

runs

respectively.

implements

methods

in the

executes

interactive

tools

programs,

approach

that

in a graph

four

which

our

nonshared-memory parallel computsystem is a sequential composition of

program

graph

and interconnection

simple

15The

We also

and each processor

environment

flowcharts

this

phase

graph;

view

MED

isolating

syntax

involved.

given phase. Concretely, in the C++ programming

grams. write

for

be

use

illustrates

environment for programming Abstractly, a program in this

phases, in any objects

This

restructuring

PDG

First,

to

consistency

Mediators

programming.

prototype ers [30].

semantic

operation,

and

idioms. PDG,

extensive

it is ofken beneficial

the components

and

keeping

an integrated

PDG

restructuring.

representations.

mean-

to restore

dependence

AST

dependence

since

a restructuring

during

multiple

and

is the abstract

while

mediator

makes

between

REST on an

between

it provides

mapping is

preserves

to be changed

a program

comprising

REST

syntactic

on

RELS

interesting

change. 14 Second,

which

system.

based

maintains

existing

have

based

relations

that

several

of

of the

representation

a set of externalized

MED

a transformation that

change.

structure

syntactic

semantic

whether

of a program

cubic

in the

and Methodology,

size of the program. Vol. 1, No. 3, July

1992.

256

.

user

K, J. Sullivan and D. Notkin

interface

that

allows

instances

of the

deleted dynamically. The phase, graph,

and process

tools

a program

database

by mediators

that

consistent.

Furthermore,

mutually related

to each

changed,

all graphs

accordingly; This their

respective

updates

then

of the

them

by

and the

parts name

that

execute

of the that

been

are also is

are updated

to develop

the

Once the tools

and

developed

to keep

of

tools.

on them.

had

mediators

parts

process

process

independently

operate

and

database

database

of a sequential

to all graph

databases

adding

respective

three

that

to be created

to their

designers

and the tools

tools

the depictions

If the

propagate

separate

parts

integrated

keep

processors

allowed

of the database

are related

the

by mediators. having

these

structure

parts we

other

other

related

and

tested,

representations

consistent. 6. RELATED WORK: IMPLICIT INVOCATION Our

research

Many

has

helped

have contributed

use.

Our

useful

research

in turn

has

in analyzing

existing

implicit

section

by

discusses cover

us understand

to the nature

system,

taking

systems

many

and

produced

related

to our

in

that

the

use of mediators.

we have

we found

We organize

next

The

invocation

of systems.

mechanism

mechanisms.

approach

in implicit

a range

invocation

a framework

invocation

a similar

of the key issues

evaluate

of the implicit

section,

systems

this which

we discuss

and mediators,

and they

seem to be representative of the many important systems that we omit. In this section we analyze four implicit invocation mechanisms in terms

of

the

It

model

helps

presented

to validate

similarity

in Section

our

among

model

these

systems

[13].

analysis

by showing

of a set of seemingly

capabilities supported model or implemented explore

3. This

that

serves it

diverse

several

captures

purposes.

a key

mechanisms.

underlying

It also highlights

by some mechanisms that are not captured by our by our mechanism. A more recent effort uses Z [31] to

dimensions

based

on a formal

description

of implicit

invocation

As we discussed in Section 3, we characterize implicit invocation isms in terms of a set E of events, each of which can be announced, of methods,

each

of which

can be invoked;

a mapping

EM;

mechana set M

E -2

M from

A that invokes all the methods associated with a given event whenever that event is announced. In the analysis of related mechanisms, we focus on three events

to

issues:

the

between dure

multi

sets

manner

events

and

of

in

methods;

which

methods;

A; and restrictions,

and

the the

no further) not strictly

attribute grammar and to detect cyclic

system may dependencies

16In most such systems,

ES

ACM

associations

TransactIons

is represented

are represented

on Software

user

behavior

if any, imposed

We note here (and discuss representations for purposes

at run-time,

an

Engineering

event

announcement

manipulates of the

procedure

the

event

on E, M, and

association

announcement

EM proce-

EM.

that some mechanisms use their related to implicit invocation. An

attribute evaluation use its EM to optimize among attributes. 16 FIELD queries its EM

exphcitly as direct

only links

and Methodology,

during between Vol.

attribute tree

grammar

nodes.

1, No. 3, July

1992

processing;

Reconciling to avoid

spawning

used to support

Environment

redundant debugging

announcement

Integration

copies

of network

by indicating

of a given

and Software Evolution tools.

which

An

methods

EM

.

could

would

257 also be

be invoked

by

event.

6.1 LOOPS LOOPS [32] extends LISP with active valz~es, to support access-oriented programming. An active value av is an object used to annotate a variable v. Such an annotation causes each access to v to be replaced by invocation of a method exported by au. Specifically, reading u invokes au. Get WrappedValue( ), and writing the value x into v invokes au. Put WrappedValue( x ). The base active

value

ods that

mimic

objects.

Subclass

We

model

events tributes

this

The user thus both

as follows.

manipulates object

the

On the other or mechanism:

EM

This

components

state

for those

meth-

of active

value

for additional

variable

behaviors.

u contributes

two

it from

v adds

of fixed

pairs

to or deletes

from

that

value

announce read

of tuples

specified

annotation

object.

LOOPS

events—to

variables—and

in also the

written.

and

hand, LOOPS supports a capability not captured by our model the programmer can specify an order on the set of methods

with

an

suggests

event.

a possible

be allowed

to specify

given event. The imported by many order,

methods Each

in terms

and an active

This

annotations. When a variable activated; when these access may be implicitly invoked. could

the local

U.read( ) and u.writterz( x). Each active value au conto M, av.Get WrappedValue{ ) and au. Put Wrapped-

can be announced—to

associated

these

au to v or detaching

of a variable that

specialize

implementations using

~ o .GetWrappedValue( ) ~ o. WrappedValue (x).

~.reado u.written(x)

events

default

and writes

mechanism

to 1?, namely two methods

restricts

defines

reads

designers

Vatue( x ). Attaching EM the maplets17

terms

class

variable

a complete

is

accomplished

is accessed, their instance

extension a partial

of our order

by

nesting

active

value

active values attached to it are variables, nested active values model

and

mechanism:

on the methods

the

associated

user

with

a

ordering issue arises naturally, since an event may be components simultaneously. A partial order allows for no order,

or a properly

partial

order.

6.2 APPLIA APPL/A [34] is ming. APPL/A’s

an Ada-based language that supports process programimplicit invocation mechanism focuses on a relational

model.

imposes

APPL/A

relations,

instances

the events that update, and find.

17By maplet

restrictions

of a special relations

can

we mean a single tuple

ACM Transactions

type

similar

to

constructor,

announce

are

(e, m) in the overall

on Software Engineering

those

of

can announce restricted

mapping

EM

to

LOOPS.

Only

events, insert,

and

delete,

of events to methods.

and Methodology, Vol 1, No 3, July 1992.

258

.

K. J. Sullwan and D, Notkln

These

restrictions

imply

invocation mechanisms model those components potential

benefits

that

to

the

programmer

of implicit

invocation,

such

all components are modeled as relations, forego more natural representations in best. APPL\A,

in contrast

must

either

use

connect components that are not If explicit invocation as relations.

to our

as easier

explicit

relations, is used,

evolution,

are lost.

then the programmer may situations where relations

mechanism,

handles

or the

concurrency

If

have to are not

by allowing

the designer to specify the synchronization of event announcement with the execution of invoked methods. APPL/A also allows a component that receives multiple events to prioritize these events. Events nent, which handles them in priority order. 6.3

are queued

at the

compo-

invocation mechanism in of other objects [21]. 18 All

which objects

objects in this

Smalltalk-80

Smalltalk-80 defines an implicit register themselves as dependents system

export

one object

three

predefine

x registers

with

events

another

and three

object

associated with the corresponding Specifically, the method update

events With(s,

With(s,

) is associated

p) event,

updateRequest(s

predefine

methods.

y the predefine

methods

of x. p ) is associated with

with

the

changeRequest(

When of y are

changeds), and

perform Updaters, p) is associated with broadcast With(s, p). The event parameter s is a Smalltalk-80 symbol, a literal value, and p is an arbitrary object. ChangeWith(s, cal views,

that

p) is announced the announcing

update

themselves

request

permission

implicitly

to restore from

invoked

to notify object,

consistency.

registered

return

registered

a model,

true

objects,

ChangeRequest(s)

objects

or false

to

usually

has changed.

to make

Views

is announced

a change.

indicate

graphican then

whether

The

to

methods

permission

is

granted or not. These answers are conjoined and the result returned to the event announcer. This can be used to implement cooperation among components that do not know about each other. Broadcast With(s, p ) invokes, in each registered object, the method named by s with parameter p. In terms of our model, an object x contributes its three predefine to E and its three methods to M. Registering x with, from, y, respectively, adds to or deletes from EM

events

or unregistrating it the following three

maplets:lg x. changedWith(s, p) x. changeRequest (s) x. broadcast(s, p)

18While

this

aggressively 19Actually, forms both

change

-

y.update(s, p) y.updateRequest(s) y.s(p),

dependence

mechanism

is

available

for

other

reasons,

it

there

of those

are eight described

a symbol

and

an

events

with

above.

There

object

as

corresponding are three

parameters;

methods.

The

for change

notification,

one

just

takes

additional

events

for example,

a symbol:

and

parameters. ACM

is

used

most

in MVC.

Transactions

on Software

Engineering

and Methodology.

Vol. 1, No. 3, July

1992

one

are short One takes takes

no

Reconciling In this

system

explicit

the user

registration,

rived. tional

an

to

the

maplets,

broadcast

Integration and Software Evolution

manipulates

an object

Specifically,

responding

Environment

object

EM

dependence

changed

With

and

one for each possible The

event.

indirectly

dependence

In part, ming

this

invocation. of

the

that

Second,

suggests

that

value

announcement

several

versions

values

values

of these

of the parameter

in

A

is de-

EM

cor-

plus

addi-

s passed

to the

invokes

methods

extensions to our model and EM indirectly, in terms of

but

it also implements

analogy

between

changeRequest

from

an implicit

by

mechanism

defined events,

the

explicit

computes

invocation

implicitly

but

this

by using

a programand implicit a return

requires

invoked

only

value

synthesis

methods.

events,

visible, leaving mechanisms

and cannot

system-defined

can be encoded

solution

a parameter

problem occurs superclass and

the system-defined

can leave them information-hiding

is that

by the designer

is not

designer-defined events the difficulty of reasoning

new events

on interfaces

our

returned

of this Events

code reuse. The exported by the hide

of simplicity,

the way in which

One reason is that interfaces, increasing defining

maplets events,

procedure

through EM

The

mechanism defines the semantics of this operation for the event as Boolean conjunction. General support for return seem to require that the designer be able to specify such

A limitation announced.

sake

emphasizes

returning

Smalltalk-80 changeRequest values would procedures.

two

which

259

can be useful. In contrast to the mechanisms disours is based on direct, low-level manipulation of EM.

is for the

abstraction

from

changeRequest

sequentially in an unspecified order. The Smalltalk-80 mechanism suggests two perhaps to our mechanism. First, specifying another representation, cussed in this article,

by specifying,

relation implies

.

events

completely

satisfactory

conflicts

with

class inheritance

case it cannot

superclass events such as private

be used to hide

.20

do not appear in component about events. More seriously,

when a subclass needs both to hide also to export its own events. Either in which

are

as parameterized

selected

export

for events it can

its own,

visible. The problem subclasses in C++ parameterizations

or it

is that operate of events

or methods. 6.4

FIELD

FIELD [27] defines selective broadcast

an integration mechanism of ASCII messages on

implicit

abstractions

invocation

communication

mechanism,

can

although

be implemented the indirect

cation is of most interest to this analysis. Each FIELD tool exports a method interface to which it the method

can respond. name and

A message parameters.

for Unix-hosted tools based on a network. Both explicit and on

by defining

is an ASCII string Tools can invoke

‘o Of course, Smalltalk-80 makes it easy to define classes and methods but in practice such modifications are not common. ACM Transactions

on Software

Engineering

top

connection

and Methodology,

of this

of implicit

basic invo-

a set of messages that other

encodes both tools, either

representing

new events,

Vol. 1, No. 3, July

1992.

260

K J. Sullwan and D. Notkin

.

explicitly or implicitly—the the mechanism—by sending message server, which routes Routing is based on a set of An

expression

are

written

cation the

consists as

message, (ASCII)

a method methods

of

regular it

distinction messages invocations expressions

a pattern

part

expressions.

finds

message

all

is only in the designer’s use of to a distinguished tool called the to their destinations. registered by tools with the server. and

When

an

the

action

server

expressions for which Each corresponding

string.

to be called in the tool that are then invoked. A pattern

part.

Patterns

receives

an

the pattern action part

invo-

matches specifies

registered the expression. All that literally names a specific

such tool

and method supports explicit invocation, since invokers must name the tool and the method to invoke. Other patterns can be used to specify events or classes of events. a set of methods {m,} to In terms of our model, a FIELD tool t contributes M.

E

corresponds

announce in terms from

to

an event

the

infinite

by sending

set

of ASCII

an arbitrary

of a set T of pattern-method

strings,

string.

pairs

{(p,

p

specifies

EM m)}.

since

a tool

is specified EM

can

indirectly

is then

computed

T as necessary.

Specifically, that

each

is true

effect

regular

expression

p) = {e ● E Imatches(

Euents(

events,

if and

of adding

only

(p,

if event

p, e)},

e is recognized

m) to or deleting

it from

an

where by

equivalence

matches regular

T is to add

is

class

of

a predicate p. The

expression to or delete

EM

from

the set of maplets {e Thus

EM,

associated ously,

too, with

EM

procedure ally,

can

infinite,

a method

is not A

be

thus

an

(p)}. infinite

of a single

as an infinite

EM(e)

of methods

supports

Euent.s

since

when

EM(e)

{ml(p, m) FIELD

E

by insertion

represented

calculates

the multiset

nzle

set. Rather,

the

event

invoked

event

e is

of events

(p,

can

the

be

T. Obvi-

m,) into

announcement

announced.

Specific-

by e is

G T A matclzes(p,

a declarative

class pair

e)}.

specification

mechanism

based

on

regular expressions. Our approach, in contrast, lacks the equivalent of T and a mapping from T to EM, Instead, our design is intended to support a more imperative style of programming with implicit invocation. We do not yet fully understand the tradeoffs involved in these respective choices. FIELD also supports concurrent and asynchronous invocation. The FIELD announcement

procedure

A invokes

methods

concurrently

in an unspecified

order. An event announcer specifies whether the event is synchronous or asynchronous. Asynchronous events return immediately with no return value. Synchronous announcements return after all methods return, returning the string value returned by the fh-st method to terminate. This suggests possible extensions to our mechanism. A concurrent mechanism encapsulating the complexities of thread creation, dispatching, and synchronization ACM

Transactions

may on Software

provide Engineering

‘significant

benefits

and Methodology,

Vol.

at

a

reasonable

1, No. 3, July

1992

cost.

Reconciling However,

we

invocation

with

have

Environment

no

Integration and Software Evolution

systematic

approach

to

combining

.

261

asynchronous

mediators.

6.5 AP5 AP5

[7] extends

mechanism

Common

based

on

Lisp

triggers

with

a relational

to support

database

declarative,

abstraction

and

constraint-based

a

pro-

t = (p, m) has a predicate part p and an action gramming. An AP5 trigger part m. A predicate is written in a notation based on first-order logic, extended with relational operators, and a temporal aspect capturing the notions of before and after a proposed transaction. When a transaction is proposed,

the

system

corresponding

action

constraint, actions

a predicate were

project

the

corresponding transaction

to implement

arbitrary

if and

only

relational

that

action

activities,

occur part

or simply

and

to true.

would

such

if proposed

then

aborts

invokes

the

To maintain either

a

transmodifies

it. Action

parts

as sending

mail

can to a

if the

is the infinite set of proposed changes to a an AP5 predicate p specifies a set of events p )}, where satisfies is a predicate that is true

application

predicate

change

p. T’bus,

e would

cause

the

database

t = (p, m) contributes

a trigger

to satisfy

m to M and, to

the set of maplets {e ~ mlsatisfies(e,

The

predicates

evaluate

manager.

In terms of our model, E database. Much as in FIELD, Euents( p) = {e ● E Isatisftes(e,

EM,

all

that

violations

the proposed

be used

reevaluates

of those

detects

to commit;

and resubmits also

logically parts

AP5

announcement

procedure

p)}.

A invokes

the

event in an unspecified sequential order. A key advantage of AP5 is its support for atomic to guarantee

global

that

transactions

way

for

rency nested

that control

to solve the consistency

environments.

our imperative

Although

approach

by implementing

tools

we

can exploit and mediators

triggered

transactions,

in the face of concurrent

are necessary

concurrent

appears

consistency

methods

which

updates. problem

have

not

it uses

We believe in a general

verified

this,

transaction-based on a platform

by an

it

concursupporting

transactions.

7. RELATED WORK: MEDIATORS Our emphasis on the separate specification, relationships among components is based, numerous section, ~upport control,

related

efforts

that

suggests

the

design, and implementation in part, on evidence produced utility

of this

approach.

of by

In this

we discuss a number of these systems. Many of these systems provide in areas unrelated to our focus—obj ect management and user access for example. Because our work applies narrowly to integration and

evolution, we omit systems address. ACM

discussion

TransactIons

of these

on Software

and other

Engineering

important

and Methodology.

issues

that

these

Vol. 1, No. 3, July

1992

262 7.1

K. J Sulllvan and D Notkin

.

Unix Pipes such as Is, awk, grep, and sort are independent pipes [28]. This ease of integration derives

Most Unix programs, to integrate using separation

of tool

and integration

nism

for recombining

pipes

also encourages

concerns,

the two. their

Unix

combined

shells

that

use. We view

with

allow

Unix

a flexible

the user

programs

that relate them. (Viewing pipes as simple as complex mediators is also reasonable.)

Although

this

sequences tive

approach

of tools,

makes

it makes

environments.

The

it easy to assemble

it hard

to implement

key reason

is that

only

and pipes

tools

systems

tightly

and

Unix

by composing

integrated,

one-way

mecha-

easy access to

as tools,

as mediators programs

but easy from the

stream

interac-

composition

relationships are supported. In addition, common practice in Unix limits programs to a single input (stdin,) and two output (stdout and stderr) streams to which

pipes

mutual tured

7.2

can

information

Forest

costly,

with

message

program

message

to the

Policy

each

can

evaluated

tool

make

make

sharing

has

to linearize

are

in

it hard

to implement

of fine-grained,

FIELD,

Forest,

and

struc-

parse

data.

event;

guage

in

they

written

which that

they

able

approach

7.3

Contracts

as

sets

of

If none

evaluate

an

a tool,

send

another

in tools

true

quite

interpreted

in terms

of interfaces

that

no action

On

the

language

are

is taken,

is executed.

Each

is

components;

limited.

bound

and other

hand,

may

to

the

a

lanthey

be a reason-

fly.

for specifying declarations

Conditions functions,

expression

tool)

is

conformance

to true,

mediators.

an

on the

pairs.

load. The conditions

system

(Unix

and

conditions maintained; invariant.

is not

to be executed,

environment-defined

the

specified

a language

to

condition-action

and

returns

first-class

written

to integrating

et al. define

contracts

are

mediators

program

message

variables

written.

not

pattern-acpart

or do nothing.

), which

are

register

an action

a policy

but

the action associated with the first as limited programs can be viewed

single

tools

however,

an invocation

over

order

As

In

to a tool,

server,

expressions

in the

otherwise Policy

suggest

send

message

LoadAverage(

as

server.

to be sent

programs

Boolean

such

behavioral

relationships

[ 18]. A contract

participating

components

specifies must

based

on

a relationexport;

pre-

on and initialization of these components; an invariant to be and mutual invocation obligations sufficient to maintain the To encourage the identification of generally useful relationships,

contracts are generic with respect declarations specify how particular roles specified by a contract. ACM

restrictions

and

of FIELD.

a message

A policy

ship

tools

since

[12] is an extension

pairs

invocation

Helm

These

among

Forest

tion

are

be associated.

dependencies

Transactions

on Software

Engmeermg

to participating components

and Methodology.

components. discharge the

Vol.

1. No. 3, July

Conformance obligations of

1992

Reconciling This

work

provides

be treated

additional

as first-class

approach First,

Environment

we define contracts

Integration and Software Evolution

evidence

entities

differs

in

that

significantly

specify

policies

behavioral

software

that

263

relationships

systems.

from

in terms

.

We

should

agree;

but

the

of contracts.

of explicit

invocation

obligations,

While this does not preclude rate components, it is biased

the design of behavioral relationships as sepatowards hard-wired designs. Our approach is to

state

in a way

invariants

adoption to adopt

and

policies

of a mediator-based hard-wired or other

Second,

contracts

design, approaches

emphasize

and is not localized

hand,

contracts

“behavioral

does not bias

over

compositions.

Third,

our

by the

[ ibid.,

observation

. . are spread

approach

invariants

in

is tailored

the

7.4 ThingLab Constraint ming

the designer dictate.

free

(classes

in

that

across

many

use with be

On the other languages,

class definitions” the

equal

existing

as opposed

cannot

p. 178]. in previous

[ ibid.,

importance

languages.

We iso-

to language-level,

represented

easily

of

because

in

imperative

II and OPUS programming

tionships

for

specification,

these declarative constructs programming frameworks.

eases

the components

p. 169]. Our approach, in contrast, emphasizes relationships and the components they relate. late

This

et al. state that “the specification of a of contracts and conformance declara-

to one class definition”

are justified

design.

but also leaves as circumstances

relationships

this system) that they relate. Helm class becomes spread over a number tions,

that

among

systems

is based

otherwise

emphasize

precisely

independent language

on separate

specification

components.

support

for

Constraint

the

declarative

of relaprogram-

assertion

of

constraints. Many

systems,

including

ThingLab

II

[8],

a successor

to ThingLab

and OPUS [19] are based on a set of variables—components from some domain—and a set of constraints relating these the value

of a variable

to resatisfy

specified

no satisfactory

changes, constraints

solution

a constraint

(an assignment

an error is flagged. Key differences among

satisfaction

by changing

constraint

of other

to variables)

programming

constraint-satisfaction algorithms they support. ple incremental attribute evaluation algorithm one direction only. instance. ThingLab

algorithm

the values

of values

systems

of methods

references

If changing a updates b, changing II uses a more complex algorithm

to the

to the variables system,

one for

that each

‘L The absence of a method for a given variable indicating that the variable cannot be influenced ACM TransactIons

on Software

it constrains such

is invoked variables.

If

can be found, follow

from

the

b cannot update a, for that allows the system as an object

and that

variable.zl

Each

exports method

constitutes an implicit read-only by the presence of the constraint.

Engineering

[4], values When

OPUS uses a relatively simthat propagates changes in

to choose the direction in which changes propagate. In more detail, a ThingLab II constraint is implemented maintains

storing values.

and Methodology,

that a set must

annotation,

Vol. 1, No. 3, July

1992.

264

K. J. Sullivan and D. Notkln

.

guarantee

that

it resatisfies

the constraint

by setting

the value

as a function of the values of the other variables. Thus the system has a choice of which variable constraint.

Given

system computes affected (directly This

of this

suggests

object

an

opposed

and

set, which

is called

to

implicitly

invokes

to the

variable.

to conjunctive,

to change

a variable

to resatisfy

a

to be changed,

the

set of choices, one from each constraint object by the change. ThingLab II is incremental in

extension

a variable

attached

of constraints

a compatible or indirectly)

its computation changing

a set

of its variable

our

This

implicit

a plan.

implicit

invocation

one of the

model.

methods

can be characterized

invocation:

a select

Logically,

defined

in

each

as disjunctive,

procedure

as

chooses

one

method from this decision

those registered for invocation. on exactly the information used

systems this In contrast

choice might be based on performance or other considerations. to our approach, constraint systems guarantee global properties

based on an Both ThingLab ThingLab variable

II

analysis II and

ensures

are included

of their underlying constraint OPUS detect and prohibit cyclic that

no two

in the same

constraint

can

be

the

used

that change update both Both

limit

relationships to

constraints

Second,

constraint

capsulation,

and

other

than

their

respective

variables

can

relationships.

to variables,

hence

with

be specified,

and

ThingLab

can

as opposed

based data

to the

II

and This

same

only

mechanthat can

policies

prohibits

precluding mutual

methods

abstract

type

by

constraining

object-oriented language that This is a serious shortcoming

to help manage complexity in the face of integration. encapsulation are key tools for managing complexity;

en-

objects

variables

ThingLab

tightly with

types. with

abstraction:

of OPUS,

that

policies that dependencies.

are incompatible

behavioral is true

the

to arbitrary

on variables

be constrained

implementations.

writing

suitable as integration limit the components

one variable, for example, a relation. OPUS prohibits

systems

Kaleidoscope [9], an ThingLab mechanism. objective, tion and

that

maintain

more than a set and

methods

representations. dependencies, and

plan.

On the other hand, these systems are not isms for complex environments. First, they be related,

In these systems select bases in computing a plan. In other

II,

integrates respect to

in and the our

Type abstracand integra-

tion mechanisms compatible with these techniques are needed. Our approach supports the integration of arbitrary types, specification of arbitrary relationships, and definition of relationship-maintenance policies that respect type abstractions and encapsulation boundaries. 8. CONCLUSION 8.1

Limitations

Our approach has proven useful in a number systems that we have developed. Several problems have to be solved, however, for it to be applied in the development of larger integrated environments. First, a key problem is to extend it for design of concurrent and distributed environments. Some systems use atomic transactions to maintain global ACM

TransactIons

on Software

Engineenng

and Methodology,

Vol

1, No

3, July

1992

Reconcdlng Environment consistency

in the

combined that

with

this

transactions

with

a general will prove

research

in this

implicit

invocation

that

purpose;

suggests

with

that

our

.

can be

clear,

though,

the best way to balance

the need for global

practical

265

approach

it is not

We have yet to find

approach

FIELD

and Software Evolution

It appears

for this

solution.

of our lightweight

The experience without proach

face of concurrency.

nested

is a reasonable

the benefits

Integration

consistency.

environments

can be built

solution to this problem. Whether a mediator-based apuseful in such an environment is not known. To enable

dimension

we have

mechanism

designed

and are implementing

to complement

a remote

a remote

procedure

call

[2]

mechanism. Second,

reasoning

mechanisms

may

about

systems

not be easy

constructed

as the

scale

using

of systems

implicit

ence with medium-scale systems, such as the CAGD system gives us some confidence-but no conclusive evidence—that a serious present

problem.

Unconstrained

a reasoning

problem

implicit

(just

invocation

as unconstrained

approach accurate 8.2

to maintain

relationships

as a reasoned than

balance

considering

it as implicit

approach.

One

is to employ

programming

experi-

would,

in all likelihood,

explicit

invocation

would).

may account use explicit

components,

so considering

and

invocation

explicit

invocation

our

is more

alone.

Synthesis

Our

design

environments in order

to automatically

way

ensure

and global consistency, ThingLab II and OPUS

lar

among of implicit

Our

discussed earlier, scale will not be

However, designing with mediators is quite constrained, which for the absence of problems so far. Additionally, mediators invocation

invocation

increases.

to manage

that

basic

The a given

properties,

constructs

they

design,

such

support

tion. On the other hand, undisciplined impossible to reason about a resulting the familiarity the designer

tion techniques that changing requirements.

not

be appropriate

restrictions

they

Implicit first-class

invocation. abstraction, ACM

Our dual

Transactions

on Software

particurelation-

impose

for

imple-

may

exact

use of an imperative style can make it system. Our approach is intended to

software

approach to explicit

by

less restricted conand explicit invoca-

and flexibility of these imperative to control complexity by providing encourage

used

make them unsuitable as general and evolution of integrated envi-

may

and the semantic

semantics

as termination

mechanisms

significant tolls in decreased efficiency. Overcoming these problems may require semantically structs, such as imperative programming with implicit

exploit helping

of integrated

restricted

for problems suited to their they impose on components,

ships, and relationship-maintenance policies mechanisms intended to ease development ronments.

complexity with

hold. The change propagation represent such mechanisms.

These mechanisms are appropriate strengths, but the restrictions

m enting

the

constructs

structures

robust

constructs, while design composiwith

respect

to

includes implicit invocation as a invocation. We presented a model

Engmeermg

and Methodology.

Vol. 1, No. 3, July

1992.

266

.

K. J. Sullivan and D. Notkln

of implicit mechanisms. the is

invocation in terms of which Each of these placed a layer

event-method specified

cit

invocation

model

and

explicit

association,

indirectly to in

in

EM.

terms

a minimum

our

by

mechanisms,

and implicit

The

of

we characterized a number between the programmer and Smalltalk-80

object stripping

reveals

EM,

dependencies, away

more

this

clearly

for

instance,

Reducing layer,

the

impli-

as

duality

in

our

between

invocation.

We also showed how object-oriented languages can be extended easily to support our implicit invocation abstraction. Although we have only limited experience mechanisms

with this provides

model, its additional

utility in characterizing a diverse range of evidence that it, and hence our mechanism,

is reasonable. Design

tradeoffs.

Our

approach

encourages

the

decomposition

of require-

ments as well as designs nents from the integration

and implementations along lines separating relationships among them. Specifications

in this

designers

ment

regard

may

integration

in this

manner

We identified tradeoffs Given choose? designed

bias

and evolution. leave four

among

the

toward On the

designer

idealized

free

approaches

ease of integration,

a specification

in

In the absence for change. Our

this

to choose that

form,

that

hand,

among

and,

which

complicate

environ-

specifications

encourage

evolution,

of other analysis

we discuss, our mediator integrated environments.

designs

other

organized

a range designs

perhaps,

approach

of designs. with

distinct

efficiency.

should

concerns, a software system suggests that, of the canonical

approach yields the greatest An interesting characteristic

compothat fail

a designer should be approaches

ease of evolution of this approach

in is

that it preserves the specification relationships in both design and

structure separating components and implementation. In the absence of this

correspondence,

by the

which

is disrupted

other

unlikely that the overall cost of an evolutionary its apparent size in the specification. Although size

or proportional

client about

with

precision,

this

approaches

we discuss,

it is

change will be proportional to we cannot yet define apparent

property

is clearly

desirable:

the

specifies changes in terms of the specification and bases expectations costs on it. Designs that amplify actual costs for reasons not apparent

to the client

are likely

to prove

unacceptable

as requirements

evolve.

ACKNOWLEDGMENTS Tony

DeRose,

environments implemented Cabe’s helped Derrick

Bill

Griswold,

discussed the tools

experience significantly Weathersby

and Larry

Snyder

provided

the domains

with his CAGD system provided valuable feedback that in the development of our approach. Yoshi Yamane and contributed to the ideas of ABT composition and disjunc-

tive implicit invocation, respectively. Robert Wahbe pointed macros in simplifying the use of a C++ implicit invocation addition to many of these people, Gail Alverson and Michael ACM

Transactions

for the

herein. Alex Klaiber, Bob Mitchell, and Sitaram Raju in our parallel programming environment. Tom Mc-

on Software

Engmeermg

and Methodology,

Vol.

1, No. 3, July

out the utility of mechanism. In Hanson gave us 1992

Reconciling useful

comments

Environment

on an earlier

and suggestions

made

Integration

version

and Software Evolution

of this

by the anonymous

paper.

referees

Finally,

were

the

cogent,

267

.

comments

valuable,

and

appreciated.

REFERENCES 1.

BERSHAD, parallel

B.

N.,

LAZOWSKA,

programming.

2. BIRRELL, Comput.

A.

D.,

Syst. Not.

4. BORNINC+, A.

6. 7. 8. 9.

B.

LEVY,

H.

Exper.

18, 8 ( 1988),

J.

M.

PRESTO:

Implementing

A

system

for

object-oriented

713-732.

remote

procedure

call.

ACM

Trans.

1,(Feb. 1984), 39-59. Common

23 (Sept.

Lisp object system specification

X3J13. Dec. 88-002R.

ACM

1988).

The programming

language

aspects

of ThingLab,

a constraint-oriented

simula-

1981), 353-387. for a new generation of CAGAN, M. R. The HP SoftBench environment: An architecture software tools. Hez.ulett-Packard J. 41, 3 (June 1990), 36–47. Analyws. Yourdon Press, Englewood Cliffs, N J., COAD, P. AND YOURDON, E. Object-Or~ented 1991. of the 1989 COHEN, D. Compiling complex transition database triggers. In Proceedings ACM SIGMOD (Portland, Ore., 1989) pp. 225-234. FREEMAN-BENSON) B., MALONEY, J., BORNING, A. An incremental constraint solver. Comrnun. ACM 33, 1 (Jan. 1990), 54-63. FREEMAN-BENSON, B. N. Kaleidoscope: Mixing objects, constraints, and imperative proof OOPSLA / ECOOP 90, (Ottawa, 1990), 77-88. gramming. In Proceedings tion

5.

D.,

B-act.

AND NELSON,

2,

3. BO~ROW, D. G. ET AL. SZGPLAN

E.

So@J.

laboratory.

10. FROMME,

ACM

B. D.

Trams.

HP

Program.

encapsulator:

Lang.

Sys. 3, 4 (Oct.

Bridging

the

generation

gap.

Hewlett-Packard

J. 41,

3

(June 1990), 59-68. 11, GARLAN, D. Views for tools in integrated environments. Ph.D. dissertation, Carnegie-Mellon Univ., 1987, 12. GARLAN, D., AND ILIAS, E. Low-cost, adaptable tool integration policles for integrated enviof SIGSOFT90: Fourth Symposl am on Software Development ronments. In Proceedings Environments (Irvine, Calf., 1990), 1-10. 13. G~RLAN, D., AND NOTKIN, D. Formalizing design spaces: Implicit invocation mechanisms. In VDM

’91, Formal

Software

Development

Methods.

Lecture

Notes

in Computer

Sczence

551,

Springer Verlag, New York, 1991. 14. GRISWOLD,W. G., AND NOTKIN, D. Program restructuring as an aid to software maintenance. Tech. Rep. 90-08-04, Dept. of Computer Science and Engineering, Univ. of Washington, Aug. 1991. 15. GUIBAS, L.. AND STOLFI, J. Primitives for the manipulation of three-dimensional subdivisions. ACM Trans. Graph. 4, 2 (April 1985), 74–123. IEEE 16. HABERMANN, A. N., ANI) NOTKIN, D. Gandalf software development environments. Trans. Sofh.o. Eng. SE-12, 12 (Dec. 1986), 1117-1127. 17. HABERMANN, views.

Tech.

A. N., KRUEGER, Rep.

18. HELM, R., HOLLAND, tions

displays. 20. KELLER, and

Univer.

systems.

In

AND MOHAMED, Trans.

Znfi Syst.

Proceedings

S. P.

Contracts: of 00PSLA

Interactive

8, 3 (1990),

Jan.

environments: on Software

KRASNER,

G. E.,

interface

paradigm

Chiron-1

Engineering

AND POPE. in

The

S. T.

Smalltalk-80.

J.

Specifying

specification

system.

In

TransactIons

on Software

with

behavioral 90. 1990,

of flexible

composi169-180.

user

interface

User

Proceedings

interface

of the 13th

development International

Tex., May 1991), 208-218.

cookbook Object

for

using

Oriented

26-49. 22, LINTON, M. A., VLISSIDES, J. M., AND CALDER, P. R. 222 (Feb. 1989), 8-22. Views. Computer ACM

Programming

269-288.

(Austin, A

J.

1988,

/ ECOOP

R. K., CAMERON, M., TAYLOR, R. N., mm TROUP, D. B.

software

Conference

21.

S. E., ACM

177, Carnegie-Mellon

I. M., AND GANGOPAI)HYAY, D.

in object-oriented

19. HUDSON,

C., PIERCE, B., STAUDT, B., AND WENN,

CMU-CS-87-

Engineenng

the

model-view-controller

Composing

user

1, 3 (Aug. /Spet.

Program.

user interfaces

and Methodology,

with

Vol. 1, No. 3, July

1988 ), Inter-

1992.

268

.

K. J, Sullwan and D Notkm

23. MACDONALD,

J.

Proceedings 24. MCCABE, thesis,

T.

1991),

with

of Washington,

S.

J.

Difficulties

Nested

Dzstrzbuted

tools

Developing

multiview

1987),

views

of

a graphical

complex

mesh

objects.

In

environment.

M.S.

development

systems.

IEEE

(Jan.

Softw.

Second

L.

The

Workshop

31. SPIVEY, J. M. Chffs,

In Concurrency

introduction. Ed., Van

using

Nostrand

message

Control

Reinhold,

passing

New

in the field

and

York,

Relzabzlzty

zn

1987.

envmonment.

IEEE

Softw.

The Unix

time-sharing

system.

Bell

Syst.

Tech

J. 57, 6,

1905-1930.

Relations

30, SNYDER,

An

D. M., AND THOMPSON, K.

2 (July-Aug.

1987> 466–481.

as semantic

XYZ

constructs

abstraction

on Parallel

levels

Compilers

The Z NotatLon;

m an object-oriented

of poker-like

languages.

and Algor~t}Lms

A Reference

Manual,

language.

(Urbana,

In

Proceedings

Proceedings

of

the

111., 1989).

Prentice-Hall

International,

Englewood

N. J., 1989.

32. STEFIK,

M. J., BOBROW, D. G,

a multiparadigm

STROUSTRUP, B.

The C++

process-centered

Software

AND KAHN, K. M.

environment,

34. SUTTON, S., HEIMBIGNER, Development

TransactIons

IEEE

Programming

environments.

In

Enoz,ronrnents.

on Software

Softu,.

Integrating (Jan.

Language.

D., AND OSTERWEIL,

Received May 1991: revised December

ACM

multiple

57-66.

of OOPSLA,

in

mediators.

B. Bhargava,

29. RUMBAUGH, J.

33.

Painting 245-257.

in integrating

Connecting

1990),

(July

28. RITCHIE,

into

W. 1990,

1991.

transactions:

Systems.

27, REISS, S. P.

part

/ ECOOP.

49-57.

26. Moss,

7, 4

AND STUETZLE,

Programming

Univ.

25. MEYERS,

A.,

of OOPSLA

L.

Addison-Wesley, Language

Proceedz ngs (Irvine,

Calif.,

1990),

and Methodology,

programming

Vol

Reading,

constructs

of SIGSOFT90

1991: accepted February

Engineering

access-oriented

1986 ), 10– 18. Mass..

for managing Fourth

Sympos~um

206-217,

1992

1, No

3, July

1976. change

1992

on

Suggest Documents