A pattern language is a method of describing good design practices within
a field of expertise. The term was coined by architect Christopher
Alexander and popularized by his book A Pattern Language. A pattern language is
an attempt to express the deeper wisdom of what brings aliveness within a
particular field of human endeavor, through a set of interconnected
expressions arising from that wisdom. Aliveness is one placeholder term for
"the quality that has no name": a sense of wholeness, spirit, or grace, that
while of varying form, is precise and empirically verifiable. Some advocates
of this design approach claim that ordinary people can use it to
successfully solve very large, complex design problems.
Like all languages, a pattern language has vocabulary, syntax, and grammar—but
a pattern language applies to some complex activity other than
communication. In pattern languages for design, the parts break down in this
way: The language description—the
"vocabulary"—is a collection of named, described solutions to problems in a
field of interest. These are called "design patterns." So, for example, the
language for architecture describes items like: settlements, buildings,
rooms, windows, latches, etc. Each solution includes "syntax," a
description that shows where the solution fits in a larger, more
comprehensive or more abstract design. This automatically links the solution
into a web of other needed solutions. For example, rooms have ways to get
light, and ways to get people in and out.
The solution includes "grammar" that describes how the solution solves a
problem or produces a benefit. So, if the benefit is unneeded, the solution is
not used. Perhaps that part of the design can be left empty to save money
or other resources; if people do not need to wait to enter a room, a simple
doorway can replace a waiting room. In the language description, grammar and
syntax cross index to other named solutions, so the designer can quickly
think from one solution to related, needed solutions, and document them in a
logical way. In Alexander's book, the patterns are in decreasing order by
size, with a separate alphabetic index. The web of relationships in the index of
the language provides many paths through the design process.
This simplifies the design work because designers can start the process from any
part of the problem they understand and work toward the unknown parts. At the
same time, if the pattern language has worked well for many projects, there is
reason to believe that even a designer who does not completely understand the
design problem at first will complete the design process, and the result will
be usable. For example, skiers coming inside must shed snow and store
equipment. The messy snow and boot cleaners should stay outside. The
equipment needs care, so the racks should be inside.
It really is a language: There is even an analogy to spelling or phonology, in
the documentation standards for the designs and patterns. Without these, the
people building the design won't be able to read the design.
What is a pattern? When a designer designs
something—whether a house, computer program, or lamp—they must make many
decisions about how to solve problems. A single problem is documented with its
typical place, and use with the most common and recognized good solution seen
in the wild, like the examples seen in dictionaries. Each such entry is a
single design pattern. Each pattern has a name, a descriptive entry, and some
cross-references, much like a dictionary entry. A documented pattern should
explain why that solution is good in the pattern's contexts.
Many patterns form a language Just as words must have grammatical and
semantic relationships to each other in order to make a spoken language useful,
design patterns must be related to each other in position and utility order to
form a pattern language. Alexander's work describes a process of
decomposition, in which the designer has a problem, selects a solution, then
discovers new, smaller problems resulting from the larger solution.
Occasionally, the smaller problems have no solution, and a different larger
solution must be selected. Eventually all of the remaining design problems are
small enough or routine enough to be solved by improvisation by the builders,
and the "design" is done. The actual organizational structure is
left to the discretion of the designer, depending on the problem. This
explicitly lets a designer explore a design, starting from some small part.
When this happens, it's common for a designer to realize that the problem is
actually part of a larger solution. At this point, the design almost always
becomes a better design. In the language, therefore, each pattern
has to indicate its relationships to other patterns and to the language as a
whole. This gives the designer using the language a great deal of guidance about
the related problems that must be solved.
The most difficult part of having an outside expert apply a pattern language
is in fact to get a reliable, complete list of the problems to be solved. Of
course, the people most familiar with the problems are the people that need a
design. So, Alexander famously advocated on-site improvisation by concerned,
empowered users, as a powerful way to form very workable large-scale initial
solutions, maximizing the utility of a design, and minimizing the design
rework. The desire to empower users of architecture was, in fact, what led
Alexander to undertake a pattern language project for architecture in the
first place. Design problems in a context
An important aspect of design patterns is to identify and document the key
ideas that make a good system different from a poor system, and to assist in the
design of future systems. The idea expressed in a pattern should be general
enough to be applied in very different systems within its context, but still
specific enough to give constructive guidance.
The range of situations in which the problems and solutions addressed in a
pattern apply is called its context. An important part in each pattern is to
describe this context. Examples can further illustrate how the pattern
applies to very different situation. For instance, Alexander's pattern "A
PLACE TO WAIT" addresses bus stops in the same way as waiting rooms in a
surgery, while still proposing helpful and constructive solutions. The
"Gang-of-Four" book by Gamma et al. proposes solutions that are independent
of the programming language, and the program's application domain.
Still, the problems and solutions described in a pattern can vary in their
level of abstraction and generality on the one side, and specificity on the
other side. In the end this depends on the author's preferences. However, even
a very abstract pattern will usually contain examples that are, by nature,
absolutely concrete and specific. Patterns can also vary in how far they
are proven in the real world. Alexander gives each pattern a rating by zero, one
or two stars, indicating how well they are proven in real-world examples. It is
generally claimed that all patterns need at least some existing real-world
examples. It is, however, conceivable to document yet unimplemented ideas in a
pattern-like format. The patterns in Alexander's book also
vary in their level of scale - some describing how to build a town or
neighbourhood, others dealing with individual buildings and the interior of
rooms. Alexander sees the low-scale artifacts as constructive elements of
the large-scale world, so they can be connected to a hierarchic network.
= Balancing of forces = A pattern must characterize the problems
that it is meant to solve, the context or situation where these problems arise,
and the conditions under which the proposed solutions can be recommended.
Often these problems arise from a conflict of different interests or
"forces". A pattern emerges as a dialogue that will then help to balance
the forces and finally make a decision. For instance, there could be a pattern
suggesting a wireless telephone. The forces would be the need to communicate,
and the need to get other things done at the same time. A very specific pattern
would be just "WIRELESS TELEPHONE". More general patterns would be "WIRELESS
DEVICE" or "SECONDARY ACTIVITY", suggesting that a secondary activity
should not interfere with other activities.
Though quite unspecific in its context, the forces in the "SECONDARY ACTIVITY"
pattern are very similar to those in "WIRELESS TELEPHONE". Thus, the
competing forces can be seen as part of the essence of a design concept
expressed in a pattern. = Patterns contain their own rationale =
Usually a pattern contains a rationale referring to some given values. For
Christopher Alexander, it is most important to think about the people who
will come in contact with a piece of architecture. One of his key values is
making these people feel more alive. He talks about the "quality without a
name". More generally, we could say that a good
system should be accepted, welcomed and happily embraced as an enrichment of
daily life by those who are meant to use it, or - even better - by all people it
affects. For instance, when discussing a street café, Alexander discusses the
possible desires of a guest, but also mentions people who just walk by.
The same thinking can be applied to technical devices such as telephones and
cars, to social structures like a team working on a project, or to the user
interface of a computer program. The qualities of a software system, for
instance, could be rated by observing whether users spend their time enjoying
or struggling with the system. By focusing on the impacts on human
life, we can identify patterns that are independent from changing technology,
and thus find "timeless quality". Generic structure and layout
Usually the author of a pattern language or collection chooses a generic
structure for all the patterns it contains, breaking each into generic
sections like context, problem statement, solution etc.
C. Alexander's patterns, for instance, each consist of a short name, a rating,
a sensitizing picture, the context description, the problem statement, a
longer part of text with examples and explanations, a solution statement, a
sketch and further references. This structure and layout is sometimes
referred to as the "Alexandrian form". Alexander uses a special text layout to
mark the different sections of his patterns. For instance, the problem
statement and the solution statement are printed in bold font, the latter is
always preceded by the "Therefore:" keyword. Some authors instead use
explicit labels, which creates some degree of redundancy.
= Meaningful names = When design is done by a team, pattern
names will form a vocabulary they can share. This makes it necessary for
pattern names to be easy to remember and highly descriptive. Some examples from
Alexander's works are WINDOW PLACE and A PLACE TO WAIT.
Aggregation in an associative network A pattern language, as thought by
Alexander, contains links from one pattern to another, so when trying to
apply one pattern in a project, a designer is pushed to other patterns
that are considered helpful in its context.
In Alexander's book, such links are collected in the "references" part, and
echoed in the linked pattern's "context" part - thus the overall structure is a
directed graph. A pattern that is linked to in the "references" usually addresses
a problem of lower scale, that is suggested as a part of the higher-scale
problem. For instance, the "PUBLIC OUTDOOR ROOM" pattern has a reference to
"STAIR SEATS". Even without the pattern description,
these links, along with meaningful names, carry a message: When building a
place outside where people can spend time, consider to surround it by stairs
where people can sit. If you are planning an office, consider to arrange
workspaces in small groups. Alexander argues that the connections in the
network can be considered even more meaningful than the text of the patterns
themselves. The links in Alexander's book clearly
result in a hierarchic network. Alexander draws a parallel to the
hierarchy of a grammar - that is one argument for him to speak of a pattern
language. The idea of linking is generally
accepted among pattern authors, though the semantic rationale behind the links
may vary. Some authors, however, like Gamma et al. in Design Patterns, make
only little use of pattern linking - possibly because it did not make that
much sense for their collection of patterns. In such a case we would speak
of a pattern catalogue rather than a pattern language.
= Usage = Alexander encouraged people who used his
system to expand his language with patterns of their own. In order to
enable this, his books do not focus strictly on architecture or civil
engineering; he also explains the general method of pattern languages. The
original concept for the book _A Pattern Language_ was that it would be published
in the form of a 3-ring binder, so that pages could easily be added later; this
proved impractical in publishing. The pattern language approach has been used
to document expertise in diverse fields. Some examples are architectural
patterns, computer science patterns, human computer interaction patterns,
educational patterns, social action patterns, and group facilitation
patterns. The pattern language approach has also been recommended as a way to
promote civic intelligence by helping to coordinate actions for diverse people
and communities who are working together on significant shared problems.
Alexander's specifications for using pattern languages as well as creating
new ones remain influential, and his books are referenced for style by
experts in unrelated fields. It is important to note that notations
such as UML or the flowchart symbol collection are not pattern languages.
They could more closely be compared to an alphabet: their symbols could be used
to document a pattern language, but they are not a language by themselves. A
recipe or other sequential set of steps to be followed, with only one correct
path from start to finish, is also not a pattern language. However, the process
of designing a new recipe might benefit from the use of a pattern language.
= Simple example of a pattern = Name: ChocolateChipRatio
Context: You are baking chocolate chip cookies in small batches for family and
friends Consider these patterns first:
SugarRatio, FlourRatio, EggRatio Problem: Determine the optimum ratio of
chocolate chips to cookie dough Solution: Observe that most people
consider chocolate to be the best part of the chocolate chip cookie. Also
observe that too much chocolate may prevent the cookie from holding
together, decreasing its appeal. Since you are cooking in small batches, cost
is not a consideration. Therefore, use the maximum amount of chocolate chips
that results in a really sturdy cookie. Consider next: NutRatio or CookingTime
or FreezingMethod Origin
Christopher Alexander, an architect and author, coined the term pattern
language. He used it to refer to common problems of the design and construction
of buildings and towns and how they should be solved. The solutions proposed
in the book include suggestions ranging from how cities and towns should be
structured to where windows should be placed in a room.
The framework and philosophy of the "pattern language" approach was
initially popularized in the book A Pattern Language that was written by
Christopher Alexander and five colleagues at the Center for
Environmental Structure in Berkeley, California in the late 1970s. While A
Pattern Language contains 253 "patterns" from the first pattern, "Independent
Regions" to the last, "Things from Your Life", Alexander's book The Timeless Way
of Building goes into more depth about the motivation and purpose of the work.
The following definitions of "pattern" and "pattern language" are paraphrased
from "A Pattern Language": "A pattern is a careful description of a
perennial solution to a recurring problem within a building context,
describing one of the configurations that brings life to a building.
Each pattern describes a problem that occurs over and over again in our
environment, and then describes the core solution to that problem, in such a way
that you can use the solution a million times over, without ever doing it the
same way twice." A pattern language is a network of
patterns that call upon one another. Patterns help us remember insights and
knowledge about design and can be used in combination to create solutions.
Since the original publications, thinking in terms of patterns and
pattern languages has been applied to other fields, including software design,
user interface design, classroom curriculum, and social change.
Application domains Christopher Alexander's idea has been
adopted in other disciplines, often much more heavily than the original
application to architecture as depicted the book A Pattern Language. Recent
examples include in software engineering and, more generally, to computer
science, as well as in interaction designs. Pedagogical patterns are used
to document good practices in teaching. The book "Liberating Voices: A Pattern
Language for Communication Revolution," containing 136 patterns for using
information and communication to promote sustainability, democracy and positive
social change, was published in 2008. The deck Group Works: A Pattern Language
for Bringing Life to Meetings and Other Gatherings, was published in 2011.
Recently, patterns were also introduced into Systems architecture design. Chess
strategy and tactics involve many patterns from opening to checkmate.
See also Mind map
Concept map Design pattern
Rule of thumb Software design pattern
Feng shui Typology
References Further reading
Christopher Alexander, Sara Ishikawa, Murray Silverstein. 'A Collection of
Patterns which Generate Multi-Service Centres' in Declan and Margrit Kennedy:
The Inner City. Architects Year Book 14, Elek, London. ISBN 0 236 15431 1.
Alexander, C.. A Pattern Language: Towns, Buildings, Construction. USA:
Oxford University Press. ISBN 978-0-19-501919-3.
Alexander, C.. The Timeless Way of Building. USA: Oxford University Press.
ISBN 978-0-19-502402-9. Schuler, D.. Liberating Voices: A
Pattern Language for Communication Revolution. USA: MIT Press. ISBN
978-0-262-69366-0. Leitner, Helmut: Pattern Theory:
Introduction and Perspectives on the Tracks of Christopher Alexander. ISBN
1505637430. External links
= About patterns in general = Tips For Writing Pattern Languages, by
Ward Cunningham Essay on the pattern language as it
relates to urban design Use of patterns for scenario development
for large scale aerospace projects Lean Startup Business Model Pattern
What Is a Quality Use Case? from the book Patterns for Effective Use Cases
Characteristics of group facilitation patterns
= Online pattern collections = patternlanguage.com, by Christopher
Alexander architypes.net - collaborative pattern
language project for architecture Fused Grid - A Contemporary Urban
Pattern "a collection and synthesis of neighbourhood patterns"
ReliableProsperity.net - Patterns for building a "restorative, socially just,
and reliably prosperous society". hcipatterns.org - Patterns for HCI
The Portland Pattern Repository, hosted by Cunningham & Cunningham, Inc.
Yahoo! Design Pattern Library Group Works: A Pattern Language for
Bringing Life to Meetings and Other Gatherings
The Core Protocols, a set of team communication patterns
Liberating Voices! Pattern Language Project, hosted by
http:www.publicsphereproject.org Public Sphere Project]
= Pattern Language Books = Liberating Voices: A Pattern Language
for Communication Revolution, Schuler, Douglas. MIT Press, 2008.