Software Development Control Based on Module Interconnection

6 downloads 0 Views 880KB Size Report
a matter at r programming, but also a matter of .... text of the module and may be used in the program ..... different lan(lUa~le. ..... ML~sa Language Manual.
Software

Development Control Based on M o d u l e I n t e r c o n n e c t i o n

W a l t e r F. Tichy D e p a r t m e n t of Computer S c i e n c e Carnegie-Mellon University Pittsburgh, PA 15,,213

Abstract

stage

of

need

C o n s t r t l c t i n g l a r g e s o f t w a r e s y s t e m s is not m e r e l y a m a t t e r atr programming, but also a m a t t e r of c o mmu n i c a t i o n and coordination. Problems arise b e c a u s e m a n y p e o p l e w o r k on a joint p r o j e c t and use e a c h o t h e r ' s p r o g r a m s . This p a p e r p r e s e n t s an integrated d e v e l o p m e n t and m a i n t e n a n c e s y s t e m t h a t p r o v i d e s a c o n t r o l l i n g e n v i r o n m e n t to insure t h e consistency o f a s o f t w a r e s y s t e m at t h e module interconnection l e v e l . It a s s i s t s the programmers w i t h t w o f a c i l i t i e s : I n t e r f a c e control and v e r s i o n control. Interface control estal)lishes consistent i n t e r f a c e s b e t w e e n s o f t w a r e modules and maintains t h i s c o n s i s t e n c y w h e n c h a n g e s are made. Version c o n t r o l c o o r d i n a t e s t h e g~.neration and i n t e g r a t i o n o f t h e v a r i o u s v e r s i o n s and c o n f i g u r a t i o n s . Both f a c i l i t i e s d e r i v e t h e i r i n f o r m a t i o n from an o v e r a l l system (lescription formulated in t h e module interconnection language INTERCOL. A d e m o n s t r a t i o n s y s t e m is s k e t c h e d t h a t runs under t h e UNIX t i m e - s h a r i n g s y s t e m .

the

t h e s y s t e m . As a n o t h e r e x a m p l e for tile

of

communication

phenomenon

of

and c o o r d i n a t i o n consider

c o n t i n u i n g c l l a n g e 2 : All large

a n d w i d e l y u s e d s y s t e m s a r e subj~.ct to an endless stream

of

corrections,

customizations,

improvements,

a n d d i v e r s i f i c a t i o n s , b e c a u s e it is

u s u a l l y c h e a p e r t o m o d i f y t h e m than to rebuild them from

scratch.

means

Ilowever,

contilluing

system

comnluf~ication

structure,

implementation continuing

design

details

control

deterioration

continuing

to

of

to

the

of

the

overall

decisions, the

avoid

modification

(or

slow

system

and

modifiers,

and

down)

into

the

unfixable

unstructuredness. Current

research

programming

in

programming

lan q u a g e s ,

verification

techniques

methodology,

specification

and

t a k e s a d i f f e r e n t v i e w : The

m a i n g o a l is t o reduce t h e c o m p l e x i t y and size of software

systems

However,

1. Introduction

no

approaches

to

matter

manageable how

dimensions.

successful

these

a r e , com;~uter ~,pplications are s u b j e c t

t o t h e P a r k i n s o n i a l ~ l o w t h a t t h e i r s c a l e will e x p a n d Constructing merely

a

large

software

system

is

not

to

a m a t t e r o f progr,~mming, but also a m a t t e r

o f communication and coordination. Communication and

coordination

complexity makes rather

it

and

necessary

than

t e a m 1.

problems size

with

of

arise

software

to

a single

work

b e c a u s e of the systems.

witll

meet

be

systems

a n d shall h a v e t o s o l v e t h e communication

This system,

involved retain

p a r t s , it b e c o m e s e x t r e m e l y

t o e n s u r e t h e c o n s i s t e n c y of t h e s e parts. the

asynchronous

nature

of

a clear

exhaust

human

problems

the

large,

inherent

complex to

their

COl)abilities

the

to

software and

system

prototype

of

an

products

by

addressing

the

c o o r d i n a t i o n problems outlined

I t s f a c i l i t i e s can be v i e w e d as g u a r a n t e e i n g

integrity

of a software

interconnection

p i c t u r e of t h e a c t u a l d e v e l o p m e n t

the

d e v e l o p m e n t and m a i n t e n a n c e

w h o s e g o a l it is t o c o n t r o l t i l e d e v e l o p m e n t

large

above.

presents

software

communication

a c t i v i t i e s and t i l e mass of information

quickly

paper

integrated of

addition,

building

many p e o p l e

programmer or a small

numerous, interrelated

development

with

coordination

t o h u m a n i n t e r a c t i o n . With m a n y p e o p l e working on

In

faced

Thus, w e shall

development.

This i n t r o d u c e s atl t h e d i f f i c u l t i e s inherent

difficult

limits o f technolo~ly.

always and

Size

the

appears

l e v e l 3. as

s y s t e m a t t h e module

At this l e v e l , a s o f t w a r e an

organized

collection

of

29 CH 1479-5/79/0000- 0029500.75 (~) ! 979 IEEE

modules

which

interfaces. this

interact

with

Our s y s t e m

e a c h o t h e r through

it.~

p r o v i d e s t w o f a c i l i t i e s at

A

I n t e r f a c e control and version control.

level:

module

consists

control establisne3 consistent interfaces modules

i n f o r m a t i o n . An e x p o r t e d or p r o v i d e d resource of a

changes

version

