Taking into account the complexity of the systems around us is the first step towards understanding them. In this post, our expert Dr. Julien Siebert (Fraunhofer IESE) describes the most important characteristics of complex systems from his point of view.
A long time ago (in a galaxy not so far away), I was working in a research area related to something called „complex systems“. After some time doing other things (including being a data scientist), this subject came knocking at my door again. In the framework of the DYNASOS project, I participated in various discussions on the topic of ‚complex systems‘ and ‚emergent phenomena‘. I realized that in many of the discussions I had, but also in some of the scientific and non-scientific articles I had read, there were ambiguities and even misunderstandings about the meaning of the terms ‚complex‘ and ‚emergent‘. So I found myself in the position of having to explain these topics to others. This is both a humbling and an exciting exercise (trying to summarize over 75 years of research in fields such as mathematics, physics, computer science, biology, sociology, etc.).
If I had to explain it in one sentence, reducing it to one basic concept, this is what I would say: In order to study, understand, and control complex systems, one has to take into account at least two levels of abstraction (the micro and the macro levels) and the way they interact with each other.
Complex Systems: An Example
Let me take a simple example to illustrate this idea: cars driving along a single lane road and creating a traffic jam. This is by no means an example that I invented; you can actually see a simulation of it here (Wilensky, 1997). On the micro level, we can describe cars as components (also called agents) of the systems. These components interact with each other and with their environment (i.e., cars try to stay on the road, accelerate if the road in front of them is free, otherwise they brake in order to avoid collisions).
Complex systems contain many interacting components
Having a high number of interacting components is indeed a characteristic of complex systems, but it is not a sufficient one. Actually, a single car might be made of more than 10,000 interacting components, but a single car is usually considered a complicated system, not a complex one . What makes a system complex is the way the components interact with each other (see below).
Complex systems are open
Another aspect usually mentioned in definitions of complex systems is the fact that components can leave and join the system, i.e., the system is open. In our example, this is simulated by the fact that cars enter the road on one side (left) and leave the system on the other side (right), and there is a continuous flow of cars . With a little bit of code, one could also add or remove cars during the simulation and experiment with this property. One would see that the traffic jam will not disappear completely if one adds or removes cars (unless, of course, the density of the cars is too low). It is often argued (with good reasons) that complex systems need to be open, and indeed many physical systems showing complex behavior are only possible if they are thermodynamically open (i.e., if there is a continuous flow of matter and energy that comes in and out of the system; see the whole field of non-linear and far-from-equilibrium physics ). The problem that I see here is that in software engineering, an open system means something different. One can create software systems that are open (i.e., where components can join and leave, or fail) without having a complex system. Complex systems generally exhibit aspects such as non-linearity and emergence.
Complex systems imply taking into account different levels of abstraction and their interactions
Finally, the previous point brings me to my characteristic of choice: the interaction between different levels of abstraction. Cars can create a traffic jam. In our example, if one car brakes a little too much, the following cars will also slow down and cause a traffic jam. A traffic jam is a collective phenomenon. It happens first because several components interact with each other (and with their environment). A traffic jam is not something one can describe using solely the micro level (i.e., the cars). It requires its own level of abstraction (usually called macro level, because the scale at which it happens is larger than the micro level). If you play with the simulation you’ll notice that the traffic jam moves along the road. And it moves backwards (i.e., in the opposite direction of the cars). Moving backwards, it forces the incoming cars to brake earlier on the road. It is a little bit as if the traffic jam had its own existence and behavior  (researchers in the field of complex systems would speak about reifying the emergent phenomenon (David, 2012)).
The key message here is that if one wants to engineer emerging phenomena, one needs to first be able to detect them. In our example, this could mean monitoring the positions of cars and determining that a traffic jam exists when the local density of cars is greater than a given threshold, and that this local density propagates backwards along the road. The second thing would be to describe (model) the behavior of the traffic jam: Depending upon the frequency of cars arriving, it moves more or less rapidly, or even disappears when the density of incoming cars is too low. Note here that although we can consider the traffic jam as a concrete object, it is not independent of the micro level, and we have to consider the interactions between the micro and the macro level as a whole (in terms of both micro-macro and macro-micro feedback).
Outlook on the future of complex systems
Last but not least, the question of how to engineer and control such phenomena should be answered. As I already mentioned, this is a large research field spanning many disciplines. The good thing is that many people are trying to tackle such problems and that many methods have been (and will be) developed  (e.g., from engineering local to global feedback control with or without time delays (Siebert, Alonso, Bär, & Schöll, 2014)). In my opinion, a major difficulty lies in the language barrier between the different fields and the corresponding scientific communities. As a conclusion, I believe that only multidisciplinary work can enable us to solve the challenges arising from complexity.
Finally, I cannot resist showing the map of the complexity sciences by Brian Castellani & Lasse Gerrits (available at https://www.art-sciencefactory.com/complexity-map_feb09.html).
David, D. &. (2012). Reification of emergent urban areas in a land-use simulation model in Reunion Island. . ECAI workshop on Intelligent Agents in Urban Simulations and Smart Cities (IAUSSC2012) (pp. 28-32). Montpellier, France: IOS Press. Retrieved from http://www-poleia.lip6.fr/~corruble/IAUSSCws/Home.html
Siebert, J., Alonso, S., Bär, M., & Schöll, E. (2014). Dynamics of reaction-diffusion patterns controlled by asymmetric nonlocal coupling as a limiting case of differential advection. Physical Review E., 89(5), 052909. doi:10.1103/PhysRevE.89.052909
Wilensky, U. (1997). NetLogo Traffic Basic model. Evanston, IL: Center for Connected Learning and Computer-Based Modeling, Northwestern University. Retrieved from http://ccl.northwestern.edu/netlogo/models/TrafficBasic.
 For those interested in the people doing research in this field, one interesting pointer is https://cssociety.org/home or the map of the complexity sciences (see below).
 Here the goal is not to say that engineered system might not show emergent and complex phenomena. Indeed, emergent phenomena in engineered systems can occur (think of vibrating components that set the system in resonance, making it even more vibrating, leading to a possible deterioration. Owners of old motorcycles will know this phenomenon, where the bikes start acting like a sea snake). The goal is to say that having a huge number of components is not enough for a system to be characterized as complex.
 OK, here I am simplifying a bit. In the simulation, the cars do not leave; rather, as soon as they reach the right side (the end of the road), they reenter on the left side. These are called periodic boundary conditions. Note that the same “traffic jam” effect can be observed even without these periodic boundary conditions; one might need a longer road and send new cars at random.
 Here again, it is hard to point the reader to a single article, but if I had to choose one, it would be: http://www.scholarpedia.org/article/Self-organization
 There is even a scene in Mission Impossible 3 where Ethan Hunt (Tom Cruise) pretends to be a traffic engineer.
 Once again, if I were to choose a single book discussing this problematic, given my own experience, I would probable refer to the work of my former colleagues in the group of Prof. E. Schöll at TU Berlin.