Complex systems design represents an alternative paradigm to our traditional design engineering approach. The paradigm of complex systems design is focused on the development of open systems that integrate diverse components through dynamic networks, with global functionality emerging from the bottom-up as elements interact, adapt, and evolve over time. This is in contrast to a more traditional approach, which is focused on the development of discrete, well-defined objects by breaking them down into individual components, and then coordinating these components within one top-down global design. Classical examples of these complex engineered systems are the Internet and cities, but also health care systems, electrical power grids, financial portfolios, logistics networks, and transportation networks.
Design and engineering are very broad and fundamental human activities, and there are a lot of different definitions for them. However, at the heart of many of these definitions is design as a process. That is a process where we conceive an original or improved solution to achieve a desired, optimal end state. We then identify the set of factors and constraints within the given environment and lastly, develop a model for the arrangement of a set of elements to achieve this desired end state, that is, the design. Thus, whether we are engineering a bicycle, new production process for our factory or designing some healthcare service, we can say design is about the arrangement of elements within a system in order to achieve an optimal global functionality. Within engineering, this optimal functionally is typically talked about and quantified in terms of the system’s efficiency. A design paradigm then is an overarching approach that consists of a set of basic assumptions and theories about how the world we want to engineer works, coupled with a complementary set of principles and methods with which to approach this design process.
Reductionism in Design
Like many other areas, our modern engineering paradigm inherits its theoretical foundation from modern science and, in particular, classical physics. A key method employed by both is that of reductionism. Reductionism holds that a complex system is nothing but the sum of its parts and that an account of it can be reduced to accounts of its individual constituents. The reductionist approach results in a vision of the world that is made up of isolated components that interact in a predetermined linear fashion, sometimes called the Clock Work Universe. As when we put our reductionist goggles on, everything starts to look like little deterministic cogs in a vast machine. Thus, the reductionist approach applied to engineering results in the decomposing or breaking down of whole systems into discrete components that can be isolated and modeled using linear equations. The overall functionality of the system is then achieved by defining an overarching top-down plan as to how all these components fit back together. In order to achieve this overall functionality of the system, it is important that the elements can be constrained, that is to say, they are relatively static and their behavior can be predetermined and thus controlled. The reductionist approach has worked well in the engineering of bridges, airplanes, and skyscrapers. These systems are designed to be, and we want them to be, stable, predictable, and reliable. Reductionism works well when we are dealing with systems with a low level of interconnectivity and interdependencies, where the components are static, controllable, and the environment relatively unchanging.
Complexity in Design
But what happens when this is not the case, when we have to design information systems where the components are highly interconnected and interdependent, when we have to build sustainable cities with multiple stakeholders that all have their own agendas or infrastructure systems that will have to operate in a changing uncertain future environment created by climate change? In this case, our basic assumptions or design paradigm has to shift to one that is more focused on the connections that integrate diverse components into systems as opposed to our traditional component-based paradigm, and this is where complex systems design comes in.
Firstly, complex systems are open systems. In traditional design and engineering, we are dealing with things like chairs, bridges, and buildings. They have well-defined boundaries. We can fully control all the elements within these boundaries and fully design the system. This makes them orderly and predictable. With the design of complex systems, what we are dealing with instead are open systems. Think of electrical power grids, cities or the internet itself, a massively modular, distributed system. It has no defined boundaries. People and devices couple and decouple from the system. It is not random, but this world of complex systems is not so orderly. It is to use the catchy phrase “edge of chaos.” No one is in control and no one fully understands or can fully design these open systems.
Whereas our traditional approach is very much focused on components, that is to say, designing things, complex systems design is about connecting these things together, and networks are the platforms through which we connect things into systems that deliver functionality. Instead of focusing on the properties of things, that is, how to make them bigger, faster and better, the primary focus here is on how to design the protocols and interactions so that diverse components can work together. Think about smart power grids. What we are designing here is a network through which multiple diverse components – meters, power generators, and different electrical devices – can communicate and inter-operate through a standardized set of protocols.
What we are used to designing are monolithic technologies. They are coordinated by one master plan that is imposed on all elements in a top-down fashion. One monolithic design constrains all the components within the system. This is how we make buildings, cars, and airplanes, and it works well until the components of the system are autonomous. When we try to apply this approach to design something like whole cities, the results can be disastrous, massive waste of resources, hugely alienating, and disengaging environments. In these complex systems, the real capacity to act, to deploy capability, lies on the local level. Think of social networks. A social network without its users is essentially nothing. It is, at the end of the day, the users who really create the value of the system. Trying to control the network will likely end in overburdening it with system level constraints. Users will become disengaged and simply opt out. In complex engineered systems, global functionality emerges from the self-organization of elements on the local level. Therefore, we do not seek to design the system in all its details, but focus instead on configuring the context and the local interactions that may lead to effective global coordination.
In classical engineering, the components to the system are specifically held static so as to coordinate the system as a whole. This requires prediction of the environment in which the system will operate, the conditions it will face, and the tasks it will be required to perform. In complex engineered systems, the components have a high degree of autonomy, whether we are talking about websites on the internet, or where people chose to build their houses or invest their money. The elements are adapting to their local environment, and thus the state of the system is a product of the evolutionary process that results from this. Their capacity of adaptation and evolution allows for these systems to operate in more complex and volatile environments, where complete knowledge of the system and its environment is impossible.