a r e m¢=(le.

selection

generation

(or

automatic

regeneration)

multi-configuration

in

a

and

status

m o d u l e is a r e s o u r c e t h a t is d e c l a r e d in tile program

Version control performs

and

data,

text,

Interface when

test

program

between

o,,(I maintains this c o n s i s t e n c y

text,

of

documentation

(sub-)system

text

o f t h e m o d u l e and m a y be used in t h e program

multi-version/

text

of other

module

system.

is

An internal resource of a

modules.

declared

=n t h e

program t e x t

of t h a t

m o d u l e , b u t m a y n o t b e u s e d b y a n o t h e r module. An Both interface

c o n t r o l and v e r s i o n control d e r i v e

imported

t h e i r i n f o r m a t i o n from an o v e r a l l s y s t e m description,

that

formulated

in

in t h e m o d u l e i n t e r c o n n e c t i o n language

or r e q u i r e d r e s o u r c e of a module is one

is n o t d e c l a r e d in t h e module, but may be used

it.

The

INTERCOL. S u c h a d e s c r i p t i o n s p e c i f i e s a s o f t w a r e

together

system

constitutes

at

indicates

module

how

versions they

the

the

in|erconnection

various

modules

level. and

interface

with

each

other.

An

is

not

set

of

provided resources

its

required resources

t h e i n t e r f a c e of t h a t module.

A s y s t e m c o n s i s t s o f a c o l l e c t i o n of components,

INTERCOL

v i z . m o d u l e s or o t h e r s y s t e m s , plus d o c u m e n t a t i o n text,

test

data,

difference INTERCOL 4

a module's

their

is s e p a r a t e from a c t u a l program code.

Although

of the

and how

are grouped into (sub-)systems

specification

It

set with

a subject

of

this

there

and

between

status

information. Thus, a

systems

and modules is t h a t

is n o p r o g r a m t e x t a s s o c i a t e d w i t h a s y s t e m .

p a p e r , w e n e e d t o i n t r o d u c e a f e w of its notions in

A system

a l s o has

an int~.rface of p r o v i d e d and

tile

required

resources.

I l o w e v e r , since t h e r e is no

program

text,

following section.

careful

analysis

In s e c t i o n 3, w e p r e s e n t a of

inter-compilation type-checking important

mechanisms

for

because

our

of

interface

me(hods

of

control.

interface

control

Finally,

a

implementation

running

under

3. Inter-Compilation

the

Type-checking

t i m e - s h a r i n g s y s t e m is d e s c r i b e d in s e c t i o n O.

programs. important

Terminology

the is a n y e n t i t y t h a t can be d e c l a r e d

named

variables, definitions,

verifies tile type-correctness

of

W e w o u l d like t o s t r e s s t h a t w e consider a c r o s s module b o u n d a r i e s to be more

than type-checking

in

a

constants,

progr.:lmming procedures,

language

(e.g.,

o f an a b s t r a c t

type of a resource resource

may

generics, t y p e -

primitive the

d a t a t y p e , e t c . ) . The used

in

a

a

programmers

these

d e t e r m i n e s t h e w a y s in which be

closely

implement

e t c . ) . A subresource is a r e s o u r c e t h a t

an operation

responsibility

small,

is p a r t o f a n o t h e r r e s o u r c e (e.g., a field of a record,

the

Type-Chocking

inside a module, for

t h e f o l l o w i n g r e a s o n s . We assume t h a t a module is

A resource and

and required

components.

type-checking 2.

provided

and

c o n t r o l in s e c t i o n s 4 and 5, r e s p e c t i v e l y . pilot

a system°s

a r e in t u r n p r o v i d e d and required by its

Then w e

version UNiX

resources

a c r o s s compilation emits is t h e most

facility

discuss

the

type -checking,

own

program.

o f a sin qle pro qrammer or of a

interacting module's

team.

provided

In

order

resources,

to the

will u s u a l l y d e c l a r e some other, more

internal resources.

One can assume t h a t

programmers

rar,.,ly m a k e t y p e - e r r o r . 5 in using

resources,

siM,:e U l e y a r e dealing with their

creations,

different

t l o w e v e r , programmers working on

modules

cannot

interact

as closely. In

Type.~checking v e r i f i e s t h a t t h e r e s o u r c e is used in only

those

inspecting

ways. the

Type-checking

is

done

by

program, rather than by executing

= W e do not wlsh to give a more specific definition of the latter two terms, in order to keep the diso.13sion independent of a particular programming language. Clearly, we have 'algoli¢' languages in mind, like PASCAL, ALPHARD, or ADA.

30

p a r t i c u l a r , t h e i m p l e m e n t o r s of a resource e x p o r t e d

We

from

following paragraphs.

a

module

programmers

are

not

using them.

identical

with

tl}e

s h a l l d i s c u s s e a c h column of the array in the

E x p e r i e n c e shows that

m i s u n d e r s t a n d i n g s a t module i n t e r f a c e s are the rule rather

than

the

type-checking The

value

exception.

can d e t e c t of

We

believe

that type-

many of t h e s e errors.

type-checking

across

module

monolithic incremental independent

b o u n d a r i e s has b e e n confirmed with the use of the

compilatioh.

M E S A _ s y s t e m 5, 6 There which

is a small number of language systems

monolithic

PASCAL

provide for inter-compilation type-checking,

m o s t n o t a b l y SIMUIA~37 7, PtlSS 8, and MESA 9. The following

paragraphs they

classify

scheme

is

based

strategy

in w h i c h compilation (i.e., code generation)

the

Tile

various

that

on

use.

the

techniques

classification

observation

that

FORTRAN ', S]MULA67 ! PL/I I ALGOL68C II libraries i

incremental

tl~e ~f

is p e r f o r m e d can b e d e c o u p l e d from the s t r a t e g y in which

interfaces

strategies

are

checked.

FORTRAN PL/I

independent

The compilation

i.e.,

CLUlibrary MESA

checking linkers

w e w i s h to distinguish are as follows:

1. M o n o l i t h i c compilation, s e p a r a t e compilation;

PLISS type-

. . . . . . .

I

no Figure 1 : Inter-compilation type-checking

2. I n c r e m e n t a l compilation, i.e., compilation units are processed a c c o r d i n g t o some partial ordering, s u c h as b o t t o m - u p ;

3.1, Monolithic Type-Checking A n y l a n g u a g e s y s t e m t h a t (toes not provide for

8. I n d e p e n d e n t compilation, i.e., c o m p i l a t i o n units may be p r o c e s s e d in any order.

separate

compilation

(monolithic

c o m p i l a t i o n , monolithic t y p e - c h e c k i n g ) .

fits

into

square

[1,1 ]

The

square

[3,1]

is t h e most densely populated

I n t e r - c o m p i l a t i o n t y p e - c h e c k i n g can be c a t e g o r i z e d

one,

since

most

languaqe

using the same attributes:

separate

programmers. help even

the

two

c a t e g o r i z a t i o n s results

type-checking

on

to

the

T h e s e s y s t e m s do not o f f e r any more bottom-up

order

(square

[2,1]),

in

w h i c h t h e n e c e s s a r y information for t y p e - c l l e c k i n g is a l w a y s are

available.

compiled

types

,.3. I n d e p e n d e n t t y p e - c h e c k i n g , i.e., the i n t e r f a c e s of compilation units may be c h e c k e d in any order. Combining

offer

if one r e s t r i c t s the d e v e l o p m e n t to an

incremental,

2. I n c r e m e n t a l t y p e - c h e c k i n g , i.e., the i n t e r f a c e s of t h e compilation units are c h e c k e d a c c o r d i n g t o some partial o r d e r i n g , such as b o t t o m - u p ;

today

c o m p i l a t i o n , but pass the responsibility for

Inter-compilation

1. M o n o l i t h i c type-checking, i.e., no t y p e - c h e c k i n g a c r o s s compilations;

systems

before

For e x a m p l e , ALGOL-libraries t h e y are used, so t h a t the

o f t h e l i b r a r y e n t r i e s are known. However, it

is s t i l l t h e r e s p o n s i b i l i t y of the programmer to make s u r e h e is using t h e l i b r a r y routines c o r r e c t l y . in an

a r r a y o f nine possibll=ties, as shown in Fig. 1.

We

,3.2. I n c r e m e n t a l T y p e - C h e c k i n g

h a v e e n t e r e d a f e w e x a m p l e s y s t e m s into the grid.

Let

us

first

look a t s q u a r e [ 2 , 2 ] ,

incremental

c o m p i l a t i o n and t y p e - c l l e c k i n g , which is applied in

31

SIMULA677 module

and

M that,

AlgolOSC 10. for

Compilation of

(square[3,2]).

a

It

differs

from

the

incremental

c o m p i l a t i o n o r d e r in t h a t a r e s o u r c e may be used

i n s t a n c e , defines a class C,

r e s u l t s in o b j e c t c o d e and symbol table information.

before

The

t h e t y p e o f t h a t r e s o u r c e is d e r i v e d from the usage

symbol

table

information

is

stored

in

an

i t s t y p e is in the a u x i l i a r y file. In that case

a u x i l i a r y file and can be used by tile compiler at a

site

later

auxiliary

time.

contains

When

a module N is compiled wlfich

an e x t e r n a l

( i f p o s s i b l e ) and t e n t a t i v e l y e n t e r e d into the

actual

d e c l a r a t i o n of class C, tile

file. type

It will l a t e r be matcl]ed with the (see

Fig. 3).

The PLISS-system 8,

t y p e s p e c i f i c a t i o n s d e s c r i b i n g class C are read into

b a s e d on PL/I, uses t h a t approach. A d i s a d v a n t a g e

t h e s y m b o l t a b l e for module N so that full i n t e r f a c e

is t h a t

checking

m a y b e d e l a y e d until long a f t e r the time the module

c a n b e p e r f o r m e d ( s e e Fig. 2).

bottom-up

Thus, a

the type-checking

of a module's i n t e r f a c e

is c o m p i l e d .

c o m p i l a t i o n o r d e r must be o b s e r v e d . Tile

Algo168C s y s t e m has ~ similar arrangement, e x c e p t that

it

is

best

processing-order:

used

with

a

There

top-down

independent

The s e p a r a t e l y compilable units

type-cllecking

a r e n e s t e d b l o c k s , w h i c h can be i n s e r t e d at a later time.

This

symbol-table

is

implemented

by

are

some

systems

compilation,

that

l)ut

allow

perlorn~

for the

a c r o s s compilation units at link-time.

T h i s is an e x t r e m e c a s e of incremental checking. It

transmitting

has

i n f o r m a t i o n from o u t e r blocks to inner

the

checking

b l o c k s t h r o u g h a u x i l i a r y files.

serious until

disadvantage

integration

of

time,

delaying

long

after

the the

p r o g r a m m e r is d o n e w i t l l implenlentation.

~ e ~

derived

-Specs I

u

IType_Spec s class C

Type-S.pecs

F i g u r e 2= I n c r e m e n t a l compilation / t y p e - c h e c k i n g

F i g u r e 3= I n d e p e n d e n t compilation, increm, check

R e f i n i n g t i l e i d e a of t h e ~ x t r a c t e d symbol table information

leads

compilation

in

type-checking

J

J

Module N

to

any in

a

technique

order, an

but

that

allows

performs

incremental

the

fashion

32

3,3. Independent Type-Checking

Type-Specs c ass C

L e t us c o n s i d e r s q u a r e [ 3 , 3 ] , fully i n d e p e n d e n t compilation

a n d t y p r . - c h e c k i n g . The c h a r a c t e r i s t i c

of independent

t y p e - c h e c k i n g is t h a t t h e i n t e r f a c e s

between

the

modules

designed

in

entered

are

form

of

They

are

type-specifications

explicit.

and

i n t o a d a t a b a s e b e f o r e a n y program code

is w r i t t e n . at

the

T h a t m a y s e e m like an undue r e s t r i c t i o n

first

sight,

programmers there

were

no

interfaces, other's

but

in

fact

precise

they

could

is

tile

only

specifications not

resources.

machine-readable matter

it

way ~685f~--~./Tl declare t Class C ]

