Only 6 left in stock (more on the way).
Ships from and sold by Gift-wrap available.
Object Design: Roles, Res... has been added to your Cart
Used: Very Good | Details
Sold by ShopWins
Condition: Used: Very Good
Comment: Very Good. May contain property stamp, previous owners name, light creases or signed copy. Pages will be crisp and clean.
Have one to sell?
Flip to back Flip to front
Listen Playing... Paused   You're listening to a sample of the Audible audio edition.
Learn more
See all 3 images

Object Design: Roles, Responsibilities, and Collaborations Paperback – Nov 8 2002

4.9 out of 5 stars 7 customer reviews

See all formats and editions Hide other formats and editions
Amazon Price
New from Used from
"Please retry"
CDN$ 84.22
CDN$ 75.36 CDN$ 67.76

Harry Potter and the Cursed Child
click to open popover

No Kindle device required. Download one of the Free Kindle apps to start reading Kindle books on your smartphone, tablet, and computer.
Getting the download link through email is temporarily not available. Please check back later.

  • Apple
  • Android
  • Windows Phone
  • Android

To get the free app, enter your mobile phone number.

Product Details

  • Paperback: 416 pages
  • Publisher: Addison-Wesley Professional; 1 edition (Nov. 8 2002)
  • Language: English
  • ISBN-10: 0201379430
  • ISBN-13: 978-0201379433
  • Product Dimensions: 18.5 x 2 x 22.9 cm
  • Shipping Weight: 621 g
  • Average Customer Review: 4.9 out of 5 stars 7 customer reviews
  • Amazon Bestsellers Rank: #347,131 in Books (See Top 100 in Books)
  •  Would you like to update product info, give feedback on images, or tell us about a lower price?

  • See Complete Table of Contents

Product Description

From the Inside Flap

This book is about designing object software. Like many human endeavors, design is part art, part engineering, and part guesswork and experimentation. Discipline, hard work, inspiration, and sound technique all play their parts. Although software design is a highly creative activity, the fundamentals can be easily learned. Strategies and techniques exist for developing a design solution, and this book is packed with practical design techniques that help you get the job done. We hope you will become adept at thinking in objects and excited about devising solutions that exploit object technology.

You can consider design choices only in light of what you know to be relevant and important. To achieve good results, you need to learn how to discriminate important choices from mundane ones and how to acquire a good set of techniques that you intelligently practice. The informal tools and techniques in this book that don't require much more than a white board, a stack of index cards, a big sheet of paper, and chairs around a table. Oh yeah, be sure to bring your brain, too!

But more important than a grab bag of techniques are the fundamental ways you view a design. Although the techniques we present in this book are independent of any particular implementation technology or modeling language or design method, our approach to object design requires a specific perspective: Objects are not just simple bundles of logic and data. They are responsible members of an object community. This approach, called Responsibility-Driven Design, gives you the basis for reasoning about objects.

Most novice designers are searching for the right set of techniques to rigidly follow in order to produce the correct design. In practice, things are never that straightforward. For any given problem there are many reasonable solutions, and a few very good solutions. People don't produce identical designs even if they follow similar practices or apply identical design heuristics. For each problem you approach, you make a different set of tactical decisions. The effects of each small decision accumulate. Your current design as well as your current lines of reasoning shape and limit subsequent possibilities. Given the potential impact of seemingly inconsequential decisions, designers need to thoughtfully exercise good judgment.

Your primary tool as a designer is your power of abstraction--forming objects that represent the essence of a working application. In a design, objects play specific roles and occupy well-known positions in an application's architecture. Each object is accountable for a specific portion of the work. Each has specific responsibilities. Objects collaborate in clearly defined ways, contracting with each other to fulfill the larger goals of the application.

