[an error occurred while processing this directive]

exampler.com/testing-com > Test Patterns > PoST 2 > Preparation for new attendees [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive]

Preparation for new attendees

The first day of PoST will be devoted to bringing people up to speed on patterns, pattern reading groups, and pattern writing. Here is some background reading that you might find helpful.

Introductions to Patterns

Brad Appleton's "Patterns and Software: Essential Concepts and Terminology" or James Coplien's "Software Patterns Management Briefing" are good places to start. Both are long, but both are nicely set up for skimming. You might follow that with Doug Lea's Patterns-Discussion FAQ.

Pattern reading

The patterns community has evolved a certain style of critiquing patterns and groups of patterns. It's based on writer's workshops.

You should read at least the short summary titled "How to Hold a Writer's Workshop". We strongly recommend you read the longer "A Pattern Language for Writer's Workshops", by James Coplien.

Pattern writing

We recommend you read "A Pattern Language for Pattern Writing", by Meszaros and Doble. (Note that the HTML version lost the footnotes in the translation, but it's still quite usable. If you want the footnotes, the pattern language is available in book form in Pattern Languages of Program Design 3. As of January 24, 2001, that volume is unavailable from Amazon and Fatbrain. It's still available from Barnes&Noble.)

Consider also reading the shorter "Seven Habits of Successful Pattern Writers", by John Vlissades and "Tips for Writing Pattern Languages", by Ward Cunningham.

More about patterns; testing patterns and ones from other domains

Patterns were originally described by the architect Christopher Alexander. Many people working on non-architectural patterns have nevertheless found the following books useful.

The Timeless Way of Building, by Christopher Alexander
This book, on the architecture of towns and buildings, has inspired a lot of software patterns work. The first few chapters, which could be caricatured as being written in a very 60's style, put some people off. If that happens to you, skim forward until you hit chapter 14.
A Pattern Language, Christopher Alexander et. al.
This book contains 253 specific patterns for building towns and buildings.
Christopher Alexander: The Search for a New Paradigm in Architecture, Stephen Grabow (out of print)
Woven together out of interviews with Alexander, it covers work done since the previous two books.

Here are some sources for testing patterns:

There are a few other test patterns in Linda Rising's The Pattern Almanac 2000. It is a book to help you find patterns about a particular topic.

Many collections of patterns are online. Here are two sources:

Brian Marick also recommends the following books.

How Buildings Learn, Stewart Brand
A discussion of how buildings change over time. Not specifically about patterns, but definitely coming from the same attitude toward architecture, building, design, and change.
Design Patterns: Elements of Reusable Object-Oriented Software, by Gamma, Helms, Johnson, and Vlissades
This is the book in which Alexandrian ideas (with modification) hit the mainstream of software development. You pretty much need a reading knowledge of C++. (There's a Java translation I haven't read.)
Pattern Hatching: Design Patterns Applied, by John Vlissades
Further ruminations on the topics of Design Patterns.
Smalltalk Best Practice Patterns, by Kent Beck
A set of patterns intended to transmit some of the lore of the expert Smalltalk programmer. Not understandable unless you have read at least a few chapters of a Smalltalk book.
Patterns of Software, by Richard Gabriel
Gabriel considers in detail certain aspects of Alexander's writings. His notion of "habitable software" is particularly interesting.
The "PLoPD" books
Collections of papers from the Pattern Languages of Programs conferences.

[an error occurred while processing this directive][an error occurred while processing this directive]