43
Copyright 1998 1 How to Conduct an Object-Oriented Design Audit Rebecca Wirfs-Brock Wirfs-Brock Associates [email protected]

Copyright 1998 1 How to Conduct an Object-Oriented Design Audit Rebecca Wirfs-Brock Wirfs-Brock Associates [email protected]

Embed Size (px)

Citation preview

Page 1: Copyright 1998 1 How to Conduct an Object-Oriented Design Audit Rebecca Wirfs-Brock Wirfs-Brock Associates rebecca@wirfs-brock.com

Copyright 1998

1

How to Conduct an Object-Oriented

Design Audit

Rebecca Wirfs-BrockWirfs-Brock Associates

[email protected]

Page 2: Copyright 1998 1 How to Conduct an Object-Oriented Design Audit Rebecca Wirfs-Brock Wirfs-Brock Associates rebecca@wirfs-brock.com

Copyright 1998

2

Topics

When?Gathering, understanding, and

reviewingVerifying, recommending, and

reporting

Page 3: Copyright 1998 1 How to Conduct an Object-Oriented Design Audit Rebecca Wirfs-Brock Wirfs-Brock Associates rebecca@wirfs-brock.com

Copyright 1998

3

SystemDescription Exploratory

Design

Refinement

Implementation

Planning

Deployment

Testing

Development Time

Effo

rt

Change CasesArchitecture

Application Hot Spots

When to Audit?Milestone Milestone Milestone

Page 4: Copyright 1998 1 How to Conduct an Object-Oriented Design Audit Rebecca Wirfs-Brock Wirfs-Brock Associates rebecca@wirfs-brock.com

Copyright 1998

4

Informal Development Methods

Highly Responsive

mistakes easily fixed

new design ideas rapidly incorporated

Use Analysis and Design Methods and Techniques

Formal Methodstext book methods must be customized

Teams with Specialists

Frameworks impose consistency

Strongly influenced by Technical Architecture Design

Project Characteristics and

Design Audit Strategies

Small Medium Large

?

Page 5: Copyright 1998 1 How to Conduct an Object-Oriented Design Audit Rebecca Wirfs-Brock Wirfs-Brock Associates rebecca@wirfs-brock.com

Copyright 1998

5

Use Cases

ConversationsCRC Cards

Class Hierarchies

System Architecture

Window Specs

Navigation Map

Transient Persistent

Collaboration Diagrams Sequence Diagrams

Change Cases

Context Diagrams

Contracts

Signatures

Candidate ObjectsAlgorithms

Hot Spots

Artifact Lifetimes

Page 6: Copyright 1998 1 How to Conduct an Object-Oriented Design Audit Rebecca Wirfs-Brock Wirfs-Brock Associates rebecca@wirfs-brock.com

Copyright 1998

6

data

usagecost

code reuse

Reporting

suitableimplementable

quality

suggested improvementsvalid architecture

Page 7: Copyright 1998 1 How to Conduct an Object-Oriented Design Audit Rebecca Wirfs-Brock Wirfs-Brock Associates rebecca@wirfs-brock.com

Copyright 1998

7

Precision, Accuracy, Scale, Quality

Precision- how much you care to say

Accuracy- how correct you are when you say it

Scale- how many things are hiding below what you are viewing

Quality- how well is the design suited to the job

Page 8: Copyright 1998 1 How to Conduct an Object-Oriented Design Audit Rebecca Wirfs-Brock Wirfs-Brock Associates rebecca@wirfs-brock.com

Copyright 1998

8

Getting a Big PictureLower the precision, think more abstractly

characterize and stereotype objects, subsystems and interactions

Select items for relevanceonly look at domain objectsreview classes within an inheritance hierarchy or

compositionexamine uses cases that illustrate the core architecture

Bundle related things togetherSubsystems--- classes supporting a common functionClass categories--- classes with common behavior

Page 9: Copyright 1998 1 How to Conduct an Object-Oriented Design Audit Rebecca Wirfs-Brock Wirfs-Brock Associates rebecca@wirfs-brock.com

