1 / 43

Overview of CRC

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

Download Presentation

Overview of CRC

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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)

  2. Outline • Basics of CRC • CRC Cards • CRC Process • Identifying Objects (Classes) • Identifying Responsibilities • Assigning Responsibilities

  3. 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

  4. 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.

  5. Example Class: Person Superclass: Subclasses: Student Responsibilities Collaborations Knows name Knows address AddressBook Knows phone number PhoneBook …

  6. 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).

  7. Why CRC Cards?

  8. 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

  9. 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

  10. Outline • Basics of CRC • CRC Cards • CRC Process • Identifying Objects (Classes) • Identifying Responsibilities • Assigning Responsibilities

  11. 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.

  12. 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?

  13. 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.

  14. 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.

  15. 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.

  16. 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

  17. 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

  18. 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

  19. Outline • Basics of CRC • CRC Cards • CRC Process • Identifying Objects (Classes) • Identifying Responsibilities • Assigning Responsibilities

  20. 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

  21. 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

  22. 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.

  23. 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.

  24. 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.

  25. 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

  26. 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.

  27. 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

  28. Is-kind-of Relationship • Often indicates superclass and subclass • Try to identify common attributes or actions

  29. Is-analogous-to Relationship • May indicate superclass and subclass. • Look for common or similar responsibilities.

  30. 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.

  31. Outline • Basics of CRC • CRC Cards • CRC Process • Identifying Objects (Classes) • Identifying Responsibilities • Assigning Responsibilities

  32. 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.

  33. 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.

  34. 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.

  35. Centralized Control objects hold information logic begins and ends here

  36. 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

  37. Distributed Control no one object knows or does much logic begins here logic ends here

  38. Delegated Control coordinators manage each step objects knows and do a substep logic begins here logic ends here

  39. Heuristics (Cont.) H2: State responsibilities as generally as possible. • To find common responsibilities that can be shared. • To make responsibilities reusable.

  40. 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.

  41. 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.

  42. 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.

  43. 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

More Related