Patterns and Index Cells

According to Christopher Alexander, a pattern is a morphological law that establishes a set of relationships in space. In the most general form:

X -> r (A, B, ...), which means:

Within a context of type X, the parts A, B, ... are related by the relationship r.


Later he expanded his definition as follows:

Each pattern is a three-part rule r(P, X, S), which expresses a relation r between a certain context X, a problem P, and a solution S.

(The 'problem' part can be understood as the semantics of the pattern)


Then he developed a theory of beauty that transcends architecture, other human crafts, and structures in nature, based on centers, structural features, and process.

A center is something that draws our eye as a focus. It could be the top of a column, the center of a geometric design, or a well-proportioned bit of space at the side of a room. Centers have at least one axis of symmetry, and are reinforced by the centers around them.

Structural features enhance and strengthen centers to increase the level of wholeness in a system.


James Coplien applied Alexander's theory to the design of software patterns. In a software pattern, there are interacting centers. The interaction can be specified using protocols.
From the viewpoint of IC theory, the center can be specified by an IC cell. The interaction protocol is specified by the state transition and message exchange of the IC cells.

Therefore from this viewpoint, a software pattern can be specified as a collection of interacting IC cells, or an IC system.

(What need to be added, is how to transform patterns defined by relations into an IC system.)