군만두의 IT 공부 일지

[스터디5] 06. 쇼핑몰 서비스 - 도메인 모델, 유스케이스, 책임-주도 설계 본문

프로그래밍/객체지향

[스터디5] 06. 쇼핑몰 서비스 - 도메인 모델, 유스케이스, 책임-주도 설계

mandus 2025. 4. 5. 01:07

목차

 

이번에는 책 198쪽에 있는 쇼핑몰 서비스에 대해서 도메인 모델 및 유스케이스에 대해 책임-주도 설계를 진행했다. 각자 같은 주제에 대해서 그려보고, 스터디원끼리 피드백을 하기로 했다.

06. 객체 지도

  • 책임-주도 설계:
    • 시스템의 기능을 역할과 책임을 수행하는 객체들의 협력 관계로 바라보게 함으로써 두 가지 기본 재료인 유스케이스도메인 모델을 통합한다.
    • 사용자의 관점에서 시스템의 기능을 명시하고, 사용자와 설계자가 공유하는 안정적인 구조를 기반으로 기능을 책임으로 변환하는 체계적인 절차를 따라야 한다.

쇼핑몰 서비스 설계

전체 시나리오에 대해서 고민하니 너무 복잡해서 '고객의 주문'을 중심으로 생각했다.

▲ 도메인 모델은 구조를, 유스케이스는 협력의 출발점이 시스템 책임을 제공한다.

유스케이스

  • 유스케이스:
    • 사용자와 시스템 간의 상호작용을 보여주는 텍스트
    • 하나의 시나리오가 아니라 여러 시나리오들의 집합
    • 단순한 피처(feature) 목록과 다르다.
    • 사용자 인터페이스와 관련된 세부 정보를 포함하지 말아야 한다.
    • 내부 설계와 관련된 정보를 포함하지 않는다.
유스케이스명: 주문 생성

액터: 고객

사전 조건:
- 고객은 로그인 상태여야 한다.
- 장바구니에 하나 이상의 상품이 담겨 있어야 한다.

주요 성공 시나리오:
1. 고객이 장바구니에 상품을 담는다.
2. 고객이 주문을 요청한다.
3. 장바구니는 총 금액을 계산한다.
4. 장바구니는 결제를 요청한다.
5. 결제시스템은 결제를 완료한다.
6. 결제 완료 시 주문이 생성된다.
7. 주문은 배송정보를 생성한다.

확장 시나리오:
3a. 고객이 배송지를 선택한다.  
 - 시스템은 기본 배송지를 불러오며, 고객은 이를 변경할 수 있다.

사후 조건:
- 주문이 시스템에 생성된다.
- 결제가 성공적으로 처리된다.
- 배송 정보가 생성된다.
- 주문 상태가 '결제 완료'로 설정된다.

이 유스케이스는 책 193쪽에 있는 '간단한 이자액 계산 유스케이스'를 기반으로 작성했다.

협력 흐름

▲ 주문을 위한 도메인 객체들의 협력 흐름

  • 객체들의 책임
    • 고객(Customer)의 책임
      • 자신의 개인 정보 제공하기
      • 장바구니 소유 및 관리하기
      • 주문 생성 요청하기
    • 장바구니(Cart)의 책임
      • 장바구니 항목들을 보관하기
      • 장바구니 총액 계산하기
      • 주문으로 변환하기
    • 주문(Order)의 책임
      • 주문 정보 유지하기
      • 주문 상태 관리하기
      • 결제 요청하기
      • 배송 요청하기
    • 상품(Item)의 책임
      • 상품 정보 제공하기
      • 재고 상태 확인하기
    • 배송정보(DeliveryInfo)의 책임
      • 배송지 정보 유지하기
      • 배송 상태 추적하기
    • 결제시스템(PaymentSystem)의 책임
      • 결제 요청 처리하기
      • 결제 결과 반환하기

도메인 모델

  • 도메인 모델:
    • 사용자가 프로그램을 사용하는 대상 영역에 관한 지식을 선택적으로 단순화하고 의식적으로 구조화한 형태
    • 소프트웨어가 목적하는 영역 내의 개념과 개념 간의 관계, 다양한 규칙이나 제약 등을 주의 깊게 추상화한 것

▲ 주문을 위한 도메인 모델

클래스 다이어그램

▲ 주문을 위한 클래스 다이어그램

유스케이스 다이어그램

▲ 주문을 위한 유스케이스 다이어그램

 

 

 

이번 활동을 통해 책임-주도 설계(RDD)에 대한 단순한 이론이 아니라, 실제 도메인 모델이 어떻게 연결되는지 체감할 수 있었다. 아직 익숙하지는 않지만, 직접 그려보는 과정에서 객체의 책임과 협력의 구성에 대한 관점이 확실히 달라진 것 같다.

 

이 글은 『객체지향의 사실과 오해』 책을 학습한 내용을 정리한 것입니다.
Comments