Skip to content

Object Design Roles, Responsibilities, and Collaborations

Best in textbook rentals since 2012!

ISBN-10: 0201379430

ISBN-13: 9780201379433

Edition: 2003

Authors: Rebecca Wirfs-Brock, Alan McKean

List price: $74.99
Blue ribbon 30 day, 100% satisfaction guarantee!
what's this?
Rush Rewards U
Members Receive:
Carrot Coin icon
XP icon
You have reached 400 XP and carrot coins. That is the daily max!

Description:

After more than ten years, object technology pioneer Rebecca Wirfs-Brock teams with expert Alan McKean to present a thoroughly updated, modern, and proven method for the design of software. The book is packed with practical design techniques that enable the practitioner to get the job done. Like many human endeavors, design is part art, part engineering, part guesswork, and part experimentation. Discipline, hard work, inspiration, and sound technique all play their part as well. For any given problem, there are many reasonable, but only a few very good solutions. The authors' goal is to help readers learn to make those very good design decisions on their own. The book explores challenges…    
Customers also bought

Book details

List price: $74.99
Copyright year: 2003
Publisher: Addison Wesley Professional
Publication date: 11/8/2002
Binding: Paperback
Pages: 416
Size: 7.25" wide x 9.00" long x 1.00" tall
Weight: 1.782
Language: English

Foreword
Foreword
Preface
Design Concepts
Object Machinery
Roles
Object Role Stereotypes
Roles, Responsibilities, and Collaborations
Object Contracts
Conditions-of-Use and Aftereffect Guarantees
Domain Objects
Application-Specific Objects
Interfaces
Classes
Two Roles
Composition
Inheritance
Object Organizations
Components
Patterns
Applying Double Dispatch to a Specific Problem
The Real Benefits of Using Patterns
Frameworks, Inc.
Architecture
Architectural Styles
Centralized Control Style
Dispersed Control: No Centers
Delegated Control
Examining Interactions: A Layered Architecture Example
Locating Objects in Layers
Design Description
Summary
Further Reading
Responsibility-Driven Design
A Process for Seeing, Describing, and Designing
Launching the Production: Project Definition and Planning
Setting the Stage: Early Description
Staging the Production: Design
"Seeing" from Multiple Perspectives
Writing the Script: Analysis Descriptions
Usage Descriptions
Other Specifications
Glossaries
Conceptual Objects
Casting the Characters: Exploratory Design
CRC Cards
Inventions: Using Patterns
Pursuing a Solution
Bouncing Between Ideas and Details
Tuning the Production: Design Refinement
Designing for Flexibility and Extension
Designing for Reliability
Making Our Design Predictable, Consistent, and Comprehensible
Summary
Further Reading
Finding Objects
A Discovery Strategy
Looking for Objects and Roles, and Then Classes
Why Tell a Design Story?
Search Strategies
What's in a Name?
Describing Candidates
Characterizing Candidates
Connecting Candidates
Looking for Common Ground
Defend Candidates and Look for Others
Summary
Further Reading
Responsibilities
What Are Responsibilities?
Where Do Responsibilities Come From?
Strategies for Assigning Responsibilities
Recording Responsibilities
Making Initial Assignments
Getting Unstuck
Implementing Objects and Responsibilities
Testing Your Candidates' Quality
Summary
Further Reading
Collaborations
What Is Object Collaboration?
Preparing for Collaboration
Recording Candidate Collaborations
The Design Story for the Speak for Me Software
Collaboration Options
Who's In Control?
How Much Should Objects Trust One Another?
Strategies for Identifying Collaborations
Looking at an Individual Object's Role: Stereotypes Imply Collaborations
Looking at Individual Responsibilities: They Imply Collaborations
Designing the Details of a Complex Responsibility
Designing Collaborations for a Specific Task
Identifying Applicable Patterns
Identifying How Architecture Influences Collaborations
Solving Problems in Collaborations
Simulating Collaborations
Planning a Simulation
Running a Simulation
Designing Good Collaborations
The Law of Demeter: A Case Study
Making Collaborations Possible
Guidelines for Making Connections
Designing Reliable Collaborations
When Are We Finished?
Summary
Further Reading
Control Style
What Is Control Style?
Control Style Options
Making Trade-offs
Centralizing Control
Delegating Control
The Limits of Control Decisions
Developing Control Centers
A Case Study: Control Style for External User Events
Centralizing Control in the MessageBuilder
Refactoring Decision Making into State Methods within the MessageBuilder
Abstracting Away Decisions
Delegating More Responsibility
Designing the Control Style for the Guessing Neighborhood
Designing a Similar Control Center: Can We Be Consistent?
Summary
Describing Collaborations
Telling Collaboration Stories
A Strategy for Developing a Collaboration Story
Establishing Scope, Depth, and Tone
Listing What You Will Cover
Deciding on the Level of Detail
Showing a Bird's-Eye View
Showing Collaborators Only
Showing a Sequence of Interactions Among Collaborators
Showing an In-Depth View
Showing a Focused Interaction
Showing an Implementation View
Showing How to Adapt a Collaboration
Where UML Diagrams Fall Short
Choosing the Appropriate Form
Tell It, Draw It, Describe It: Guidelines
Organizing Your Work
Adding Emphasis
Unfolding Your Story
Understanding What's Fundamental
Putting It All Together
Preserving Stories
Summary
Further Reading
Reliable Collaborations
Understanding the Consequences of Failure
Increasing Your System's Reliability
Determining Where Collaborations Can Be Trusted
Trusted Versus Untrusted Collaborations
Implications of Trust
Identifying Collaborations to Be Made Reliable
What Use Cases Tell Us
Distinguish Between Exceptions and Errors
Object Exceptions Versus Use Case Exceptions
Object Exception Basics
Exception- and Error-Handling Strategies
Determining Who Should Take Action
Designing a Solution
Brainstorm Exception Conditions
Limit Your Scope
Record Exception-Handling Policies
Documenting Your Exception-Handling Designs
Specifying Formal Contracts
Reviewing Your Design
Summary
Further Reading
Flexibility
What Does It Mean to Be Flexible?
Degrees of Flexibility
The Consequences of a Flexible Solution
Nailing Down Flexibility Requirements
Recording Variations
Variations and Realizations
Identifying the Impact of a Variation
Exploring Strategies for Realizing Flexibility
Using Templates and Hooks to Support Variations
The Role of Patterns in Flexible Designs
Varying an Object's Behavior with the Strategy Pattern
Hiding Interacting Objects with Mediator
Making a Predefined Object or System Fit Using Adapter
How Do Patterns Increase Flexibility?
How to Document a Flexible Design
Consider Your Audience
Describing How to Make a Variation
Changing a Working System's Design
Summary
Further Reading
On Design
The Nature of Software Design
Tackling Core Design Problems
Frame the Problem
Dealing with Revealing Design Problems
A Story About Managing Shared Information
A Story About Connection Problem Complexity
A Story About a Design Problem That Never Got Easier
Can Revealing Problems Be Wicked, Too?
Strategies for Solving Revealing Problems
Redefining the Problem
Synthesizing a Solution
Working on the Rest
Designing Responsibly
Further Reading
Bibliography
Index