CRC Cards

Source: comp.object
Date: 25-Mar-98

Related Sites


o-< Problem: How simple 3"x5" index cards can be used for complex object oriented designs.


o-< Patrick Logan wrote:


The idea is to assign a class per index card. You write the name of the class on top. On the left side of the card you write the responsibilities that class has. On the right side of the card, you write the names of the other cards/classes that card/class collaborates with. [Hence CRC - Class, Responsibilities, Collaborators -YS]

The information for the cards comes from role playing scenarios. People on the team take on the role of one or more cards as they all talk/walk (literally) through a scenario.

This is useful for a few things:

  1. Giving people a "feel" for the design.
  2. Allowing people to propose and test changes to the design rapidly (all you have to do is make new cards)
  3. Focus on responsibilities as opposed to "N:M attribute" design as promoted by OMT, Booch, etc.
For you hackers out there, CRC cards were intended to be a way to make the Smalltalk programming environment accessible to groups, especially groups that are not necessarily adept at quick prototyping with Smalltalk programming environments. [...]


o-< Example - the Model-View-Controller pattern using CRC cards:


o-< More Info:

Kent Beck and Ward Cunningham, A Laboratory For Teaching Object-Oriented Thinking
(The original article presenting this technique)

Alistair Cockburn, Using CRC Cards

David M. Rubin, Introduction to CRC Cards

Rebecca Wirfs-Brock, Brian Wilkerson and Lauren Wiener, Designing Object-Oriented Software