Books

Short works

Books : reviews

James O. Coplien, Douglas C. Schmidt, eds.
Pattern Languages of Program Design.
Addison Wesley. 1995

rating : 3 : worth reading
review : 3 October 2000

Patterns have caught on as a way of cataloguing object-oriented designs. There is an annual conference on the subject, and this is the "proceedings" of the first such conference. Chock full of interesting ideas ranging over everything from single patterns to entire Pattern Languages, from a Pattern for account numbers to Patterns for the entire analysis process or even structuring a software development company, there is something useful here for everyone.

The Patterns are grouped into the following categories: • Frameworks and Components • Systems and Distributed Processing • Business Objects • Process and Organization • Design Patterns and Catalogs • Architecture and Communication • Object Usage and Style • Events and Event Handlers

Contents

Sam S. Adams. Functionality Ala Carte. 1995
Give users better feed-back over simulations by using a "performance trade-off menu" showing the performance consequences of parameter choices
Dirk Riehle, Heinz Zullighoven. A Pattern Language for tool construction and integration based on the Tools and Materials metaphor. 1995
Norbert Portner. Flexible Command Interpreter: a Pattern for extensible and language-independent interpreter system. 1995
Kirk Wolf, Chamond Liu. New Clients with Old Servers: a Pattern Language for Client/Server frameworks. 1995
Dennis L. DeBruler. A generative Pattern Language for distributed processing. 1995
A process for designing distributed systems
Amund Aarsten, Gabriele Elia, Giuseppe Menga. G++: a Pattern Language for Computer-Integrated Manufacturing. 1995
Hierarchies of control layers; controlling visibility and communication; granularity of concurrency
Barry Rubel. Patterns for generating a layered architecture. 1995
Using layers to capture the real world, the model of the real world, control of the model, and the operator interface
Gerard Meszaros. Pattern: Half-object+Protocol [HOPP]. 1995
Distributing a single object across two data spaces
Frank Buschmann. The Master-Slave Pattern. 1995
Replicated services for fault tolerance and robustness
Ward Cunningham. The CHECKS Pattern Language of information integrity. 1995
Separating good input from bad input
William C. Wake. Account Number: a Pattern. 1995
Stephen Peterson. Stars: a Pattern Language for query-optimised schemas. 1995
Converting the data from an on-line transaction processing system to a format suitable for a decision support system
James O. Coplien. A generative development-process Pattern Language. 1995
Building, structuring, and growing a software development company
Brian Foote, William F. Opdyke. Lifecycle and refactoring Patterns that support evolution and reuse. 1995
Bruce G. Whitenack. RAPPeL: a requirements-analysis-process Pattern Language for object-oriented development. 1995
Norman L. Kerth. Caterpillar's Fate: a Pattern language for the transformation from analysis and design. 1995
Metamorphosing the analysis document into an initial software design
Frank Buschmann, Regine Meunier. A System of Patterns. 1995
Classifying Patterns according to granularity (architectural, design, idiom), functionality (creation, communication, access, complex tasks), and structure (abstraction, encapsulation, separation, coupling)
Walter Zimmer. Relationships between Design Patterns. 1995
Categorising the relationships between the patterns in Design Patterns
Robert C. Martin. Discovering Patterns in existing applications. 1995
Summary of Patterns discovered in C++ code
Jiri Soukup. Implementing Patterns. 1995
Using explicit classes to capture design patterns in the implementation
Stephen H. Edwards. A Pattern for "pull-driven" processing. 1995
Streams
Regine Meunier. The Pipes and Filters architecture. 1995
Diane E. Mularz. Pattern-based integration architectures. 1995
Integrating legacy assets and stand-alone off-the-shelf components
Mary Shaw. Patterns for software architectures. 1995
Bobby Woolf. Understanding and using the ValueModel framework in VisualWorks Smalltalk. 1995
Panu Viljamaa. Client-specified Self. 1995
Replace calls to self (or this) with an argument, to allow a flexible form of delegation
Ken Auer. Reusability through Self-encapsulation. 1995
Encapsulating the state to protect subclasses from design decisions and changes, including idioms for initialisation and default values
Stephen P. Berczuk. A Pattern for separating assembly and processing. 1995
Separating the construction of objects from a data stream or packets, from the subsequent processing of the objects
Douglas C. Schmidt. Reactor: an object behavioral Pattern for concurrent even demultiplexing and event handler dispatching. 1995
Alexander S. Ran. Patterns of events. 1995
Event-centred architectures
Dwayne Towell. Request Screen Modification. 1995
Updating the screen appearance of overlapping objects

