Pattern Language

From Patterns

Jump to: navigation, search

Patterns do not stand on their own - they exist in a context of peers, component and encompassing patterns. Christopher Alexander calls this network of patterns a "Pattern Language", which incorporates both the individual patterns and the 'grammar' that relates the patterns. This hierarchy of patterns maps well to a 'systems' view of problems and solutions. Finding the right 'grammar' is non-trivial. Christopher Alexander was able to use a spatial model, organizing patterns from the very large (regional) to the very small (ornamentation). Different domains of knowledge will require different grammars.

Note: I will capture questions and answers about Pattern Language in the Discussion tab, eventually integrating material into this page.


Contents

Definition of a Pattern Language

Using Pattern Languages in Design Engineering states "A group of tightly integrated patterns covering entirely a domain of interest is a pattern language (e.g. [1,5]). Pattern languages can represent bodies of knowledge on particular subjects. For example, Alexander’s pattern language [1] ostensibly describes solutions for every kind of problem faced by architects ranging from locating urban/suburban regions to the positioning of photographs and other decorations on the wall of rooms." In much the same way as a pattern documents the relationship between recurring problem/solution sets within a context, a Pattern Language describes the relationship between many patterns that make up a system.

What Are Pattern Languages states "A pattern language is a language that comprises patterns and the rules to put patterns together in meaningful ways, in a certain sequence. It tells how to build a whole, a system. Patterns encapsulate related forces so you can focus on local trade-offs using local thinking; pattern languages are about emergent behavior in systems." Again like the generative aspect of patterns, a Pattern Language guides the user to developing systems solutions where all the parts work together.


Structure of a Pattern Language

Pattern Languages incorporate hierarchy and varying degrees of granularity. In Christopher Alexander's architecture Pattern Language, the patterns are arranged in terms of scale, from the macro (regions) to the micro (ornamentation). At a specific level, a complete set of patterns has been identified when the user can fully visualize the design at that level (with no gaps or unnecessary patterns), and when all the forces have been resolved or balanced.

Christopher Alexander talks about encompassing patterns and component patterns. At any level within a Pattern Language, a particular pattern helps complete (or make 'whole') a pattern (or patterns) at a higher level. In turn, a pattern is completed by a series of component patterns. Individual patterns are therefore anchored in a larger system, helping us deal with both the systems implications of design while providing a wealth of detailed information at the component levels.

Christopher Alexander did not attempt to graphically depict his entire architectural Pattern Language, although individual parts are displayed using a form of network diagram. Patterns in A Pattern Language: Towns, Buildings, Construction contain references to encompassing and component patterns, but the relationships are not always bi-directional. This asymmetry may reflect different degrees of association. For example, the Closed Loop pattern depends on Diversity of inputs and outputs for the varies agents. If all companies in an industrial ecology community required the same inputs and produced the same outputs, there would be no opportunity to turn 'waste into food'. Although the Diversity pattern logically 'completes' Closed Loop, there may be other encompassing relationships that are stronger.

Developing a logical 'grammar' that relates the patterns within the Pattern Language will likely turn out to be one of the more challenging aspects of this project. Christopher Alexander used a spatial grammar which corresponds with the way architects think about design. A functional grammar seemed appropriate for this project, but initial attempts were not particularly productive, possibly because the strong multi-functional nature of many natural solutions. Scale (both spatial and temporal) looks promising - only time will tell.

Examples of Pattern Languages

Architecture

The original "Pattern Language" captured the key aspects of what Christopher Alexander called "timeless architecture" - the kind that works both aesthetically and functionally. Many architects have using this Pattern Language to facilitate meaningful discussions amongst the various people involved in the design. An example is the San Francisco Bay Area Studio, by Matt Taylor.


Sustainability

A recent development is the Conservation Economy Pattern Language, an effort led by Stuart Cowan (co-author of Ecological Design).


Community Planning

The report Pattern Language for Community Self-Made Design captures how Pattern Language relates to the larger aspects of design. It talks about user-generated design involving diverse participants and guiding analysis through a focus on recurrent design issues. From page 2:

"The next best option, then, is to have the community or individual work with the design professional to select and organize patterns into a coherent whole that supports the functions the community values. The important distinction between this and standard community involvement is that the community still designs, but with the help of a professional. This is in contrast to giving the professionals the hopes, fears, and ideas of the community and then waiting to see how the designer meets them."

There is also a strong "systems" flavour, encouraging an understanding of the elements both above (encompassing) and below (component) the specific problem being investigated. Integration of the overall design is essential. From page 3:

"There are a variety of different ways to protect people from the elements. These range from street trees to awnings, arcades or freestanding pavilions. The designer can then look at these common solutions and see what other patterns he or she is working with and see which solution melds with the overall character of the language chosen so far."

Additional information at Community Open Space Initiative (University of Washington, Seattle).


Pedagogical Patterns

Fourteen Pedagogical Patterns uses a fairly complex structure to describe each pattern. Of interest is the network at the end of the article that tries to show the relationship between the patterns.

Some Pedagogical Patterns uses a more compact form described in A Note on the Form.

Lastly, A Pattern Language for Course Development in Computer Science organizes the patterns by time along two dimensions:

  • the span of the course (Prior to the Course, Course as a Whole, Starting a Course, Evaluation)
  • the duration of activities (Scale of Weeks, Days, Hours, Minutes)

as well as a few 'miscellaneous groupings (Communication, Feedback, Dealing with Problems)


Software Development

Software developers have been one of the strongest advocates of Pattern Language outside of architecture. However, many of the implementations seem excessively detailed, taking more of a prescriptive approach rather than attempting to encourage understanding and communication outside of the discipline of software development. Even within that discipline, different Pattern Languages have developed for various phases of development, making communication across the breadth of design and development difficult.

One intriguing example is Organizational Patterns of Agile Software Development, which was developed collaboratively as a Pattern Language and subsequently published.


Using Pattern Language

Pattern Languages are not cookbooks - they cannot be blindly followed to develop a solution. Fil Salustri points out that "patterns are intended to stimulate thinking and learning by users." It is the intelligent selection and combination of patterns that creates a rich, vibrant and robust solution. Each individual using a Pattern Language selects from the larger palette those patterns that are meaningful to them, adapting and combining them to fit the specific context. At the same time, that individual can communicate intelligently with others, using the common set of patterns as a framework.

In A Pattern Language: Towns, Buildings, Construction, Christopher Alexander suggests the following procedure for adapting a Pattern Language to develop a solution.

  1. From the master list of patterns, identify the pattern that best fits the scope of the project.
  2. Reading this 'starting pattern', identify associated patterns that are both encompassing (one level up) or component (one level down). <See Discussion on Using Pattern Language for clarification on this point>
  3. Reading the next highest pattern from the starting pattern, identify associated patterns, but primarily at a lower level (the project may not allow creation of these higher patterns).
  4. Keep the list manageable by including only patterns that make sense for this project (if in doubt, drop it).
  5. Add additional patterns or modify existing patterns if necessary.
Personal tools