Struggling With Complexity in Thinking

Prof. Dr. Edsger W. Dijkstra introduced the concept of separation of concerns in 1974 as a way of organizing human thoughts about a subject. This principle states that you need to discuss complicated situations in different roles, one role interest at a time, keeping your attention on one aspect, one hypostasis of this situation. It does not mean ignoring the other aspects. You just focus your attention upon some aspect as well as the whole system. “It is being one- and multiple-track minded simultaneously”, Dr. Edsger W. D. wrote.

This division of thinking by concerns is carried out recursively—for each system level of the plenty and each system at the system level. Due to emergence at each level, the system begins to exhibit some new properties, and these properties need to be discussed. There are many concerns, many separate concerns.

The complexity of describing/discussing the system thus falls in two directions:

  1. Dividing the entire discussion of the whole system into discussions of its separate parts by system levels. Each part of the system is simpler than the system as a whole, so the discussion is more or less uniform at each level. Each part of the system is defined by its requirements, the definition of the system as a “black-box”. The requirements ignore the system’s internal structure and its parts, so the discussion always starts with whole systems as part of a supra system or whole subsystems as part of a system.
  2. Dividing the full discussion of each system into the discussion by means of multiple definitions of this system as a white-box: the principles of interaction and the structure of the parts of the system. The most important definition is architecture, which includes functional, module/structural and spatial views and many others. But other white-box views made with sufficient accuracy for manufacturing are also used when discussing the system—this is the non-architectural part of the design.

Then, we discuss enabling systems, but we’ll talk about that later. Nevertheless, systems thinking makes you keep them in mind as well!

A detailed and comprehensive discussion of massive complex systems can be broken down into fairly small parts (due to the very essence of the systems approach). No part of this discussion will be forgotten, and no definition will be overlooked. How do you eat an elephant? One bit at a time!

Inherently collaborative, systems thinking allows to separate mental (design) and physical (fabrication and operation) labor. It involves many different performers for many different design roles—and ensure that all parts of the system at all system levels are thought through in detail for all role concerns at each system level.

But how to agree on how to glue all these very different views of the very diverse parts of the system into one coherent system definition? How do all these roles and their performers agree? All of these views can be glued together if one understands that they describe the same place in space-time and refer to the same system realization. The cornerstone of any system’s discussion will be the physical system realization, considered at the moment of operation (run-time). And all other discussions will be tied to it.

Without the systems approach, you can’t complete complex projects involving a large number of different specialists on time and schedule. The system will not succeed because someone’s concerns will not be addressed, it will be forgotten or lost. Lack of attention leads to a failure of the system. People will not be satisfied with its work or the project that creates the system (will not be satisfied with the enabling systems).

Systems are discussed one part at a time, one view of one part at a time—with no losing sight of the whole system in its environment and its enabling systems.

*An excerpt from Systems Thinking course