CRC 카드
IT 위키
- CRC Card; Class-Responsibility-Collaborator Card
- 클래스의 이름·책임·협력자를 색인 카드 한 장에 적어 객체지향 설계를 함께 탐색하는 기법
1989년 켄트 벡과 워드 커닝햄이 제안했다. 도구가 카드와 펜뿐이라 회의실에서 바로 할 수 있다.
| 클래스 이름 (카드 상단) | |
|---|---|
| 책임(Responsibility) — 카드 왼쪽 열 |
협력자(Collaborator) — 카드 오른쪽 열 |
- 상단 : 클래스 이름
- 왼쪽 : 이 클래스가 무엇을 아는가(속성)와 무엇을 하는가(연산) — 책임
- 오른쪽 : 그 책임을 다하기 위해 도움을 받아야 하는 다른 클래스 — 협력자
배치를 거꾸로 적은 선택지가 자주 나온다. 왼쪽이 책임, 오른쪽이 협력자다.
- 클래스의 연산과 속성을 파악하는 데 쓴다
- 협력 클래스를 파악하는 데 쓴다
- 역할극(Role Playing)으로 시나리오를 따라가며 책임이 올바로 배분됐는지 검증한다
- 책임이 너무 많은 클래스를 발견해 분리한다
상세 알고리즘 설계 도구가 아니다. 알고리즘은 순서도·의사코드·활동 다이어그램으로 한다. CRC 카드는 분석·초기 설계 단계에서 책임의 배분을 보는 도구다.
- 비형식적이라 빠르고, 개발자가 아닌 이해관계자도 참여할 수 있다
- 카드가 작아 책임을 과하게 늘릴 수 없다 — 자연스러운 제약이 된다
- 규모가 커지면 관리가 어렵고, 최종 산출물로 남기기에는 부족하다. 정리된 결과는 클래스 다이어그램으로 옮긴다