Copyright 1998

9

Characterizing Objects and Interactions

Auditing the Boeing Microbrewery Design Case

Study“The Object/Oriented Brewery: A Comparison of Two Object-Oriented Development Methods,” R. Sharble, S. Cohen, ACM Sigsoft, vol. 18, no. 2

“The Object-Oriented Brewery: A Comparison of Two Object-Oriented Methods,”R. Sharble and S. Cohen, Boeing Technical Report BCS-G4059

Page 10: Copyright 1998 1 How to Conduct an Object-Oriented Design Audit Rebecca Wirfs-Brock Wirfs-Brock Associates rebecca@wirfs-brock.com

Copyright 1998

10

ModelingWhat are the key concepts of this domain?What roles do they play?How can we characterize them?

EngineeringIs it well-behaved?Is it scaleable?

variables

operations

The Object

Page 11: Copyright 1998 1 How to Conduct an Object-Oriented Design Audit Rebecca Wirfs-Brock Wirfs-Brock Associates rebecca@wirfs-brock.com

Copyright 1998

11

StereotypingQuickly Assessing Object Roles

Controllers: Manage work

Structurers: Maintain relationsbetween objects

Service-providers: Perform operations

Info-holders: Maintain changeable informationInfo-providers: Answer questions

Coordinators: Delegate work to others

Interfacers: Translateinformation and actions

Page 12: Copyright 1998 1 How to Conduct an Object-Oriented Design Audit Rebecca Wirfs-Brock Wirfs-Brock Associates rebecca@wirfs-brock.com

Copyright 1998

12

Using a Consistent Control Style

Location of control within an architecture

Style of control

Page 13: Copyright 1998 1 How to Conduct an Object-Oriented Design Audit Rebecca Wirfs-Brock Wirfs-Brock Associates rebecca@wirfs-brock.com

Copyright 1998

13

LayersInteracting with external events and

information

Control

Presentation

BusinessServices

TechnicalServices

User Interfacers

Controllers &Coordinators

Information-Holders& Service-Providers

Data and DeviceInterfacers

Utilities

Page 14: Copyright 1998 1 How to Conduct an Object-Oriented Design Audit Rebecca Wirfs-Brock Wirfs-Brock Associates rebecca@wirfs-brock.com

Copyright 1998

14

Characteristics of Delegated Control

Coordinators know about fewer objects than dominating controllers

Objects both know and do things---blends of stereotypes

Higher level communications between objects

Benefits:Changes typically localized and simplerEasier to divide detailed design work

Page 15: Copyright 1998 1 How to Conduct an Object-Oriented Design Audit Rebecca Wirfs-Brock Wirfs-Brock Associates rebecca@wirfs-brock.com

Copyright 1998

15

Characteristics of Centralized Control

Controllers can have extremely complex control logic

Controllers surrounded by simple information holders and service providers

Simple objects tend to have low-level, non-abstract interfaces

Drawback:Changes can ripple among controllingand controlled objects

Page 16: Copyright 1998 1 How to Conduct an Object-Oriented Design Audit Rebecca Wirfs-Brock Wirfs-Brock Associates rebecca@wirfs-brock.com

Copyright 1998

16

Contrasting the Two Brewery Designs

Data-Driven Responsibility-Driven

centralized control delegated control

controllers coordinators

inherited attributes inherited behavior

many low-levelmessages

fewer, higher-levelmessages

lots of simplisticinformation holders

a few smart objects thatblend stereotypes

Page 17: Copyright 1998 1 How to Conduct an Object-Oriented Design Audit Rebecca Wirfs-Brock Wirfs-Brock Associates rebecca@wirfs-brock.com

Copyright 1998

17

Transfer a Batch

Data-Driven Design Responsibility-Driven Design

Page 18: Copyright 1998 1 How to Conduct an Object-Oriented Design Audit Rebecca Wirfs-Brock Wirfs-Brock Associates rebecca@wirfs-brock.com

Copyright 1998

18

Data-Driven Batch Transfer Design

ScheduledScheduledTransferTransfer

