Monday 30 December 2013

Whole Systems study

Whole System Effect

Errors in systems can have system-wide implications.

If my bank fails to correctly carry out the transaction that I have requested, it could affect my credit rating.

But the designer of the bank system probably gave little thought to that consequence.


It is not sufficient to consider a System in isolation, it is necessary to consider its effect on its surroundings. Thus, even when considering the role of a subsystem, we must look at the wider implications.

Making subsystems composable but orthogonal is the key to keeping control over this whole-system effect.

Laws for Systems (published in 1998)

  1. A component, added to a system, may not disrupt the behaviour of that system. 
  2. A component, using the services of another, does so at its own risk and must protect itself from damage.
  3. A component offering a service does so at its own risk and must protect itself from misuse.
Reading these laws today, substituting the word (sub)System for Component, they are even more obvious than they were 15 years ago. Talking about systems in terms of services was only just beginning then. Today, I prefer the use of the term interface and use it more or less interchangeably with the word system.

Being obvious, doesn't make them untrue.

The key message here is that a subsystem is responsible for both its own (bad) behaviour and any misuse that is made of it. If a subsystem fails as a consequence of misuse then that is no-one's fault but its own.

This can be used as a guiding principle when designing systems and when analysing them (typically, trying to understand a system designed by someone else).

Look at a whole-system through the faults that can occur as a consequence of bad design. Look at its failure modes. Look at how these can be (or should have been) mitigated. That's how you will see if the the modularity is right, if the orthogonality is right, and how that can be strengthened.

This is particularly true when looking at how a system should be changed or extended. It should have been designed so that extension is cheap and the possibility of damaging the existing system is nil.