Pattern language
A pattern language is a way of expressing multiple solutions to complex problems.
Christopher Alexander coined the term Pattern Language to emphasize his
belief that people had an innate ability for design that paralleled their
ability to speak.
Chris's book A Timeless Way Of Building is the most instructive in
describing his notion of a pattern language and its application to designing
and building buildings and towns.
He defines a 'pattern' as a three part construct. First comes the 'context';
under what conditions does this pattern hold. Next are a 'system of forces'.
In many ways it is natural to think of this as the 'problem' or 'goal'. The
third part is the 'solution'; a configuration that balances the system of
forces or solves the problems presented.
Pattern Language Rules:
* Think about your situation as a very rough hierarchy of ideas like a
fractal, from the big picture to the details
* Put different ideas on different pages, named with a title that
describes the idea in a few words
* On an Index page, order the ideas from large scale to details. This
allows the entire PL to be linearized and printed out if necessary. It
also vastly increases the usability of the system if (almost) all the
pages are mentioned in a big list.
* For each Pattern, write a description of the problem, the solution, and
an example. While writing, link to the Patterns that relate in the
less, and more, specific direction.
* Graphics are good.
* If there are multiple people editing a PL, sign your work, e.g. Daniel
MacKay. This also allows you to quickly get a list of your pages using
the Reciprocal Link on every page.
* Give references where appropriate
* Put a link back to the Index Page at the bottom of each pattern.
You will probably need one window open for writing your page, and at least
one more to jump back and forth between references.
Ward Cunningham created Wikiwiki as a way to express pattern languages
effectively; the Portland Pattern Repository has hundreds of patterns for a
variety of things, including many for extreme programming.
This content from Wikipedia is licensed under the GNU Free Documentation License.
|
|