Abstractions Inc.
Business and Enterprise Architecture, and Object Design

Tom dot Evans at
Abstractions dot com


Architecture Topics
Service Oriented Architecture (SOA)
Future Topics

Software Design
Christopher Alexander's Patterns
Software Patterns
Lightweight Methods

Architecture & Object Technology Links

Free / Open Source Software Links

Twin Cities User Groups

Book Review: Object Design Roles, Responsibilities, and Collaborations

 I've always believed the best approach to object-oriented design is Responsibility Driven Design (RDD), and this is the best book on the subject-written by the inventor of RDD.

So, why is Object Design: Roles, Responsibilities, and Collaborations (OD) a really great book? These folks have years of design consulting and teaching experience, know what they are talking about, and are good at telling the story.

OD is a great read from cover to cover. Their two-chapter review of object design concepts was energetic, insightful, and comprehensive. From the beginning they are mixing in CRC cards (Thanks Kent, Ward!), architecture styles, patterns, and stereotypes into the discussion. This is the place to start for novices and intermediate students, and professionals now have the definitive reference book on object oriented design.

The authors understand we all have different learning styles. Along with their conversation, the first two chapters also illustrate concepts and examples with over 20 figures, a couple of UML diagrams, three (short) Java code blocks, and eight CRC card drawings. Concrete examples are provided throughout the book, from computer speech to finance and telecommunications.

The Chapter titles are:

1 Design Concepts
2 Responsibility Driven Design
3 Finding Objects
4 Responsibilities
5 Collaborations
6 Control Style
7 Describing Collaborations
8 Reliable Collaborations
9 Flexibility
10 On Design.

Each chapter includes a summary. The recommendations for further reading provide a guided tour of related works in software engineering, design, and general literature.

The authors share how they think about the critical areas of design for flexibility and reliability. So how do you build reliable systems? What are some experience-based guidelines for dealing with error conditions? What about all those exceptions anyway?! The chapter on flexibility is for me the heart of object technology. They show how you can apply object technology to give users control over their world. The analysis of hot spots or flex points guides the focused introduction of added flexibility. Then you can actually deliver on the promise of object oriented software.

Practitioners will find this book "spot on" for the treatment of UML and Patterns. So, yes, with three or more UML books on the shelf, I am sure you can draw all those diagrams - right? With OD you are learning to think in objects and to communicate your story. Your learning how to tell your story with UML, what to say visually and what not to say. OD is a pretty good source for UML notation guidance too, as the text and the diagrams are meticulously accurate, down to the arrow head styles. OD provides a good introduction to patterns and weaves a number of the more interesting GOF patterns into the design examples. Patterns are also emphasized in the chapter on flexibility.

Paraphrasing Ivar Jacobson's words from the forward: "this higher-level view of design, which focuses on responsibilities...helps you step away from implementation details and focus on what the appropriate software machinery should be..." In closing he writes: "Whether you are new to object technology or an experienced developer, this book is a rich source of practical advice."

These common sense lessons are essential for practitioners of design and systems architecting in all fields.


Made with CityDesk

Abstractions Inc. takes its name from the concept of discovery of general solutions for specific needs. It is a point of view that embraces possibilities.

Copyright 2005
Abstractions Inc.