research

Design Class Diagram (Ch 19)

Design Class Diagram (Ch 19)

DCD는 08-interaction-diagram|Interaction Diagram에서 발견된 소프트웨어 클래스, 메서드, 속성, 관계를 정적으로 정리한 다이어그램이다.

Domain Model과의 차이

04-domain-model|Domain Model은 현실 세계 개념이고, DCD는 소프트웨어 클래스다.

Domain ModelDCD
대상현실 세계 개념소프트웨어 클래스
메서드없음있음
목적도메인 이해구현 가이드
연관관계개념적구현 가능한 (navigability 방향 표시)

Domain Model이 DCD에 주는 것은 이름과 속성의 영감이다. 예를 들어 도메인에 Sale, SalesLineItem이라는 개념이 있으면, 소프트웨어에도 비슷한 이름의 클래스를 만든다.

DCD를 만드는 법

  1. Interaction Diagram에서 등장한 클래스를 모은다
  2. 각 클래스에 보낸/받은 메시지를 메서드로 정리한다
  3. Interaction Diagram에서 드러난 연관관계와 navigability를 추가한다
  4. Domain Model에서 가져온 속성을 추가한다

핵심: DCD에서 연관관계의 navigability(화살표 방향)는 Interaction Diagram에서 결정된다. 객체 A가 객체 B에게 메시지를 보냈다면, A→B 방향의 연관이 필요하다.

Mermaid 예시: NextGen POS Iteration 1

바이브 코딩에서의 활용

DCD는 LLM에게 넘길 수 있는 가장 완전한 클래스 설계 명세다. 메서드 시그니처, 관계, 속성이 다 있으니 코드 생성에 바로 쓸 수 있다.

프롬프트 예시:
"다음 DCD를 기반으로 Python/TypeScript 클래스를 구현해줘.

클래스 관계:
- Register → ProductCatalog (1:1, register가 catalog를 참조)
- Register → Sale (1:1, 현재 진행 중인 sale)
- Sale → SalesLineItem (1:N, 컬렉션으로 관리)
- SalesLineItem → ProductSpecification (N:1)
- Sale → Payment (1:1)

메서드:
- Register.enterItem(itemID, qty): catalog에서 spec 조회 → sale.makeLineItem(spec, qty)
- Sale.getTotal(): 모든 lineItem의 getSubtotal() 합산
- SalesLineItem.getSubtotal(): quantity × spec.getPrice()

DCD의 navigability 방향대로 참조 관계를 구현하고,
생성자에서 필요한 의존성을 주입받도록 해줘."