CRC 카드
CRC 카드(Class-Responsibility-Collaborator card)는 소프트웨어 개발에서 객체 지향 설계를 위한 도구이다. 개발 초기에 클래스의 특징을 간략하게 정의하는 데 사용되며, 클래스의 책임(Responsibility)과 협력 관계(Collaborator)를 명확하게 파악하고 디자인을 구체화하는데 도움을 준다. 일반적으로 종이 카드에 기록하여 사용하며, 브레인스토밍 및 초기 디자인 단계에서 효율적인 의사소통을 촉진한다.
특징
- 간결성: 클래스에 대한 핵심 정보만을 간략하게 기록하여 복잡성을 줄인다.
- 시각화: 카드 형태로 시각적으로 정보를 표현하여 이해도를 높인다.
- 협업: 팀원 간의 효과적인 의사소통과 공유를 지원한다.
- 반복: 설계 과정에서 카드의 내용을 수정하고 보완하여 점진적으로 디자인을 개선할 수 있다.
- 초기 단계 적합성: 세부적인 구현 전에 전체적인 시스템 구조를 파악하는 데 유용하다.
구성 요소
CRC 카드는 일반적으로 다음 세 가지 주요 요소로 구성된다.
- 클래스 이름(Class Name): 설계 대상이 되는 클래스의 이름을 명시한다. 명확하고 간결한 이름을 사용하는 것이 중요하다.
- 책임(Responsibility): 클래스가 수행해야 하는 작업이나 기능을 나열한다. 동사로 시작하는 간결한 문장으로 표현하는 것이 효과적이다. 예를 들어, "주문을 생성한다", "고객 정보를 저장한다" 와 같이 표현한다.
- 협력자(Collaborator): 해당 클래스가 다른 클래스와 상호작용하기 위해 필요한 클래스들을 나열한다. 어떤 클래스와 어떤 목적으로 협력하는지 명시한다.
활용 방법
- 브레인스토밍: 시스템의 주요 기능과 개념을 파악하고 클래스 후보를 도출한다.
- 카드 작성: 각 클래스에 대해 CRC 카드를 작성하여 클래스 이름, 책임, 협력자를 기록한다.
- 검토 및 수정: 팀원들과 함께 작성한 카드를 검토하고 필요에 따라 수정 및 보완한다.
- 시나리오 구현: 시스템의 주요 시나리오를 구현하여 각 클래스의 책임과 협력 관계가 제대로 작동하는지 확인한다.
- 반복: 필요에 따라 카드를 수정하고 재작성하여 설계를 개선한다.
장점
- 설계 초기 단계에서 간단하고 빠르게 클래스의 구조를 파악할 수 있다.
- 팀원 간의 효과적인 소통과 협업을 가능하게 한다.
- 복잡한 시스템을 이해하기 쉽게 단순화하는 데 도움이 된다.
단점
- 매우 단순한 정보만을 담고 있어서 복잡한 시스템의 설계에는 부족할 수 있다.
- 시각적인 도구이기 때문에 대규모 프로젝트에는 관리가 어려울 수 있다.
CRC 카드는 객체 지향 설계의 초기 단계에서 효과적인 도구이지만, 프로젝트의 규모와 복잡성에 따라 다른 설계 도구와 병행하여 사용하는 것이 좋다.