430 likes | 659 Views
Overview of CRC. 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). Outline. Basics of CRC
E N D
Overview of CRC 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)
Outline • Basics of CRC • CRC Cards • CRC Process • Identifying Objects (Classes) • Identifying Responsibilities • Assigning Responsibilities
CRC Cards • Invented in 1989 by Kent Beck and Ward Cunningham • Asimple yet powerful object-oriented (analysis/design) technique • Uses a collection of (standard index) cards that are divided into three sections: • Class • Responsibility • Collaborator
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.
Example Class: Person Superclass: Subclasses: Student Responsibilities Collaborations Knows name Knows address AddressBook Knows phone number PhoneBook …
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).
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 into subsystems
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
Outline • Basics of CRC • CRC Cards • CRC Process • Identifying Objects (Classes) • Identifying Responsibilities • Assigning Responsibilities
Identifying Objects (Classes) Start with requirements specification • Look for noun phrases. • Separate into obvious classes, uncertain candidates, and nonsense • Refine to a list of candidate classes.
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?
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.
Example: Mail-Order Software Imagine that you are developing order-processing software for a mail-order company, a reseller of products purchased from various suppliers. • 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.
Example: Mail-Order Software Imagine that you are developing order-processing software for a mail-order company, a reseller of products purchased from various suppliers. • 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.
Candidate Classes Nouns and Synonyms 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 Candidate Class Name
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
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
Outline • Basics of CRC • CRC Cards • CRC Process • Identifying Objects (Classes) • Identifying Responsibilities • Assigning Responsibilities
What Are Responsibilities? • The public services that an object may provide to other objects: • The knowledge an object maintains and provides • The 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
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
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 walk-through 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.
Example of Verb Phrase Identification Imagine that you are developing order-processing software for a mail-order company, a reseller of products purchased from various suppliers. • 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.
Example of Verb Phrase Identification Imagine that you are developing order-processing software for a mail-order company, a reseller of products purchased from various suppliers. • Twice a year the companypublishes 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.
Candidate Responsibilities Verbs and Synonyms 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 Candidate Responsibility
Group Exercise • Based on the requirement specification of the Weather Monitoring System, identify classes by dividing them into the following three categories: • Obvious • Discarded • Unsure • Repeat the exercise for candidate responsibilities.
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
Is-kind-of Relationship • Often indicates superclass and subclass • Try to identify common attributes or actions
Is-analogous-to Relationship • May indicate superclass and subclass. • Look for common or similar responsibilities.
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.
Outline • Basics of CRC • CRC Cards • CRC Process • Identifying Objects (Classes) • Identifying Responsibilities • Assigning Responsibilities
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.
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? • To make responsibilities smart.
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.
Centralized Control objects hold information logic begins and ends here
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
Distributed Control no one object knows or does much logic begins here logic ends here
Delegated Control coordinators manage each step objects knows and do a substep logic begins here logic ends here
Heuristics (Cont.) H2: State responsibilities as generally as possible. • To find common responsibilities that can be shared. • To make responsibilities reusable.
Heuristics (Cont.) H3: Keep behavior with related information • 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.
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.
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.
Example: Mail-Order System Class Responsibility Product Create a catalog Supplier Mail a catalog Catalog Process an order Customer Ship a product Order Track an order Payment ? Company ? Address ?: Receive an order