1 / 40

A System Is Not a Tree

Keynote presented at DevWeek (24th March 2015) <br><br>Trees. Both beautiful and useful. But we’re not talking about the green, oxygen-providing ones. As abstract structures we see trees all over the place – file systems, class hierarchies, ordered data structures, etc. They are neat and tidy, nested and hierarchical – a simple way of organising things; a simple way of breaking large things down into small things. <br><br>The problem is, though, that there are many things – from modest fragments of code up to enterprise-wide IT systems – that do not comfortably fit into this way of looking at the world and organising it. Software architecture, design patterns, class decomposition, performance, unit tests... all of these cut across the strict hierarchy of trees. This keynote will look at what this means for how we think and design systems, whether large or small.

Kevlin
Download Presentation

A System Is Not a Tree

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. A System Is Not a Tree @KevlinHenney

  2. 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.

  3. How much of what software engineers now do is still devoted to the accidental, as opposed to the essential?

  4. 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.

  5. 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.

  6. Trees sprout up just about everywhere in computer science. Donald Knuth

  7. main subroutine subroutine subroutine subroutine subroutine subroutine subroutine subroutine afferent branch transform branch efferent branch

  8. main function function function function function function function function afferent branch transform branch efferent branch

  9. main function function function function function function function function

  10. 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"

  11. Infrastructure Services Domain

  12. Domain Services Infrastructure concept realisation

  13. A city is not a tree Christopher Alexander

  14. A city is not a tree Christopher Alexander

  15. 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.

  16. 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.

  17. 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?

  18. 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?

  19. EPISODES: EPISODES: A Pattern A Pattern Language of Language of Competitive Competitive Development Development Ward Cunningham

  20. 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.

  21. test test test function

  22. method test test method test method

  23. test test method test test method test test method

  24. tests class tests tests tests class

  25. 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.

  26. A program which has such a structure in which there is no single "highest level"... is called a heterarchy (as distinguished from a hierarchy).

More Related