+ All Categories
Home > Software > A System Is Not a Tree

A System Is Not a Tree

Date post: 28-Jul-2015
Category:
Upload: kevlin-henney
View: 457 times
Download: 4 times
Share this document with a friend
Popular Tags:
40
A System Is Not a Tree @KevlinHenney
Transcript
Page 1: A System Is Not a Tree

A System Is Not a Tree

@KevlinHenney

Page 2: A System Is Not a Tree
Page 3: A System Is Not a Tree
Page 4: A System Is Not a Tree

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.

Page 5: A System Is Not a Tree

How much of what software

engineers now do is still

devoted to the accidental, as

opposed to the essential?

Page 6: A System Is Not a Tree
Page 7: A System Is Not a Tree

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.

Page 8: A System Is Not a Tree

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.

Page 9: A System Is Not a Tree

Trees sprout up just

about everywhere in

computer science.

Donald Knuth

Page 10: A System Is Not a Tree
Page 11: A System Is Not a Tree

main

subroutine subroutine

subroutine

subroutine

subroutine

subroutine

subroutine

subroutine

afferent branch transform branch efferent branch

Page 12: A System Is Not a Tree

main

function function

function

function

function

function

function

function

afferent branch transform branch efferent branch

Page 13: A System Is Not a Tree

main

function

function

function

function function

function function function

Page 14: A System Is Not a Tree

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"

Page 15: A System Is Not a Tree

Infrastructure

Services

Domain

Page 16: A System Is Not a Tree

Infrastructure Services Domain

concept

realisation

Page 17: A System Is Not a Tree

A city is not a tree

Christopher Alexander

Page 18: A System Is Not a Tree
Page 19: A System Is Not a Tree

A city is not a tree

Christopher Alexander

Page 20: A System Is Not a Tree

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.

Page 21: A System Is Not a Tree
Page 22: A System Is Not a Tree

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.

Page 23: A System Is Not a Tree
Page 24: A System Is Not a Tree
Page 25: A System Is 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?

Page 26: A System Is Not a Tree

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?

Page 27: A System Is Not a Tree

EPISODES:

A Pattern

Language of

Competitive

Development

Ward Cunningham

Page 28: A System Is Not a Tree
Page 29: A System Is Not a Tree

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.

Page 30: A System Is Not a Tree

function test

test

test

Page 31: A System Is Not a Tree

method test

test

test

method

method

Page 32: A System Is Not a Tree

method test

test

test

method

method

test

test

test

Page 33: A System Is Not a Tree

class tests

tests class tests

tests

Page 34: A System Is Not a Tree
Page 35: A System Is Not a Tree
Page 36: A System Is Not a Tree
Page 37: A System Is Not a Tree
Page 38: A System Is Not a Tree
Page 39: A System Is Not a Tree

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.

Page 40: A System Is Not a Tree

A program which

has such a

structure in which

there is no single

"highest level"... is

called a heterarchy

(as distinguished

from a hierarchy).


Recommended