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 CRC cards as a viable alternative to UML sequence diagram to design the dynamics of object interaction and collaboration.[2]
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[2][1]:
- 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.
References
- ^ 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, doi:10.1145/74878.74879, ISBN 0-89791-333-7
- ^ a b c Martin Fowler, UML Distilled, chapter 4
- ^ A concise introduction at extremeprogramming.org
External links
- 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
