CRC Overview - Computer Science

Download Report

Transcript CRC Overview - Computer Science

Overview of CRC
CS 4311



CS 4311
B. Beck and W. Cunningham, A Laboratory for Teaching Object-Oriented Thinking,
OOPSLA ’89, October 1-6, 1989.
R. Wirfs-Brock, B. Wilkerson and L. Wiener, L., Designing Object-Oriented Software,
Prentice Hall, 1990. (Chapters 3 and 4)
Hans Van Vliet, Software Engineering, Principles and Practice, 3rd edition, John Wiley
& Sons, 2008. Sections 10.1.4 & 12.3.
1
Outline

Basics of CRC
 CRC
Cards
 CRC Process
Identifying Objects (Classes)
 Identifying Responsibilities
 Assigning Responsibilities

CS 4311
2
CRC Cards



Invented in 1989 by Kent Beck and Ward
Cunningham
A simple yet powerful object-oriented
(analysis/design) technique
Uses a collection of (standard index) cards that
are divided into three sections:
 Class
 Responsibility
 Collaborator
CS 4311
3
Class, Responsibility, and
Collaborator
A class represents a collection of similar
objects.
 A responsibility is anything that a class
knows or does.
 A collaborator is another class that is used
to get information for, or performs actions
for the class at hand.

CS 4311
4
Example
Class: Person
Superclass:
Subclasses: Student
Responsibilities
Knows name
Knows address
Knows phone number
…
CS 4311
Collaborations
AddressBook
PhoneBook
5
More on CRC Cards
3x5 (or 4x6) index cards, post-its, etc.
 One class per card
 In addition to CRC, can also write
superclasses and subclasses.
 On the back, can write a description of
purpose of the class (with its attributes).

CS 4311
6
Why CRC Cards?
CS 4311
7
CRC Approach – The Process

Exploratory phase
 Find
classes
 Determine operations and knowledge for
each class (responsibilities)
 Determine how objects collaborate to
discharge responsibilities

Analysis phase
 Collect
CS 4311
into subsystems
8
How to Find Objects and Their
Responsibilities?

Use nouns and verbs in requirements as clues
 Noun phrases leads to objects
 Verb phrases lead to responsibilities

Determine how objects collaborate to fulfill their
responsibilities
 To

collaborate, objects will play certain roles
Why is this important?
 Objects lead to classes
 Responsibilities lead to operations
or methods
 Collaborations and roles lead to associations
CS 4311
9
Outline

Basics of CRC
 CRC
Cards
 CRC Process
Identifying Objects (Classes)
 Identifying Responsibilities
 Assigning Responsibilities

CS 4311
10
Identifying Objects (Classes)
Start with requirements specification
1. Look for noun phrases.

2.
Separate into obvious classes, uncertain
candidates, and nonsense
Refine to a list of candidate classes.
CS 4311
11
Guidelines for Refining Candidate
Classes




Model physical objects – e.g., disks, printers,
geophones.
Model conceptual objects – e.g., windows, files,
shots, picks.
Choose one word for one concept – what does it
mean within the domain?
Be wary of adjectives – does it really signal a
separate class?
CS 4311
12
Guidelines for Refining (Cont.)




Be wary of missing or misleading subjects –
rephrase in active voice.
Model categories of classes – delay modeling of
inheritance.
Model interfaces to the system – e.g., user
interface, program interface.
Model attribute values, not attributes – e.g.,
customer vs. customer address.
CS 4311
13
Example: Mail-Order Software
Imagine that you are developing order-processing software for a mailorder company, a reseller of products purchased from various suppliers.




CS 4311
Twice a year the company publishes a catalog of products,
which is mailed to customers and other interested people.
Customers purchase products by submitting a list of
products with payment to the company. The company fills
the order and ships the products to the customer’s
address.
The order processing software will track the order from the
time it is received until the product is shipped.
The company will provide quick service. They should be
able to ship a customer’s order by the fastest, most
efficient means possible.
14
Example: Mail-Order Software
Imagine that you are developing order-processing software for a mailorder company, a reseller of products purchased from various suppliers.




CS 4311
Twice a year the company publishes a catalog of products,
which is mailed to customers and other interested people.
Customers purchase products by submitting a list of
products with payment to the company. The company fills
the order and ships the products to the customer’s
address.
The order processing software will track the order from the
time it is received until the product is shipped.
The company will provide quick service. They should be
able to ship a customer’s order by the fastest, most
efficient means possible.
15
Candidate Classes
Nouns and Synonyms
Candidate Class Name
software
mail-order company, company, reseller
products
suppliers
catalog of products
customers, interested people
list of products, order, customer’s order
payment
customer’s address
time it is received
time products is shipped
quick service
CS 4311
16
Candidate Classes (Cont.)

Expect the list to evolve as design
proceeds
 Record
why you decided to include or reject
candidates
 Candidate class list follows configuration
management and version control
CS 4311
17
A Good Class …
Has a clear and unambiguous name
 Has a name that is recognizable by
domain experts
 Begins with an uppercase letter and is a
singular noun
 Has responsibilities
 May actively participates in system

CS 4311
18
Outline

Basics of CRC
 CRC
Cards
 CRC Process
Identifying Objects (Classes)
 Identifying Responsibilities
 Assigning Responsibilities

CS 4311
19
What Are Responsibilities?

The public services that an object may provide
to other objects:
 The
 The

knowledge an object maintains and provides
actions it can perform
That is,
 Convey
a sense of purpose of an object and its place
in the system
 Record services that a class provides to fulfill roles
