Pattern Languages of Program Design
Pattern Languages of Program Designis 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 inPattern Languages of Program Designcan 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 ofPattern Language of Program Designoffers 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