[Mirrored from original at
http://www.enteract.com/~bradapp/docs/NoNoO.html]
On the Nature of The Nature of Order
The Chicago Patterns Group presents:
James O. Coplien
on Christopher Alexander's latest work entitled:
The Nature of Order
Tuesday, 5 August 1997
[notes taken by Brad Appleton]
Where we are with "patterns" in the software community
We've all been captivated by this "patterns" stuff in the software
community as of late, but for Alexander, this was 20 years ago and his
ideas have evolved into bigger and better things. His latest work (still
in progress) is called The Nature of Order and describes the current
state of Alexander's thinking based upon his 20+ years experience with
patterns and where they should be leading us.
The GoF pattern catalog is nice, but it is a "dead end" of sorts because
it stops short at "patterns" and doesn't delve into the concept of pattern
languages. The individual patterns are the primary emphasis, with some
mention made of how they might relate to a few other patterns. Pattern
languages go much further, dealing with rich interactions between
patterns to indirectly generate solutions for more fundamental
problems, much larger than any one pattern can address by itself.
How we arrived there
GoF and POSA are both laudable and important works, but people need to
read Alexander's writings before they can truly understand what patterns
and pattern languages are all about. Alexander's first known work on this
subject was Notes on the Synthesis of Form (which was really his
graduate thesis). In [Notes], Alexander writes of what he
calls "misfits" (which later evolved into "forces")
and structures/sketches (which later evolved into "patterns").
Alexander was trying to focus on aesthetic concerns and utility.
In another, little known (and very expensive + hard to find) tome titled
Preview of the Art of the 21st Century, Alexander describes how
"truth" and "beauty" are present in ancient Turkish prayer carpets. The
artisans who created these carpets were striving to capture the
likeness/face of God in them; the structure of the universe.
Richard Gabriel's book Patterns and Software: Tales from the Software
Community contains what is probably one of the best descriptions of
Alexander's search for truth and beauty in carpets and use of the "bead
game". Alexander would take different carpet designs, or different
configurations of colored beads, and then ask observers to tell him
which of two designs (or configurations) was more beautiful or pleasing
to them and why. Confoundingly enough, it appeared that what we all
might think of as being purely "in the eye of the beholder" was in fact
less subjective than we believed. Apparently the overwhelming majority
of individuals from all various walks of life seemed to converge on what
they felt was the most pleasing or beautiful.
Alexander tried to carefully study the different characteristics or
"properties" which, when present, seemed to trigger a preference in
observers for designs which possessed that property. Certain things like
centers, symmetry, and "effective" use of positive and negative space,
kept recurring as aspects to which all people seemed aesthetically
attracted. Alexander was trying to use the results of these experiments
to verify/validate to his belief that beauty, is in fact objective
(at least at its deepest and most fundamental levels of recognition).
In the book A Pattern Language, Alexander recaptures the mores of
beauty: utility, aesthetics, and durability (cf. Vetruvian Pillars). In
The Timeless Way of Building, Alexander states that the patterns of
these kinds of beauty were already in our heads and were deeply embedded
within our cultures throughout much of the previous history of
civilization, but that we forgot these things as we evolved toward
cultures that were more technically-oriented and became separated into
more specialized disciplines and groups, rather than more eclectic,
cross-functional ones.
We lost awareness of many of the rich social connections the previous
cultures had because the towns and buildings were no longer designed,
built and arranged by their intended inhabitants (the community itself)
but are now instead built by specialists, "architects" who draw up blue
prints and hand them over to construction crews. As a result of losing
this "connectedness" to the whole community, we lost the awareness of
"wholeness" and how all the pieces fit together into a gestalt (a whole
that is greater than the sum of its parts). Thus we forgot the age old
patterns that were at the heart of our social networks and cultural
communities which had always been used to guide our designs of these
kinds of living structures.
For Alexander, patterns are structures that solve some sort of
architectural or social problem embodied in the structures that we
build, and occur in a greater context to work with other patterns to
form architectural styles. These patterns are culturally sensitive:
culture and values are important (cf. Social Network Theory).
Anthropology is an example of a discipline which studies patterns of
communities and organizations: their ceremonies, rituals, social mores,
memes, leitmotifs, etc.
One of the earliest books about "patterns" was written in 1948 by A. L.
Kroeber, entitled Anthropology: Culture, Patterns, and Process.
In this work, Kroeber discusses three levels of cultural patterns:
-
Total Culture Patterns (or "Whole Patterns")
Patterns which are pervasive throughout a particular culture or
community. They depend on the roles of people within their
communities and identify or characterize its culture.
-
Systemic Patterns
Patterns conveying fundamental utilitarian structures which recur in
different cultures but which share a common historical root.
-
Universal Patterns
Patterns which relate to cognitive and psychological concerns rooted
deep in the human psyche and which are common to all of humanity.
Where we need to go: The Nature of Order
Alexander, through his studies, has moved out of culturally sensitive
patterns into the cognitive and psychological aspects of geometry which are
universal. He is concerned with unlocking the secret behind what
constitutes the essence of what he now refers to as "wholeness".
What is it that makes some carpets more "whole" than others? The
Nature of Order is a kind of grand unified theory on how things grow
in nature (natural processes).
Through empirical results of numerous experiments, Alexander has arrived
at 15 fundamental properties, very deeply psychological or even
biological in essence, which form our most fundamental notions of order
and beauty [hmmn - cf. Jung's notion of "Collective Unconscious"].
Some of these may be even deeper, relating to survival instincts and
evolution [cf. Maslow's "Hierarchy of Needs"]. These ideas of
Alexander's are 20 years ahead of where we are now in the software
patterns community.
Wholeness and Centers
In his earlier works ([APL] and [TTWoB]) Alexander often
refers to "the quality without a name" (abbreviated as
QWAN). In The Nature of Order, Alexander has advanced
his notion of this "quality" and now uses the term
wholeness. Wholeness (and "life") emerges as a result
of naturally occurring processes which are based on locii known as
centers.
A "center" is "something we notice" as a structure; something
which captures our eye as being "architecturally interesting". A center
will draw our attention [cf. center of attention] from amidst its
neighboring structures (which may also be centers in their own right) by
differentiating itself from them via some kind of boundary (possibly a
very fuzzy boundary). Examples of centers might be: a row of tiles on a
ceiling or floor, a hallway, a pond in the countryside, and what we in
the software patterns community think of as "patterns".
Patterns are stereotypical centers.
According to Alexander, everything has "wholeness", but some things have
more of it than others. All such things have noticeable centers, which
are themselves made up recursively of other centers. The Nature of
Order presents a unifying model of design for unfolding "wholeness"
by a process of intensifying centers. A "good" center will reinforce
the other centers around it. Existing centers may be augmented by adding
adjacent centers, or by augmenting its adjacent centers, or the centers
contained within it.
The final result is a collection of recursive and hierarchical centers
which are integrated at all levels of scale and which reinforce one
another. One starts with basic, essential centers and then recursively
unfolds the design to elaborate more centers without destroying the
existing ones. An example stated by Alexander is that cells divide, and
then differentiate themselves to reinforce existing centers. Centers
may occur at any scale but the relative scale of centers within centers
is significant.
Patterns, then, are regional points or invariants in the design which
exhibit deeper centers; they are configurations of centers that serve
some cultural context which is germane to that particular culture.
Whereas patterns have "names" and are only a point in the namespace of
the system, centers are truly nameless and deal with deep structures in
the human psyche and beyond. The "good space" in a design space is where
explicitly recognized, common configurations of centers reside. This
material in The Nature of Order is many times more
general than patterns.
Structure-Preserving Transformations
So what is the process for "unfolding wholeness" from centers?
Centers are elaborated from, and enhanced by, other centers using what
Alexander calls structure-preserving transformations.
When attempting to augment or intensify a center, one must be careful to
preserve the structure of the existing center as well as the structure
of the centers around it. Thus, when adding or elaborating a given
center, we must carefully observe the result to see if it does, in fact,
increase the wholeness of the system, or if it detracts from the overall
result. If it does not increase the wholeness of the system or reinforce
existing centers then we need to back off and try something else.
Hence, design consists solely of the applying these structure-preserving
transformations to intensify existing centers and create new ones. The
wholeness of the system evolves via piecemeal growth, unfolding from the
recurring application of structure preserving transformations [cf.
morphogenesis?]. Each new application of a "pattern" must be
contained in, or somehow "mesh with" the other patterns in the system.
But what are these structure preserving transformations? To find out, we
must return to Alexander's premise that "beauty is objective." In other
words, faced with two design alternatives resulting in different
structures, the sense that one is somehow "better" than the other
transcends subjectivity and can be experimentally verified to be
objective.
The Fifteen Fundamental Properties of Wholeness and Life
Through repeated experiments, Alexander has correlated this objective
sense of beauty to the presence of fifteen fundamental
properties which recur throughout human cognition and are
apparently rooted deep within the psyche. The number of these properties
(15) is not at all "magical" in any way. It is completely arbitrary, and
merely the byproduct of correlating the results from Alexander's
experiments. These 15 fundamental structural properties are:
-
Levels of Scale
[cf. aggregation, hierarchical (de)composition?]
Within or around any given center, there will exist smaller centers
which are one level of scale lesser in size. The difference in scale
should be somewhere between a factor of 4 and a factor of 10.
[[cf. Salingaros in "The Laws of Architecture from a Physicist's
Perspective" where he states the three laws of architecture as:
-
Order on the smallest scale is established by paired contrasting
elements, existing in a balanced visual tension.
-
Large-scale order occurs when every element relates to every other
element at a distance in a way that reduces entropy.
-
The small scale is connected to the large scale through a linked
hierarchy of intermediate scales with scaling factor approximately
equal to e = 2.718.
I find it particularly interesting that the "level of scale" suggested
here happens to be the root of the so called "natural" logarithm]]
Cope reads from the NoO draft: "any perturbation of irregularity which
develops near [center] 'A' causes a latent center 'B'. As this latent
center gets stronger, this will then cause an aggregation or nucleation
near the first center. It must be a jump in scale or else it
will not preserve the structure."
-
Strong Centers
Centers may overlap but they should not completely lose their identities.
Strong centers are centers that have been reinforced by other centers
and intensified by structure preserving transformations. Cope reads
from NoO again: "In the growth of a flower, there is a field effect
taking place, caused by chemical gradients in the sap. As one center
forms -- the position of the flower heads -- leaves, stems, and other
parts of the flower then rearrange themselves to support the flower
with sap, and in the process create a field effect which actually
intensifies the center."
Whenever a center is formed, successive structure preserving
transformations will call out smaller centers around and within it,
which, by virtue of their spatial positioning, are arranged in just such
a way that it strengthens the first center. As the architecture unfolds
and more structure preserving transformations are applied, this will
happen with all the centers in the system.
-
Alternating Repetition
These are recurring/repeating structures throughout the design. Cope
reads (yet again): "Atoms, waves, leaves, grains of sand, cirrus clouds,
all have the repetition of some given type of center, many times spread
through a portion of space."
Alternating repetition involves "latent centers" (centers which
are not yet completely formed) in the adjacent spaces between the
repetition of centers. When the latent centers become more fully formed,
they will become a repeating sequence of centers all on their own; one
which alternates in between the sequence of centers from which it
emerged. If the spaces between repeating centers are at all similar,
this will eventually occur between all centers in the first system of
centers and the second. After a number of these transformations,
alternating repetition will appear.
-
Boundaries
[cf. encapsulation?]
Each center gives rise to one or more (fuzzy) boundaries which enclose
the center itself, and also which enclose the adjacent centers around
it. As the centers are intensified and more centers are added (using
structure preserving transformations) the boundaries will intensify and
form bigger boundaries which intensify the centers within them. As this
process repeats itself under more structure preserving transformations,
these boundaries will occur repeatedly throughout space.
-
Positive Space
Positive space is the region of the design filled with "latent centers".
Centers which have not yet emerged, but which, when they do emerge, will
fill the empty space in a "positive" way, with centers that reinforce it.
[I asked the question of whether or not this was at all like the way
Michelangelo claimed he could "see" the human form in the empty block of
stone before he sculpted it.] Repeated structure preserving
transformations will take such latent centers make it more center-like,
resulting in center that are more "solid". As this empty space of latent
centers is filled, pushed, pulled, connected, each piece of it becomes a
center and hence more "positive".
-
Good Shape
[cf. abstraction???]
As centers become reinforced and intensified, latent centers become
definite centers and take on "good shape" which in turn are reshaped
as the design unfolds. [How is this different from "Boundaries"?]
In this manner, vague centers are reshaped and strengthened with more
definite centers. The overall shape of the centers is intensified
by these transformations and itself becomes a center possessing
"good shape."
[[NOTE:
at this point Cope is spending less and less time talking
about each of these properties and is picking up speed, zipping
through them. Im not sure how much more description Ill be able to
provide for the rest of them.]]
-
Local Symmetries
Recurring, and often co-located, structural similarities which
strengthen and reinforce centers, and which are themselves strengthened,
reinforced, and replicated. [Sounds like fractals to me.].
Local symmetry will almost always intensify any center. Each local
symmetry intensifies some local center. Gradually, the density of
such local symmetries will increase.
-
Deep Interlock and Ambiguity
[cf. cohesion?]
The pattern "City-Country-Fingers" from APL is an example of deep
interlock and ambiguity. [Hmmn - I wonder if many of the classic
drawings by M. C. Escher would also be good examples of this.] Along any
edge between two centers, random perturbations will form disturbances
whish exist as latent centers. As these seemingly random latent centers
are intensified, the proceed into one zone, or the other, or along the
edge. When centers along the edge are strengthened, they penetrate more
deeply into the two zones (centers) on either side; thus centers are
established which penetrate both of the large centers and new centers
along the edge will appear to belong equally to both sides.
-
Contrast
Is the zebra white with black stripes or black with white stripes?
One effect of structure preserving transformations is that they give
each center more distinctness by differentiating space between them and
within them. This differentiation from the surrounding space is
progressively intensified to achieve "contrast".
-
Graded Variation
As centers are added and intensified, the spaces around them form
step-by-step gradients pointing toward the center and strengthening
it [the "field effect" again?] Slowly graded variation will
appear throughout space, around many of the centers at both large and
small levels of scale. The gradients supplement and reinforce existing
centers.
-
Roughness
As the system evolves, centers (particularly the ones at larger layers
of granularity) connect in interesting ways to form "rough" boundaries,
edges, layers, and other shapes (sometimes unusual). Roughness should
occur down to 1/60 of an inch [is that another level of scale?].
One example is a system of growing crystals.
In order to ensure that smaller centers work together to form larger
ones, smaller centers are often irregular in shape ("syncopated in shape
and arrangement") to create a smooth fit of the smaller centers into the
larger centers. This kind of "imperfect similarity" gives rise to
"roughness", and is an outward sign of deeper order as larger centers
are being perfected.
-
Echoes
[cf. specialization inheritance]
Echoes are repeated structural similarities. They are structures which
repeat with slight variations from one another, as opposed to being
precisely identical [cf. variations of a theme in classical music].
Cope (reading again): "In the weatherbeaten face of an old man, the
lines and angles all over his face, make a similar pattern, centers are
organized with a similar morphology; there are echoes from point to
point throughout his face."
These similarities of process create structural similarities (or
"echoes") in different parts of the system: systems of similar angles
and shapes which bear a familial resemblance to each other in the
different centers where they occur.
-
The Void
[cf. class hierarchy refactoring]
"The Void" results from periodic "cleaning out" or "self-organizing".
Centers, or groups of centers, will sometimes become too abundant and/or
too intense. The resulting conglomeration begins to look a little
chaotic or "too busy" (perhaps even confusing). "The Void" is a kind of
protective-response [cf. basic animal instincts of self-preservation,
and preservation of the species] to preserve the structure of the
system by purging some of the overly-intense centers, replacing them
with a "homogeneous emptiness" which differentiates and clarifies some
of the smaller, less visible centers (perhaps even heretofore unnoticed
[latent?]).
In general, to protect structure and the multitude of smaller and less
important centers and overly differentiated space gets purged or cleaned
out -- replaced by a "homogeneous emptiness." Some of the smaller centers
are then strengthened by this resulting emptiness and homogeneity. So
"the Void" takes on the purpose of strengthening smaller centers that
were previously unnoticed.
-
Simplicity and Inner Calm
[cf. elegance? abstraction?]
A kind of "intensification by simplification" of centers which removes
unnecessary elements and distills the resulting centers to their more
basic essence. As the cleaning out of irrelevant structures continues,
and centers are further intensified by simplification, a state slowly
appears in which nothing unnecessary remains present. All irrelevant and
confusing centers that irritate the structure or reduce the
value/importance of other centers are swept away until a simple,
inner-state arises naturally as part of the structure-preserving
process. [[Hmmn - this one is starting to sound a lot like
"self-organizing systems", even more so than the void IMHO.].
-
Not-Separateness
[cf. coupling? connectedness?]
Cope reading again: "as the structure develops through its uncompleted
forms, the pressure to unify continues. Each part becomes wedded more
firmly to the others. Exaggerated differences are eliminated.
Not-separateness is a kind of ambiguous unity (e.g.: where does the pond
end and the shore begin? or where does the shoreline and and the sky
begin?) [How does this differ from "Deep Interlock and
Ambiguity"?] As the last centers are placed to create an almost
sheet-like unity, each part begins to appear inseparable from the
others.
[[These last three properties seem to be about taking things out,
rather than adding things into the mix -- cleaning house if you will.]]
Each "wholeness" is made entirely from centers which consist of these
elements in appropriate combination, and the resulting latent
structural boundaries (cf. "Golden" rectangles). As the wholeness of
the system unfolds, these 15 structure-preserving properties recur
more and more frequently at all levels of scale (they are both
comprehensive and dense in their pervasiveness). While this is
happening, latent centers in the system become progressively more
intense and more differentiated. Supposedly, this reflects precisely
how the 15 properties recur in nature and natural processes. [[Why
does all of this stuff keep making me think more and more of fractals?]]
Sequences
The order in which centers are created and intensified, and in which
structure-preserving transformation are applied, is of paramount
importance. This is where "process" becomes crucial. Alexander
says that modern architecture and urban planning doesn't pay enough
attention to process (not "process" like ISO 9000 or the SEI CMM, but
in terms of methods, and how "it" all works together and is integrated
into a "whole", self-sustaining ecosystem).
Centers, patterns, and structure preserving transformations must be
employed in a way such that no center nor transformation need be aware
of those which follow it. Each new element is introduced in the context
of previously introduced elements. The dependencies between elements
form one or more partial orderings. These "partial orderings" of centers
to visit and transformations to apply are called sequences. At
any given point in a sequence, the next transformation to apply should
be the one that preserves "wholeness" (the "life" of the system as a
whole) while having the greatest system-wide impact [hmmn - this
seems partially reminiscent of risk-based approaches which tackle the
riskiest areas first].
Processes (sequences) need to employ feedback. Very contemporary
processes make use of feedback to gain "wholeness" and to assess the
resulting system as a whole (while it is still "live", rather than
"postmortem") [how is this similar/different from Deming's use of
feedback and feed-forward for statistical quality control?]. A
sequence is like a path through a system; a guided tour of the system,
as you are building it, which incorporates immediate feedback (unlike
"pre-ordained" processes or procedures where everything is spelled out
up front). Each walk along the tour builds upon the system using
structure preserving transformations according to the laws of nature, in
order to reproduce in structures built by humans, the structural
qualities that recur in nature.
In the generator project that Alexander, Dick Gabriel, Ron Goldman and Cope
have been talking about together, Alexander is much less concerned about
the sequeencing of the patterns than about the fundamental process that
focuses on weak centers first. The fundamental process is essentially:
-
Consider the whole.
-
Focus on what can be done to increase wholeness
-
Find a place where the creation of a new center will achieve that
-
Add that center in a way that also intensifies the life of some larger center
-
Make another center of the same size, adding local symmetry
-
Contemplate the result for wholeness (the Rug Test questions)
-
Repeat starting at step 1
-
Stop when there is no more feeling of increase in wholeness.
This fundamental process will often be orthogonal to the structure of the
pattern language, which is built largely on a concept he calls "containment".
So what a generator would do is allow you to pick weak areas and add centers.
It might suggest an overall sequence, and would suggest patterns in addition
to individual centers now and then.
If you consider the Tea House sequence, which is articulated as a sequence
instead of a pattern language, it has 24 steps. Alexander notes that the
sequence is indeed important: there are 10^35 possible orderings of 24
steps. But he doesn't say that just one of them will work; probably a
few thousand will. And he says this without regard to any single partial
ordering or layering.
So, a pattern language is just a start. Remember, patterns are just
the gate. The real process comes from instinct and avoids explicitly
pre-arranged forms; he even says so at the end of TTWOB (or is it APL?)
How do we get there?
Alexander's architectural movement began in the 60s and has taken
nearly three decades to mature into what is contained in The Nature of
Order. Unlike other disciplines, software is not confined by the same
laws of nature as the physical world: It doesn't have to obey the laws
of physics, nor is it subject to other such things that might somehow
serve to prevent nightmarish spaghetti code.
As it turns out, the type of process described in The Nature of
Order is very much like what members of the so called "gentlemen
hacker" culture (which sprang out of MIT in the 60s) used to build their
systems. Examples of such "gentlemen hackers" are/were: Doug Lea,
Richard Gabriel, Don Knuth, .... Sadly, most people failed to realize
that, although these processes appeared to lack rigorous formality, they
did in fact entail a great deal of discipline, integrity, and
intellectual rigor that stemmed from pride in artisanship, and in one's
craft in general. These profoundly insightful "hackers" looked at the
system as "a whole" rather than as the mere sum of its parts. It is
unfortunate that this lack of formality was misconstrued as a lack of
discipline, transforming the word "hacker" from something to be
emulated, into something which is now loathed within software
engineering circles that place great emphasis upon process definition
and improvement.
There are two projects currently underway which are trying to make use
of the things described in The Nature of Order. Alexander is
involved with a project called "The Generator" which is a system to help
architects discern the proper sequencing of centers through which to
walk system designers. There is also a consortium of some of the big
names in software and other disciplines trying to work with Alexander to
do the same kind of thing for software (Cope and Dick Gabriel are
participating in this effort -- Cope doesn't appear to be too optimistic
about its likelihood of success and continued funding).
But software is intellectual thought "stuff"; it is group poetry
writing. The problem with this is that we lack a shared body of common
literature to use as a basis for our communication. Many of us in this
room have probably read some of "the classics" in American literature
like Huck Finn and Moby Dick. We don't yet have any analog
for this in the software culture. What percentage of software
developer's have all read the source code for things like Don Knuth's
MIX, or TEX? What about Bjarne Stroustrup's code in cfront?
How about the source code for Emacs (either Stallman's original version
written in TECO, or Gosling's re-write in C)?
The corporate culture in which most software is developed, actively
condemns this kind of information sharing. This makes it difficult for
us to come up with the software equivalent of a shared body of
literature. Corporate memory retention is generally very short
(typically <= 3 years) and fails to establish a value system which
instills within us the need to value such shared communication (some
efforts within the free software community are helping to push certain
people in this direction).
So the software patterns movement is still in its infancy (we still have
problems writing and defining patterns and pattern languages) and we may
very well have to sweat through 20-30 years of software patterns and
pattern languages before the industry is ready to progress and evolve as
a community to where Alexander has taken patterns now with The Nature
of Order. |