Patterns are a systematic way to capture the experience of experts about good or best practices and document these nuggets of wisdom in an accessible way for designers. Patterns are appreciated by academics and practitioners alike because they describe and reason about good designs in a way that makes it possible for others to understand and reuse it.
The pattern approach has its roots in the work of the architect Christopher Alexander who has developed a pattern language about towns, building and constructions. He captured whole forms of meaningful designs and connected them into a language. Alexander provides a basic definition of patterns:
Patterns are rules that express a relation between a certain environment (context), a problem (conflict of forces) and a solution (resolution of the conflict). They describe recurrent designs on a medium level of abstraction. To use a solution “a million times over, without ever doing it the same way twice” implies that the description needs to be generic and adaptable to new situations. This makes the pattern approach interesting for academics because they can find general rules and reasons for the relations. At the same time patterns are specific enough to grasp the gestalt of a solution and provide generative directions how to build it. Practitioners appreciate that patterns have practical relevance, help to build better, human-friendly solutions and provide insights into non-trivial problems.
While patterns have started in the field of architecture, the approach is beneficial to all design disciplines. The community of object-oriented software designers has first adopted the approach. Richard Gabriel suggests the following definition for the field of software design:
Buschmann, Henney, & Schmidt (2007) summarize in “Pattern-oriented software architecture. Volume 5: On patterns and Pattern Languages” the common core properties of patterns and pattern languages:
The software community also started to document pedagogical patterns. The Pedagogical Patterns Project writes:
Today patterns have been written for many design disciplines, including business, organizations, human-computer-interaction, web design, online communities, e-learning and game design.
While there are many different description formats, a good pattern should always capture the following components:
The situation in which the solution is applicable. The context describes the conditions under which we find a problem that can be solved by the pattern. The key to describe the context is to ask when-questions. When can this pattern be applied? When should it not be applied? Which other patterns have led to this context?
This section describes the problem that can be found in a certain context. It reasons about why something has to be done and why it could be done in the specific way described in the solution. The key to describe the problem and forces is to ask why-questions. Why do we have to follow this specific solution? Why do we need this specific form? Why can’t we do another thing instead? Each single force gives another answer to such why-questions. A force explains the cause for a specific design decision by giving the “because” to the “why”.
The solution describes how the problem and the conflict of forces can be resolved by a specific structure. The key to describe the solution is to ask what-, how- and who-questions. What is the general structure of the solutions? How can I generate the solution structure? How do the parts relate and interact? Who is participating in the solution? What are variations of the solution? Many pattern authors first provide a brief summary of the solution form (what the solution is about) followed by implementation details. Examples can illustrate the whole solution or parts of it. Known uses refer to empirical evidence that the solution has worked in actual projects.
This section reasons about the impact of applying a solution. It describes the resulting context, benefits, costs, drawbacks, tradeoffs and liabilities of the solution. Which forces have been resolved or weakened? Which forces remain or have been newly introduced? What needs to be done next and which other patterns could support this solution?
Pattern authors often use different names for these sections or split one component into several sub-sections.
If you have never written a Pattern before, why should you do so?
To get an easy start into pattern writing, download our introductory information pack.
This information pack consists of the following papers: