WIPIVERSE

CRC 카드

개요

CRC 카드(Class-Responsibility-Collaboration card)는 객체 지향 소프트웨어 설계 과정에서 사용되는 브레인스토밍 도구이다. CRC는 "Class-Responsibility-Collaborator"(클래스-책임-협력자)의 약자로, 소프트웨어 시스템을 구성할 클래스(객체)와 그 책임, 그리고 다른 클래스와의 협력 관계를 식별하고 정리하는 데 목적이 있다.

배경 및 역사

CRC 카드 기법은 켄트 벡(Kent Beck)과 워드 커닝햄(Ward Cunningham)이 1980년대 후반에 교육용 도구로 처음 제안하였다. 이후 전문 설계자들 사이에서도 널리 사용되었으며, 익스트림 프로그래밍(XP) 실무자들에 의해 권장되었다. 소프트웨어 설계 저술가인 마틴 파울러(Martin Fowler)는 CRC 카드가 여러 대안적 상호작용을 신속하게 고안하는 데 유용한 수단이 될 수 있다고 언급하였다.

카드의 구조

CRC 카드는 일반적으로 색인 카드(index card)로부터 만들어진다. 각 카드는 설계에서 고려되는 하나의 클래스(또는 객체)에 해당하며, 카드는 세 영역으로 나뉜다.

  • 카드 상단: 클래스 이름(class name)
  • 카드 좌측: 해당 클래스가 수행해야 할 책임(responsibilities)
  • 카드 우측: 해당 클래스가 책임을 수행하기 위해 상호작용하는 협력자(collaborators), 즉 다른 클래스들

작은 카드를 사용함으로써 설계의 복잡성을 최소화하고, 클래스의 책임을 축소하며, 구현 세부 사항을 탐구하지 않고 클래스의 본질에 집중할 수 있게 한다. 카드가 휴대 가능하고 테이블 위에 펼쳐 재배치할 수 있으므로, 설계를 논의하는 동안 유연하게 조작할 수 있다는 장점이 있다.

작성 방법

CRC 카드의 작성은 일반적으로 시나리오를 기술하는 것에서 시작한다. 시나리오에서 주요 행위자(actor)와 행동(action)을 식별한 뒤, 명사(noun)는 클래스가 되고, 동사(verb)는 책임이 되며, 상호작용하는 다른 카드들이 협력자가 된다.

활용

CRC 카드는 시스템·소프트웨어 개발의 설계 단계에서 자주 활용되며, 사용 사례(use case) 기술을 클래스 다이어그램으로 전환하는 과정을 원활하게 한다. 이를 통해 개발자는 낮은 결합도(low coupling)와 높은 응집도(high cohesion)를 갖춘 구현을 모색할 수 있다. CRC 카드 세션 이후에는 식별된 상호작용을 포착하기 위해 시퀀스 다이어그램(sequence diagram)을 작성하는 것이 일반적이다.

관련 분야

CRC 카드는 객체 지향 분석·설계(Object-Oriented Analysis and Design, OOAD) 및 책임 주도 설계(Responsibility-Driven Design, RDD)의 맥락에서 사용되며, 소프트웨어공학 교육 및 실무 설계 워크숍에서 널리 채택되고 있다.

둘러보기

더 찾아볼 만한 주제

    전체 문서 보기