a system is not a tree
TRANSCRIPT
![Page 1: A System Is Not a Tree](https://reader033.vdocuments.us/reader033/viewer/2022042818/55b6e602bb61eb69688b4678/html5/thumbnails/1.jpg)
A System Is Not a Tree
@KevlinHenney
![Page 2: A System Is Not a Tree](https://reader033.vdocuments.us/reader033/viewer/2022042818/55b6e602bb61eb69688b4678/html5/thumbnails/2.jpg)
![Page 3: A System Is Not a Tree](https://reader033.vdocuments.us/reader033/viewer/2022042818/55b6e602bb61eb69688b4678/html5/thumbnails/3.jpg)
![Page 4: A System Is Not a Tree](https://reader033.vdocuments.us/reader033/viewer/2022042818/55b6e602bb61eb69688b4678/html5/thumbnails/4.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022042818/55b6e602bb61eb69688b4678/html5/thumbnails/5.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022042818/55b6e602bb61eb69688b4678/html5/thumbnails/6.jpg)
![Page 7: A System Is Not a Tree](https://reader033.vdocuments.us/reader033/viewer/2022042818/55b6e602bb61eb69688b4678/html5/thumbnails/7.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022042818/55b6e602bb61eb69688b4678/html5/thumbnails/8.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022042818/55b6e602bb61eb69688b4678/html5/thumbnails/9.jpg)
Trees sprout up just
about everywhere in
computer science.
Donald Knuth
![Page 10: A System Is Not a Tree](https://reader033.vdocuments.us/reader033/viewer/2022042818/55b6e602bb61eb69688b4678/html5/thumbnails/10.jpg)
![Page 11: A System Is Not a Tree](https://reader033.vdocuments.us/reader033/viewer/2022042818/55b6e602bb61eb69688b4678/html5/thumbnails/11.jpg)
main
subroutine subroutine
subroutine
subroutine
subroutine
subroutine
subroutine
subroutine
afferent branch transform branch efferent branch
![Page 12: A System Is Not a Tree](https://reader033.vdocuments.us/reader033/viewer/2022042818/55b6e602bb61eb69688b4678/html5/thumbnails/12.jpg)
main
function function
function
function
function
function
function
function
afferent branch transform branch efferent branch
![Page 13: A System Is Not a Tree](https://reader033.vdocuments.us/reader033/viewer/2022042818/55b6e602bb61eb69688b4678/html5/thumbnails/13.jpg)
main
function
function
function
function function
function function function
![Page 14: A System Is Not a Tree](https://reader033.vdocuments.us/reader033/viewer/2022042818/55b6e602bb61eb69688b4678/html5/thumbnails/14.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022042818/55b6e602bb61eb69688b4678/html5/thumbnails/15.jpg)
Infrastructure
Services
Domain
![Page 16: A System Is Not a Tree](https://reader033.vdocuments.us/reader033/viewer/2022042818/55b6e602bb61eb69688b4678/html5/thumbnails/16.jpg)
Infrastructure Services Domain
concept
realisation
![Page 17: A System Is Not a Tree](https://reader033.vdocuments.us/reader033/viewer/2022042818/55b6e602bb61eb69688b4678/html5/thumbnails/17.jpg)
A city is not a tree
Christopher Alexander
![Page 18: A System Is Not a Tree](https://reader033.vdocuments.us/reader033/viewer/2022042818/55b6e602bb61eb69688b4678/html5/thumbnails/18.jpg)
![Page 19: A System Is Not a Tree](https://reader033.vdocuments.us/reader033/viewer/2022042818/55b6e602bb61eb69688b4678/html5/thumbnails/19.jpg)
A city is not a tree
Christopher Alexander
![Page 20: A System Is Not a Tree](https://reader033.vdocuments.us/reader033/viewer/2022042818/55b6e602bb61eb69688b4678/html5/thumbnails/20.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022042818/55b6e602bb61eb69688b4678/html5/thumbnails/21.jpg)
![Page 22: A System Is Not a Tree](https://reader033.vdocuments.us/reader033/viewer/2022042818/55b6e602bb61eb69688b4678/html5/thumbnails/22.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022042818/55b6e602bb61eb69688b4678/html5/thumbnails/23.jpg)
![Page 24: A System Is Not a Tree](https://reader033.vdocuments.us/reader033/viewer/2022042818/55b6e602bb61eb69688b4678/html5/thumbnails/24.jpg)
![Page 25: A System Is Not a Tree](https://reader033.vdocuments.us/reader033/viewer/2022042818/55b6e602bb61eb69688b4678/html5/thumbnails/25.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022042818/55b6e602bb61eb69688b4678/html5/thumbnails/26.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022042818/55b6e602bb61eb69688b4678/html5/thumbnails/27.jpg)
EPISODES:
A Pattern
Language of
Competitive
Development
Ward Cunningham
![Page 28: A System Is Not a Tree](https://reader033.vdocuments.us/reader033/viewer/2022042818/55b6e602bb61eb69688b4678/html5/thumbnails/28.jpg)
![Page 29: A System Is Not a Tree](https://reader033.vdocuments.us/reader033/viewer/2022042818/55b6e602bb61eb69688b4678/html5/thumbnails/29.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022042818/55b6e602bb61eb69688b4678/html5/thumbnails/30.jpg)
function test
test
test
![Page 31: A System Is Not a Tree](https://reader033.vdocuments.us/reader033/viewer/2022042818/55b6e602bb61eb69688b4678/html5/thumbnails/31.jpg)
method test
test
test
method
method
![Page 32: A System Is Not a Tree](https://reader033.vdocuments.us/reader033/viewer/2022042818/55b6e602bb61eb69688b4678/html5/thumbnails/32.jpg)
method test
test
test
method
method
test
test
test
![Page 33: A System Is Not a Tree](https://reader033.vdocuments.us/reader033/viewer/2022042818/55b6e602bb61eb69688b4678/html5/thumbnails/33.jpg)
class tests
tests class tests
tests
![Page 34: A System Is Not a Tree](https://reader033.vdocuments.us/reader033/viewer/2022042818/55b6e602bb61eb69688b4678/html5/thumbnails/34.jpg)
![Page 35: A System Is Not a Tree](https://reader033.vdocuments.us/reader033/viewer/2022042818/55b6e602bb61eb69688b4678/html5/thumbnails/35.jpg)
![Page 36: A System Is Not a Tree](https://reader033.vdocuments.us/reader033/viewer/2022042818/55b6e602bb61eb69688b4678/html5/thumbnails/36.jpg)
![Page 37: A System Is Not a Tree](https://reader033.vdocuments.us/reader033/viewer/2022042818/55b6e602bb61eb69688b4678/html5/thumbnails/37.jpg)
![Page 38: A System Is Not a Tree](https://reader033.vdocuments.us/reader033/viewer/2022042818/55b6e602bb61eb69688b4678/html5/thumbnails/38.jpg)
![Page 39: A System Is Not a Tree](https://reader033.vdocuments.us/reader033/viewer/2022042818/55b6e602bb61eb69688b4678/html5/thumbnails/39.jpg)
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](https://reader033.vdocuments.us/reader033/viewer/2022042818/55b6e602bb61eb69688b4678/html5/thumbnails/40.jpg)
A program which
has such a
structure in which
there is no single
"highest level"... is
called a heterarchy
(as distinguished
from a hierarchy).