What is complexity?

I’m part of the LSCITS project where LSCITS stands for ‘Large Scale Complex IT Systems’ and we have been having discussions about what is meant by ‘complexity’. Some argue that the term complexity should be reserved for complex adaptive systems, systems which are dominated by emergent behaviour. Others argue that ‘conventionally’ engineered systems can also be complex in that their non-functional characteristics and (sometimes) their functional behaviour cannot be predicted. This is particularly likely when we create systems by integrating different parts (often other systems) which are independently developed and managed. In such cases, it is practically impossible to predict how the characteristics of one system will interfere with the characteristics of others.

We suggested that ‘complex’ and ‘complicated’ were not the same. A complicated system is one that is understandable in principle although, in practice, the effort involved may be so great that it is not understandable in practice. This was my own view at one time, but I’ve now changed my mind and think that there is no practical difference between a complex and a very complicated system.  This position has emerged from musings on the roots of complexity.

Some systems are inherently complex – we cannot deduce their properties by a study of their components; we cannot predict the consequences to changes to these systems. System behaviour and properties are emergent and non-deterministic. I believe that such inherent complexity stems from the fact the there are dynamic, dependent relationships between the parts of the system. These relationships evolve in time and according to stimuli from the system’s environment. New relationships may be created and existing relationships may change. As a consequence, deterministic modelling techniques cannot be used to make predictions about such systems although statistical approaches may be used in some cases.

As soon as you consider the people who use a system to be part of the system, you have dynamic, dependent relationships between components in the system so I argue that all large, socio-technical systems can be considered to be complex systems.

There is also another aspect to complexity – what might be called epistemic complexity. This relates to the predictability of system properties when changes are proposed. If you don’t have enough knowledge about a system’s components and their relationships, you cannot make predictions about it, even if, in principle, that system does not have dynamic dependent relationships between its components. Therefore, I argue that large complicated systems are also complex systems when it is practically impossible to acquire the necessary knowledge to understand the system.

This means, of course, that complexity is not just a property of the system but also of the system observer. We have all encountered system experts who know about some system and can make changes to it in a reliable way. Their knowledge is hard to articulate and when they are no longer available, someone taking over the system may find it impossible to develop the same level of understanding. Therefore, what was a complicated system has become a complex system.

Where is all this leading – who cares?

Well, I think it is important to emphasise that complexity isn’t simple. Striving for a simple, universal definition of complexity isn’t really going to get us anywhere.

If we are to try and manage complexity we need a toolbox of theories and methods to do so. To give an example, if you think about dynamic dependencies between components, formal methods of computer science don’t really help. However, if you think about epistemic complexity, they may be very useful indeed as they allow us to state ‘truths’ about a system – filling in our knowledge about that system.

The notion of dynamic, dependent relationships may also be useful in helping us manage complexity. By developing a better understanding of such relationships (e.g. through socio-technical analysis of organisations), we may be able to change the type of these relationships from dynamic to static and hence reduce the complexity of the system.

As I said, complexity isn’t simple so there’s lots of scope for disagreement here.

Advertisements

5 Comments

Filed under LSCITS

5 responses to “What is complexity?

  1. Nigel Derrett

    My current feeling is that we are using the word “complex” to cover several related, but different concepts (So “complex” is a complex!):
    – Is the system behaviour predictable?
    – Can we analyse the system?
    – Is it dependable (whatever that means)?
    – Can we change the system predictably?
    – Can we assure ourselves that it is fit for purpose?

    In the end, I think a “complex” system is just one that we don’t know how to analyse.

    It is not the case that systems are inherently complex – it depends on the observer, as you say:
    – it depends on the information available, which differs from person to person
    – it depends on the analysis tools available and our ability to use them

    So what is complex for me may not be for you. A super-brainy Martian might look at one of our “complex” systems and think it is very simple indeed.

  2. Nigel – I think there is inherent complexity in situations where we have adaptive systems with dynamic dependencies between the elements. In such cases, we cannot have enough knowledge about the system to make accurate predictions of its behaviour – at best, we can be probabilistic.

    so, if we have a bunch of automated agents, all trading currencies perhaps hundreds of times per second and linked through currency prices, we simply can’t predict their behaviour – other factors apart from trades affect the currency prices and we have no idea how these will interact.

  3. Nigel Derrett

    I’m not convinced by the argument about currency trading.

    I agree completely that you and I can’t predict the behaviour of the currency trading system because of its complexity, but I don’t accept that the complexity is inherent.

    I suspect that this example is mixing up
    – complexity
    – non-determinism, and
    – chaotic behaviour

    As I understand it “Chaotic” means that tiny changes in the input state can result in big changes in the output state, so that unless we can determine the input state with complete accuracy we cannot predict the system behaviour.
    The currency trading system may possibly be chaotic, but a chaotic system need not be complex. (I.e. Chaotic behaviour results in unpredictability but does not imply complexity.)

    By “non-determinism” I mean that the output state of the system is not wholly dependent on its input state.
    By saying “other factors apart from trades affect the currency prices”. I think you are saying that the currency trading system is non-deterministic. Again, this doesn’t imply it is necessarily complex.

    The very-brainy Martian observer is accustomed to trading in billions of inter-galactic currencies with trillions of transactions per second, so if you remove the non-determinism by saying that she knows all the current currency prices, she has no difficulty at all in predicting in real time the system behaviour of what is to her our tiny and very slow currency trading system.

    So I reiterate my assertion that no system is inherently complex – it depends on the observer. But I accept that the currency trading system is complex as observed by humans in 2010.

  4. The question should not be, “Is a system complex?” The question should be, “Does the system have any more complexity than necessary?”

    In other words, can yet another drop of complexity be squeezed from the system without sacrificing the ability of the system to solve its stated problem?

    I see complexity as analogous to heat and simplicity as analogous to cold. There is no such thing as “cold.” There is only absence of heat. That is why we have an absolute zero (the point at which there is no heat left in a system) but no absolute hot. Things can always get hotter. Things can always get more complex.

    So we can’t add simplicity to a system, we can only remove complexity. And the required functionality places a lower limit to the amount of complexity the system must have. If the problem is transportation, a rock is simpler than a rocket ship but doesn’t solve the problem.

    But the fact that a system must have SOME complexity is no excuse for the surfeit of complexity that exists in most IT systems. The unnecessary complexity dwarfs the necessary complexity.

    The ability to remove complexity implies the ability to measure complexity. We can’t show that we have removed complexity unless we can show a relative decline in the amount of complexity after we have “removed it.”

    For my proposals on how to understand, model, measure, and remove complexity from IT systems, see my White Paper, “The IT Complexity Crisis” at http://www.objectwatch.com/white_papers.htm#ITComplexity.

  5. Pingback: Abstraction and complexity | Thoughts on software and systems engineering

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s