
Preface
An idea is like a seed blowing in the wind: it has little significance
until it lands, takes root, and starts to grow. The idea of
patterns, blown about the software field for two decades, has
finally landed and begun to flourish. The 1994 Pattern Languages on
Programming conference (PLoP/94) marked the germination of the pattern
movement as the first conference dedicated to patterns in software.
The following year saw publication of several patterns books,
magazines rushed to print pattern articles, and patterns surfaced at
mainstream software engineering and object-oriented conferences.
Then came PLoP/95, which was as different from its predecessor as a
seedling differs from a young plant: it was more robust, its roots
went deeper, and it was better attuned to its environment. The
emphasis shifted from, ``What are patterns all about?'' to,
``What makes a pattern good, and a good pattern better?'' This is
a profound shift, a sign of rapid maturing in people's thinking
about patterns. It is a shift away from introspection toward a
healthy activism. Many now appreciate that a pattern's value is in
neither its discovery nor its definition but in its relevance, its
quality, its impact. Patterns in software are as much about great
literature as they are about technology.
Writing patterns sounds simple but isn't. The struggle is twofold:
recognizing our own wisdom in recurring design problems, and
communicating that wisdom effectively.
The authors of these chapters know a great deal about the struggle. It
starts with reflection on the problems one has solved recurringly;
then characterizing the essence of the recurring solution; and then
writing the characterization down. But that's just the beginning.
A pattern is invariably useless if it isn't reshaped through
criticism, and that's where PLoP comes in. A paper submitted to
PLoP enters a ``shepherding process'' where reviewers iterate with
the author(s) to improve the paper. A submission may go through
several iterations before it is accepted or rejected.
The struggle continues at PLoP. Papers are not presented
there in any traditional sense. Rather, each is reviewed in a
``writer's workshop,'' in which the author listens to readers discuss
the paper. He or she is not allowed to participate in the
discussion---that would contaminate the process with editorial input
unavailable to other readerships. The goal of the workshop is to help
the author improve the paper, not defend it.
The author goes home with one more chance to revise the work before
submitting it for final review. Papers that clear this last hurdle
are included here. Each had to survive the equivalent of thorns,
storms, and locusts before blooming as a chapter in this book.
With seeds and new ideas, you never know exactly how they'll grow.
Many vines have sprouted from the pattern seed, each growing
independently but along one of two paths. Some grow in the path
blazed by Christopher Alexander [Alexander+79, Alexander+77],
reflecting his seminal work on patterns of building architecture.
Alexander structured his patterns hierarchically into a system he
called a ``pattern language.'' But like vines left to find their own
way, these Alexandrian-style papers adapt the form to their needs:
they deviate from the path when it suits them.
Other vines head in a path blazed by the ``Gang of Four'' (GOF),
the nickname for the authors of the first book on software patterns
[Gamma+95]. These pioneers discovered the value of isolated patterns that
capture wisdom in object-oriented software design. Their patterns are
larger, more highly structured, and much less interdependent than
Alexander's. They have helped many software developers recognize
and exploit the benefits of patterns, and they've inspired many
more to attempt writing patterns of their own.
This book has numerous specimens from these paths. As you study each
chapter, ask yourself which path suits you best, and why. Look
carefully at the style, the format, the problems posed, the forces
resolved, the consequences and drawbacks of each pattern.
Then act. A vibrant pattern community requires everyone's
participation. Have you found patterns that fit your work? If so,
please try them out. Do you find wisdom here that's worth sharing
with your colleagues? Please let them know. Can you identify wisdom
you've acquired that needs documenting? Please write it down, and
have others critique it. And please consider submitting it to an
upcoming PLoP!
No book materializes without help from people behind the scenes, but
PLoP calls for extraordinary effort. The members of the Hillside
Group organized the conference. Brian Foote and his student colleagues
from the University of Illinois Urbana-Champaign proved invaluable as
they assembled the papers, copied and distributed them repeatedly, and
helped run the event with good cheer. The shepherds lived up to their
name as selfless overseers of their authoring flocks. The
contributions of nonauthor PLoP participants also need acknowledgment,
for PLoP is not a passive listening experience; reading multiple
papers and giving careful, constructive feedback is hard work. Many
thanks to you all.
As in the previous book in this series [Coplien+95], we have avoided
tampering with details of form and layout in each author's work, even
as we yearned for typographical coherence. So our friends at
Addison-Wesley are to be doubly commended for their achievement.
Deborah Lafferty guided the production effort with a gentle but firm
hand; her ability to keep projects on schedule continues to amaze.
Rojean Wagner and the staff at Editorial Services of New England were
challenged by many an electronic format and emerged victorious.
Special thanks to Tom Stone, who took a risk and gave a fledgling
movement a voice.
Finally, we recognize the people most critical to this book's
success, the pattern authors themselves. They have chosen to share
their wisdom with the rest of us, and they sacrifice a great deal in
the process. It takes courage and dedication to spend time revealing
what could well be one's competitive advantage. We extend
heartfelt thanks on behalf of all who will benefit from their labors.
J.M.V.
J.O.C.
N.L.K.
[Alexander+79] C. Alexander. The Timeless Way of
Building. New York: Oxford University Press, 1979.
[Alexander+77] C. Alexander, et al. A Pattern
Language. New York: Oxford University Press, 1977.
[Gamma+95] E. Gamma, R. Helm, R. Johnson, and J. Vlissides.
Design Patterns: Elements of Reusable Object-Oriented Software.
Reading, MA: Addison-Wesley, 1995.
[Coplien+95] J.O. Coplien and D.C. Schmidt. (Eds.) Pattern
Languages of Program Design. Reading, MA: Addison-Wesley, 1995.
|