Abstraction in design is the process of removing successive levels of detail from a representation in order to capture only the essential features of a system. Through the process of abstraction, a designer can hide the irrelevant information about a system in order to reduce complexity and focus only on what is of essential interest.1 Abstraction within a design helps to define what is of generic relevance to the whole system and what is specific to particular applications of it, thus making it possible to design multi-level systems where smaller, more specific subsystems are nested within larger more generic frameworks.2
Abstractions & Complexity
In complex systems, there are always two fundamentally different levels of the system: the micro and the macro, or what can also be called the local and the global. This is in contrast to simple linear systems, where it is possible to reduce the whole system to one level, and it is due to the fact that firstly, complex systems are composed of many parts. We may be talking millions, as in the number of inhabitants of a city, or billions, as in the number of devices connected to the Internet. A number like a million is a highly abstract thing, trying to relate a number like a billion to our everyday physical experience where we are really dealing with numbers like 5, 10 or possibly 100. Thus, there is a vast gap or difference in scale between any individual node on the local level and the system as an entirety.
Secondly, because the components have some degree of autonomy, they are adapting to their local environment. These components are often very simple and they do not respond to information on the global level. Thus, one pattern of order can and often does develop on the micro level, and a second pattern emerges or is imposed on the macro scale as a result of trying to design the system to have some form of global coordination. An example of this might be the official use of two different languages in many parts of the world, where we have the local level that has emerged organically and English that has been placed on top of this so as to make the system more interoperable on the global level. Lastly, because of the high degree of connectivity within the system, we have many interactions. These interactions inevitably lead to elements synchronizing, which gives rise to macro-scale patterns. This is called emergence. Traffic jams are a good example of emergence, as are bank runs. The net result of all this is that we have two qualitatively different levels within complex systems, meaning they cannot be reduced to a single level. This makes designing and managing these systems much more difficult.
Levels of Abstraction
We need to be firstly aware of this multidimensional nature to complex systems, and aware that, if we try to reduce them to simple mono-dimensional systems, there will be unintended and unfortunate consequences. Thus, we need to learn to design for this multi-dimensional nature to complex systems. In order to do this, we have to be able to structure and model the system we are designing according to its different levels of abstraction. But what is abstraction? Abstraction is a powerful tool used in all areas of math, science, and engineering. Maybe the easiest way to understand it is as a process of removing successive layers of detail from our representation of the system in order to capture its essential features, what we might call its global features; they are common to all the components and are thus on the systems level.
This is like zooming in on a satellite map of a city. Each level will have a certain degree of detail, creating a certain type of structure that will feed into defining the pattern on the level below. Thus, we see how complex engineered systems are what we call systems of systems. But unlike mechanistic systems where each level is just a scaled up version of the components below it, what mathematicians call scale invariance, the levels to complex systems can be understood to be scale invariant, but they also have their own internal variation and dynamics that cannot be fully abstracted away. This is characteristic of fractal structures, geometric structures that have this scale-invariant property (examples being the arteries in the human body), the structure to snowflakes, the formation of rigid mountains, and sea coastlines. If we take one of these, such as the coastline, and zoom in on it, the overall structure on each level will be the same, but it will not be exactly the same. There will be variation and unique differences on each level.
Imagine one is designing a structural adjustment program for the Mongolian economy. No amount of data crunching and analysis from our IMF headquarters will tell us how things will really play out on the ground. Yes, our abstract economic models will tell us how the system works on the global generic level, but there is another level to the Mongolian economy that represents a particular social, cultural and geographical mix, that is unique to this particular instance of the global economy. If we want to design this program properly, we need to model and understand the different levels of abstraction from the local to the global level, how the interaction between the generic and the specific play out on each level, and how each level feeds into defining the level below and above it.
One thing to take away from this with respect to our design methodology is the importance of ethnographic studies and real end-user experience. Abstract models are one thing, but in these large complex systems, they will go through phase transitions as they are implemented on the ground. If we design a military intervention in Iraq without understanding the local level context within which it takes place, then this phase transition can go in any direction. A real experience of the local level is crucial if we hope to have a strong influence over this process. With the huge scale of some of these complex systems, things can go very wrong and get very messy. The so-called “Big Dig” may be cited as an example of this. A mega-project to reroute a highway through the center of Boston estimated at 2.8 billion dollars, was completed at a final cost of 14.6 billion dollars after being plagued by numerous implementation problems.