CRC-Cards — Class-Responsibility-Collaboration Cards — sind eine Low-Tech-Technik für objektorientierten Entwurf von Ward Cunningham und Kent Beck. Jede Karteikarte steht für eine Klasse, links ihre Verantwortlichkeiten, rechts ihre Kollaborateure. Teams spielen Szenarien mit den Karten durch und entdecken und verfeinern so Klassen, bevor sie Code schreiben.

CRC-Cards

Details
Vollständiger Name

Class-Responsibility-Collaboration Cards

Auch bekannt als

CRC-Karten, CRC-Card-Methode, Class-Responsibility-Collaborator Cards

Kernkonzepte:

Klasse

Der Name der Klasse oder des Objekts, das modelliert wird — eine Karteikarte pro Klasse

Verantwortlichkeiten

Was die Klasse weiß (Daten, die sie hält) und was sie tut (Verhalten, das sie bereitstellt) — auf der linken Seite der Karte aufgelistet

Kollaborateure

Andere Klassen, von denen diese Klasse abhängt, um ihre Verantwortlichkeiten zu erfüllen — auf der rechten Seite der Karte aufgelistet

Karteikarten als Entwurfsmedium

Bewusst Low-Tech: Physische Karten halten Design-Diskussionen leichtgewichtig, ermutigen zum Verwerfen und Neudenken und verhindern Over-Engineering

Rollenspiel-Szenarien

Teammitglieder halten physisch Karten und durchlaufen Szenarien, simulieren den Nachrichtenaustausch zwischen Objekten zur Validierung des Entwurfs

Kollaboratives Brainstorming

Fördert die Beteiligung verschiedener Fachbereiche; jeder kann beitragen, ohne tiefen technischen Hintergrund zu benötigen

Klassen finden

Beginne mit Substantiven in der Problembeschreibung; Kandidatenklassen werden entdeckt, nicht vorgeschrieben

Iterative Verfeinerung

Karten sind günstig zu verwerfen — Entwürfe werden durch mehrere Runden von Rollenspiel und Kritik weiterentwickelt

Schlüsselvertreter

Ward Cunningham, Kent Beck ("A Laboratory For Teaching Object-Oriented Thinking", OOPSLA 1989)

Wann zu verwenden:

  • Frühe OO-Entwurfsphasen — Entdecken von Klassen, Verantwortlichkeiten und Beziehungen vor dem Codieren

  • Kollaborative Design-Sessions, bei denen mehrere Stakeholder oder Entwickler das Domänenmodell gestalten

  • Vermittlung objektorientierter Denkweise durch greifbare und interaktive Konzepte

  • Validierung von Entwürfen mit LLMs durch Beschreibung von Karten und Durchspielen von Abläufen

  • Leichtgewichtige Architekturerkundung vor dem Einsatz eines UML-Tools oder vollständigen Modells

Verwandte Anker:

  • GRASP - Muster zur Zuweisung von Verantwortlichkeiten an Klassen im OO-Entwurf

  • GoF Design Patterns - Entwurfsmuster, die aus CRC-Card-Sessions entstehen können

  • Domain-Driven Design - CRC-Cards unterstützen Ubiquitous Language und Entity-Entdeckung

Aktueller Stand:

  • Die Definition ist intakt — Karteikarten mit Class, Responsibilities, Collaborators, genau wie von Beck & Cunningham auf der OOPSLA 1989 veröffentlicht; das Original-Paper liegt weiterhin auf Ward Cunninghams Site

  • Die Technik überlebt vor allem als Lehr- und Workshop-Werkzeug für objektorientiertes Denken — ihr ursprünglich erklärter Zweck ("A Laboratory for Teaching Object-Oriented Thinking") — und bleibt ein definierter Eintrag im Agile-Alliance-Glossar; die alltägliche Designdiskussion ist weitgehend zu Whiteboard-Skizzen und leichtgewichtigen Diagrammen gewandert