![]() |
|
Shop the new tech.book(store)
New! Introducing the tech.book(store), a hub for Software Developers and Architects, Networking Administrators, TPMs, and other technology professionals to find highly-rated and highly-relevant career resources. Shop books on programming and big data, or read this week's blog posts by authors and thought-leaders in the tech industry. > Shop now |
If you create software using object-oriented languages and tools, then Responsibility-Driven Design has likely influenced your work. For over ten years Responsibility-Driven Design methodology has been the standard bearer of the behavioral approach to designing object-oriented software. Object Design: Roles, Responsibilities, and Collaborations focuses on the practice of designing objects as integral members of a community where each object has specific roles and responsibilities. The authors present the latest practices and techniques of Responsibility-Driven Design and show how you can apply them as you develop modern object-based applications.
Working within this conceptual framework, Rebecca Wirfs-Brock and Alan McKean present how user requirements, system architecture, and design patterns all contribute to the design of an effective object model. They introduce a rich vocabulary that designers can use to discuss aspects of their designs, discuss design trade-offs, and offer practical guidelines for enhancing the reliability and flexibility of applications. In addition, case studies and real-world examples demonstrate how the principles and techniques of Responsibility-Driven Design apply to real-world software designs.
You'll find coverage of such topics as:
As all experienced designers know, software design is part art and inspiration and part consistent effort and solid technique. Object Design: Roles, Responsibilities, and Collaborations will help all software designers--from students to seasoned professionals--develop both the concrete reasoning skills and the design expertise necessary to produce responsible software designs.
Rebecca Wirfs-Brock is founder of Wirfs-Brock Associates. She consults with clients on actual architecture and design projects as well as development practices and methods. She is the originator of the set of development practices known as Responsibility-Driven Design. Among her widely used inventions are use case conversations and object role stereotypes. She was lead author of the classic work Designing Object-Oriented Software (Prentice-Hall, 1990).
Alan McKean is a respected object technology educator and cofounder of Wirfs-Brock Associates. His classes have introduced thousands of developers to object-oriented design and programming and his instructional techniques have been widely adopted by other educators. An experienced programmer, speaker, and instructor, Alan has developed curricula in object-oriented design, programming, and distributed object systems.
Product Details
Would you like to update product info or give feedback on images? |
I have a shelf full of books on UML, uses cases, patterns, and modeling. I spent almost a year struggling through UML, trying to understand the nuances of sequence diagrams versus collaboration diagrams. Meanwhile, I felt no closer to being able to create serviceable object models for my projects.
Rebecca Wirfs-Brock and Alan McKean dispense with much of the tedious diagramming one usually associates with object modeling. Instead of charts and relationships, the book focuses on the roles, responsibilities, and behaviors that define an object. If you have ever assembled and managed employee teams, the framework will be very fmailiar. And that's where I found my breakthrough.
The book offers a good introduction to object modeling for those new to the area, and a solid reference for those looking to stremline their current methodology. The processes suggested by the authors are simple and flexible. But they are powerful enough to handle even complex designs.
One of the strongest pieces of advice in the book is to avoid rushing into UML software--stick with index cards until the design is fairly well developed. That's what got me out of a morass of charts and diagrams that looked nice, but did relatively little. I'd paraphrase the book's theme as "Forget the formalism and focus on your application's responsibilities, and how those responsibilities can be allocated among cohesive, well-organized team players.:
The book is language neutral--it's focus is design, rather than programming. The design methodology taught in the book should be easily adaptable to nearly any object-oriented programming language.
I have no hesitation recommending Object Design to novice and intermediate object modelers. I rate is as the best book I have read on the design and modeling of object-oriented systems.
There are some code examples in java, but the book is really language
neutral. The java code uses features that are available in all object
oriented languages, and can really be considered to be illustrative
pseudo code. This book is written for software architects, and coders
who are looking to advance to higher levels of design responsibility.
A nice touch that I appreciated was the short summarizing side bars
sprinkled throughout the text. If you want to quickly evaluate whether
this book is for you are not, just pick up the book and read the
sidebars from beginning to end.
I recently showed Mike Rosen, of Cutter Consortium, Object Design. Before I could say it had great chapters on RDD plus work on design for reliability and flexibility plus pages of references to related books and papers, he said 'Great! This will be my next book purchase'.
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, and 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.