Object-Oriented Analysis Using CRC Cards and Scenarios Oriented Design

advertisement
Object-Oriented Analysis
Using CRC Cards and Scenarios
to Get Started on a Good ObjectOriented Design
Slides from Jochen Rick adapted by Dan Fleck
Object-Oriented Analysis
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
Object-Oriented Analysis
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
Object-Oriented Analysis
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.
Object-Oriented Analysis
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?
Object-Oriented Analysis
5
Object-Oriented Analysis
•
•
CRC Cards by Ward Cunningham
Goal: Understand the Domain as Objects
–
–
•
Steps
1.
2.
3.
4.
•
Object-Oriented Analysis is Language Independent
Force Developers to “think” in objects
Brainstorm Candidate Classes
Create Initial Class-Responsibility-Collaboration Cards
Come up with scenarios of use in the domain
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)
Object-Oriented Analysis
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?
Object-Oriented Analysis
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.
Object-Oriented Analysis
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
Object-Oriented Analysis
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)
Object-Oriented Analysis
10
OOA Step 2
CRC Cards
• For each core
candidate class,
create one CRC card
• What’s a CRC Card?
– Class-ResponsibilityCollaboration
– It’s just a 4x6in index
card
• Analysis vs. Design
Information
Object-Oriented Analysis
11
CRC Cards: What Goes Where?
Object-Oriented Analysis
12
CRC Card Format (Front)
Class Name (OOA)
Purpose/Role (OOA):
Patterns (OOD):
Stereotypes(OOA/OOD):
Object-Oriented Analysis
13
CRC Card Format (Back)
Class Name
Superclass:
Subclasses:
Responsibilities
Object-Oriented Analysis
Collaborators
14
CRC Card Sample
Document
Purpose: A Document acts as a container for
graphics and text.
Patterns: Composite-Component
Stereotypes: Structurer
Object-Oriented Analysis
15
CRC Card Sample
Document
Superclass:
Subclasses:
Responsibilities
Know Contents
Know Storage Location
Collaborators
Insert and Removes text,
graphics and other
elements
Object-Oriented Analysis
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
Object-Oriented Analysis
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
Object-Oriented Analysis
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
Object-Oriented Analysis
19
Scenario Guidelines
• Keep a record of scenarios played out
• Explore exception conditions last
• Separate role-play from analysis
Object-Oriented Analysis
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
Object-Oriented Analysis
21
OOA for a Clock
• Brainstorm (Step 1 – Candidate
Classes)
– Time
– Counter
– , Clock, Display
–,
– , TimeZones,
Object-Oriented Analysis
22
OOA for a Clock
• Brainstorm
– Face for the clock, internal ticker, hours, minutes,
seconds, knob for setting the clock
• Filter for Core Objects
Object-Oriented Analysis
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
Object-Oriented Analysis
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
Object-Oriented Analysis
25
ALERT!!!!
• Bad OO Design in Progress
• What did we do wrong?
I’m still designing a program – what’s my data and
what do I have to do?
I need to think about a community of cooperating
objects!!!
Object-Oriented Analysis
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
Object-Oriented Analysis
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
Object-Oriented Analysis
28
Scenario 1: The Ticker Ticks
• The SecondsTicker
pulses the Clock
Object-Oriented Analysis
29
Scenario 1: The Ticker Ticks
• The SecondsTicker
pulses the Clock
• The Clock updates
Time
Object-Oriented Analysis
30
Scenario 1: The Ticker Ticks
• The SecondsTicker
pulses the Clock
• The Clock updates
Time
• Time updates itself
Object-Oriented Analysis
31
Scenario 1: The Ticker Ticks
• The SecondsTicker
pulses the Clock
• The Clock updates
Time
• Time updates itself
End of Scenario
Object-Oriented Analysis
32
Scenario 2: Clock Responds with
the Time
• Display the time
Object-Oriented Analysis
33
Scenario 2: Clock Responds with
the Time
• Display the time
• Return hours,
minutes, & seconds
Object-Oriented Analysis
34
Scenario 2: Clock Responds with
the Time
• Display the time
• Return hours,
minutes, & seconds
• Translate the time
into the display
format
Object-Oriented Analysis
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
Object-Oriented Analysis
36
OOA for a Clock: Second Try
Object-Oriented Analysis
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.
Object-Oriented Analysis
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)...
Object-Oriented Analysis
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
Interfacer - Transforms information and requests between different parts of our system
• Play the cards - Individual Groups
– Scenarios •
•
•
Document
Purpose: …
Patterns:
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
Object-Oriented Analysis
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.
Object-Oriented Analysis
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.
Object-Oriented Analysis
42
Candidate Classes
• Brainstorming:
Object-Oriented Analysis
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.
Object-Oriented Analysis
44
Download