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

Frank Buschmann, Kelvin Henney, Douglas C. Schmidt.
On Patterns and Pattern Languages.
Wiley. 2007

Software patterns have significantly changed the way we design, implement, and think about computing systems. Patterns provide us with a vocabulary to express architectural visions and approaches to development, as well as examples of representative designs and detailed implementations that are clear and to the point.

Until now there has been no complete and up-to-date work on the pattern concept available. The knowledge of the latest advances in the conceptual foundations of patterns remains locked in the minds of a few experts and thought leaders in the patterns community. Pattern-Oriented Software Architecture, Volume 5 (POSA 5) mines this knowledge and documents it for the consumption of the broader software development community.

POSA 5 presents, discusses, relates, and contrasts the many known flavors and applications of the pattern concept: stand-alone patterns, pattern complements, pattern compounds, pattern stories and sequences, and pattern languages. For each concept flavor, the authors investigate its fundamental and advanced properties, and explore insights that help readers master concepts that are well known in the pattern community.

The book is presented in three main parts:

  • Part I, Inside Patterns, reflects on the use of stand-alone patterns gained over the past decade
  • Part II, Between Patterns, moves outside of the individual pattern to explore the relationships between patterns
  • Part III, Into Pattern Languages, builds on the concepts and conclusions of the first two parts by introducing pattern languages

The authors provide an overview of the current state of knowledge and practice in software patterns. The book codifies the key roles and relationships of the pattern concept in one volume, allowing readers to deepen their understanding of what patterns are, what they are not, and how to use them successfully.

This concepts volume revisits principles developed in previous POSA volumes and other sources of software pattern literature to enhance, revise, and extend these ideas.