Location ofLocation ofAlgorithmAlgorithm

Location of DataLocation of Data

ContainerContainer

InterconnectInterconnect

In ProcessIn ProcessBatchBatch

ValveValveVatVat

PipePipePumpPump

Page 19: Copyright 1998 1 How to Conduct an Object-Oriented Design Audit Rebecca Wirfs-Brock Wirfs-Brock Associates rebecca@wirfs-brock.com

Copyright 1998

19

Responsibility-Driven Batch Transfer

Design

Location ofLocation ofAlgorithmAlgorithm

Location of DataLocation of Data

TransferTransferOrderOrder

VatVat

PumpPump

ValveValve

BatchBatch

ManifoldManifold

Page 20: Copyright 1998 1 How to Conduct an Object-Oriented Design Audit Rebecca Wirfs-Brock Wirfs-Brock Associates rebecca@wirfs-brock.com

Copyright 1998

20

Two Contrasting Classes

ContainerPurpose: An enclosed

volume that is intended to hold liquid.

Responsibilities:

knows whether clean, dirty or in use

knows distance

knows selected valve

ManifoldPurpose: A container for beer

that has multiple connections to others via valves.

Responsibilities:

knows whether clean, dirty or in use

determines distance

manages paths between manifolds

manages connections

Page 21: Copyright 1998 1 How to Conduct an Object-Oriented Design Audit Rebecca Wirfs-Brock Wirfs-Brock Associates rebecca@wirfs-brock.com

Copyright 1998

21

Two Versions of ValveValve ValvePurpose: A mechanical device Purpose: A connection

that is used to connect or separate between two manifolds

two volumes

Responsibilities: Responsibilities:

know status (open/closed) know status (open/closed)

connect two manifolds

know manifolds

If valves knew their connections, manifolds could collaborate with them to connect and disconnect paths.

Page 22: Copyright 1998 1 How to Conduct an Object-Oriented Design Audit Rebecca Wirfs-Brock Wirfs-Brock Associates rebecca@wirfs-brock.com

Copyright 1998

22

Responsibility-Driven Design

Delegated Control

Page 23: Copyright 1998 1 How to Conduct an Object-Oriented Design Audit Rebecca Wirfs-Brock Wirfs-Brock Associates rebecca@wirfs-brock.com

Copyright 1998

23

Data-Driven DesignCentralized Control

Page 24: Copyright 1998 1 How to Conduct an Object-Oriented Design Audit Rebecca Wirfs-Brock Wirfs-Brock Associates rebecca@wirfs-brock.com

Copyright 1998

24

Key Audit ActivitiesVerify application architectureAssess clarity and consistencyImprove key interactionsExamine use of inheritance and

compositionSuggest changes and behavior

refactorings that improve usability, maintainability, and extensibility

Page 25: Copyright 1998 1 How to Conduct an Object-Oriented Design Audit Rebecca Wirfs-Brock Wirfs-Brock Associates rebecca@wirfs-brock.com

Copyright 1998

25C

OR

BA

NameServer

DomainServer

LegacyServer

ApplicationServer

WebServer

WWWBrowser

WWWBrowser

Bank AgentApplication

Bank AgentApplication

CGICORBA

CO

RBA

CORBA

Inte

rnet

Inte

rnet

CORBA

CORBA

CORBA

Validating an Architecture

Reviewing Communications and Control Style of a distributed Internet Banking Application

Page 26: Copyright 1998 1 How to Conduct an Object-Oriented Design Audit Rebecca Wirfs-Brock Wirfs-Brock Associates rebecca@wirfs-brock.com

Copyright 1998

26

DomainServer

LegacyServer

ApplicationServer

WebServer

WWWBrowser

Bank AgentApplicationInternet

Control

Presentation

BusinessServices

TechnicalServices

Utilities BAF

4-Layer

Mapping 4 Layers to the Virtual ATM

Page 27: Copyright 1998 1 How to Conduct an Object-Oriented Design Audit Rebecca Wirfs-Brock Wirfs-Brock Associates rebecca@wirfs-brock.com