c a n s t a r t w r i t i n g s e p a r a t e modules: If program

With form,

the

it

is

of

with

each

interfaces

a

J

the in

straight-forward

f o r t h e c o m p i l e r to pick up the n e c e s s a r y

information

before

checking

a

module°

In

the

od~, I

M E S A - s y s t e m 9 f o r i n s t a n c e , t h e d a t a - b a s e of t y p e definitions

consists

of a s e t of d e f i n i t i o n s f i l e s .

E a c h o f t h e s e f i l e s c o n t a i n s the r e s o u r c e s p r o v i d e d by

a

particular

specifications.

module The

in

the

interface

form of

a

of

type-

module

described

in t e r m s of d e f i n i t i o n s files: One for t h e

provided

resources,

required

and

resources.

zero

The

or

more

compiler

for

simply

Figure 4: Independent compilation/type-checking

is (like

the

the

MESA-scheme).

generates

reads

procedures

4).

second

phase

t h e final c o d e . I l o w e v e r , this phase has

to be delayed

t h e s e f i l e s b e f o r e p r o c e s s i n g t h e module ( s e e Fig.

The

until t h e b o d i e s of the n e e d e d inline

are

a v a i l a b l e . This w e

can in]plement

w i t h a n i n c r e m e n t a l s c h e m e similar to t h e SIMULA67 So

far

we

have

only

interface-checking compilation, case actual

procedure is

type-checking

the

same

is

time

perfornlecl

as

(section

before

We

As an e x a m p l e w h e r e this An inline

it

has the

modules.

If

the

is

called header

in of

several that

5.4).

They

a r e of l i t t l e i n t e r e s t since t h e y deal

with monolithic compilation.

same

as a r e g u l a r p r o c e d u r e . Suppose t h a t an

procedure

available

yet

shall r e t u r n t o this problem in a more

h a v e n o t c o n s i d e r e d t i l e s q u a r e s [ 1 , 2 ] and

[1,8].

is a r e s t r i c t e d form of a macro in t h a t its in-line,

We

g e n e r a l f r a m e w o r k w h e n w e discuss v e r s i o n control

represents a

c o n s i d e r inline procechlres.

expanded

semantics inline

at

system.

cases where

Square [2,3]

code-generation.

is d e s i r a b l e , body

occurs

or l a t e r .

where

discussed

4. Interface

Control

different

procedure

In

is

practice,

establish

( f o r e x a m p l e in a d e f i n i t i o n s file), w e can

it t u r n s

out that

it is difficult

to

a n d m a i n t a i n c o n s i s t e n t i n t e r f a c e s among

type-check

all calls t o it, but w e c a n n o t g e n e r a t e

t h e v a r i o u s c o m p o n e n t s of a large, e v o l v i n g system.

code

since

its b o d y m a y not be programmed y e t .

However,

This

compilation

two-phase

translation.

intermediate inline

code

procedures.

interface

problem

can

be

solved

with

for the correct

a

control

The first phase g e n e r a t e s

It

which contains pseudo-calls to This

phase

and can be executed

also

checks

such a

the

helps

in a n

33

is a b s o l u t e l y crucial

f u n c t i o n i n g of a s y s t e m .

Interface

is d e s i g n e d t o g u a r a n t e e this c o n s i s t e n c y .

between

fully i n d e p e n d e n t l y

consistency

to

establish

components

correct

interconnections

b y cl~ecking their i n t e r f a c e s

INTERCOL d e s c r i p t i o n of t h e o v e r a l l s y s t e m

structure.

It a l s o e x t r a c t s

description modules First,

adhere

resources

that

of

interface

must

provided

interfaces

specifications:

really

are expected

the

specified.

provide must

be

than

resources

specified.

Fourth,

all

as

discussed describe

with

in t h e

inter-module

We

followin~l s u b s e c t i o n .

We

we

also

independent

derive

one

would

type-specifications

compilation require from

a the

F i n a l l y , w e d i s c u s s (:he a c t i o n s n e c e s s a r y if

the

interconnections

the

m a r k e d our Choices of mechanisms ill

line. In t h e r e m a i n d e r of this s u b s e c t i o n ,

describe

our i m l } l e m e n t a t i o n of t h e i n d e l ) e n d e n t type-checking

(The incremental/incremental parts

Consider

system

based

on

INTERCOL.

mechanism for module

c a n b e i m p l e n l e n t e d in a w a y similar to the

$1MULA67-scheme

l a n g u a g e s can be handled in a t y p e - s a f e

way.

have

inter-module

p r o b l e m o f i n t e r f a c i n g s y s t e m p a r t s w r i t t e n in

components

to

a dashed

type-checking,

between

the

the

Fig. 1 b y e n c l o s i n g t h e c o r r e s p o n d i n g s q u a r e s w i t h

h o w t h e s c o p e for i n t e r f a c e errors can be

different

As for

incremental derives

u s a g e o f r e s o u r c e s , w b i c l l is in g e n e r a l impossible.

l i m i t e d w i t h i n f o r m a t i o n hiding t e c h n i q u e s , and how the

an

which

required

The c h e c k i n q of t h e s e four conditions

implemented

the

facility

must be used correctly with respect to

their types.

chose

automatically.

because

from it. Second, t h e

resources

we

mecllanism

m e c h a n i s m , w e c h o s e t h e i n c r e m e n t a l one as well,

the

Third, no module, may use more required

resources

is

to their

module

Therefore,

type-checking

t o e n s u r e t h a t t h e v a r i o u s programmed

each

types

parts.

information from t h a t

describing

and will n o t be d i s c u s s e d here.)

