Modularity: "The Architecture / Design Principle of Complex Adaptive Systems"
Modularity is a structural fact: its existence can be determined by inspecting the structure of some particular thing. If the structure has the form of a nested hierarchy, is built on units that are highly interconnected in themselves, but largely independent of other units; if the whole system functions in a coordinated way, and each unit has a well-defined role in the system, then, by our definition, the thing is modular. This is true whether we are speaking of a brain, a computer, a city or investment portfolio.
In this chapter we look at the dynamic possibilities that are inherent in modular structures and , especially, modular design. Strikingly, the changes that can be imagined in a modular structure are spanned by six, relatively simple modular operators. These operators, applied at various points and in different combinations, can generate all possible evolutionary paths for the structure. Thus the operators are a powerful set of conceptual tools that are implicit in the logic of modular designs. We define and describe the six modular operators as follows:
- splitting a design (and its tasks ) into modules
- substituting one module design for another
- augmenting - adding a new module to the system
- excluding a module from the system
- inverting to create new design rules
- porting a module to another system
Modularity is a concept that has proved useful in a large number of fields that deal with complex systems. Two subsidiary ideas are subsumed in the general concept. The first is the idea of interdependence within and independence across modules.(p. 64)
A module is an element whose structural elements are powerfully connected among themselves and relatively weakly connected to elements in other units. Clearly there are degrees of connection, thus there are gradations of modularity.
In other words, modules are units in a larger system that are structurally independent of one another, but work together. The system as a whole must therefore provide a framework - an Architecture - that allows for both independence of structure and integration of function.
The second idea is captured by three terms: abstraction, information hiding, and interface: