[객체지향의 사실과 오해] 객체 지도 -4

2025. 4. 9. 14:41·📚 개발자의 서재/객체지향의 사실과 오해
해당 포스팅은 조영호 작가님의  객체지향의 사실과 오해 (P.194~197)를 읽고 정리한 글입니다.

 

불안정한 재료: 기능

유스케이스의 특성

유스케이스명 : 중도 해지 이자액을 계산한다

일차 액터 : 예금주

주요 성공 시나리오 :
   1. 예금주가 정기예금 계좌를 선택한다.
   2. 시스템은 정기예금 계좌 정보를 보여준다.
   3. 예금주가 금일 기준으로 예금을 해지할 경우 지급받을 수 있는 이자 계산을 요청한다.
   4. 시스템은 중도 해지 시 지급받을 수 있는 이자를 계산한 후 결과를 사용자에게 제공한다.

확장
   3a. 사용자는 해지 일자를 다른 일자로 입력할 수 있다.

 

해당 유스케이스는 유스케이스의 몇 가지 중요한 특성을 잘 보여준다.

 

1. 유스케이스는 사용자와 시스템 간의 상호작용을 보여주는 '텍스트'다.

유스케이스는 다이어그램이 아니다. 중요한 것은 유스케이스 안에 포함돼 있는 상호작용의 흐름(이야기)이다.

 

2. 유스케이스는 하나의 시나리오가 아니라 여러 시나리오의 집합니다.

위 유스케이스에서 확장 시나리오의 3a라는 라벨은 주요 성공 시나리오의 3에 대한 대안적인 흐름이다. 이 예제로부터 유스케이스는 하나의 시나리오가 아니라 이자액 계산이라는 사용자의 목표와 관련된 모든 시나리오의 집합이라는 사실을 알 수 있다.

 

3. 유스케이스는 단순한 피처(feature) 목록과는 다르다.

피처는 시스템이 수행해야 하는 기능의 목록을 단순하게 나열한 것이다. 

 

유스케이스의 강점은 유스케이스가 단순히 기능을 나열한 것이 아니라 이야기를 통해 연관된 기능들을 함께 묶을 수 있다는 점이다.

 

4. 유스케이스는 사용자 인터페이스와 관련된 세부 정보를 포함하지 말아야 한다.

유스케이스는 자주 변경되는 사용자 인터페이스 요소는 배제하고 사용자 관점에서 시스템의 행위에 초점을 맞춘다. 

 

5. 유스케이스는 내부 설계와 관련된 정보를 포함하지 않는다.

유스케이스의 목적은 연관된 시스템의 기능을 이야기 형식으로 모으는 것이지 내부 설계를 설명하는 것이 아니다.

 

 

6. 유스케이스는 설계 기법도, 객체지향 기법도 아니다.

유스케이스가 단지 사용자가 바라보는 시스템의 외부 관점만을 표현한다는 점에 주목하라. 유스케이스에는 단지 사용자가 시스템을 통해 무엇을 얻을 수 있고 어떻게 상호작용할 수 있느냐에 관한 정보만 기술된다. 유스케이스는 단지 기능적 요구사항을 사용자의 목표라는 문맥을 중심으로 묶기 위한 정리 기법일 뿐이다.

 

유스케이스와 객체 구조 사이에는 커다란 간격이 존재한다. 둘 사이의 간격을 자동으로 없앨 수 있는 어떤 방법도 존재하지 않는다. 유스케이스를 기반으로 객체의 구조를 쉽게 추출할 수 있다는 어설픈 설명에 속지 마라. 유스케이스는 객체의 구조나 책임에 대한 어떤 정보도 제공하지 않는다.

 

프로젝트를 할 때 유스케이스가 주로 다이어그램으로 표현되어 있어서 무조건 다이어그램으로만 만들어야 하는 줄 알았다. 하지만 유스케이스의 목적은 사용자가 목표를 달성하기 위한 흐름을 이야기로 풀어낸 것이고 어떻게 표현하는지는 크게 중요하지 않다는 사실을 깨달았다.

 

저작자표시 비영리 변경금지

'📚 개발자의 서재 > 객체지향의 사실과 오해' 카테고리의 다른 글

[객체지향의 사실과 오해] 객체 지도 -6  (0) 2025.04.11
[객체지향의 사실과 오해] 객체 지도 -5  (0) 2025.04.10
[객체지향의 사실과 오해] 객체 지도 -3  (0) 2025.04.08
[객체지향의 사실과 오해] 객체지도 -2  (0) 2025.04.07
[객체지향의 사실과 오해] 객체 지도 -1  (0) 2025.04.06
'📚 개발자의 서재/객체지향의 사실과 오해' 카테고리의 다른 글
  • [객체지향의 사실과 오해] 객체 지도 -6
  • [객체지향의 사실과 오해] 객체 지도 -5
  • [객체지향의 사실과 오해] 객체 지도 -3
  • [객체지향의 사실과 오해] 객체지도 -2
l'avenirJun
l'avenirJun
  • l'avenirJun
    오늘도 꾸준히 개발
    l'avenirJun
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • 📚 개발자의 서재 N
        • 객체지향의 사실과 오해
        • Good Code, Bad Code
        • 도메인 주도 개발 시작하기 N
      • 🔧 트러블 슈팅
      • Java
      • Spring
      • 운영체제
        • 공룡책 학습
      • 알고리즘
      • GIT
      • 면접 지식
      • Spring 단기심화 2기
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    가독성
    책임
    오블완
    코드 계약
    객체
    캡슐화
    객체지향의 사실과 오해
    추상화
    책임-주도 설계
    티스토리챌린지
    코딩트리조별과제
    협력
    매핑 구현
    메시지
    DIP
    애그리거트
    도메인 모델
    리포지터리
    코딩테스트
    표현 영역
    타입
    인터페이스
    유스케이스
    애그리거트 루트
    역할
    도메인 주도 개발 시작하기
    specification
    모듈화
    코드트리
    good code bad code
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
l'avenirJun
[객체지향의 사실과 오해] 객체 지도 -4
상단으로

티스토리툴바