CRC 카드

IT 위키
CRC Card; Class-Responsibility-Collaborator Card
클래스의 이름·책임·협력자를 색인 카드 한 장에 적어 객체지향 설계를 함께 탐색하는 기법

1989년 켄트 벡과 워드 커닝햄이 제안했다. 도구가 카드와 펜뿐이라 회의실에서 바로 할 수 있다.

카드 구성

[편집 | 원본 편집]
클래스 이름 (카드 상단)
책임(Responsibility)
— 카드 왼쪽
협력자(Collaborator)
— 카드 오른쪽
  • 상단 : 클래스 이름
  • 왼쪽 : 이 클래스가 무엇을 아는가(속성)와 무엇을 하는가(연산) — 책임
  • 오른쪽 : 그 책임을 다하기 위해 도움을 받아야 하는 다른 클래스 — 협력자

배치를 거꾸로 적은 선택지가 자주 나온다. 왼쪽이 책임, 오른쪽이 협력자다.

  • 클래스의 연산과 속성을 파악하는 데 쓴다
  • 협력 클래스를 파악하는 데 쓴다
  • 역할극(Role Playing)으로 시나리오를 따라가며 책임이 올바로 배분됐는지 검증한다
  • 책임이 너무 많은 클래스를 발견해 분리한다

상세 알고리즘 설계 도구가 아니다. 알고리즘은 순서도·의사코드·활동 다이어그램으로 한다. CRC 카드는 분석·초기 설계 단계에서 책임의 배분을 보는 도구다.

장점과 한계

[편집 | 원본 편집]
  • 비형식적이라 빠르고, 개발자가 아닌 이해관계자도 참여할 수 있다
  • 카드가 작아 책임을 과하게 늘릴 수 없다 — 자연스러운 제약이 된다
  • 규모가 커지면 관리가 어렵고, 최종 산출물로 남기기에는 부족하다. 정리된 결과는 클래스 다이어그램으로 옮긴다

같이 보기

[편집 | 원본 편집]