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

  • 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