Copyright 1998

27

VATM HierarchiesBAFSession (first cut)

BafSession

BafApplicationSession BafDomainSession BafLegacySession BafDatabaseSession

Knows statusManages resourcesManages a result cacheProvide services

Maintains legacy connectionHandles legacy transaction requests

Knows database connectionStores and retrieves persistent objects

Knows userLogs in userManages legacy and db connectionsMaintains user session historyTimes session

Knows userKnows application stateKnows domain sessionControls application

Page 28: Copyright 1998 1 How to Conduct an Object-Oriented Design Audit Rebecca Wirfs-Brock Wirfs-Brock Associates rebecca@wirfs-brock.com

Copyright 1998

28

RecommendationLimit visibility of domain objects to the

domain serverMinimize synchronization complexity

between sessions on multiple processorsMinimize domain and application server

coupling

Initiate service requests on the application server

Process requests on the domain server

Provide request results that can be queried

Page 29: Copyright 1998 1 How to Conduct an Object-Oriented Design Audit Rebecca Wirfs-Brock Wirfs-Brock Associates rebecca@wirfs-brock.com

Copyright 1998

29

VATM HierarchiesBAFSession (second cut)

BafSession

BafApplicationSession BafDomainSession

Knows userKnows application stateKnows domain sessionCoordinate user requests

Knows userLogs in userManages legacy/db connectionsMaintains user session historyTimes sessionMake PaymentTransfer FundsGet Account Summary

.

.

Page 30: Copyright 1998 1 How to Conduct an Object-Oriented Design Audit Rebecca Wirfs-Brock Wirfs-Brock Associates rebecca@wirfs-brock.com

Copyright 1998

30

VATM Object Collaborations

Login Use Case

Page 31: Copyright 1998 1 How to Conduct an Object-Oriented Design Audit Rebecca Wirfs-Brock Wirfs-Brock Associates rebecca@wirfs-brock.com

Copyright 1998

31

VATM Hierarchies Refactoring to Reduce Class

Complexity

GdfSession

BafDatabaseSession

BafApplication Session

Baf DomainSession BafLegacySession

GdfBrokeredSessionKnows who does whatForwards messages

Knows statusManages resourcesManages a result cacheProvide services

Page 32: Copyright 1998 1 How to Conduct an Object-Oriented Design Audit Rebecca Wirfs-Brock Wirfs-Brock Associates rebecca@wirfs-brock.com

Copyright 1998

32

VATM Compositions Minimize Database Design Changes

11..*

1

BafCustomerUser

1..*

11

BafUserAccount

1

1..* 1..*

1

BafCustomer

11..*

1BafAccount

11

1..*

1

1BafLegacyAccount

1 1

Page 33: Copyright 1998 1 How to Conduct an Object-Oriented Design Audit Rebecca Wirfs-Brock Wirfs-Brock Associates rebecca@wirfs-brock.com

Copyright 1998

33

Object Design Guidelines

Favor composition over inheritanceFactor behavior into supporting methodsFavor simplicity

From simple to complex

parameterize a method

simple conditional checking and decisions within a method

classify variations with inheritance

dynamic interpretation of information

Page 34: Copyright 1998 1 How to Conduct an Object-Oriented Design Audit Rebecca Wirfs-Brock Wirfs-Brock Associates rebecca@wirfs-brock.com

Copyright 1998

34

Fixing the Data-Driven Design

Removing Central Responsibilities

Page 35: Copyright 1998 1 How to Conduct an Object-Oriented Design Audit Rebecca Wirfs-Brock Wirfs-Brock Associates rebecca@wirfs-brock.com

Copyright 1998

35

Improve Encapsulation

Approach #1Delegate creation of Bottled

Batch to In Process Batch

Approach #2 Collapse 2 information

holders into 1

In Process Batch

Batch

Bottled Batch sizerecipe IDbatch IDdate made: Datedate bottled: Datebottled: BooleaninProcess: Boolean

sizerecipe IDbatch IDdate made: Date

