The Digital Labyrinth
Chapter 1 - Trouble in the Cathedral
Why is software development so difficult? Why is it not more like other forms
of engineering? What is intrinsically so different about it? Perhaps it is just a reflection
of the relative immaturity of the art - much like the problems of the early
cathedral builders compared to todays civil engineers. Perhaps then better methodologies
and analysis tools can improve the quality of our designs. Or is there something
fundamentally different about software that prevents tried and trusted
reductive design methodologies from succeeding. To answer this we need to understand the
design process at an abstract level.
Chapter 2 - What is Software Engineering?
To understand the underlying essence of software engineering and computer programming we introduce the Turing Machine -
the fundamental model of all computation devised by the mathematician Alan Turning in 1936. The Turing Machine is an abstract description
of a simple mechanical device able to compute a specific mathematical result . Turing shows how this concept can be extended to the design
of a single Universal Turning Machine (UTM) able to simulate the working of any specific Turning Machine. This Universal Turning Machine
is able to computer any conceivable mathematical problem capable of being suitably codified (with some clear limitations).
Even though all modern computers operate with a radically different physical and logical architecture, they can be shown to
reduce logically to implementations of the Universal Turing Machine. While the UTM is hopelessly slow and inefficient for any
practical real world computing, its abstract model is an ideal vehicle to explore the concept of a computer program being ‘correct’
and hence the inherent difficulties of software engineering.
Chapter 3 - What is Design?
Design is essentially about searching a VAST space of possible configurations to find the
varnishingly small set of viable solutions. Search spaces can be visualised as a 3-dimensional
'landscape' where the peaks represent the fittest solutions to the problem. But how large are
these search spaces? We examine three sample spaces: the Library of Babel (the space of all
possible 200-page books), the Library of Turing (the space of all possible Turing Machines), and
the Library of Mendel (the space of all possible genomes). These search spaces are small in comparison
to those for complex design problems, and yet are VAST - requiring billions of years to be searched
by our fastest computers. How is it possible to home in on the fitness peaks of the search space
without resorting to blind search? Are there clues to be found in the landscape that guide us
to the best solutions?
Chapter 4 - Hill Climbing with Darwin
We examine strategies for searching design space using the clues in the underlying fitness landscape.
Smooth - or correlated - landscapes can be searched efficiently by simple strategies such as hill climbing
or annealing. These strategies can still become 'stuck' however on local peaks - missing much higher
peaks separated by valleys of 'unfitness'. Sex is a highly effective algorithm which can search space
far more effectively by taking longer leaps in design space. Once the landscape becomes randomly 'jagged'
however, each point in the space must be searched to find the best solution. But what affects how smooth
the search landscape is?
Chapter 5 - Tuning the Lie of the Land
The degree of 'fitness' of a possible solution depends upon the values of the state variables
(analogous to 'genes' in biological systems) that are the dimensions of the design search being searched.
But in many real-world systems, the 'genes' do not act in isolation but are affected by each other
(epistatic coupling.) Real design projects are complex multi-variable optimisation problems. Simply
optimising the value of one variable can reduce the fitness of others - so reducing the overall fitness
of the solution. The NK model, devised by Stuart Kauffman, provides a simple way of exploring how the
degree of coupling directly affects the randomness of the fitness landscape.
Chapter 6 - The Tangled Bank
So far we have considered a single 'organism' acting in isolation; trying to maximise its own fitness
in a static world. What happens when we have several (or many) such organisms completing for scarce resources
in the same design space? As one organism finds a niche where it has optimal fitness, so another adapts to
take advantage of this situation - so reducing the fitness of the first organism. An evolutionary 'arms race'
ensues, with organisms co-evolving together. The NK model can be adapted to model this situation where the
peaks in the fitness landscape are constantly moving. The fittest individuals are those that can 'keep up' with
the moving peaks and maintain their viability in a changing world. But what determines how easily an organism
can adapt and how is this related to the coupling between 'genes'?
Chapter 7 - Living on the Edge
How is the average 'fitness' of a population of co-evolving systems affected by the coupling between them?
We examine how behaviour and adaptability changes - from static orderly systems unable to adapt to random,
chaotic systems unable to settle to any viable solution. The NK model is used again to show how the average
fitness of a the overall system is greatest at the point of transition from order into chaos. Living
organisms exist at the very 'edge of chaos'. But how do systems find this magical balance point
between order and chaos? - evolution drives them there. We show how systems which have the ability of modify
their own internal coupling have a natural tendency to move towards the edge of chaos i.e. to automatically
tune themselves to the fitness landscape.
Chapter 8 - On Being the Right Size
Complex organisations, such as businesses, animal societies or even distributed computer networks, are composed
of individual units that are coupled and so co-evolve. Each unit has its own set of 'genes' which determine its
individual fitness and behaviour. But each unit is also affected by the degree of coupling with its neighbours.
How does the 'average fitness' of units change as the size of each unit and the degree of coupling changes?
Do we get the best results with a small number of large units or with a large number of much smaller units?
In the extreme, we contrast the 'Stalinist Regime' of a single unit with the 'Banana Republic' of chaotically
competing units. Once again, the overall best fitness occurs on the transition between order and chaos.
This balance point corresponds to an optimal size of organisation unit. The key to building the best and most
adaptive solution then would seem to be in picking the right size of unit. Although these competing units behave
in a totally selfish manner, at the right level of coupling the average fitness of all units is maximised across
the system as a whole . But how do we find the right size of unit? Are the any practical applications of this?
Chapter 9 - Looking for a Better Crane
The design process depends on finding the right tools to help us explore the vastness of design space more efficiently.
Tools then are like cranes which help 'lift' us through design space. Unlike 'skyhooks' though, cranes are routed
in the very design space they operate within. Cranes can themselves be used to build bigger and better cranes.
Sex for example is a highly effective crane discovered by natural selection. Where can we find analogues to sex
in other problem domains - from software design to business organisation and strategy? The problems with
conventional software systems can be explained in terms of the NK model. Today's programs are 'Stalinist' in
nature and are fatally brittle in the face of change. How might new developments such as object oriented programming,
genetic algorithms, self-organisation and seed A.I. help us build more flexible and reliable systems?
Similarly, how should we best manage large multi-national businesses? If a top-down management results in a
Stalinist Regime unable to adapt to the changing market, how far should we delegate to small autonomous units?
Will the corporation really be fitter overall if its organisation departments compete fiercely with each other
and without having a global corporate goal in mind?
Chapter 10 – Taking the Moral Highground
What is morality? How is it based upon objective values that can be explored using the scientific method? Are moral truths imposed upon the
world by virtue of revelation from the supernatural totalitarian monster we see in the Bible and the Koran? We argue that morality
is grounded solely in the human condition and provides a true and objective basis for deciding whether actions are right or wrong
without appeal to divine guidance. Morality is concerned with maximising the well being of sentient beings within a complex and
interconnected biosphere. As such we can consider moral decisions as optimal solutions to searching a moral fitness landscape.
Does this model provide insight into how we may build a better and more ‘moral’ society based upon reason and rationality
rather than fear and superstition?