a system is not a tree

Post on 28-Jul-2015

459 Views

Category:

Software

4 Downloads

Preview:

Click to see full reader

TRANSCRIPT

A System Is Not a Tree

@KevlinHenney

Let us examine [software's]

difficulties. Following Aristotle, I

divide them into essence — the

difficulties inherent in the nature

of software — and accidents —

those difficulties that today

attend its production but that

are not inherent.

How much of what software

engineers now do is still

devoted to the accidental, as

opposed to the essential?

Arboricide is the murder of trees.

The victims of arboricide are the descriptive tree structures that are so often found in software, holding together many individual elements in one coherent and immediately understandable harmony.

Software development should not be a trade of constructing difficulty from simplicity. Quite the contrary. So where there are trees to be shown you should show them, and refrain from turning the relationships they describe into a puzzle. It is, essentially, a matter of the span of description.

Aboricide, then, is using a smaller description span when a larger one would be better.

Trees sprout up just

about everywhere in

computer science.

Donald Knuth

main

subroutine subroutine

subroutine

subroutine

subroutine

subroutine

subroutine

subroutine

afferent branch transform branch efferent branch

main

function function

function

function

function

function

function

function

afferent branch transform branch efferent branch

main

function

function

function

function function

function function function

Concept Hierarchies

The construction principle involved is

best called abstraction; we concentrate on

features common to many phenomena,

and we abstract away features too far

removed from the conceptual level at

which we are working.

Ole-Johan Dahl and C A R Hoare

"Hierarchical Program Structures"

Infrastructure

Services

Domain

Infrastructure Services Domain

concept

realisation

A city is not a tree

Christopher Alexander

A city is not a tree

Christopher Alexander

The tree of my title is not a green tree

with leaves. It is the name of an

abstract structure. I shall contrast it

with another, more complex abstract

structure called a semilattice.

Both the tree and the semilattice are

ways of thinking about how a large

collection of many small systems goes

to make up a large and complex

system.

The semilattice is potentially a much

more complex and subtle structure

than a tree.

It is this lack of structural complexity,

characteristic of trees, which is

crippling our concepts of the city.

The reality of today's social structure

is thick with overlap — the systems of

friends and acquaintances form a

semilattice, not a tree.

The basic thesis [...] is that

organizations which design

systems [...] are constrained

to produce designs which are

copies of the communication

structures of these

organizations.

Melvin Conway

How Do Committees Invent?

We have seen that this fact

has important implications

for the management of

system design. [...] A design

effort should be organized

according to the need for

communication.

Melvin Conway

How Do Committees Invent?

EPISODES:

A Pattern

Language of

Competitive

Development

Ward Cunningham

In simplicity of structure the tree is

comparable to the compulsive desire

for neatness and order that insists the

candlesticks on a mantelpiece be

perfectly straight and perfectly

symmetrical about the centre.

function test

test

test

method test

test

test

method

method

method test

test

test

method

method

test

test

test

class tests

tests class tests

tests

In simplicity of structure the tree is

comparable to the compulsive desire

for neatness and order that insists the

candlesticks on a mantelpiece be

perfectly straight and perfectly

symmetrical about the centre.

The semilattice, by comparison, is the

structure of a complex fabric; it is the

structure of living things, of great

paintings and symphonies.

A program which

has such a

structure in which

there is no single

"highest level"... is

called a heterarchy

(as distinguished

from a hierarchy).

top related