You get a bonus - 1 coin for daily activity. Now you have 1 coin

1.2. The Structure of Complex Systems

Lecture



Examples of complex systems

The structure of a personal computer. A personal computer (PC) is a device of moderate complexity. Most PCs consist of the same basic elements: a system board, a monitor, a keyboard, and some kind of secondary storage device (a floppy or hard disk). We can take any of these parts and in turn decompose it into its constituents. The system board, for example, contains random access memory, a central processing unit (CPU), and a bus to which peripheral devices are attached. Each of these parts can also be decomposed into constituents: the CPU consists of registers and control circuitry, which themselves consist of still simpler parts: diodes, transistors, and so on.

This is an example of a complex hierarchical system. The personal computer works properly thanks to the well-defined joint functioning of all its constituent parts. Together these parts form a logical whole. We can understand how the computer works only because we can consider each of its constituents separately. Thus, we can study the workings of the monitor and of the hard disk independently of each other. Similarly, we can study the arithmetic part of the CPU without considering the memory subsystem.

The point is not merely that the complex system of a PC is hierarchical, but that the levels of this hierarchy represent different levels of abstraction, one built on top of another, and each capable of being examined (understood) separately. At each level of abstraction we find a set of devices that together provide certain higher-level functions, and we choose the level of abstraction according to our specific needs. For example, in trying to investigate the problem of synchronizing memory accesses, one can stay at the level of the computer's logic gates, but that level of abstraction is unsuitable when looking for a bug in an application program that works with spreadsheets.

The structure of plants and animals. The botanist seeks to understand the similarities and differences among plants by studying their morphology, that is, their form and structure. Plants are complex multicellular organisms. The joint activity of a plant's various organs gives rise to such complex kinds of behavior as photosynthesis and the uptake of moisture.

A plant consists of three main parts: roots, stems, and leaves. Each of them has its own particular structure. A root, for example, consists of root branches, root hairs, the root apex, and so on. Looking at a cross-section of a leaf, we see its epidermis, mesophyll, and vascular tissue. Each of these structures is in turn a collection of cells. Within each cell we can distinguish the next level, which includes the chloroplast, the nucleus, and so on. Just as with the computer, the parts of a plant form a hierarchy, each level of which possesses its own independent complexity.

All parts at the same level of abstraction interact in a quite definite way. For example, at the highest level of abstraction, the roots are responsible for absorbing water and mineral substances from the soil. The roots interact with the stems, which convey these substances to the leaves. The leaves in turn use the water and minerals delivered by the stems and, by means of photosynthesis, produce the necessary elements.

For each level of abstraction there is always a clear demarcation between "outside" and "inside". For example, we can establish that the parts of a leaf together provide for the functioning of the leaf as a whole and interact very weakly, or not directly at all, with the elements of the roots. Simply put, there is a clear separation of concerns among the different levels of abstraction.

In a computer, transistors are used in the circuitry of both the CPU and the hard disk. Similarly, a great many "standardized elements" are found in all the parts of a plant. Thus the Creator achieved economy of expression. For example, cells serve as the basic building blocks of all the plant's structures; the plant's roots, stems, and leaves consist of cells. And although each of these basic elements really is a cell, there is an enormous variety of different cells. There are cells that contain chloroplasts and cells that do not, cells with walls permeable and impermeable to water, and even living and dead cells.

In studying the morphology of a plant we do not single out separate parts within it responsible for separate phases of a single process, such as photosynthesis. In fact there are no centralized parts that directly coordinate the activity of the lower levels. Instead we find separate parts that act as independent agents, each of which behaves in a fairly complex manner and yet in concert with the higher levels. Only through the joint action of a great many agents does the higher level of the plant's functioning emerge. The science of complexity calls this emergent behavior. The behavior of the whole is more complex than the behavior of the sum of its parts .

Let us turn to zoology. Multicellular animals, like plants, have a hierarchical structure: cells form tissues, tissues work together as organs, groups of organs make up a system (the digestive system, for example), and so on. Once again we are compelled to note the Creator's characteristic economy of expression: the basic building block of all plants and animals is the cell. Naturally, there are differences between plant and animal cells. Plant cells, for example, are enclosed in a rigid cellulose wall, unlike animal cells. But despite these differences, both of these structures are undoubtedly cells. This is an example of commonality across different spheres.

The life of plants and animals is sustained by a considerable number of mechanisms at the supracellular level, that is, at a higher level of abstraction. Both plants and animals use a vascular system to transport nutrients within the organism. Both may have a distinction of sexes within a single species.