sizerecipe IDbatch IDdate bottled: Date

Page 36: Copyright 1998 1 How to Conduct an Object-Oriented Design Audit Rebecca Wirfs-Brock Wirfs-Brock Associates rebecca@wirfs-brock.com

Copyright 1998

36

Managing Information Abstraction

Reviewing the Presentation Layer for a Customer Support

ApplicationPresentation Business Logic Database

CICS SQL

COBOL DB/2Smalltalk

Page 37: Copyright 1998 1 How to Conduct an Object-Oriented Design Audit Rebecca Wirfs-Brock Wirfs-Brock Associates rebecca@wirfs-brock.com

Copyright 1998

37

Raise the Abstraction Level

“… instead of using a two element array to hold the old and new value [of a display field], create a class named VersionedObject.”

Array VersionedObject

oldValuenewValue

Page 38: Copyright 1998 1 How to Conduct an Object-Oriented Design Audit Rebecca Wirfs-Brock Wirfs-Brock Associates rebecca@wirfs-brock.com

Copyright 1998

38

Whole ValueRaise the abstraction level of a

data type

WholeValue

dataunitOfMeasure

printOn:

asThisasThat

:

Week

3'Week(s)'

printOn:

asMonthsasDays

Example

Page 39: Copyright 1998 1 How to Conduct an Object-Oriented Design Audit Rebecca Wirfs-Brock Wirfs-Brock Associates rebecca@wirfs-brock.com

Copyright 1998

39

Improve Maintenance by Compacting

ClassesMake smarter information holders

… we could eliminate subclasses… if a WorkObject adds responsibilities for knowing whether it should open a view or a dialog, and which view or dialog was appropriate

Remove weak classes from inheritance hierarchies“…icon, view and title string could easily be added as instances variables to

WorkObject. This would require addition of information … so they could be initialized. This removes 87 classes from the system.”

Page 40: Copyright 1998 1 How to Conduct an Object-Oriented Design Audit Rebecca Wirfs-Brock Wirfs-Brock Associates rebecca@wirfs-brock.com

Copyright 1998

40

Safely Turning Responsibilities into Detailed Design and

Code

Rectangle

Knows location

Knows size

Draw

Rectangle

?

Page 41: Copyright 1998 1 How to Conduct an Object-Oriented Design Audit Rebecca Wirfs-Brock Wirfs-Brock Associates rebecca@wirfs-brock.com

Copyright 1998

41

Safely Implementing Responsibilities

Avoid implementation revealing messagesexample: provide getters but not setters

lowerLeftCorner() upperLeftCorner()

lowerRightCorner() upperRightCorner()

Avoid redundant messagesAppropriately place responsibilities

Page 42: Copyright 1998 1 How to Conduct an Object-Oriented Design Audit Rebecca Wirfs-Brock Wirfs-Brock Associates rebecca@wirfs-brock.com

Copyright 1998

42

Safely Implementing Responsibilities

Don’t spread an atomic responsibility across multiple messages

Avoid messages that break an objectrectangle.moveCorner(newCorner)

Avoid overly restrictive implementations Don’t cloak hidden limitationscreateRectangle (lowerLeftCorner, width, height)

replaced with

createConstrainedRectangle(lowerLeftCorner, width, height)

createMinimumSizedRectangle(lowerLeftCorner)

Page 43: Copyright 1998 1 How to Conduct an Object-Oriented Design Audit Rebecca Wirfs-Brock Wirfs-Brock Associates rebecca@wirfs-brock.com

Copyright 1998

43

Good Interfaces Preserve a Good Design

“Consider the objects— books, radios, kitchen appliances, office machines, and light switches— that make up our everyday lives. Well-designed objects are easy to interpret and understand. They contain visible clues to their operation. Poorly designed objects can be difficult and frustrating to use. They provide no clues— or sometimes false clues. They trap the user and thwart the normal process of interpretation and understanding. Alas, poor design predominates. The result is a world filled with frustration, with objects that cannot be understood, with devices that lead to error.” Donald Norman, The Design of Everyday Things