Download the free Kindle app and start reading Kindle books instantly on your smartphone, tablet, or computer - no Kindle device required.
Read instantly on your browser with Kindle for Web.
Using your mobile phone camera - scan the code below and download the Kindle app.
Follow the author
OK
Object Design: Roles, Responsibilities, and Collaborations Paperback – January 1, 2002
- Print length368 pages
- LanguageEnglish
- PublisherAddison-Wesley Professional
- Publication dateJanuary 1, 2002
- Dimensions7.25 x 1 x 9 inches
- ISBN-100201379430
- ISBN-13978-0201379433
Customers who viewed this item also viewed
Editorial Reviews
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.
0201379430B08292002
About the Author
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.
0201379430AB08292002
Excerpt. © Reprinted by permission. All rights reserved.
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.
0201379430P10212002
Excerpt. © Reprinted by permission. All rights reserved.
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.
0201379430P10212002
Product details
- Publisher : Addison-Wesley Professional (January 1, 2002)
- Language : English
- Paperback : 368 pages
- ISBN-10 : 0201379430
- ISBN-13 : 978-0201379433
- Item Weight : 1.8 pounds
- Dimensions : 7.25 x 1 x 9 inches
- Best Sellers Rank: #297,412 in Books (See Top 100 in Books)
- #129 in Object-Oriented Design
- #406 in Computer Hardware & DIY
- Customer Reviews:
About the author

Discover more of the author’s books, see similar authors, read author blogs and more
Customer reviews
Customer Reviews, including Product Star Ratings help customers to learn more about the product and decide whether it is the right product for them.
To calculate the overall star rating and percentage breakdown by star, we don’t use a simple average. Instead, our system considers things like how recent a review is and if the reviewer bought the item on Amazon. It also analyzed reviews to verify trustworthiness.
Learn more how customers reviews work on Amazon-
Top reviews
Top reviews from the United States
There was a problem filtering reviews right now. Please try again later.
The book's layout and illustrations present its content well. UML diagrams, for example, use one color and typeface for the actual UML notation. The same diagrams use a different color and typeface for notes that explain the UML. Unlike other books, there's no confusion about which is the tool and which describes the tool. The text is gentle and reasonably jargon-free, but I think it over-does the friendliness in places. In discussing a program's normal and exception handling behavior, the term "happy path" described the execution in the absence of errors. The term may be evocative, but is just a bit hard to take seriously.
The sequence of topics makes good sense. It starts with the idea of a "responsibility," the basic unit of application logic. The authors develop this into strategies for defining objects, defining relationships between objects, and defining the control strategies that implement those relationships. They continue on through error handling (reliability) and extensibility - handling of future features. Throughout, the authors keep a moderate, pragmatic tone, free of name-brand methodology. That's a good thing, since the real focus is on basic skills and decision criteria.
One aspect of this book is just a little confusing. It's definitely aimed at educating a new OO designer, but it doesn't lay out its educational objectives or plan very clearly. It certainly lacks the didactic rigor of a textbook. It would make a good supplementary text, though, and it might be very helpful to a novice working with more experienced developers. Best of all, it refers to additional texts (including Strunk and White!) that will help claify the programs as well as communication with other members of the programming team.
This book is great for anyone starting OO design on their own. It's also good for classroom students who just aren't getting it from their regular instructor and text. Experienced developers won't find much new here, except very clear descriptions of how much error handling or flexibility is enough.
//wiredweird
1. Very Good Text on Object Design,
2. A great first text on OO design,
3. Total Disappointment for Programmers
This is a great book on Object Oriented Design, but ONLY for novice and intermediate object modelers. It is not for an experienced developer who already knows how to use some of the design patterns in Gang of Four book.
If we use an analogy to compare this two books, if Gang of Four Design Pattern book is for post graduate students, Object Design is for the student in the second year of the university.
I want to read more on Object Oriented development so I started to read this book, mainly attracted by its cover. Domain Driven Design by Eric Avans falls into the same category but offers much more exercise for your brain.
Hope this is helpful. I have 10+ years in software development, 7+ years in Java, understand OO and Domain Driven Design.
5 Star Book for a beginner.
but restrictive sample code
another defact is that oop is old..
functional is more trendy and strict