within the system
 Record knowledge (maintenance) and manipulation
of information in the system
CS 4311
20
Knowledge and Action

Knowing responsibilities
 Knowing
about private encapsulated data
 Knowing about related objects
 Knowing about things it can derive or calculate

Doing responsibilities
 Doing
something itself, such as creating an object or
doing a calculation
 Initiating action in other objects
 Controlling and coordinating activities of other objects
CS 4311
21
Identifying Responsibilities
Use mixtures of:
 Verb phrase identification. Similar to noun phrase
identification, except verb phrases are candidate
responsibilities.
 Scenarios and role play. Perform scenario walkthrough of the system where different persons “play”
the classes, thinking aloud about how they will
delegate to other objects.
 Class enumeration. Enumerate all candidate classes
and come up with an initial set of responsibilities.
 Class relationship examination. Examine all classes
and their relationships to compare how they fulfill
responsibilities.
CS 4311
22
Example of Verb Phrase
Identification
Imagine that you are developing order-processing software for a mailorder company, a reseller of products purchased from various suppliers.




CS 4311
Twice a year the company publishes a catalog of products,
which is mailed to customers and other interested people.
Customers purchase products by submitting a list of
products with payment to the company. The company fills
the order and ships the products to the customer’s
address.
The order processing software will track the order from the
time it is received until the product is shipped.
The company will provide quick service. They should be
able to ship a customer’s order by the fastest, most
efficient means possible.
23
Example of Verb Phrase
Identification
Imagine that you are developing order-processing software for a mailorder company, a reseller of products purchased from various suppliers.




CS 4311
Twice a year the company publishes a catalog of products,
which is mailed to customers and other interested people.
Customers purchase products by submitting a list of
products with payment to the company. The company fills
the order and ships the products to the customer’s
address.
The order processing software will track the order from the
time it is received until the product is shipped.
The company will provide quick service. They should be
able to ship a customer’s order by the fastest, most
efficient means possible.
24
Candidate Responsibilities
Verbs and Synonyms
Candidate Responsibility
Publishes a catalog
Is mailed to customers
Purchases products; submitting
Fills the order
Ships the products; is shipped
Track the order
Is received
Provides quick service
CS 4311
25
Group Exercise
1.
Based on the requirement specification of the
Weather Monitoring System, identify classes by
dividing them into the following three categories:



2.
Obvious
Discarded
Unsure
Repeat the exercise for candidate
responsibilities.
CS 4311
26
Examining Class Relationships
To identify more responsibilities
 Types of relations:

 Is-kind-of:
super and subclasses
 Is-analogous-to: subclasses of same
superclass?
 Is-part-of: not inheritance
CS 4311
27
Is-kind-of Relationship
Often indicates superclass and subclass
 Try to identify common attributes or
actions

CS 4311
28
Is-analogous-to Relationship
May indicate superclass and subclass.
 Look for common or similar responsibilities.

CS 4311
29
Is-part-of Relationship
Not superclass and subclass, i.e., the
whole need not act like the parts.
 Need to be careful about assigning
responsibilities.
 Object composed of other objects need to
know about its parts.

CS 4311
30
Outline

Basics of CRC
 CRC
Cards
 CRC Process
Identifying Objects (Classes)
 Identifying Responsibilities
 Assigning Responsibilities

CS 4311
31
Assigning Responsibilities

Heuristics
 H1:
Distribute intelligence.
 H2: State responsibilities as generally as possible.
 H3: Keep behavior with related information.
 H4: Keep information about one thing in one place.
 H5: Share responsibilities.
CS 4311
32
Heuristics
H1: Distribute intelligence.

What’s intelligence?



Intelligence is what the system knows, actions that it can perform,
and impact it has on other systems and users with which it
interacts
A class gets intelligence based on how much it knows or can do,
and how many other objects it can affect; it often amounts to the
number of responsibilities assigned for the class.
Why distribute?

CS 4311
To make responsibilities smart.
33
Centralized vs. Distributed
Intelligence

Centralized control (extreme)
 One
object would know as much as possible about
the system, including flow of control.
 All other objects would be devoid of intelligence.
 Disadvantages: makes modification difficult; less
behavior an object has, more unintelligent classes
are needed to implement same system.
CS 4311
34
Centralized Control
logic begins
and ends here
CS 4311
objects hold
information
35
Centralized vs. Distributed (Cont.)
 Distributed
intelligence
 Each
object needs to know relatively fewer
things
 Produces a more flexible system
 Ensure that responsibilities are written at
the same level of detail
CS 4311
36
Distributed Control
no one object knows
or does much
logic begins
here
CS 4311
logic
ends here
37
Delegated Control
coordinators
manage each step
logic begins
here
CS 4311
objects knows
and do a substep
logic
ends here
38
Heuristics (Cont.)
H2: State responsibilities as generally as
possible.
To find common responsibilities that can
be shared.
 To make responsibilities reusable.

CS 4311
39
Heuristics (Cont.)
H3: Keep behavior with related
information



CS 4311
If information changes, no update messages
must be sent between objects.
The object that needs to know that something
has changed will know it.
In sum, this makes responsibilities efficient.
40
Heuristics (Cont.)
H4: Keep information about one thing in
one place.
Distribution of information often leads to
a duplication, and thus inconsistency.
 In sum, make responsibilities safe.

CS 4311
41
Heuristics (Cont.)
H5: Share responsibilities.
A certain responsibility or a compound
responsibility can often be best divided
or shared among a few closely related
objects.
 In sum, this make responsibilities simple.

CS 4311
42