Pattern Languages of Program Design
is the first of three volumes of groundbreaking research on patterns, ranging from smaller-scale design patterns to larger patterns useful for software architecture and process engineering. Early chapters look at frameworks and components for engineering solutions to particular types of problems at a higher level, such as looking at patterns as "tools and materials" that can be used to solve problems effectively. The guide also discusses how to use patterns with interpreters and client-server systems.
Distributed processing is a difficult and exciting area of computing, and patterns presented in Pattern Languages of Program Design can help solve some of the problems of scalability, concurrency, and transaction management. These patterns include several business objects for managing transactions and accounts, as well as for optimizing queries across distributed systems.
The middle section of this text applies patterns to the software engineering process itself and several papers (including one intriguingly called "Caterpillar's Fate") show how the pattern movement can benefit software engineers and managers. Further material looks at the process of defining and implementing patterns. (Discovering patterns is only a start; learning to reuse them effectively is another challenge.) Final chapters look at patterns that manage state and events for real-time and behavioral systems.
Although the first installment of Pattern Language of Program Design offers a decidedly mixed bag of essays, it is particularly strong on distributed systems and provides a strong overview of some central thinking on pattern research, which is still relevant. --Richard Dragan
From the Back Cover
The first conference on Pattern Languages of Program Design (PLoP)was a watershed event that gave a public voice to the software designpattern movement. Seventy software professionals from around theworld worked together to capture and refine software experience thatexemplifies the elusive quality called "good design." This volume isthe result of that work--a broad compendium of this new genre ofsoftware literature.
Patterns are a literary form that take inspiration from literateprogramming, from a design movement of the same name in contemporaryarchitecture, and from the practices common to the ageless literatureof any culture. The goal of pattern literature is to help programmersresolve the common difficult problems encountered in design andprogramming. Spanning disciplines as broad as client/serverprogramming, distributed processing, organizational design, softwarereuse, and human interface design, this volume encodes designexpertise that too often remains locked in the minds of expertarchitects. By capturing these expert practices as problem-solutionpairs supported with a discussion of the forces that shape alternativesolution choices, and rationales that clarify the architects' intents,these patterns convey the essence of great software designs.