CRC-Cards
Details
- Full Name
-
Class-Responsibility-Collaboration Cards
- Also known as
-
CRC Cards, CRC Card Method, Class-Responsibility-Collaborator Cards
Core Concepts:
- Class
-
The name of the class or object being modeled — one index card per class
- Responsibilities
-
What the class knows (data it holds) and what it does (behavior it provides) — listed on the left side of the card
- Collaborators
-
Other classes this class depends on to fulfill its responsibilities — listed on the right side of the card
- Index cards as design medium
-
Deliberately low-tech: physical cards keep design discussions lightweight, encourage discarding and rethinking, and prevent over-engineering
- Role-playing scenarios
-
Team members physically hold cards and walk through scenarios, simulating message passing between objects to validate design
- Collaborative brainstorming
-
Encourages cross-functional participation; everyone can contribute without needing deep technical background
- Finding classes
-
Start with nouns in the problem description; candidate classes are discovered, not prescribed
- Iterative refinement
-
Cards are cheap to discard — designs are evolved through multiple rounds of role-playing and critique
- Key Proponents
-
Ward Cunningham, Kent Beck ("A Laboratory For Teaching Object-Oriented Thinking", OOPSLA 1989)
When to Use:
-
Early OO design phases — discovering classes, responsibilities, and relationships before writing code
-
Collaborative design sessions where multiple stakeholders or developers shape the domain model
-
Teaching object-oriented thinking by making abstract concepts tangible and interactive
-
Validating design with LLMs by describing cards and role-playing request flows
-
Lightweight architecture exploration before committing to a UML tool or full model
Related Anchors:
-
GRASP - Patterns for assigning responsibilities to classes in OO design
-
GoF Design Patterns - Design patterns that can emerge from CRC-Card sessions
-
Domain-Driven Design - CRC Cards support ubiquitous language and entity discovery
Current Status:
-
The definition is intact — index cards with Class, Responsibilities, Collaborators, exactly as Beck & Cunningham published at OOPSLA 1989; the original paper is still hosted on Ward Cunningham’s site
-
The technique survives mainly as a teaching and workshop tool for object-oriented thinking — its original stated purpose ("A Laboratory for Teaching Object-Oriented Thinking") — and remains a defined entry in the Agile Alliance glossary; day-to-day design discussion has largely moved to whiteboard sketches and lightweight diagrams