Synopses & Reviews
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.
Patterns are a literary form with roots in literate programming, in a design movement of the same name in contemporary architecture, and in the practices common to the ageless literature of any culture. This volume, with contributions from the biggest names in the patterns community, is the second in a series documenting patterns for professional software developers. These patterns capture solutions to a plethora of recurring problems in software design and development, including language-specific patterns and idioms; general- and special-purpose patterns; architectural patterns; process and organizational patterns; expositional patterns, and patterns for concurrent programming, distributed systems, and reactive systems. This new collection not only reveals secrets of great software professionals but also makes those secrets easy to apply to your own work.
About the Author
James O. Coplien is a premier expert and writer on the object paradigm and C++, having worked with the language since its inception at AT&T. Currently a member of Bell Laboratories Research at Lucent Technologies, his work focuses on multi-paradigm development methods and organizational anthropology for software development processes. His previous books include Pattern Languages of Program Design (with Douglas C. Schmidt), Pattern Languages of Program Design, Volume 2 (with John M. Vlissides and Norman L. Kerth), and Advanced C++ Programming Styles and Idioms.
Dr. Douglas C. Schmidt is the original developer of ACE and The ACE ORB (TAO). He is a professor at Vanderbilt University, where he studies patterns, optimizations, middleware, and model-based tools for distributed real-time and embedded systems. He is a former editor-in-chief of C++ Report and columnist for C/C++ Users Journal.
Table of Contents
I. FRAMEWORKS & COMPONENTS. 1. Functionality Ala Carte (Sam Adams).
2. A Pattern Language for Tool Construction and Integration Based on the Tools and Materials Metaphor (Dirk Riehle, Heinz Zullighoven).
3. Flexible Command Interpreter: A Pattern for an Extensible and Language-Independent Interpreter System (Norbert Portner).
4. New Clients with Old Servers: A Pattern Language for Client/Server Frameworks (Kirk Wolf, Chamond Liu).
II. SYSTEMS & DISTRIBUTED PROCESSING. 5. A Generative Pattern Language for Distributed Processing (Dennis DeBruler).
6. G++: A Pattern Language for Computer-Integrated Manufacturing (Gabriele Elia, Amund Aarsten, Giuseppe Menga).
7. Patterns for Generating a Layered Architecture (Barry Rubel).
8. Pattern: Half-Object + Protocol (HOPP) (Gerard Meszaros).
9. The Master-Slave Pattern (Frank Buschmann).
III. BUSINESS OBJECTS. 10. The CHECKS Pattern Language of Information Integrity (Ward Cunningham).
11. Account Number: A Pattern (William Wake).
12. STARS: A Pattern Language for Query-Optimized Schemas (Steve Peterson).
IV. PROCESS AND ORGANIZATION. 13. A Generative Development-Process Pattern Language (James Coplien).
14. Lifecycle and Refactoring Patterns That Support Evolution and Reuse (Brian Foote, William Opdyke).
15. RAPPeL: A Requirements-Analysis-Pattern Language for Object Oriented Development (Bruce Whitenack).
16. Caterpillar's Fate: A Pattern Language for the Transformation from Analysis to Design (Norman Kerth).
V. DESIGN PATTERNS AND CATALOGS. 17. A System of Patterns (Frank Buschmann, Regine Meunier).
18. Relationships Between Design Patterns (Walter Zimmer).
19. Discovering Patterns in Existing Applications (Robert Martin).
20. Implementing Patterns (Jiri Soukup).
VI. ARCHITECTURE & COMMUNICATION. 21. Streams: A Pattern for “Pull-Driven” Processing (Stephen Edwards).
22. The Pipes and Filters Architecture (Regine Meunier).
23. Pattern-Based Integration Architectures (Diane Mularz).
24. Patterns for Software Architectures (Mary Shaw).
VII. OBJECT USAGE AND STYLE. 25. Understanding and Using the ValueModel Framework in VisualWorks Smalltalk (Bobby Woolf).
26. Client-Specified Self (Panu Viljamaa).
27. Reusability Through Self-Encapsulation (Ken Auer).
VIII. EVENTS & EVENT HANDLERS. 28. A Pattern for Separating Assembly and Processing (Steve Berczuk).
29. Reactor: An Object Behavioral Pattern for Concurrent Event Demultiplexing and Event Handler Dispatching (Douglas Schmidt).
30. Patterns of Events (Alexander Ran).
Appendix: Request Screen Modification (Dwayne Towell).