Structure of Complex Systems
Structure of Complex Systems
Structure of Complex Systems
Systems
The Five Attributes of a
Complex System
1."Frequently, complexity takes the form of a
hierarchy, whereby a complex system is composed
of interrelated subsystems that have in turn their
own subsystems, and so on, until some lowest
level of elementary components is reached"
2. The choice of what components in a system are
primitive is relatively arbitrary and is largely up to
the discretion of the observer of the system.
3. “Intra-component linkages are generally
stronger than intercommoning linkages. This fact
has the effect of separating the high-frequency
dynamics of the components - involving the
internal structure of the components - from the
low-frequency dynamics - involving interaction
among components"
4. "Hierarchic systems are usually composed of
only a few different kinds of subsystems in
various combinations and arrangements "
5. “A complex system that works is invariably
found to have evolved from a simple system that
worked.... A complex system designed from
scratch never works and cannot be patched up to
make it work. You have to start over, beginning
with a working simple system"
Organized and Disorganized
Complexity
The Canonical Form of a Complex System
The discovery of common abstractions
and mechanisms greatly facilitates our
understanding of complex systems.
• Combining the concept of the class and
object structure together with the five
attributes of a complex system, we find that
virtually all complex systems take en the same
(canonical) form.
The Role of Decomposition
• As Dijkstra suggests, “The technique of
mastering complexity has been known since
ancient times: divide et impera (divide and
rule)"
• When designing a complex software system, it
is essential to decompose it into smaller and
smaller parts, each of which we may then
refine independently
Two Types:
• Algorithmic Decomposition
• Object oriented Decomposition
Algorithmic Decomposition
Object-Oriented
Decomposition
Algorithmic versus Object-
Oriented Decomposition
The algorithmic view highlights the ordering of
events.
The object-oriented view emphasizes the agents
that either cause action or are the subjects
upon which these operations act.
The fact remains that we cannot construct a
complex system in both ways simultaneously,
for they are completely orthogonal views
Advantages of Object Oriented
Decomposition
Object-oriented decomposition has a number of highly
significant advantages over algorithmic decomposition.
Object-oriented decomposition yields smaller systems
through the reuse of common mechanisms, thus
providing an important economy of expression.
Object-oriented systems are also more resilient to change
and thus better able to evolve over time, because their
design is based upon stable intermediate forms.
Indeed, object-oriented decomposition greatly reduces the
risk of building complex software systems, because they
are designed to evolve incrementally from smaller
systems in which we already have confidence.
Object-oriented decomposition directly addresses the
inherent complexity of software by helping us make
intelligent decisions regarding the separation of concerns
in a large state space.