Object Design:Roles, Responsibilities, and Collaborations - Rebecca Wirfs-Brock - 9780201379433 - Softwareentwicklung - Entwurfsmuster, Patterns - Pearson Schweiz AG - Der Fachverlag fuer Bildungsmedien - 978-0-2013-7943-3

Home > Informatik > Softwareentwicklung > Entwurfsmuster, Patterns > Object Design:Roles, Responsibilities, and Collaborations

Object Design:Roles, Responsibilities, and Collaborations

Seite senden! 

Titel:   Object Design:Roles, Responsibilities, and Collaborations
Reihe:   Addison-Wesley
Autor:   Rebecca Wirfs-Brock / Alan McKean
Verlag:   Addison-Wesley (E)
Einband:   Softcover
Auflage:   1
Sprache:   Englisch
Seiten:   390
Erschienen:   November 2002
ISBN13:   9780201379433
ISBN10:   0-201-37943-0

Produktdetail

ISBN
Artikel
Verlag
S
 
Preis SFr
Verfügbar
 
9780201379433 Object Design:Roles, Responsibilities, and CollaborationsAddison-Wesley (E)E 57.10
unbestimmt
Produkt auf meiner Shopping-Liste notieren.

Object Design:Roles, Responsibilities, and Collaborations

Description

This book 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 students can apply them as they 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 students 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.


Table of Contents



Foreword by Ivar Jacobson.


Foreword by John Vlissides.


Preface.


1. 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.



2. 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.



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.



4. 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.



5. 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.



6. 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.



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.

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.



8. 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.



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.

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.



10. 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. 0201379430T10212002
Zum Seitenanfang

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
  • Zum Seitenanfang

    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
    Zum Seitenanfang