Main Page
Table of content
Copyright
Foreword by Ivar Jacobson
Foreword by John Vlissides
Preface
How To Read This Book
Acknowledgments
Chapter 1. Design Concepts
Object Machinery
Roles
Object Role Stereotypes
Roles, Responsibilities, and Collaborations
Object Contracts
Domain Objects
Application-Specific Objects
Interfaces
Classes
Composition
Inheritance
Object Organizations
Components
Patterns
Frameworks, Inc.
Architecture
Architectural Styles
Design Description
Summary
Further Reading
Chapter 2. Responsibility-Driven Design
A Process for Seeing, Describing, and Designing
Writing the Script: Analysis Descriptions
Casting the Characters: Exploratory Design
Tuning the Production: Design Refinement
Summary
Further Reading
Chapter 3. 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
Chapter 4. Responsibilities
What Are Responsibilities?
Where Do Responsibilities Come From?
Strategies for Assigning Responsibilities
Implementing Objects and Responsibilities
Testing Your Candidates' Quality
Summary
Further Reading
Chapter 5. Collaborations
What Is Object Collaboration?
The Design Story for the Speak for Me Software
Collaboration Options
Strategies for Identifying Collaborations
Simulating Collaborations
Designing Good Collaborations
Making Collaborations Possible
When Are We Finished?
Summary
Further Reading
Chapter 6. Control Style
What Is Control Style?
COntrol Style Options
Making Trade-Offs
Developing Control Centers
A Case Study: Control Style for External User Events
Summary
Chapter 7. 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
Choosing the Appropriate Form
Tell It, Draw It, Describe It: Guidelines
Organizing Your Work
Preserving Stories
Summary
Further Reading
Chapter 8. Reliable Collaborations
Understanding the Consequences of Failure
Increasing Your System's Reliability
Determining Where Collaborations Can Be Trusted
Identifying Collaborations To Be Made Reliable
Designing A Solution
Documenting Your Exception-Handling Designs
Reviewing Your Design
Summary
Further Reading
Chapter 9. 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
The Role of Patterns in Flexible Designs
How to Document a Flexible Design
Changing a Working System's Design
Summary
Further Reading
Chapter 10. On Design
The Nature of Software Design
Tackling Core Design Problems
Frame the Problem
Dealing with Revealing Design Problems
Strategies for Solving Revealing Problems
Working on the Rest
Designing Responsibly
Further Reading
Bibliography