the

following

INTERCOL-program

a f r a g m e n t of an ( u n r e a l i s t i c ) parser.

change.

system PARSER 4.1. Inter-Module In t h e

Type-Checking

previous section

module IO provide function SrcChar : char; const lineLn; type Line = record { lineNurn : int; lineBuf : array[1..lineLn] of char; }; procedure ListLine(outLine : 1"Line);

we have characterized

t h e v a r i o u s s e p a r a t e c o m p i l a t i o n and t y p e - c h e c k i n g mechanisms.

Now

we

specify

and

motivate

our

choices.

end IO Clearly, have the

f o r i n d i v i d u a l modules w e would like to

completely various

each

p r o g r a m m e r t e a m s n e e d not w a i t for

other.

mechanism

The

requires

interfaces

indel)en(lent that

we

type-checking

specify

tile

module

in s o m e w a y . We n o t e d a l r e a d y t h a t this

is n o t a s e v e r e way

modulo LEXAN provide type Lexerne = (Keyword, Operator, Identifier); function NextLex : Lexerne; require SrcChar, lineLn, Line.{lineNum,lineBuf}, ListLine end LEXAN

i n ( l e p e n d e n t mechanisms, so t h a t

r e s t r i c t i o n - - in f a c t , it is the only

in w h i c h d i f f e r e n t

programs.

end PARSER

t e a m s can use e a c h o t h e r ' s

As f o r t h e c o m p i l a t i o n mechanism, w e do

The

system

PARSER c o n s i s t s of t i l e module I0

n o t w a n t t o e x c l u d e inline p r o c e d u r e s and generics,

(for input/output)

which

analysis).

m e a n s t h a t w e h a v e to use some m i x t u r e of

independent

and

incremental

compilation

function

mechanisms.

I0

and t h e module LE×AN (for l e x i c a l

provides

SrcChar

procedure

for

the reading

following

resources;

source, c h a r a c t e r s ,

L i s t L i n e for printing a line on t h e listing

m e d i u m , a c o n s t a n t i n d i c a t i n g t h e l e n g t h of a listing To speed translate single

line,

p i e c e s o f m o d u l e s s e p a r a t e l y , for e x a m p l e routines.

independent because

Ftowever,

we

type-checking

cannot mechanism

use

an

delivers

here,

evolving

interfaces

between

the

internal

representation

of

a

line.

the next

l e x e m e . It makes r e p e a t e d calls

t o S r c C h a r . LEXAN is a l s o r e s p o n s i b l e for g e n e r a t i n g the

in f a c t , it w o u l d be quite a nuisance to

the

and

M o d u l e LEXAN i m p l e m e n t s N e x t L e x , a function t h a t

t h e i n t e r f a c e s b e t w e e n module p i e c e s are

implicit --

specify

up c o m p i l a t i o n s , w e may also w a n t to

listing;

and t h e

module

34

hence

procedure

it n e e d s t h e d e f i n i t i o n s of Line ListLine.

Note t h a t w e h a v e

omitted

the

require-clause be specified they

type-specifications

in

complain

the

Second,

o f LEXAN. (In general, t y p e s n e e d to

required

resources;

i m p l i c i t l y in t h e s t r u c t u r e . LEXAN

in

other

resources

they

are

be

where

contained

its

noted

as

declaration. provides

This e n a b l e s us to reuse

systems,

an u n d e f i n e d

forward declaration.

p r o g r a m m e r m a k e s a t y p e - e r r o r in

t h e i m p l e m e n t a t i o n o f o n e of t h e r e s o u r c e s , this will

o n l y o n c e , u s u a l l y in t h e module w h e r e

o r i g i n a t e . ) We h a v e also o m i t t e d t h e origin of

the

about if t h e

an

inconsistency

with

a

forward

This m a k e s s u r e t h a t a module r e a l l y

the resources

t h a t are e x p e c t e d from it

a n d t h a t t h e i r t y p e s a r e c o r r e c t . ~ Note f u r t h e r t h a t

required

the

m a y c o m e from d i f f e r e n t p l a c e s .

type-definition

for Line has b e e n t r a n s p o r t e d

f r o m IO t o LEXAN. Note

that

processed or

LEXAN.

results

the

above

piece

of

text

must

be If

b e f o r e w e can s t a r t compiling e i t h e r IO

ill

Compiling a set

of

an

INTERCOL

e n v i r o n m e n t s , one

description for

the

compilation

of

a module s u c c e e d s ,

the

p r o g r a m m e r has t h e g u a r a n t e e t h a t its i n t e r f a c e will fit into the rest of the system.

each

This is v e r i f i e d at

m o d u l e . S u c h an e n v i r o n m e n t consists of a pair of

the

s a m e t i m e a s t h e i n t e r n a l t y p e - c o n s i s t e n c y of

preludes,

o n e c o n t a i n i l l { I thP. required, and one t h e

the

module,

resources.

status

provided

For t h e a b o v e e x a m p l e , w e

a n d c o m p l e t e l y i n d e p e n d e n t l y of t h e

of other modules.

obtain the following preludes: 4.2.

Information

Hiding

IO.require:

INTERCOL m a k e s it p o s s i b l e to a p p l y t h e principle IO.provide: forward function SrcChar : char; f o r w a r d const lineLn; type Line = record { LineNum : int; lineBuf : array[J_lineLn] of char; }; forward procedure ListLine(outLine : 1"Line);

o f m i n i m a l p r i v i l e g e a t module i n t e r f a c e s : No module m u s t b e g i v e n m o r e r e s o u r c e s or a c c e s s rights than it

actually

needs.

heterogeneous

This

interfaces,

is

achieved

name

control

with and

write-protection. Heterogeneous

LEXAN.require: extern function SrcChar : char; extern ¢onst IineLn; type Line = record { lineNum :int; lineBuf : array[L.lineLn] of char; }; extern procedure ListLine(outLine : 1"Line);

may access

contains

indicates

its i d e n t i t y :

a compiler d i r e c t i v e

read

LEXAN.require resources,

in

moduleB1

require a, b

three to

the

contains

other

in t h e i r

resources

besides

require-clause.

the

ones

This compares

favorably w i t h t h e usual programming environments, corresponding

where

preludes.

e v e r y m o d u l e has u n r e s t r i c t e d a c c e s s to the

complete

n a m e siSace of t h e s y s t e m .

t h e t y p e s of t h e e x t e r n a l

a n d t h e i r use can n o w b e t y p e - c h e c k e d .

Name

resource

in t h e form of f o r w a r d d e c l a r a t i o n s .

has two effects:

b, c

h o w l a r g e t h e s y s t e m is in which t h e s e any

L E X A N . p r o v i d e s p e c i f i e s t h e t y p e s of the p r o v i d e d resources

modules

m o d u l e s a r e e m b e d ( l e d , t h e y will not be able

use

specified

: : m o d u l e LEXAN::

will

provide a, b, c

No m a t t e r

that

As s o o n a s t h e c o m p i l e r e n c o u n t e r s t h a t d i r e c t i v e , it

module A

modulo B2 require

N o w l e t us e x a m i n e h o w LEXAN is compiled. Its text

Different

resources.

LEXAN.provide: type Le×eme = (Keyword, Operalor, Identifier); forward function NextLex : Le×eme;

program

Interfaces:

d i f f e r e n t s u b s e t s of a common module's

This

module

Control= x can

with be

Suppose

module

subresources given

access

A

provides

xl

and x 2 . Each

to

exactly

those

First, if t h e programmer f o r g e t s to

i m p l e m e n t o n e o f t h e s e r e s o u r c e s , t h e compiler will

=The keywords forward and oxtorn are not essential; their effects can be achieved with compiler directives as well.

35

subresources

t h a t it n e e ( i s :

module A

provide type x = record { xl : int; x2 : real; };

module B

require x.x2

program

code.

Instead

where

they

are

interconnection opaque compiler

can be accessed. cannot

of B will i n d i c a t e t h a t only x . x 2

be

t~amed

and

therefore

t y p e x = record { int; x2 : real; }

of

Protection=

(variables,

parameters,

This is t o p r o t e c t global v a r i a b l e s from

accidental

modifications,

while

other

still

program

(The

default

parts.

is

that

require i l , i2

has

Module

read-only B2 h a s

specified

imported

is e x p o r t e d

read-write originate

access

Let

equivalent

of

the

to i l ,

and i2. but t h e

facilities

have

us

Although

some

adequate,

we

think

proposed that

it

mechanisms

is

PASCAL

sense

something

from

information

hiding

at

the

inappropriate

On

the

module

that

global

information

use

a

type-

a n d PASCAL, ALGOL, and a s s e m b l e r

as b e f o r e . For modules w r i t t e n

ALGOL-declarations. translator

Thus,

or

we

need a

"decoder",

that

other

to

could

special our

primitive

develop

macros r~cord

PASCAl.

a

the etc.

compiler

types,

decoder

defining offsets,

data

For

that

correct But now

translates

to

l a n g u a g e . In t h a t c a s e , t h e r e is no n e e d

to write

a s p e c i a l d e c o d e r a t all - - w e can use t h e

existing

compiler itself. course,

if

a

language

as

low-level

as

is u s e d f o r s o m e modules, t h e r e is little consistency

that

INTERCOL

can

guarantee.

In p a r t i c u l a r , if t h e r e are no t y p e s in a

language,

no

expected.

hand,

example,

sequences,

interface

On

automatic the

other

type-checking hand,

closely

can

be

related

languages, o r l a n g u a g e s b e l o n g i n g to a family c a n

interconnection hiding

we

assembler

b e i n l ~ e r f a c e d w i t h a high d e g r e e of t y p e s a f e t y .

l e v e l c a n b e u s e d t o i m p r o v e s y s t e m f l e x i b i l i t y 11. It follows

the

assembler,

Of

are

- w h y should a programmer hide himself?

we

for

f u n c t i o n s , and v a l u e p a r a m e t e r s ) .

assembly

w i t h t h e m . I n f o r m a t i o n hiding local t o a module does make

that

(for

calling

burden the languages for programming-in-the-small 3 not

assume

of

procedures,

suppose

been

as programming language features before. the

programming

constructs

generates

and i2, since t h e y

proposed

of

tile

m a p p i n g m u s t I)e r e s t r i c t e d to c o m p a t i b l e language

t o i2 is in error, since t h a t

above

of

m a p s P A S C A L - d e c l a r a t i o n s to ALGOL. Of course, this

in t h a t m o d u l e an(l p r e s u m a b l y n e e d to be

three

a

E v e n t h e s u b l a n g u a g e for t y p e -

source-to-source

modified there. All

in

in ALGOL, w e n e e d t o t r a n s l a t e t h e s e preludes into

as r e a d - o n l y . Finally, A has to botll il

implemented

in PASCAL, w e g e n e r a t e p r e l u d e s w i t h e x t e r n - and

to resources il access

l)e

a s t h e I~rogramminq l a n g u a g e s . For modules w r i t t e n

- - # means read-write

read/write

write-acce=s

variable

the

in INTERCOI. i t s e l f can be r e p l a c e d .

specifications,

- - read-only

access

can

indepen(lent

customization

With

all

is

used.

examples.)

allowing

provide variable i! : int; - - read-write readonly i2 : int; - - read-only

module B2 require =dl, ~i2 B1

on

programming languages. How

forward-declarations

module B!

restrictions

( W e h a v e c h o s e n a m o d i f i e d PASCAL in tile previous

and record fields are read-only.)

module A

the

c o n t r o l w o r k in t h o s e c a s e s ?

specification

INTERCOL, t h i s c a n h e c o n t r o l l e d e x p l i c i t l y a t t h e interfaces.

different

languages

record

fields, etc.).

in

modules

of

INTERCOL

Some programming languages

data-resources

variables

enforce

does interface

p r o t e c t i o n a~ p a r t of tl~e d e c l a r a t i o n

read-access

( N e v e = t h e l e s s , f e a t u r e s like

4,3, Multiple Languages

not

Suppose

write

module

b y t h e l a n g u a g e s t h e m s e l v e s so t h a t a can

number

specify

the

This can be accomplished with a

referenced:

Write

level

at

required resources.)

r e c o r d d e f i n i t i o n c o n t a i n i n g an opaque field, i.e., one that

should be s p e c i f i e d

r e c o r d f i e l d s and w r i t e - p r o t e c t i o n must be

supported

The require-prelude

they

neechcd:

principles

s h o u l d n o t b e i m p l e m e n t e d a t t h e d e t a i l e d l e v e l of

36

v e r s i o n , w e n e v e r t h e l ~ : s s end up dealing with it in a

4 . 4 . Propagation of Interface Changes

n u m b e r o f v e r s i o n s i n t e r n a l l y : .1here is last w e e k ' s An

important

management these

problem

in large p r o j e c t s

is t h e

v e r s i o n , a s t a b l e v e r , ' ; i O l l , atl exl~erilltental version, a

o f i n t e r f a c e c h a n g e s . With our s y s t e m ,

testing

c a n b e p r o c e s s e d a u t o m a t i c a l l y , b e c a u s e all

the needed

i n f o r m a t i c n is c o . l t a i n e d in t h e INTERCOL

description.

C h a n g e r o f imr~rfaces are r e c o r d e d b y

modifying

t l l a t d e s c r i p t i o n and recompiling it.

in

this

before.

case

is

make

sure

that

This

operating least,

inconsistent

lay-out

o f r e c o r d s ) , r e c o m p i l a t i o n s can be s t a r t e d .

Before

going

designer have

prone

through

with

a

modification,

c o u l d a l s o b e i n f o r m e d a b o u t how much will

estimate

More.

the

impact

inH)ortant

still,

the

precise

chanties

way

can

sent

p r o q r a m m e r s of t h e a f f e c t e d modules

functional

hardware

and

the

The

ntltti,.~rol.lS

manaclement versions

and

creates

V~:rsio=~ ,~ontrol is d e s i g n e d to

o f orqaniTinq sttch a v a s t collection of More

..H)ecilically,

version

control

the following:

a n d t h e INTI-I}COL. d~...,;cril)tion, v e r s i o n c o n t r o l d e i e r m i n e s w h i c h v e r s i o n s of w h i c h component.~ should be combined t o c r e a t e , a particLdar v e r s i o n of a p a r t i c u l a r conficlnration.

be

in

groups, the

-Version S~.q~?ction. With a .';at of rules

a p r o p o s e d cllange.

documented to the

a

of

to

t h e p r o f l r a m m : : r from t h e t e d i o u s and e r r o r task

automates

t o b e r e c o m p i l e d or rel~rogrammed, so t h a t he

can

repair12. of

components.

the

pro qramn~eer A's

s y s t e m s , r e o r g a n i z a t i o n , and last, but not

problems.

relieve

( l i k e c h a n g e s to c o n s t a n t s or

user

changes

error

serious

version,

OI.her v e r s i o n s arise dtte to

individual

maintenance

m o d u l e s c a n n o t b e u s e d until t h e y are u p d a t e d . For minor modifications

to

enhancements,

The minimum a c t i o n to be t a k e n

to

(lelJugqing

version, etc.

tailoring

w i l l u s u a l l y d e s t r o y t h e cllobal i n t e r f a c e c o n s i s t e n c y established

and

temporary

and a u t o m a t i c a l l y

( b y p u t t i n g m e s s a g e s into m a i l b o x e s , for i n s t a n c e ) .

-Con.~truction. Ver.~ion control oral)adios After

an

determine

tile

preludes be

interface

affected

described

implemented

comparison

reveals

exactly

to

take

was were

modules.

have

to

Given

(letail~--.cl knowleclEle, al)ont t h e various c o n s t r u c t i o n proce:~sors t h a t n e e d to b e i n v o k e d t o g e n e r a t e a runable program.

the

a straiclht-forward of

the

which

old

manner: A

and n e w

preludes

module-interfaces

-Spaee/Ti/nc~ Trarh:off. Version control

were

m a i n t a i n s a d a t a I)a~,e of s o u r c e t e x t a n d t h e d e r i v e d ver...;ions like o b j e c t hie(hales, I ) a r t i ~ l l y linked s u b s y s t e m s , etc. It t r i e s to opLiltfize the .~;I)ace/ time tradeorf of storiticj derived versions or r e g e n e r a t i n g Lhem on demand.

i n t o a c c o t m t w h e t h e r a required r e s o u r c e

no

u s e d in t h e implementation; c h a n g e s

difference

not used.

isolated,

the

obsolete,

for

required

rosa[trees

that

O n c e t h e it~consistent modules are version

control

precompiled

recompilations, modules

first

Of c o u r s e , t h e comparison can be refined

actually

make

we

it~ a pr~:vious section, this can

in

simple

changed.

change,

and

system

versions,

flenerate

change

t h a t n e e d to be r e v i s e d .

simple c h a n g e - r e q u e s t s

can

delete

start

some

notices

-Reconstruction.

If a new source v e r s i o n e n t e r s t h e d a t a b a s e or if interfaces c h a n g e , v e r s i o n control determines which pro-constructed s u b s y s t e m s a r e ob.,=ol¢:te. r h e y will b e r e c o n s t r u c t e d on (]emand.

for

In this fashion,

as w e l l as major design

r e v i s i o n s c a n b e m a t l a g e d e f f i c i e n t l y and reliably.

in

5 . V e r s i o n Control

order

to

de,scribe

configurations, System

maintenance

in

complicated

by

projects

is

different

versions

system

is

planned

large the

proliferation

and c o t ] f i g u r a t i o n s . to

be

programming

available

accommodate

of

in

Even if a

an

family,

in a single

we

multiple expanded

versions INTERCOL

and to

t h e s e wotiot~:;. [acl~ module or s y s t e m

INTERCOL whose

The description

37

I'ave

descril~tion is n o w v i e w e d as a

n}eml)ers a r e t h e various versions. c a n t h e n be e x p l o i t e d to a u t o m a t e

