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.
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)
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.
In a software pattern, there are interacting centers. The interaction
can be specified using protocols.
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.)