Limit search to available items
Book Cover
Book
Author Wirfs-Brock, Rebecca, author

Title Object design : roles, responsibilities, and collaborations / Rebecca Wirfs-Brock, Alan McKean
Published Boston, Mass. : Addison-Wesley, [2003]
Boston, Mass. : Addison-Wesley, c2003
c2003
©2003

Copies

Location Call no. Vol. Availability
 W'PONDS  005.117 Wir/Odr  AVAILABLE
Description xxiii, 390 pages ; 24 cm
Contents Chapter 1 Design Concepts 1 -- Object Machinery 2 -- Roles 3 -- Object Role Stereotypes 4 -- Roles, Responsibilities, and Collaborations 5 -- Object Contracts 7 -- Conditions-of-Use and Aftereffect Guarantees 8 -- Domain Objects 8 -- Application-Specific Objects 10 -- Interfaces 12 -- Classes 13 -- Two Roles 13 -- Composition 16 -- Inheritance 16 -- Object Organizations 17 -- Components 18 -- Patterns 18 -- Applying Double Dispatch to a Specific Problem 20 -- The Real Benefits of Using Patterns 25 -- Frameworks, Inc. 25 -- Architecture 27 -- Architectural Styles 28 -- Centralized Control Style 30 -- Dispersed Control: No Centers 30 -- Delegated Control 31 -- Examining Interactions: A Layered Architecture Example 32 -- Locating Objects in Layers 34 -- Design Description 36 -- Chapter 2 Responsibility-Driven Design 39 -- A Process for Seeing, Describing, and Designing 40 -- Launching the Production: Project Definition and Planning 44 -- Setting the Stage: Early Description 44 -- Staging the Production: Design 47 -- "Seeing" from Multiple Perspectives 49 -- Writing the Script: Analysis Descriptions 49 -- Usage Descriptions 50 -- Other Specifications 58 -- Glossaries 58 -- Conceptual Objects 58 -- Casting the Characters: Exploratory Design 60 -- CRC Cards 61 -- Inventions: Using Patterns 62 -- Pursuing a Solution 67 -- Bouncing Between Ideas and Details 68 -- Tuning the Production: Design Refinement 70 -- Designing for Flexibility and Extension 71 -- Designing for Reliability 73 -- Making Our Design Predictable, Consistent, and Comprehensible 73 -- Chapter 3 Finding Objects 77 -- A Discovery Strategy 78 -- Looking for Objects and Roles, and Then Classes 79 -- Why Tell a Design Story? 80 -- Search Strategies 84 -- What's in a Name? 88 -- Describing Candidates 93 -- Characterizing Candidates 98 -- Connecting Candidates 99 -- Looking for Common Ground 101 -- Defend Candidates and Look for Others 104 -- Chapter 4 Responsibilities 109 -- What Are Responsibilities? 110 -- Where Do Responsibilities Come From? 111 -- Strategies for Assigning Responsibilities 125 -- Recording Responsibilities 126 -- Making Initial Assignments 128 -- Getting Unstuck 138 -- Implementing Objects and Responsibilities 140 -- Testing Your Candidates' Quality 145 -- Chapter 5 Collaborations 149 -- What Is Object Collaboration? 150 -- Preparing for Collaboration 150 -- Recording Candidate Collaborations 151 -- The Design Story for the Speak for Me Software 152 -- Collaboration Options 153 -- Who's In Control? 155 -- How Much Should Objects Trust One Another? 155 -- Strategies for Identifying Collaborations 158 -- Looking at an Individual Object's Role: Stereotypes Imply Collaborations 159 -- Looking at Individual Responsibilities: They Imply Collaborations 166 -- Designing the Details of a Complex Responsibility 168 -- Designing Collaborations for a Specific Task 169 -- Identifying Applicable Patterns 170 -- Identifying How Architecture Influences Collaborations 172 -- Solving Problems in Collaborations 173 -- Simulating Collaborations 176 -- Planning a Simulation 177 -- Running a Simulation 180 -- Designing Good Collaborations 183 -- The Law of Demeter: A Case Study 184 -- Making Collaborations Possible 187 -- Guidelines for Making Connections 188 -- Designing Reliable Collaborations 190 -- When Are We Finished? 191 -- Chapter 6 Control Style 195 -- What Is Control Style? 196 -- Control Style Options 197 -- Making Trade-offs 198 -- Centralizing Control 198 -- Delegating Control 200 -- The Limits of Control Decisions 201 -- Developing Control Centers 205 -- A Case Study: Control Style for External User Events 206 -- Centralizing Control in the MessageBuilder 208 -- Refactoring Decision Making into State Methods within the MessageBuilder 220 -- Abstracting Away Decisions 221 -- Delegating More Responsibility 224 -- Designing the Control Style for the Guessing Neighborhood 225 -- Designing a Similar Control Center: Can We Be Consistent? 230 -- Chapter 7 Describing Collaborations 239 -- Telling Collaboration Stories 240 -- A Strategy for Developing a Collaboration Story 241 -- Establishing Scope, Depth, and Tone 242 -- Listing What You Will Cover 243 -- Deciding on the Level of Detail 243 -- Showing a Bird's-Eye View 244 -- Showing Collaborators Only 245 -- Showing a Sequence of Interactions Among Collaborators 250 -- Showing an In-Depth View 251 -- Showing a Focused Interaction 253 -- Showing an Implementation View 254 -- Showing How to Adapt a Collaboration 254 -- Where UML Diagrams Fall Short 258 -- Choosing the Appropriate Form 263 -- Tell It, Draw It, Describe It: Guidelines 264 -- Organizing Your Work 270 -- Adding Emphasis 271 -- Unfolding Your Story 271 -- Understanding What's Fundamental 272 -- Putting It All Together 273 -- Preserving Stories 274 -- Chapter 8 Reliable Collaborations 277 -- Understanding the Consequences of Failure 278 -- Increasing Your System's Reliability 280 -- Determining Where Collaborations Can Be Trusted 280 -- Trusted Versus Untrusted Collaborations 281 -- Implications of Trust 284 -- Identifying Collaborations to Be Made Reliable 285 -- What Use Cases Tell Us 286 -- Distinguish Between Exceptions and Errors 287 -- Object Exceptions Versus Use Case Exceptions 288 -- Object Exception Basics 288 -- Exception- and Error-Handling Strategies 294 -- Determining Who Should Take Action 296 -- Designing a Solution 299 -- Brainstorm Exception Conditions 299 -- Limit Your Scope 300 -- Record Exception-Handling Policies 302 -- Documenting Your Exception-Handling Designs 303 -- Specifying Formal Contracts 307 -- Reviewing Your Design 311 -- Chapter 9 Flexibility 315 -- What Does It Mean to Be Flexible? 316 -- Degrees of Flexibility 317 -- The Consequences of a Flexible Solution 319 -- Nailing Down Flexibility Requirements 320 -- Recording Variations 324 -- Variations and Realizations 327 -- Identifying the Impact of a Variation 328 -- Exploring Strategies for Realizing Flexibility 329 -- Using Templates and Hooks to Support Variations 330 -- The Role of Patterns in Flexible Designs 338 -- Varying an Object's Behavior with the Strategy Pattern 338 -- Hiding Interacting Objects with Mediator 339 -- Making a Predefined Object or System Fit Using Adapter 340 -- How Do Patterns Increase Flexibility? 340 -- How to Document a Flexible Design 342 -- Consider Your Audience 344 -- Describing How to Make a Variation 345 -- Changing a Working System's Design 350 -- Chapter 10 On Design 355 -- The Nature of Software Design 356 -- Tackling Core Design Problems 357 -- Frame the Problem 358 -- Dealing with Revealing Design Problems 361 -- A Story About Managing Shared Information 362 -- A Story About Connection Problem Complexity 363 -- A Story About a Design Problem That Never Got Easier 364 -- Can Revealing Problems Be Wicked, Too? 365 -- Strategies for Solving Revealing Problems 366 -- Redefining the Problem 368 -- Synthesizing a Solution 369 -- Working on the Rest 370 -- Designing Responsibly 371
Notes "Forewords by Ivar Jacobson and John Vlissides"--cover
Bibliography Includes bibliographical references (pages 375-380) and index
Subject Computer software -- Development.
Object-oriented methods (Computer science)
Author McKean, Alan.
LC no. 2002112293
ISBN 0201379430
9780201379433
OTHER TI Safari Books Online (Series) http://id.loc.gov/authorities/names/no2009197234