Class-responsibility-collaboration card Source: en.wikipedia.org/wiki/Class-responsibility-collaboration_card

Class-responsibility-collaboration (CRC) cards are a brainstorming tool used in the design of object-oriented software. They were originally proposed by Ward Cunningham and Kent Beck as a teaching tool,[1] but are also popular among expert designers[2] and recommended by extreme programming supporters.[3] Martin Fowler has described in his book about UML that if you want to explore multiple alternative interactions quickly, you may be better off with CRC cards, as that avoids a lot of drawing and erasing. It's often handy to have a CRC card session to explore design alternatives and then use sequence diagram to capture any interactions that you want to refer to later. CRC cards are part of the design phase within system/software development and gives a good overview if you go from use case descriptions to CRC cards and then to class diagrams. This allows a smoother transition with a greater overview and allows the developer to easier implement a system with low binding and high cohesion. CRC cards are used after use case descriptions and before class diagrams within software development but can be skipped for smaller projects.

CRC cards are usually created from index cards. Members of a brainstorming session will write up one CRC card for each relevant class/object of their design. The card is partitioned into three areas:[1][2]

  1. On top of the card, the class name
  2. On the left, the responsibilities of the class
  3. On the right, collaborators (other classes) with which this class interacts to fulfill its responsibilities

Using a small card keeps the complexity of the design at a minimum. It focuses designers on the essentials of the class and prevents them from getting into its details and implementation at a time when such detail is probably counter-productive. It also discourages giving the class too many responsibilities. Because the cards are portable, they can easily be laid out on a table and re-arranged while discussing a design.

Creating CRC cards[edit]

To create a CRC card, you can begin by writing out a scenario which identifies the major actors and actions which the actors do. Only write out actions and actors specific to that particular scenario. Nouns should turn into the classes of the card, verbs typically turn into the responsibilities of the card, and collaborators are the other cards with which the card will be interacting.

See also[edit]


  1. ^ a b Beck, Kent; Cunningham, Ward (Feb 2012), "A laboratory for teaching object oriented thinking", ACM SIGPLAN Notices, india, NY, USA: Abg, 24 (10): 1–6, CiteSeerX, doi:10.1145/74878.74879, ISBN 978-0-89791-333-1
  2. ^ a b Martin Fowler, UML Distilled, chapter 4
  3. ^ A concise introduction at extremeprogramming.org

External links[edit]