the above

f u n c t i o n s . (For a d i f f e r e n t approach, t h e

interested

r e a d e r is r e f e r r e d t o Cooprider 13.)

t h a t c a n l)e g e n e r a t e d b y d i f f e r e n t settings of c o n d i t i o n a l compilation s w i t c h e s fall in this c l a s s too.

5 . 1 . Module Families 5 . 2 ° S y s t e m Families W e d i s t i n g u i s h t l l r e e o r t h o g o n a l kinds of members A

of a module family.

system

family

compositions. 1. Implementations. Impl(.'mentations of a m o d u l e f a m i l y a r e t h e a c t u a l source programs. T h e y s h a r e the same i n t e r f a c e and a b s t r a c t s p e c i f i c a t i o n s , b u t m a y l)e iml)lemenl.ed d i f f e r e n t l y , in different lan(lUa~le.'q or t a i l o r e d to different envirol}m(:nts, el)crating s y s t e m s , or usher groups, For e x a m p l e , a program :liar ruIIS iIn(ler t w o d i f f e r e n t o p e r a t i n g :;ystelilS may h a v e t w o d i f f e r e n t w : r s i o n s of the module t h a t p r o v i d e s t h e i(lealized o p e r a t i n g system environment.

components

consists

Each which

of

a

series

of

composition

is

a

of

are

other

list

module or

system

f a m i l i e s . Thus, e a c h c o m p o s i t i o n r e p r e s e n t s not only o n e , b u t a w h o l e s e t of f a m i l y members, d e p e n d i n g o n h o w r i c h t h e f a m i l i e s of its c o m p o n e n t s are. specific by

A

m e m b e r o f a c o m p o n e n t can be s e l e c t e d

indicating

version

of

implemP.l~tation, revision, and d e r i v e d a

composition

module

and

family,

components

or

of

by

indicating

a system

family.

T h i s l e a d s t o a r e c u r s i v e d e s c r i p t i o n , which can be simplified considerahl,l with defaults.

Example.

Suppose

M1

and

M2

are

module

f a m i l i e s , M 1 . 1 a n d M 1 . 2 a r e il]~plementations of M1,

2. Rovi.sions. Each i m p l e m e l l t a t i o n e x i s t s as a sequence of r e v i s i o n s t h a t succeed each other in the d e v e l o p m e n t h i s t o r y . Each r~¢vision is a m o d i f i c a t i o n of t h e p r e v i o u s one. For e x a m p l e , f i x i n g a hug in t h e l a t e s t revision of an implementation g e n e r a t e s a n e w one. All revisions of an iml)len~entation a r e linearly o r d e r e d b y t h e i r c r e a t i o n time. Althougl~ the n u m b e r o f r(~visions can be quite l a r g e , t h e i d e a is t h a t normally one d e a l s o n l y w i t h t h e top few, for e x a m p l e t h e e x p e r i m e n t a l , t h e stable, a n d t h e b a c k u p revL,;ions.

and

M2.1

S.S1

a n d M 2 . 2 a r e i m p l e m e n t a t i o n s of M2. If

= { M 1 , M 2 } is a composition of a s y s t e m

family

S,

three

then

the

following

examples represent

m e m b e r o f S: S.S 1(M 1. J.: 7 9 0 G 14:Opt, M2.2:79 04_22:0pt) S.S 1(MI.2, M2.2) £.S1

The

first

example

implementations, versions

(optinHze(I)

example

in t h i s

selected.

Versions. D e r i v e d v e r s i o n s are generated automatically from revisions of implementations. For example, each revision of an implementation written in p o r t a b l e Bliss c a n b e c o m p i l e d into a program t h a t r u n s on a P D P - 1 1 , a PDP-IO, or a VAX ([liven that no machinedependent featurf:s of Bliss-16, B l i s s - G 6 , or R l i s s - 3 2 are used). Other d e r i v e d v e r s i o n s can be p r o d u c e d b y a c o m p i l e r t h a t g~.nerates optimized or non-optimized c o d e , c o d e w i t h or without r u n - t i m e c h e c k s of a r r a y b o u n d s , w i t h or w i t h o u t d e b u g g i n g and i n s t r u m e n t a t i o n hooks. The v e r s i o n s

exist

The and

the newest

second derived

revisions are

they

will

be

used

regardless

of

t h e y a r e o p t i m i z e d or hot; o t h e r w i s e , non-

optimized third

(leMre(I.

re.visions

case,

which

If p r e c o m p i l e ( I d e r i v e d v e r s i o n s of t h e s e

already,

whether

explicitly

( b y (late), and d e r i v e d

at,:

suppresse.~

versions;

8. Derived

indicates

revisions

d e r i v e d v e r s i o n s will be g e n e r a t e d .

example

The

d o e s n o t mention implementations a t

all; in t h i s c a s e , t h e d e f a u l t i m p l e m e n t a t i o n s o f M1

and M 2 a r e s e l e c t e d .

5.a. A Complete Example We

now

primitive

38

present

parser

members

that

machines

and

our

as can under

a

earlier system

execute two

e x a m p l e of

the

family

two

on

two

diffetent

with

different operating

systems.

activities

fluctuate.

For e x a m p l e , t h e modifications

t o a p a r t i c u l a r s u b s y s t e m m a y go through c y c l e s of

system PARSER

h i g h a n d l o w a c t i v i t y . As t h e s u b s y s t e m a p p r o a c h e s a

module ]0 provide function SrcChar : ehar~ ¢onst lineLn; type Line = record { lineNum :int; lineBuf : array[L.lineLn] of char; }; procedure ListLine(outLine : ~Line);

the

for

version they

changes

When module,

version

because

of

interface

of

machine, w e o b t a i n a

is

that

a

the

By pairing LEXAN

the

cycle

can

optimize the

and

The t y p i c a l w o r k -

p r o g r a m m e r r e p e a t e d l y goes of

modification,

execution.

compilation,

Assume

that

the

is w o r k i n g in an e x p e r i m e n t a l a r e a (a f o r i n s t a n c e ) w h i c h contains a c o p y

module

system

controller

t i m e for t h e t e s t s y s t e m in which the

sub-directory

of I0, and compiling for

o f PARSER f o r a PDPIO.

the

is

R e - g e n e r a t i o n occurs on

m o d u l e is e m b e d d e d .

programmer

is c o m p a t i b l e BLISS. By pairing LEXAN with target

and

It

-Ihe only time t h a t t h e

obsolete

version

integration,

t h e r e is o n l y o n e ; l e t us assume, the d e f a u l t

the

module

a p r o g r a m m e r is t e s t i n g and debugging a

re-integration

the

through

as

each

requested.

or new revisions.

the

T h e i m p l e m e n t a t i o n o f LEXAN n e e d not be mentioned

PDPIO

of

was

demand only.

pattern

the

for a long time, it

c o n t r o l l e r d e l e t e s d e r i v e d v e r s i o n s is w h e n beco~le

f o r T O P S I O , an o p e r c t i n g s y s t e m for a DEC-PDPIO.

the TOPSlO°implementation

version that

in o r d e r t o c o n s e r v e s p a c e .

modified

language

partially

p r o g r a m m e r ' s r e s p o n s i b i l i t y t o d e l e t e some of t h e s e

H Y D R A - o p e r a t i n g s y s t e m running on C.mmp, and one

since

to

The v e r s i o n c o n t r o l l e r maintains t h e

derived

(sub-)system

one

appropriate

space.

latest

iml)lementations,

is

is n o t n e e d e d

the following:

composition CMMP = { LEXAN, ]O.HYDRA }:TarBet.PDP[ t composition PDPJO = { LEXAN, |O.TOPS } :TarBet.PDPJ0 end PARSER two

it

As a s i m p l e , s e m i - a u t o m a t i c solution w e propose

module LEXAN provide type Lexerne = (Keyword, Operator, Identifier)~ function NextLe× : Lexeme; require SrcChar, lineLn, Line.{lineNurn,lineBuf}, ListLine end LEXAN

has

state,

it a n d s t o r e it for l a t e r use. H o w e v e r , if

subsystem

wastes

implementation HYDRA.bliss implementation TOPS.bliss end IO

I0

stable

integrate

M

he

is

updating.

Suppose t h a t

X is t h e t e s t b e d for M. W h e n e v e r he issues

with

IO.HYDRA a n d compiling for a PDP11 t a r g e t , w e

t h e c o m m a n d t o r e - i n t e g r a t e X, he i n d i c a t e s tl]at he

can

generate

wants

a version

multiprocessor

that

runs on C.mmp (a

to substitute

also generates 5.4. System

The

Generation

INTERCOL d e s c r i p t i o n

revisions stack

versions

are

automatically. optimization machine

to

SDC 14

and

SCCS 15.

constructed

and

One

can

either

shortens

integrated

determined

Unfortunately, statically,

the

optimum c a n n o t

to of

linked X

in.

from

This

scratch

saves for

the

every

above

is

the

a

simple

integration

cache

til~le for

scheme

which

recently

used

C o m b i n e d w i t h t i m e - o u t s for deletions

f r o m t h e c a c h e , it s h o u l d t a k e c a r e of most of t h e

consume

space-management

t i m e b y r e g e n e r a t i n g d e r i v e d versions on

disk.

has

subsystems.

for

program d e v e l o p m e n t and

maintenance.

demand, o r o n e c a n s a v e t h a t time b y storing them on

be

M

The

Derived

This p o s e s a classical t i m e / s p a c e problem.

In all s u b s e q u e n t i n t e g r a t i o n s of X,

only

m o d i f i c a t i o n o f M.

o f an i m p l e m e n t a t i o n are maintained in a

similar

a p a r t i a l l y i n t e g r a t e d s y s t e m X with

only M unbound. re-integration

is used to s e t Ul) a

b a s e t h a t s t o r e s t h e v a r i o u s components. The

data

t h e n e w l y modified M. The first

t i m e h e i s s u e s t h a t command, t h e v e r s i o n controller

c o n s t r u c t e d o u t of 16 DEC-PDP1 l s).

be

In t h e p r e v i o u s s e c t i o n s w e d i s c u s s e d how the

because system generation

various

39

family

members

are

selected.

System

generation

is

integration

scheme.

interleaved This

performed

wilh

There

the

may

compile/

be

in t h i s t a s k .

several

p h a s e s of compilation and integration.

is d u e t o t h e f a c t

only logical interfaces.

m a c h i n e s c a n handle it e f f i c i e n t l y and reliably.

t h a t INTERCOL describes A logical i n t e r f a c e contains

6. Status (Juno 1979)

e n o u g h i n f o r m a t i o n to perform the first compilation p h a s e , n a m e l y s y n t a c t i c and semantic checking and the

generation

there code

of

i n t e r m e d i a t e code.

W e h a v e i m p l e m e n t e d a demonstration system to

However,

test

is n o t e n o u g h information to g e n e r a t e final because are

missing.

Examples

are

values

constants,

a r r a y hatreds, r e c o r d sizes, field o f f s e t s ,

decide

to

make

the

logical

of

interface

taken

in

the

undesirable system

specifications

(this

MESA-system).

of

because

this

data

arrays,

r e s t r i c t the w a y s d i f f e r e n t versions

follows:

The

first

related

into

intermediate

interfaces

code

in which

performs

base.

Next,

physical

the

and s t o r e s integration

interfaces

of

the

opaque

data

is s a f e

in the sense that

it is

address

aritllmetic.

(For

derefereneing,

accessing

records

and

and e v e n t y p e - h r P a c h i n g are all c h e c k e d

languages.

C and TC d i f f e r

We

chose TC as the t y p e -

sublangaJage for INTERCOL. Of course,

guaranteed

for

and w r i t e - p r o t e c t i o n can only module~ w r i t t e n

in TC.

For

I m p l e m e n t a t i o n of, and e x p e r i m e n t a t i o n with, the earlier

the physical

version

especially

o f r e q u i r e d r e s o u r c e s are still unbound. resources

partially

as w r i t e - p r o t e c t i o n for data.

l o g i c a l a n d p h y s i c a l i n t e r f a c e s at the moment.

system

T h i s p h a s e a l s o e x t r a c t s th,~. physical i n t e r f a c e s of provided

pro(Iramminq languages

s i m p l i f i c a t i o n , w e do not make a distinction b e t w e e n

c o m p l e t e t y p e - c h e c k , n o of ,~ module and t r a n s l a t e s it

and

well

strong type-checking

problems, w o r k s as phase

the

through

specification

compilation/integration

compilation

Its

e n o u g h t o s h o w t h e f e a s i b i l i t y of interfacing closely

be

avoids the3e

for

f o r p o t e n t i a l protP.ction violations.)

body. complicated

iml)lements

p a s s i n f l p a r a m e t e r s , c r e a t i n g or returning

pointers,

Furthermore, this

f a m i l y w o u l d h a v e t o f u n c t i o n w i t h the same inline

which

as

except

example,

i n l i n e p r o c e d u r e s w e r e p r e s c r i l ) e d in the interfaces,

more

curr~:ntly

i m p o s s i b l e t o gain w r i L e - a c c e s s to w r i t e - p r o t e c t e d

is

t h e n all r e v i s i o n s of all implementations of a module

A

and

TC is a s t r o n g l y t y p e d variant of C,

Write-protection

c a n b e c o n s t r u c t e d . For e x a m p l e , if the bodies of

scheme,

and opaque

structures

struct~=re may I)e aJnal)le to provide enough

