CRCModeling

advertisement

Object-Oriented Analysis

Coming up: Motivation

Using CRC Cards and Scenarios to Get Started on a Good Object-

Oriented Design

Slides from Jochen Rick adapted by Dan Fleck

1

Motivation

• It’s all very well understanding what an object is , but it’s much harder to decide what kinds of object you should design in order to implement an application in Smalltalk. Indeed given a set of requirements for an application and a development system like Smalltalk,

‘finding the objects’ is easily the most difficult task an experienced OO developer has to face. —Simon Lewis, The Art and Science of

Smalltalk

Coming up: Good Object-Oriented Style 2

Good Object-Oriented Style

• You can hack in any language, but how do you get reusable, maintainable code?

• Just using Objects doesn’t ensure a good design

– Many C++ programs have only have a single class

– That’s not good object-oriented style

• No process can guarantee good results

– A good process just makes them more likely

Coming up: Design is a Process, not a Waterfall

3

Design is a Process, not a Waterfall

• Design is an iterative activity

– Start with Object-Oriented Analysis and Design

– Move on to OO Programming

– Return to OOA/OOD when necessary

• When creating new functionality

• To solve problems with the code

• OO Analysis is just another perspective

– Good designers (in any field) shift perspective frequently to create a better design

– The boundary between OOA and OOD is fuzzy.

Coming up: OOA vs. OOD 4

OOA vs. OOD

• In analysis, we are mostly concerned with the

DOMAIN MODEL. What are the objects in the domain and how do they collaborate.

• In design, we need to integrate an

APPLICATION MODEL. What objects do I need to add to get this thing to run on a computer and to be realized in some programming language?

Coming up: Object-Oriented Analysis 5

Object-Oriented Analysis

• CRC Cards by Ward Cunningham

• Goal: Understand the Domain as Objects

– Object-Oriented Analysis is Language Independent

– Force Developers to “think” in objects

• Steps

1.

Brainstorm Candidate Classes

2.

Create Initial Class-Responsibility-Collaboration Cards

3.

Come up with scenarios of use in the domain

4.

Use Scenarios and role playing to refine CRC Cards

• When do we do it?

– Before we begin coding (to get a good start)

– To add new functionality (update CRC cards and scenarios regularly)

Coming up: OOA Step 1

Brainstorming Candidate Classes

6

OOA Step 1

Brainstorming Candidate Classes

• Write down all the objects that relate

– Domain Analysis

– Focus on the nouns (objects are nouns)

– Good objects will have attributes and services

• Now, filter and refine the candidates

– Deal with the interface later (Not part of the domain, that’s the application model)

– Are some candidates attributes of others?

– Are some subclasses of others?

– Are some instances of others?

Coming up: Brainstorming Tips 7

Brainstorming Tips

• Two’s only company, Ten’s a crowd

• Don’t forget the user

• All ideas are potentially good

• Analyze – make connections

• Think fast – ponder later

• Every voice gets a turn

• Relax – humor is OK.

Coming up: Candidate Class Review 8

Candidate Class Review

• Has clear unambiguous name, recognized by domain experts

• Has name that fits in with other systems developed by your organization

• Uses singular noun for name

• Begins with Uppercase Letter

• Has responsibilities (what NOT how )

• Remembers (knowledge)

• Is needed (collaborates)

• Actively participates

Coming up: Filter Candidate Classes from CRC Card Book

9

Filter Candidate Classes

• Core Classes (pretty sure these are in

Analysis model)

• Undecided Classes (probably not classes – might be attributes)

• Eliminated Classes – (outside scope of system, Application model classes like

UI components tied to implementation)

Coming up: OOA Step 2

CRC Cards

10

OOA Step 2

CRC Cards

• For each core candidate class, create one CRC card

• What’s a CRC Card?

– Class-Responsibility-

Collaboration

– It’s just a 4x6in index card

• Analysis vs. Design

Information

Coming up: CRC Cards: What Goes Where?

11

CRC Cards: What Goes Where?

Coming up: CRC Card Format (Front) 12

CRC Card Format (Front)

Class Name (OOA)

Purpose/Role (OOA):

Patterns (OOD):

Stereotypes(OOA/OOD):

