소프트웨어공학

[소프트웨어공학] CRC(Class, Responsibility, Collaboration) card

미 성 2024. 4. 24. 06:05

 

 

 

CRC 카드

 

=> Class, Responsibility, Collaboration 이 세 가지 주요 요소를 각 카드에 기록하여 클래스의 역할, 그리고 다른 클래스와의 관계를 명확하게 합니다.

 

  1. 사용 사례 분석을 통한 후보 추출:
    • 프로젝트 팀은 사용 사례(use case) 문서나 설명을 기반으로 텍스트 분석을 수행합니다. 이 과정에서 시스템이 수행해야 할 작업, 기능, 요구 사항 등을 텍스트에서 식별합니다. 이를 통해 초기 후보(candidate) 클래스, 기능, 역할 등이 추출됩니다. 이 단계에서 주목하는 것은 시스템이 사용자나 다른 시스템과 어떻게 상호작용하는지에 대한 설명입니다.
  2. 브레인스토밍을 통한 추가 후보 추출:
    • 팀원들이 함께 모여 브레인스토밍을 진행합니다. 이 과정에서 각자의 아이디어를 공유하고, 토론을 통해 추가적인 후보 클래스, 기능, 역할 등을 도출합니다. 이 단계는 창의적인 아이디어를 발굴하고, 다양한 관점에서 시스템을 바라보는 데 중점을 둡니다.
  3. CRC 카드를 사용한 롤-플레잉:
    • CRC 카드(Class-Responsibility-Collaborator)를 활용하여 각 클래스의 역할을 명확히 합니다. 카드에는 클래스 이름, 해당 클래스가 수행해야 할 책임(Responsibilities), 그리고 협력할 다른 클래스(Collaborators)가 적혀 있습니다. 팀원들은 이 카드를 사용해 각 클래스가 실제로 어떤 역할을 하는지, 어떤 클래스들과 상호작용하는지에 대해 롤-플레잉을 진행합니다.
  4. 기능의 적합성 검토:
    • 롤-플레잉을 진행하면서 각 클래스와 기능의 적합성을 검토합니다. 이 과정에서 클래스의 책임이 너무 많거나, 모호하거나, 불필요한 기능이 있는지 등을 평가합니다. 또한, 클래스 간의 협력 관계가 효율적인지도 검토합니다. 이를 통해 어떤 기능이 적합하고, 어떤 기능이 수정되거나 제거되어야 하는지를 결정합니다.
  5. 새로운 클래스의 생성:
    • 위의 과정을 통해 새로운 클래스가 생성됩니다. 불필요하거나 중복된 기능을 제거하고, 새로운 기능이나 클래스를 추가하여 시스템의 구조를 보다 명확하고 효율적으로 만듭니다. 이 단계에서는 시스템의 전체적인 설계가 점진적으로 개선되며, 각 클래스와 그 책임이 더욱 명확해집니다.

이 과정들은 시스템의 초기 설계 단계에서 중요한 역할을 하며, 팀원들이 시스템의 구조와 각 클래스의 역할을 명확히 이해하는 데 도움을 줍니다.

 

 

 

* The three class types in the unified process are

 

- Entity classes : 수 년 동안 keeping 되어야 하는 정보 저장

- Boundary classes : UI인데 이제 GUI

- Control classes : 계산하는 클래스