would severely

INTERCOL

supporting

and

the d e s i g n e r of tile overall

d e t a i l t o d o t h e i)hysical bin(ling.

[~[)1>11/40

c o n t r o l as d e s c r i b e d in section 4.

C 1 6 a n d TC 17.

approach w a s

However,

a

main c o m p o n e l l t S are compilers for all early version

p h y s i c a l i n t e r f a c e i d e n t i c a l and include them fully in the

on

interface

b o d i e s o f inline p r o c e d u r e s , and generic definitions. could

a n d r e f i n e our ideas. The s y s t e m runs Lander

UNIX

p h y s i c a l pr(~perties of the i n t e r l a c e

elements

One

In any reali~flic s o f t w a r e project, it is

t o t a l l y h o p e l e s s to perl'or;, t h a t task by hand; only

with

greatly respect

improved

INTERCOL,

to the r e p r e s e n t a t i o n of

f a m i l i e s . Fleimplementation i=lcluding version

c o n t r o l is p l a n n e d .

them in the data phase collects the module's

required

7. C o n c l u s i o n s

r e s o u r c e s , o n c e f o r e a c h configuration in which the m o d u l e is u s e d . resources

Note t h a t the origin of tile required

We

is n e e d e d t o d e t e r m i n e which physical

interfaces

to

interconnections

use.

This

is

derived

from

the

generate

described and

guarantees

s p e c i f i e d in the INTERCOL program.

the

programmed

F i n a l l y , t h e l a s t p l l a s e uses tile physical i n t e r f a c e s to

have

development

m a c h i n e c o d e , again once for each

integrated

structural system

interconnections

an

maintenance

and

software

environment that

consistency

with

respect

version

of

a to

integration.

,Summarizing, its facilities are as follows:

configuration.

Interface C l e a r l y , t h e r e is s u b s t a n t i a l bookkeeping involved

Control g u a r a n t e e s the c o n s i s t e n c y of

the interfaces ensures

40

global

b e t w e e n the s y s t e m components. It type-correctness

by

performing

inter-module information

type-checkinfo.

It

implements

I m p a c t of Mesa on System Design, pages ?. ACM, IEEE, ERO, GI, Sept. 1 9 7 0 .

hiding w i t h d e t a i l e d name control and

write-protection.

It

detects

the

inconsistencies

c a u s e d b y i n t e r f a c e chart,lies and takes appropriate action.

7.

B i r t w i s t l e , G., En(h:zin, L., Ohlin, M. and Palme, d. DECsystem-10 Simula Language t t a n d b o o k Part 7. Rap. C 8 3 9 8 , Swedish N a t i o n a l D e f e n s e Research Institute, March 1976.

8.

W h i t e , John R. and Anderson, Richard K.. S u p p o r t i n g t h e S t r u c t u r e d Development of C o m p l e x PL/I S o f t w a r e Systems. S o f t w a r e - P r a c t i c e and Experience 7 (1977), 270-293.

9.

M i t c h e l l , d a m e s G., Mayl>ury, William, and S w e e t , Richard. ML~sa Language Manual. X e r o x Pale Alto Rer;earch Center, Feb. 1978.

10.

C l e v e l a n d , J . C . The Environ and Using F a c i l i t i e s o f ,41gel G(~C. Computer S c i e n c e D e p a r t m e n t , UCIA, April 1975.

11.

P a r n a s , David t . On the Criteria To Be Used in D e c o m p o s i n o Sy;~tems into Modules. C o m m u n i c a t i o n s of t h e / ] C M 15, 2 (Dec. 1972), 1053-105~.

12.

B e l a d y , L.A. and L~:hman, M.M. A Model for L a r g e Program D e w : l o p m e n t . IBM Systems J o u r n a l 1.G. 3 ( 1 9 7 6 ) , 2 2 5 - 2 5 2 .

13.

C o o l ) r i d e r , Lee W. The Representation of F a m i l i e s of P r o g r a m m e d Systems. Ph.D. Th,, Carney;lie-Mellon University, Department o f C o m p u t e r Scienc(:, 1078.

14,

H a b e r m a n n , A. Nice. ,4 Software Development Control System. C a r n e g i e - M e l l o n University, Department of C o m p u t e r S c i e n c e , 1970.

15.

Rochkind, Marc J. The Source Code Control S y s t e m . IEEE Transactions on Software E n g i n e e r i n g S E - I , 4 (Dec. 1075), 064-070.

16.

K e r n i g h a n , Brian W. and Ritchie, Dennis M. The C P r o g r a m m i n g Language. P r e n t i c e - H a l l , 197{;.

17.

T i c h y , W a l t e r F. The TC-Manual. TC is a s t r o n g l y t y p u d version of the C-language, d e v e l o p e d a t the Computer Science D e p a r t m e n t of Carnegie-Mellon University.

M u l t i p l e l a n g u a g e s can be accommodated.

Version

Control

generation

in

system.

It

selecting

a

performs

ensurE..:

versions

automatic

system

multi-version/multi-configuration structural

correctly.

consistency

by

It performs f l e x i b l e

v e r s i o n i n t e g r a t i o n b y handling logical and physical interfaces.

It mana qes a data base of numerous

components

and optindzes tile s p a c e / t i m e t r a d e o f f

of storing/regenerating changes

by

subsystems.

detecting

inconsistent

It responds to and

deleting

thank

A. Nice

obsolete versions. Acknowledgments:

I

wish

to

H a b e r m a n n f o r num~.rous discussions and valuable s u g g e s t i o n s , and Frank Deremer for his hell) in the d e s i g n o f an e a r l y v e r s i o n of INTERCOL. References

7.

B e l a d y , L.A. l arfle Soflware Systems. Rap. R C - 6 9 0 6 , IBM I boreas J. Watson R e s e a r c h C e n t e r , dan. 1978.

2.

B e l a d y , L.A. arid Lehman, M,M. The C h a r a c t e r i s t i c s of I ar(le Systelns In Peter W a g n e r , I~eso, lrch Directions ili Software Enginoerin.q, M.I.T. Press, 1979, pp. 106-138.

3.

D e R e m e r , Frank and Kron, Ilans H. P r o g r a n ] m i n g - i n - t h e - LI a r g e vs. P r o g r a n m f i n g - i n - t h e - S m a l l . IEEE Transactions on Software Engineering SE-2, 2 ( J u n e 1 0 7 6 ) , 80-~$G.

4.

5.

6.

T i c h y , W a l t e r F. INTERCOL User Manual. C a r n e g i e - M a r i o n University, Department of C o m p u t e r S c i e n c e , 1 0 7 0 . To be published.

Morris,,lan~es. The Sniggering l y p e - C h e c k e r Fxp~:riment. An e x p e r i m e n t c o n d u c t e d w i t h the Mesa t y p e - c h e c k e r at X e r o x Pare, Palo Alto; p r i v a t e communication. Lauer, Hugh C., S a t t e r t h w a i t e , Edwin H. The

41