Coming up: CRC Card Format (Back) 13

CRC Card Format (Back)

Class Name

Superclass:

Subclasses:

Responsibilities Collaborators

Coming up: CRC Card Sample 14

CRC Card Sample Front

Document

Purpose: A Document acts as a container for graphics and text.

Patterns: Composite-Component

Stereotypes: Structurer

Coming up: CRC Card Sample 15

CRC Card Sample Back

Document

Superclass:

Subclasses:

Responsibilities

Know Contents

Know Storage Location

Insert and Removes text, graphics and other elements

Coming up: Stereotypes

Collaborators

16

Stereotypes

• Information Holder

– knows and provides information

• Structurer

– Maintains relationships between objects and information about those relationships

• Service Provider

– Performs work for other objects

• Coordinator

– Reacts to events by delegating tasks to others

• Controller

– Makes decisions and closely directs others’ actions

• Interfacer

– Transforms information and requests between different parts of our system

Coming up: OOA Step 3

Scenarios with CRC Cards

17

OOA Step 3

Scenarios with CRC Cards

• Invent Scenarios

– What should these objects do?

– What if…?

• Play the Cards

– Assign Roles

– Go Through Scenario

– Write down new responsibility

– Add collaborator objects to help with that responsibility

– Team members hold up cards as they participate

Coming up: Scenario Guidelines 18

Scenario Guidelines

• Concrete:

– Bob tries to Login to the system with an incorrect password.

– Sally creates a new Sorceress character and chooses auto-configuration.

• Focus on “must do” items first

• Start easy and move to complex

Coming up: Scenario Guidelines 19

Scenario Guidelines

• Keep a record of scenarios played out

• Explore exception conditions last

• Separate role-play from analysis

Coming up: OOA for a Clock 20

OOA for a Clock

• We want to make a clock. The clock should:

– Have a way to set the current time

– Display the time in hours, minutes, and seconds in different formats

– Update the time to keep it current

Coming up: OOA for a Clock 21

OOA for a Clock

• Brainstorm (Step 1 – Candidate

Classes)

– Candidate classes

Coming up: OOA for a Clock 22

OOA for a Clock

• Brainstorm

– Face for the clock, internal ticker, hours, minutes, seconds, knob for setting the clock

• Filter for Core Objects

Coming up: OOA for a Clock 23

OOA for a Clock

• Brainstorm

• Filter

• Define the Clock class

– Attributes: hours, mins, secs, timezone, state (low bat, etc…),

– Services: update, setTime, alarm, setAlarm, display/time, displayDate, setAmPm, getAmPm

Coming up: OOA for a Clock 24

OOA for a Clock

• Brainstorm

– Face for the clock, internal ticker, hours, minutes, seconds, knob for setting the clock

• Filter

– Ticker, hours, minutes, seconds

• Define the Clock class

– Attributes: seconds, minutes, hours, displayFormat

– Services: get/set, nextSecond, display, setFormat

Coming up: ALERT!!!!

25

ALERT!!!!

• Bad OO Design in Progress

• What did we do wrong?

I’m still designing a program thinking – what’s my data and what do I have to do?

I need to think about a community of cooperating objects!!!

Coming up: Errors in this Design 26

Errors in this Design

• We assumed there was only one class: Clock

– What’s reusable in that?

• We started with data and not with what the object should be responsible for

• We were way too focused on the programming from the start

• Thinking in get/set mode (be aware of your idioms!)

– Java/Python does that, but typically not Smalltalk

Coming up: OOA for a Clock: Second Try 27

OOA for a Clock: Second Try

• Brainstorm objects for Clock

– Display, Time, Ticker/SecondTimer, Clock,

Formatter

• Filter:

• CRC Cards

– Two scenarios

1.

When the ticker pulses the clock, the internal representation of time must increment

2.

When a display is requested, the time must be fetched and formatted

Coming up: Scenario 1: The Ticker Ticks 28

Scenario 1: The Ticker Ticks

• The SecondsTicker pulses the Clock

Coming up: Scenario 1: The Ticker Ticks 29

Scenario 1: The Ticker Ticks

• The SecondsTicker pulses the Clock

• The Clock updates

Time

