SEM2007 Methodology
From Patterns
Contents |
Methodology
Objectives
The Patterns in Nature project started as an attempt to capture recurrent solutions from nature that would be of value to designers developing efficient, effective and sustainable solutions. The information would be made available in a form easily accessible and useful to designers. Although originally thought of as a means of translating knowledge from biology to design, the output can also be seen as an intermediary between knowledge domains, in that it will incorporate technical information developed by designers.
Patterns
Christopher Alexander's Pattern Language concept was chosen as the framework for the project. In The Timeless Way of Building and A Pattern Language, he described a set of 253 patterns he believed captured the key aspects of buildings that were 'alive', in the sense that they directly enhanced the experience of the people who interacted with the building. Many of the concepts come from 'vernacular' architecture that is not obviously designed, but grows over a period of time out of the needs of users.
According to Fil Salustri, "A pattern is a natural-language, context-dependent description of a solution to a class of problems, that is both generative and descriptive." Whereas knowledge and method are usually communicated separately, patterns combine content and methodology. The patterns and relationship between patterns captures knowledge about a domain in a rich and accessible fashion, describing both the 'what' and the 'why'. The construct of the pattern and the Pattern Language methodology provides the 'how' - the instructions for generating solutions specific to a problem and a context.
Patterns have a defined structure which expresses the relationship between a problem, a context and a solution. We are using a simplified template for each pattern proposed by Salustri, containing the following parts:
- A short, descriptive name that quickly conveys the intent of the pattern.
- A concise statement of the problem, including the context where the pattern can be applied and the forces or drivers that create the problem and need to be resolved to obtain a successful solution.
- Therefore: The solution, including the tasks involved, how the outcome is used, why the solution works, and any relationship to other patterns. The solution resolves the forces or drivers, moving the system from the undesirable to a more preferred state. Examples from different fields can demonstrate that the problem/solution set is recurrent and relevant.
- But: The consequences of implementing the solution, to help avoid 'surprises'. Can also show how the solution changes the context of the problem, either by eliminating contradictions between forces/drivers or by working at a different level than the original problem (sub-system or super-system).
- See Also: Pointers to related patterns not mentioned elsewhere.
A good example of a pattern is the Variable Fluid Mixer. It describes the problem in rich detail so that the reader can not only determine if the pattern is relevant to the reader's circumstances, but also gain insight into the underlying causes of the problem. The Therefore section both describes the solution and explains how the solution can be generated. The But section describes additional factors that need to be taken into consideration, as well as the impact of the solution on reliability.
According to Brad Appleton, "A pattern is where theory and practice meet to reinforce and complement on another, by showing that the structure is describes is useful, usable, and used!" A good pattern has a number of characteristics:
- "It solves a problem: Patterns capture solutions, not just abstract principles or strategies."
- "It is a proven concept: Patterns capture solutions with a track record, not theories or speculation."
- "The solution is not obvious: ... The best patterns generate a solution to a problem indirectly -- a necessary approach for the most difficult problems of design"
- "It describes a relationship: Patterns don't just describe modules, but describe deeper system structures and mechanisms."
- "The pattern has a significant human component ... the best patterns explicitly appeal to aesthetics and utility."
Pattern Language
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 ties the patterns together. According to Appleton in Patterns and Software: Essential Concepts and Terminology, "... a pattern language is a collective of such [recurring] solutions which, at every level of scale, work together to resolve a complex problem into an orderly solution according to a pre-defined goal." Such a pattern language "... reveals the inherent structures and relationships of its constituent parts ...". A Pattern Language describes the relationship between many patterns that make up a system, allowing the user to solve larger problems that cannot be handled by individual patterns.
Good pattern languages incorporate the concepts of completeness and wholeness. Salustri in 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."
Pattern languages also have an generative aspect, but at a systems level. What Are Pattern Languages states "Patterns encapsulate related forces so you can focus on local trade-offs using local thinking; pattern languages are about emergent behavior in systems." Through the interaction between individual patterns, dynamic and adaptive systems can result.
Good pattern languages maintain consistency language across all levels. Each level contains a complete set of patterns such that the user can fully visualize the design at that level (with no gaps or unnecessary patterns), and all the forces have been resolved or balanced. Specific levels may address different design scales or design disciplines. However, regardless of the level or scale initially chosen to analyze a design, the designer can explore levels above and below to gain insights on the larger system as well as more detailed components. In addition to improving the overall completeness and 'fit' of a specific design, the scale linking nature of a pattern language can also facilitate communication and collaboration in an inter-disciplinary setting.
Developing a logical 'grammar' that relates the patterns within the pattern language is often a difficult and time-consuming process. Christopher Alexander used a spatial grammar which corresponds with the way architects think about design. Even then, the grammar only emerged after numerous patterns had been defined and their relationships analyzed. An initial attempt to use a functional grammar for this project was not particularly successful, possibly because the strong multi-functional nature of many complex systems. Scale (both spatial and temporal) may prove to be useful, at least at a high level.
Key Attributes
Patterns and pattern languages have a number of unique features that make them particularly useful to the field of design, especially involving complex, inter-related problems:
- Clearly defines the problem, the context, the solution and the consequences
- Describes the final solution and also guides user in how that solution can be realized (combines methodology with knowledge and systems relationships)
- Uses simple, concise and concrete language that can be communicated and shared with others
- Practical - according to Appleton, "Patterns are are Useful, Useable, and Used"
- A bottoms-up, solutions-based, emergent model (in comparison to more top-down, theoretical models)
- A simple framework that helps make sense of the complexity and richness of real systems
- Although primarily quantitative (soft/rich), can also incorporate qualitative information (hard/simple)
- Encourages 'piece-meal', organic, continuous and dynamic growth (in contrast to the more discontinuous 'replacement' approach of more traditional change)
- Allows the user to develop their own insights as they tailor the pattern language to the specific task
Applications
The original pattern language developed by Christopher Alexander is still used by many architects as a way to communicate more effectively with clients and other stakeholders and to develop collaborative designs. An example is the Community Open Space Initiative (University of Washington, Seattle). 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."
Pattern languages have become very popular in software development, starting with the 1987 work by Ward Cunningham and Kent Beck on Smalltalk. Jim Coplien's work on C++ idioms led up to the seminal Design Patterns: Elements of Reusable Object-Oriented Software by Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. The focus has been primarily on software architecture and design. Organizational Patterns of Agile Software Development is an example of using a pattern language to explore, document and communicate software development processes. Additional references can be found in Appleton's article.
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. 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)
Recently, Stuart Cowan led a project at Ecotrust to develop a Conservation Economy Pattern Language whose "fifty-seven patterns provide a framework for an ecologically restorative, socially just, and reliably prosperous society. They are adaptable to local ecosystems and cultures, yet universal in their applicability. ... Together, the patterns form a visual and conceptual framework that can be used to inspire innovation, focus planning efforts, and document emerging best practices. A conservation economy comprehensively integrates Social, Natural, and Economic Capital to demonstrate that a sustainable society is both desirable and achievable."
Benefits
By mapping a domain of knowledge, the pattern language will provide structured access to operational information about well-functioning systems (both natural and technical), in as much depth as the pattern language currently supports. It can suggest fruitful avenues for individual analysis and solution development, and can help focus attention on root problems.
By using a common, jargon-free language at all levels, the pattern language can encourage communication and collaboration between diverse disciplines. It provides a common framework for both describing problems and identifying solutions, facilitating the transfer of knowledge across disciplines. By support a range of solutions from the natural to the technical, it allows designers to shift between disciplines with less effort than existing knowledge sources, integrating the best components into more sustainable designs.
By arranging patterns in a network or hierarchy, the pattern language encourages talking a 'systems approach' to a problem. A designer can initially start investigating patterns at a level in the pattern language that is appropriate and relevant to the problem. Identifying and studying patterns at that level in detail encourages a deeper understanding of the problem. Moving up in the pattern network ensures that the larger (super-system) context is explored, potentially opening up new solution pathways. Moving down in the hierarchy identifies component patterns that need to be analyzed and incorporated into the 'whole' solution.
