Pattern Language For Pattern Languages

This is an attempt to capture the characteristics and attributes that make up a good PatternLanguage. We are addressing the problem of writing a cohesive set of patterns that balance each other and resolve a set of forces within a common domain.

Contribute your patterns for PatternLanguages, characteristics of what makes a good language and instances of pattern languages here, or by send them to AliArsanjani. I am compiling a list of over 60 pattern languages and will be publishing a common set of desirable characteristics leading to a set of patterns here. You can also watch http://www.arsanjani.org/pl

--AliArsanjani


Since the above has not been edited since January 8, 2002, I'm adding some excerpts from the above-mentioned page:

WardCunningham:

1) Pick a whole area, not just one idea. I like subject matter that is practical but seldom explored in a text book. You know, the kind of stuff you have to learn from your colleagues on the job. The discussion on the "patterns" list got me thinking about checking data.

2) Make a list of all the little things you have learned through the years about the area. Imagine that your kid brother has just taken responsibility for this area on his first big job. You're getting together this weekend. What are you going to tell him. Make a list.

3) Cast each item on your list as a solution. I like to write a sentence with "therefore" in the middle. You will have to think a little deeper here to figure out the forces that bear on your solutions. It's ok to speculate. I find this to be a rewarding activity since I often find new reason for what I do.

4a) Now write each item as a Pattern. I've come to favor a four paragraph form where the second paragraph ends with the pivotal "therefore:". This is a good time to flip through Alexander's Pattern Language. I feel my work has always improved when I more closely mimic his style. I'm just now learning to make the first and last paragraphs carry weight. These are the ones that link a pattern with others in the language.

4b) Organize your patterns into sections. Write a little introduction to each section that lists each pattern by name. You may find you need to adjust your linking paragraphs as you study the higher level structure of your patterns. Try to keep 4a and 4b fluid as you write. As you become more familiar with your patterns you may find that they organize themselves.

5) Now write an introduction to your pattern language that hints at the forces you will be addressing. Pick a good name too. And send a summary to the "patterns" mail list.

DougLea: most collections that you can accuse of being pattern languages ultimately rely on a set of "principles"/"theory"/"domain knowledge"/etc

AliArsanjani: at least two discrete kinds: proto-patterns (I think this is a good solution, I've seen it many times) and patterns (this is a good solution because I've "been there done that" plus a spectrum

There are various States of a Pattern starting from fledgling or proto-pattern and going up all the way to be part of a pattern society or group of collaborating patterns within a pattern language.

Characteristics:

1. Thumbnails- short tabular descriptions of what each pattern does

2. Graphical relationships: how patterns are related; when you transition from one to resolve the forces by introducing another..

RalphJohnson: Asking "what makes a great pattern language" is like asking "what makes great literature". It cannot be answered quickly.

Note that a lot of the papers that are labeled a pattern language are not. For example, Coplien's process patterns are true, valuable, and important. But they are not a pattern language. There are too many holes. A pattern language has to be complete in some sense.

The important characteristics of a pattern language are that it tells you how to do things. The patterns are all related to that goal. Moreover, there are enough patterns that you actually have a chance of reaching your goal


See PatternLanguage


EditText of this page (last edited August 8, 2013) or FindPage with title or text search