Object Design: Roles, Responsibilities, and Collaborations, by Rebecca Wirfs-Brock and Alan McKean, explains how to design software objects and systems. Published in 2003, it contains the latest on Responsibility-Driven Design. The book is organized into two major parts. Like many human endeavors, software design is part art, part engineering, part guesswork and experimentation. This book is packed with practical design techniques to help you get the job done.
“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… 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.”
-Tom Evans, Abstractions Inc.
The first six chapters form the core of Responsibility-Driven Design principles and techniques. You should get a good grounding by reading these chapters.
- Chapter 1, Design Concepts, introduces fundamental views of object technology and explains how each element contributes to a coherent way of designing an application
- Chapter 2, Responsibility-Driven Design, provides a brief tour of Responsibility-Driven Design in practice.
- Chapter 3, Finding Objects, presents strategies for selecting and, equally important, rejecting candidate objects in an emerging design model.
- Chapter 4, Responsibilities presents many techniques for defining responsibilities and intelligently allocating them to objects.
- Chapter 5, Collaborations, gives many practical tips and examples of how to develop a collaboration model.
- Chapter 6, Control Style, describes strategies for developing your application's control centers and options for allocating decision-making and control responsibilities.
- Chapters 7-10 covers challenges you may encounter as you develop your design. Each chapter covers a specific topic that builds on the design concepts and techniques presented in the first part of the book.
- Chapter 7, Describing Collaborations, explores options for documenting and describing your design.
- Chapter 8, Reliable Collaborations, presents strategies for handling exceptions, recovering from errors, and collaborating within and across a "trusted region."
- Chapter 9, Flexibility, discusses how to characterize software variations and design to support them.
- Chapter 10, On Design, discusses how to sort design problems into one of three buckets--the core, the revealing, and the rest--and treat each accordingly.
Download the latest corrections to the book. Download PDF (64K)
Download a more detailed description of the Speak for Me! application, used in the book to illustrate design ideas. Download PDF (96K)
If you would like to discuss design ideas from the book, have questions, or wish to report any errors or typos, please contact Rebecca Wirfs-Brock.
Designing Object-Oriented Software, by Rebecca Wirfs-Brock, Brian Wilkerson, and Lauren Wiener.
This pioneering work was published in 1990. It introduces object-oriented thinking in a highly readable fashion. For a basic introduction to responsibilities, collaborations and object concepts, check out this classic.
What one avid Amazon reviewer says about this timeless book:
“First, I'll tell you what this book isn't: a detailed discourse on the inner Zen of object-oriented development…It IS, however, the best single introduction to the subject I've ever seen. In my experience with computer-related books, it is virtually unique, not only in that it is clear and concise, but actually a pleasure to read! My best testimonial: I dropped my computer science major in college (my BA's in English) because the subject bored me stiff. This book rekindled my interest in the field, and led me to a major career change - and how many books can I say THAT about?”