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, but are also popular among expert designers and recommended by extreme programming supporters. Martin Fowler has described CRC cards as a viable alternative to UML sequence diagram to design the dynamics of object interaction and collaboration.
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:
- on top of the card, the class name
- on the left, the responsibilities of the class
- on the right, the 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 the designer on the essentials of the class and prevents her/him from getting into its details and inner workings at a time when such detail is probably counter-productive. It also forces the designer to refrain from 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 with other people.
- A Laboratory For Teaching Object-Oriented Thinking paper by Kent Beck and Ward Cunningham
- A CRC Description of HotDraw
- A concise introduction at extremeprogramming.org
- Using CRC Cards