The structure of matter. Research in fields as different as astronomy and nuclear physics provides many other examples of incredibly complex systems. In these two disciplines we find examples of hierarchical structures. Astronomers study galaxies, which are grouped into clusters, while stars, planets, and other celestial bodies make up a galaxy. Nuclear physicists deal with a structural hierarchy of physical bodies on an entirely different scale. Atoms consist of electrons, protons, and neutrons; electrons appear to be elementary particles, but protons, neutrons, and other heavy particles are formed from still smaller components called quarks.

Again we discover a commonality of forms of mechanisms in these complex hierarchies. In fact it turns out that only four types of force operate in the Universe: the gravitational, the electromagnetic, the strong, and the weak interactions. Many laws of physics are universal; the laws of conservation of energy and momentum, for example, can be applied both to galaxies and to quarks.

The structure of social institutions. As a final example of complex systems, let us consider the structure of social institutions. People join together into groups to solve problems that cannot be solved individually. Some organizations quickly fall apart, others function for several generations. The larger the organization, the more distinctly a hierarchical structure appears in it. Multinational corporations consist of companies, which in turn consist of divisions containing various branches. The latter own individual offices, and so on. The boundaries between the parts of an organization can change, and over time a new, more stable hierarchy may emerge.

The relationships among the different parts of a large organization are like the relationships among the components of a computer, a plant, or a galaxy. Characteristically, the degree of interaction among the employees of one institution is undoubtedly higher than that among the employees of two different institutions. A clerk, for example, does not usually communicate with the company's chief executive, but mainly serves visitors. Yet here too the different levels have common mechanisms of functioning. Both the clerk's and the director's work is paid for by the same financial organization, and both of them use common equipment for their purposes, in particular the company's telephone system.

The five attributes of a complex system

Proceeding from this way of studying things, we can derive five attributes common to any complex system. Building on the work of Simon and Ando, Courtois offers the following observation :

1. "Complex systems are frequently hierarchical and consist of interdependent subsystems, which in turn may also be divided into subsystems, and so on, down to the very lowest level."

Simon notes: "the fact that many complex systems have a nearly decomposable hierarchical structure is the major factor that enables us to understand, describe, and even "see" such systems and their parts" . Indeed, most likely we can understand only those systems that have a hierarchical structure.

It is important to realize that the architecture of complex systems is made up both of components and of the hierarchical relationships among those components. Rechtin notes: "All systems have subsystems, and all systems are parts of larger systems... The characteristics of a system are determined by the relationships among its parts, not by the parts as such" .

What, then, should be regarded as the simplest elements of a system? Experience suggests the following answer:

2. The choice of which components in a given system are treated as elementary is relatively arbitrary and is left largely to the discretion of the observer.

What is the lowest level for one observer may turn out to be quite a high level for another.

Simon calls hierarchical systems decomposable, if they can be divided into clearly identifiable parts, and nearly decomposable, if their constituents are not absolutely independent. This brings us to the next property common to all complex systems:

3. "Intracomponent linkages are generally stronger than intercomponent linkages. This circumstance makes it possible to separate the "high-frequency" interactions within components from the "low-frequency" dynamics of interaction among components" [10].

This difference between intracomponent and intercomponent interactions gives rise to a separation of concerns among the parts of the system and makes it possible to study each part in relative isolation.

As we have already said, many complex systems are organized by fairly economical means. Simon therefore offers the following attribute of complex systems:

4. "Hierarchic systems are usually composed of only a few different kinds of subsystems in various combinations and arrangements" [11].

In other words, different complex systems contain the same structural parts. These parts may use common smaller components, such as cells, or larger structures, such as the vascular systems found in both plants and animals.

We noted above that complex systems tend to evolve over time. Simon holds that complex systems will evolve from simple ones far more rapidly if stable intermediate forms exist for them [12]. Gall [13] puts it more strikingly:

5. "Any working complex system has evolved from a working simpler system... A complex system designed "from scratch" will never work. You have to start with a working simple system".

As a system evolves, objects that were originally regarded as complex become elementary, and more complex systems are built out of them. Moreover, it is impossible to get the elementary objects right the first time: one must first tinker with them in order to learn more about the system's real behavior, and only then refine them.

Organized and disorganized complexity