John Vlissides, James O. Coplien, Norman L. Kerth, eds.
Pattern Languages of Program Design 2.
Addison Wesley. 1996

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.

The patterns presented are grouped into: • General-Purpose Patterns • Special-Purpose Patterns • Architectural Patterns • Process and Organization • Exposition • Concurrent Programming/Distributed Systems • Reactive Systems

Contents

Tom Cargill. Localized ownership: managing dynamic objects in C++. 1996
Ken Auer, Kent Beck. Lazy optimization: patterns for efficient Smalltalk programming. 1996
Bobby Woolf. Partitioning Smalltalk code in ENVY/Developer components. 1996
Peter Sommerlad. Command Processor. 1996
Jung J. Kim, Kevin M. Benner. Implementation patterns for the Observer pattern. 1996
Dirk Riehle. Patterns for encapsulating class trees. 1996
Hans Rohnert. The Proxy design pattern revisited. 1996
Alexander S. Ran. MOODS: Models for Object-Oriented Design of State. 1996
Jim Doble. Shopper. 1996
Aamond Sane, Roy Campbell. Detachable Inspector/Removable cout: a structural pattern for designing transparent layered services. 1996
Gustavo Rossi, Alejandra Garrido, Sergio Carvalho. Design patterns for object-oriented hypermedia applications. 1996
Stephen P. Berczuk. Organizational Multiplexing: patterns for processing satellite telemetry with distributed teams. 1996
Satish Subramanian, Wei-Tek Tsai. Backup pattern: designing redundancy in object-oriented software. 1996
Kyle Brown, Bruce G. Whitenack. Crossing Chasms: a pattern language for Object-RDBMS. 1996
Ralph E. Johnson. Transactions and Accounts. 1996
Mary Shaw. Some patterns for software architectures. 1996
Frank Buschmann. Reflection. 1996
Brian Foote, Joseph Yoder. Evolution, Architecture, and Metamorphosis. 1996
Alistair Cockburn. Prioritizing forces in software design. 1996
Allen Hopley. Decision deferral and capture pattern language. 1996
Neil B. Harrison. Organizational patterns for teams. 1996
Martin Fowler. Accountability and organizational structures. 1996
Ward Cunningham. EPISODES: a pattern language of competitive development. 1996
Dana L. G. Anthony. Patterns for classroom education. 1996
Todd A. Coram. Demo Prep: a pattern language for the preparation of software demonstrations. 1996
Robert Orenstein. A pattern language for an essay-based web site. 1996
Douglas C. Schmidt, Charles D. Cranor. Half-Sync/Half-Async: an architectural pattern for efficient and well-structured concurrent I/O. 1996
Aamond Sane, Roy Campbell. Resource Exchanger: a behavioral pattern for low-overhead concurrent resource management. 1996
Peter Sommerlad, Michael Stal. The Client-Dispatch-Server design pattern. 1996
R. Greg Lavender, Douglas C. Schmidt. Active Object: an object behavioral pattern for concurrent programming. 1996
Paul E. McKenney. Selecting locking designs for parallel programs. 1996
Amund Aarsten, Giuseppe Menga, Luca Mosconi. Object-oriented design patterns in reactive systems. 1996
Michael (2) Adams, James O. Coplien, Robert Gamoke, Robert Hanmer, Fred Keeve, Keith Nicodemus. Fault-tolerant telecommunication system patterns. 1996
William C. Wake, B. Douglas Wake, Edward A. Fox. Improving responsiveness in interactive applications using queues. 1996
Gerard Meszaros. A pattern language for improving the capacity of reactive systems. 1996