A pattern is not an invention; it is an uncovered solution, that has been observed to work for some time, in a variety of situations. Patterns are the result of empirical observations, and they can constitute a phenomenological foundation for a scientific theory ([SALINGAROS-2000]).
It is therefore of essence to have an approach that makes it possible to observe patterns on an empirical basis, in order to identify appropriate patterns, with all necessary attributes, and create an ontology, vocabulary and taxonomy of the discovered patterns; ordering and/or grouping the patterns according to scale and/or other relevant dimensions (like general-specific); documenting their interconnectedness and relationships.
Pattern Collection and Qualification
Once “normal” patterns have been identified, they need to be further selected and qualified in order to find those that can become Alexandrian patterns to construct the actual pattern language.
The pattern language development process, founded on pattern theory ([MESZAROS-1997];[SALINGAROS-2000]) starts with an analysis of every single pattern (ordinary acceptation) identified during the pattern discovery phase. The analysis will proceed according to the following steps:
Context Recognition. An Alexandrian pattern always exists with reference to a peculiar situation, or context, that can be clearly spelled out. Often the initial context is the result of the application of other patterns, in the attempt of solving higher-order problems.
Problem Identification. The purpose of an Alexandrian pattern is to resolve a problem, which needs to be identified precisely.
Diagnosis of Forces. The problem is the result of conflicting and unbalanced forces, and those forces must be identified.
Solution Formulation. The pattern must embody a solution to the identified problem, with respect to its context.
Confidence Assessment. A pattern is such because it re-occurs several times in reality. The more frequently a pattern can be recognized, the higher confidence can we have in it being representative of something characterizing the context.
Related Pattern Linkage. Once a pattern has been applied, the initial context undergoes a transformation. The new context might be one wherein other patterns apply. It is necessary to identify any subordinate patterns that are applicable in the new context.
The Alexandrian Pattern Form
The objective of the analysis is to either discard the pattern as non-Alexandrian, or to normalize its description through conventional attributes in a Pattern Form. The attributes of a pattern form capture the outcome of the analytical steps performed during the qualification process, and collectively constitute a canonical description for the qualified pattern.
A pattern form is essentially a template. Each pattern is described by the same format for convenience and clarity ([ALEXANDER-1977]).
There is no standard template to refer to, and one can develop new templates as appropriate ([MESZAROS-1997]). The organizational patterns for software productivity ([COPLIEN-2004]) were documented with the original Alexandrian form ([ALEXANDER-1977]), which is obviously the “classical” pattern form.
The Alexandrian pattern form is characterized by the following attributes:
Pattern Number, Name & Confidence. The pattern number serves for identification and cross-reference purposes. The name can be descriptive, evocative, provocative or mnemonic. Pattern names should be nouns, and not verbs; they should support clear communication. The confidence is expressed as a three-tiered scale: truly invariant patterns, possibly invariant patterns, and proto-patterns.
Archetypical Diagram or Illustrative Image. Used mostly to stimulate reader’s imagination and/or visual memory.
Context. A description of the setting where the problem is encountered. Connection to larger or related patterns that might have already been applied and that contribute to defining the context.
Forces/Problem Headline. The “essence of the problem,” outlining the conflicting forces that create the problem and that must be balanced in the solution. The statement should move and inspire readers to find solutions. Forces should be described so that the reader acknowledges, intellectually and emotionally, that this is a “hard problem” ([RISING-1999]).
Body/Problem Description. A short description including, evidence, empirical background, stories which additionally qualify the forces that cause the problem. The reader should build-up further tension, and admit that “This is a harder problem than I realized!” and the tension will be resolved by the solution ([RISING-1999]). The problem must be expressed in a general way, independent of the context, because the same problem can have different solutions in different contexts ([HEIN-2011]).
Solution. The “heart of the pattern” that describes how to resolve the forces, often expressed in an imperative style. The expression of the solution should also be short, straight-to-the-point, and synthetic. The described solution is relative to the stated context ([HEIN-2011]). However, the solution must be stated so that the reader can solve the problem adapting it to his/her context, preferences, particular situation, local conditions, and so on. The solution is like a practical prescription that allows to incorporate the pattern into a design ([SALINGAROS-2000]).
Structural Diagram. If applicable, a diagrammatic representation of the solution.
Resulting Context and Related Patterns: A non-trivial description of the situation after the pattern has been applied, protraying the resulting context. By comparing the resulting context, with the initial context, one gains an understanding of the costs and benefits of the pattern. The resulting context might become the initial context of other patterns. These patterns are listed when they are needed to complete the pattern, or to embellish it ([ALEXANDER-1977]). This is where the links, the interconnectedness between patterns are expressed. This is where the multi-dimensional aspects of the pattern language are captured.
The collection of all patterns documented through a pattern form constitute a Pattern Catalog, which can be considered as the lexicon (vocabulary) of the pattern language.
Did you find the above interesting?
It is an abstract from the book TameFlow Patterns: How to Design Organizations that Flow