The canonical form of a complex system. Discovering common abstractions and mechanisms greatly facilitates our understanding of complex systems. For example, an experienced pilot, after getting his bearings in just a few minutes, can take over the controls of a multi-engine jet aircraft he has never flown before and fly it calmly. Having identified the elements common to all such aircraft (such as the control stick, the ailerons, and the throttle), the pilot then finds the differences between this particular aircraft and others. If a pilot already knows how to fly one aircraft of a certain type, it is far easier for him to learn to fly another, similar one.

This example suggests that we have been using the term hierarchy in a rather loose sense. The most interesting complex systems contain many different hierarchies. In an aircraft, for example, one can distinguish several systems: fuel, flight control, and so on. Such a division yields a structural hierarchy of the "part of" kind. This same system can be decomposed in an entirely different way. For example, the turbojet engine is a particular kind of jet engine, and the "Pratt and Whitney TF30" is a particular kind of turbojet engine. On the other hand, the concept "jet engine" generalizes the properties common to all jet engines; a "turbojet engine" is simply a particular kind of jet engine with properties that distinguish it from, say, the ramjet.

This second hierarchy is an "is-a" hierarchy. Drawing on our experience, we have found it necessary to consider a system from two points of view, as a hierarchy of the first kind and of the second. For reasons set out in Chapter 2, we shall call these hierarchies, respectively, the class structure and the object structure [Complex software systems also include other kinds of hierarchy. Of particular importance are their module structure, which describes the relationships among the physical components of the system, and the process hierarchy, which describes the relationships among the dynamic components].

Combining the notions of class structure and object structure with the five attributes of complex systems, we arrive at the conclusion that virtually all complex systems can be represented by one and the same (canonical) form, shown in Figure 1-1. Two orthogonal hierarchies of a single system are presented here: of classes and of objects. Each hierarchy is multilevel, with the higher-level classes and objects in it built out of simpler ones. Which class or object is chosen as elementary depends on the problem under consideration. Objects at the same level have well-defined relationships, and this applies especially to the components of the object structure. Within any level under consideration lies the next level of complexity. Note also that the class and object structures are not independent: each element of the object structure represents a specific instance of a definite class. As Figure 1-1 shows, there are usually far more objects in a complex system than classes. By showing both hierarchies, we demonstrate the redundancy of the system under consideration. If we did not know the class structure of our system, we would have to repeat the same information for every instance of a class. By introducing the class structure, we place the properties common to the instances within it.

Our experience shows that the most successful software systems are those in which well-thought-out class and object structures have been laid down and which possess the five attributes of complex systems described above. Let us appreciate the importance of this observation and put it more categorically: one very rarely encounters a software system delivered exactly on schedule, within budget, and satisfying the customer's requirements in which the considerations set out above were not taken into account.

The class and object structures of a system taken together we call the architecture of the system.

Human capabilities and complex systems. If we know how complex software systems ought to be designed, then why do we run into serious problems when building such systems? As shown in Chapter 2, the idea of how to combat the complexity of programs (this idea we shall call the object-oriented approach) is relatively new. There is, however, one more reason, apparently the principal one: the physical limitations of human capabilities when working with complex systems.

1.2. The Structure of Complex Systems

Figure 1-1. The canonical form of a complex system.

When we begin to analyze a complex software system, we discover in it many constituent parts that interact with one another in various ways, and neither the parts of the system themselves nor the ways they interact display any similarity. This is an example of disorganized complexity. When we begin to organize the system in the course of designing it, we have to think about many things at once. For example, in an air traffic control system one has to monitor the state of many aircraft simultaneously, taking into account such parameters as position, speed, and heading. In analyzing discrete systems one has to consider large, complex, and not always deterministic state spaces. Unfortunately, one person cannot keep track of all this at once. Psychological experiments, such as those of Miller, show that the maximum number of chunks of information that the human brain can track simultaneously is approximately seven plus or minus two [14]. This is probably related to the capacity of human short-term memory. Simon also notes that an additional limiting factor is the speed at which the brain processes incoming information: it takes about 5 seconds to take in each new chunk of information [15].

Thus we find ourselves facing a serious dilemma. The complexity of software systems is increasing, but our brain's ability to cope with that complexity is limited. How, then, are we to get out of the predicament that has arisen?

Comments

To leave a comment

If you have any suggestion, idea, thanks or comment, feel free to write. We really value feedback and are glad to hear your opinion.
To reply

Lectures and tutorial on "Object Oriented Analysis and Design"

Terms: Object Oriented Analysis and Design