CRC 카드

CRC 카드(Class-responsibility-collaboration card)는 객체 지향 소프트웨어 설계에서 사용되는 브레인 스토밍 툴이다. CRC는 "Class - Responsibility - collaborator"(객체 - 책임 - 공동 작업자)의 약자. 워드 커닝햄이 고안하였다. 일반적으로 디자인을 시작할 때 어떤 객체가 필요하고 그들이 어떻게 상호 연계할지 여부를 결정하는 데 사용한다.

CRC 카드에는 색인 카드가 사용된다 (미국에서는 76mm×127mm 크기가 일반). 여기에 다음과 같은 사항을 기술한다:

 객체명
 패키지명 (만약 있다면)
 객체의 책임 (해야할 일)
 객체가 자신의 책임을 다하기 위하여 포함해야 하는 다른 객체의 이름을 열거한다.

한 장의 카드에 1개의 객체에 대한 이상의 사항을 기술한다. 이때 작은 카드를 사용함으로써 디자인의 복잡성을 최소화한다 (너무 많은 것들을 기록하지 않는다). 이것은 설계자들이 각 객체에 대한 세부사항에 집착하는 것을 방지하고 객체의 본질에 집중하도록 하고 생산성을 높이기 위한 것이다. 또한 1개의 객체에 너무 많은 책임(기능)을 포함시키는 것을 막는다. 카드는 휴대용이므로 테이블 위에 펼쳐 여러 사람이 논의에도 적당하다.

작성할 카드(객체)를 결정하는 일반적인 방법은 프로그램의 스펙을 읽고 거기에 등장하는 명사가 객체가 될지, 동사가 책임이 될지 하위 클래스가 될지를 검토하겠다는 것이다. 물론 모든 명사나 동사가 객체나 그 책임이 되는 것은 아니지만 출발점으로 적합하다.

외부 링크 
 A Laboratory For Teaching Object-Oriented Thinking
 A concise introduction at extremeprogramming.org
 Using CRC Cards
 CRC cards for Software Design, a Commercial Product 
 Draw CRC cards online and search for source code matching them 
 A CRC Description of HotDraw

익스트림 프로그래밍