Design is both a collaborative and a solo effort. To work effectively you need not only a rich vocabulary for describing your design but also strategies for finding objects, recipes for developing a collaborative model, and a framework for discussing design trade-offs. You will find these tools in this book. We also explore how design patterns can be used to solve a particular design problem and demonstrate their effects on a design. We present you with strategies for increasing your software's reliability and flexibility. We discuss different types of design problems and effective ways to approach them. This book presents many tools and techniques for reasoning about a design's qualities and effectively communicating design ideas. Whether you're a student or a seasoned programmer, a senior developer or a newcomer to objects, you can take away many practical things from this book.

How to Read This Book

This book is organized into two major parts. The first six chapters--Chapter 1, Design Concepts, Chapter 2, Responsibility-Driven Design, Chapter 3, Finding Objects, Chapter 4, Responsibilities, Chapter 5, Collaborations, and Chapter 6, Control Style--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. Even if you are a veteran designer, a quick read will set the stage for thinking about object design in terms of objects' roles and responsibilities. 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 explore 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.


From the Back Cover

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:

  • Strategies for selecting and rejecting candidate objects in an emerging design model
  • Object role stereotypes and how to identify objects' behaviors
  • How to characterize objects using role stereotypes
  • Allocating responsibilities to appropriate objects
  • Developing a collaboration model
  • Strategies for designing application control centers
  • Documenting and describing a design, focusing on use cases, design conversations, and annotations
  • Strategies for enhancing reliability, including handling exceptions and recovering from errors
  • How to characterize software variations and design to support them for greater flexibility
  • How to categorize and treat various kinds of design problems
  • 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.


    See all Product Description

    Customer Reviews

    4.9 out of 5 stars
    5 star
    4 star
    3 star
    2 star
    1 star
    See all 7 customer reviews
    Share your thoughts with other customers

    Top Customer Reviews

    Format: Paperback
    Generally excellent language and flow. The book manages to bob nicely at a readable level, ducking deep when necessary for some details, and popping back up for abstract concepts at appropriate times. Throughout, it's filled with reasonable examples about how to really design systems. The examples are nicely balanced between being trivial and too complex. They get a lot of richness out of the analysis without burying the reader in domain-specific details.
    What they present seems to be compatible with most development processes. It's highly tunable to the level of 'agility' you're looking for, even from component to component.
    One downside is that it only talks about the dangers of over-engineering when it gets to the flexibility chapter (late in the book). It would've been nice to see this earlier, particularly when talking about identifying candidates. Also, the discussion of flexibility also ignore versioning. I don't know anybody who owns something they can just change as they please, and it would've been nice to have a framework for the kinds of things you can expect to be able to change in subsequent architecture versions and the kinds of decisions that you're making and won't be able to change without major system incompatibilities.
    Finally, the chapter that used UML said something like "we're not going to introduce UML" and then spewed UML at me for twenty pages, gently lulling me towards sleep. It killed the otherwise stellar pace that the book had going for it, but immediately recovered after that.
    Was this review helpful to you? Yes No Sending feedback...
    Thank you for your feedback.
    Sorry, we failed to record your vote. Please try again.
    Report abuse
    Format: Paperback
    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.
    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.
    Read more ›
    Was this review helpful to you? Yes No Sending feedback...
    Thank you for your feedback.
    Sorry, we failed to record your vote. Please try again.
    Report abuse
    Format: Paperback
    I purchased this book a week ago, and am enjoying it immensely. This
    is NOT a book by authors that rapidly churn out multiple books, and it
    is NOT a book to be read quickly. It's clear that a lot of thought
    has gone into every page and every sentence, and that you need to
    reflect and compare with your own professional programming experience.
    Despite the huge amount of information, I'm finding the book very
    readable. The authors make a living consulting on architecture and
    design, and know how to communicate.
    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.
    Was this review helpful to you? Yes No Sending feedback...
    Thank you for your feedback.
    Sorry, we failed to record your vote. Please try again.
    Report abuse
    Format: Paperback
    I think I finally have a handle on object modeling-- 'Object Design' deserves a lot of the credit.
    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.
    Was this review helpful to you? Yes No Sending feedback...
    Thank you for your feedback.
    Sorry, we failed to record your vote. Please try again.
    Report abuse