Coming up: Scenario 1: The Ticker Ticks 30

Scenario 1: The Ticker Ticks

• The SecondsTicker pulses the Clock

• The Clock updates

Time

• Time updates itself

Coming up: Scenario 1: The Ticker Ticks 31

Scenario 1: The Ticker Ticks

• The SecondsTicker pulses the Clock

• The Clock updates

Time

• Time updates itself

End of Scenario

Coming up: Scenario 2: Clock Responds with the Time 32

Scenario 2: Clock Responds with the Time

• Display the time

Coming up: Scenario 2: Clock Responds with the Time 33

Scenario 2: Clock Responds with the Time

• Display the time

• Return hours, minutes, & seconds

Coming up: Scenario 2: Clock Responds with the Time 34

Scenario 2: Clock Responds with the Time

• Display the time

• Return hours, minutes, & seconds

• Translate the time into the display format

Coming up: Scenario 2: Clock Responds with the Time 35

Scenario 2: Clock Responds with the Time

• Display the time

• Return hours, minutes, & seconds

• Translate the time into the display format

End of Scenario

Coming up: OOA for a Clock: Second Try 36

OOA for a Clock: Second Try

Coming up: Why CRC Cards?

37

Why CRC Cards?

• Help you identify objects and their responsibilities

• Help you understand how the objects interact

• Cards form a useful record of design activity

• Cards work well in group situations and are understandable by non-technical stakeholders.

Coming up: In-class Exercise 38

In-class Exercise

• This application will support the operations of a technical library for an R&D organization. This includes the searching for and lending of technical library materials, including books, videos, and technical journals. Users will enter their company ids in order to use the system; and they will enter material ID numbers when checking out and returning items.Each borrower can be lent up to five items. Each type of library item can be lent for a different period of time (books 4 weeks, journals 2 weeks, videos 1 week). If returned after their due date, the library user's organization will be charged a fine, based on the type of item( books $1/day, journals $3/day, videos $5/day).Materials will be lent to employees with no overdue lendables, fewer than five articles out, and total fines less than $100....(Design

Constraints)...

Coming up: In-class Exercise: Handout 39

In-class Exercise: Handout

• Brainstorm Candidate Classes - Whole Class

• Candidate Class Review - Whole class

• Filter Classes - Individual Groups

• Create the cards - Individual Groups

Information Holder - knows and provides information

Structurer - Maintains relationships between objects and information about those relationships

Service Provider - Performs work for other objects

Coordinator - Reacts to events by delegating tasks to others

Controller Makes decisions and closely directs others’ actions

Document

Purpose: …

Interfacer - Transforms information and requests between different parts of our system Patterns:

• Play the cards - Individual Groups

– Scenarios -

Stereotypes: …

• What happens when Johnny Codewarrior returns the book Document, Your job depends on it two days late? He has no other item checked out and no acquired fines.

• What happens when Ivar Jacobson uses the search feature to look for the book Object-Oriented Software

Engineering of which there are 2 copies available?

• What happens when Grady Booch uses the search feature to look for the book Object-Oriented Analysis and

Design with Application of which there is 1 copy available and the database is down?

• Present Final Card Set - Individual Groups

Coming up: OO Analysis Exercise:

Checkers

40

OO Analysis Exercise:

Checkers

• Checkers is played by two people, one with light and one with dark pieces.

• Pieces move diagonally and opponents are captured by jumping over them.

Coming up: OO Analysis Exercise:

Checkers

41

OO Analysis Exercise:

Checkers

• Things to keep in mind

– http://www.jimloy.com/checkers/rules2.htm

– A Piece can only move and capture forward.

– When a piece makes it to the other side of the board, it becomes a king and can move diagonally in any direction as far as it wants.

– Capturing is mandatory. A piece (or king) that is captured is removed from the board.

– The player who has no pieces left or cannot move anymore has lost the game.

Coming up: Candidate Classes 42

Candidate Classes

• Brainstorming:

Coming up: Scenarios 43

Scenarios

• Bob moves first in the new game and moves a checker with a legal move.

• Late in the game, Sally moves a checker into Bob’s home row, changing it to a King.

• Sally takes Bob’s last checker, ending the game.

End of presentation 44

Download