Use Case Diagram
이번 포스트는 Use Case와 Use Case Diagram 에 대해 다룬다.
- 개발 프로세스의 “추상화 수준”과 “역할”에 따라 구분
- 기획 단계 : Use Case Diagram, Domain Model
- 사용자/ 비즈니스 관점 중심으로 무엇을 할 것인가에 집중
- 설계 단계 : Class Diagram, Sequence Diagram
- 개발자 중심으로 어떻게 구현할 것인가에 집중
- 구체적인 코드 설계의 기반
Class Diagram과 Sequence Diagram에 대해서는 다뤘고, 이번에는 기획 단계에 사용되는 부분에 대해 다룬다.
Use Case
Use Case
- 정의 : 사용자(actor)가 시스템(system)을 사용하여 목표(goal)을 달성하는 과정을 텍스트 기반으로 기술한 것
- 요구사항(주로 기능 요구사항)을 포착하기 위한 주요 수단
- 사용자 중심의 시나리오로 시스템 동작을 설명
- 사용 이유
- 사용자의 목표를 쉽게 표현할 수 있음. (도메인 전문가나 요구사항 제공자가 이해하기 쉬움)
- 기능보다는 목표(goal) 중심)
- 즉, Use Case는 실제로는 요구사항이다.
- FURPS+ 에서 F에 해당
Actor, Scenario, Use Case
1. Actor
- 시스템과 상호작용하는 사람 또는 다른 시스템
2. Scenario
- Use Case 수행 시 일어나는 절차의 흐름
- 특정한 일련의 상호작용
3. Use Case
-
성공과 실패 시나리오들의 집합
- Main Success Scenario, Alternate Scenarios
-
목표 달성을 위한 흐름 표현
Use-Case Model
- 시스템의 기능성과 환경을 표현한 모델
- 시스템의 외부세계와 어떻게 상호작용하는지를 보여줌
Actor
- Primary Actor
- 시스템을 사용해서 어떤 목표를 이루고자하는 주체
- 예시) 고객, 직원, 관리자 등
- Supporting Actor
- 시스템이 정상적으로 동작하기 위해 도와주는 외부 시스템 또는 사람
- 예시) 결제 승인 시스템, 데이터베이스
- Offstage Actor
- 직접 참여하지는 않지만, 시스템 동작에 영향을 받거나 요구사항에 이해관계가 있는 주체
- 예시) 정부 기관, 회계 감사인
Use Case Foramt
-
Brief : 한 문단, 핵심 시나리오 요약
-
Casual : 비공식적 서술형으로 여러 시나리오를 포함
-
Fully Dressed : 모든 요소를 포함
- 완전히 상세하게 작성한 형식
- 개발자, 기획자, 분석가, 테스터 모두가 이해하고 활용할 수 있게 모든 요소를 명확히 기술한 문서
항목 설명 Use Case Name 유스케이스 이름 (예: “책 주문하기”) Scope 시스템의 이름 또는 범위 (예: 온라인 서점 시스템) Level 사용자 목표 수준 (user-goal level 등) Primary Actor 이 유스케이스를 시작하는 주체 Supporting Actors 시스템 수행에 필요한 외부 시스템 등 Stakeholders & Interests 이해관계자 및 기대 효과 Preconditions 유스케이스가 실행되기 전에 충족되어야 하는 조건 Postconditions (Success Guarantees) 성공적으로 수행된 후 보장되는 상태 Minimal Guarantees (Failure case) 실패하더라도 반드시 유지되어야 하는 조건 Trigger 유스케이스 실행을 유발하는 사건 또는 조건 Main Success Scenario 사용자와 시스템 간 정상 시나리오 (step by step) Extensions (Alternate Flows) 예외적 흐름 또는 대체 시나리오 Special Requirements 성능, 보안, 품질 등 비기능 요구사항 Technology and Data Variations 구현 방식이나 데이터의 다양한 처리 조건
- Preconditions and Postconditions(Success Guarantees)
당연하지는 않지만 중요한 조건을 명확히 기술하는 것이 핵심
- Preconditions : 실행 전에 만족해야 하는 조건 (Use Case 시작 전)
- Use Case를 시작할 수 있는 조건을 제한
- Postconditions : 실행 후에 보장되어야 하는 결과 상태 (Use Case 완료 후)
- 성공적으로 끝났을 때 결과가 어떤 상태임을 명시
- Extensions (or Alternate Flows)
Main Success scenario + extensions = 거의 기대효과를 만족함.
Non-functional requirements 는 Supplementary Specification에 해당
Use Case 작성 방법
- UI-free style : 사용자 의도와 시스템 책임만 기술하고, UI 동작은 피하기
- Terse : 짧고 명확하게
- Black-box : 내부 구현 기술은 배제 (How보다는 What에 초점) : analysis
- Actor-Goal : 상황에 맞는 사용자의 목표와 결과에 집중
Test for Useful Use Case
1. The Boss Test
- 상사가 뭐했냐고 물어볼 때, Use Case 이름으로 대답이 가능해야함.
- 명확하고 가치 있는 사용자 행동을 표현하고 있는지를 검토
- 결과가 비즈니스적 가치가 있는가?
2. The EBP Test
- EBP : Elementary Business Process
- 이 Use case가 사용자에게 비즈니스적으로 의미 있는 결과를 제공하는가?
- 하나의 완결된 사용자 목적을 다루고 있는지 확인
- 한 장소에 하나의 사람이 실행할 수 있는 일관된 업무인가?
3. The Size Test
- 하나의 Use Case가 너무 많은 세부 기능을 포함하거나 반대로 너무 작아서 쓸모없을 정도로 단순한 경우를 피함
- 너무 작거나 단일 단계는 아닌가?
작거나 중간 단계여도, 여러 Use Case에서 반복되거나 기술적으로 복잡하다면, 별도 Use Case로 관리할 수 있다.
- [Paying by Credit] : 하위 단계에 해당 -> 별도의 Use Case로 뽑아서 재사용하는 것이 더 좋음.
- [Authenticate User] : Boss test 실패지만, 인증 기능은 복잡도나 보안 요구상 매우 중요한 기능일 수 있음.
Use Case 작성 시기
| Phase | 활동 |
|---|---|
| Inception | 유스케이스 이름과 간단 요약 (2일 워크숍) |
| Elaboration | 10% → 30% → 50% → 80~90% 점진적 상세화 |
| Construction | 남은 유스케이스 구현 진행 |
Use Case Diagram
Use Case Diagram
- 텍스트 중심이지만 간단한 다이어그램은 시스템 경계를 시각화함.
- Actor와 Use Case의 관계를 시각적으로 표현
- 시스템 기능에 대한 고객/이해관계자의 기대를 표현하여 기능 요구사항 중심의 시각화 도구로 사용
- 너무 복잡한 다이어그램은 지양

Use Case Diagram 구성 요소
1. System
- 어떤 시스템을 다루는가?
- 큰 네모박스 안 제일 상단에 적혀 있는 이름이 시스템
2. Actor
-
시스템과 상호작용을 함 (Use Case를 사용하거나, 사용당하는)
- 역할을 나타냄 (특정 사용자가 여러 역할을 수행이 가능함)
- 시스템 외부에 존재함
- 사람 또는 비인간(예 : 서버) 로 구성
3. Use Case
- 시스템이 제공해야 할 기능을 사용자의 관점에서 표현한 것
- 사용자가 시스템을 통해 달성하고자 하는 목표나 기능
- 표기법
- 타원을 사용, 사각형 안의 타원
Use Case Diagram 특징
- Actor는 시스템 외적인 것으로 개발하는 범위에 해당되지 않음.
- System box는 optional (표기해도 되고 안해도 됨)
- 모든 Actor는 적어도 한 개 이상의 Use Case에 연관되어 있어야 한다.
- 모든 Use Case는 적어도 한 개 이상의 Actor에 연관되어 있어야 한다.
- Multiplicities도 있을 수 있다.
관계는 실선으로 표기
Use Case간 관계
1. <<include>>
- 공통 기능을 다른 Use Case에서 반드시 포함해서 호출하는 관계, 항상 실행된다.
- 공통 코드, 재사용
- included use case에서 실행이 끝나면 다시 base use case로 돌아온다.
- 포함되는 Use Case는 독립적으로 실행이 가능하다
2. <<extend>>
- 기본 Use Case 흐름에 선택적으로 확장되는 흐름을 분리
- 조건부로 기능이 확장되어, 확장 포인트(extension point)에서 실행
- 조건적으로, 선택적 흐름으로, 예외처리하기에 좋음
- 기본 흐름에 영향을 주지 않는 부가 기능
3. Generalization
- 상속 관계로 한 Use Case가 다른 Use Case의 행동을 상속받고, 일부를 재정의하거나 확장함
- 상속, 다형성, 공통 기반
- 자식은 부모의 모든 행동 및 관계를 상속하며, 일부를 변경 또는 확장이 가능하다.
abstract을 사용 가능함.- AND, OR 표기에 대해서 협업에서는 막 쓰는 경우가 있음. Abstract 키워드 사용이 좋음.
Use Case Diagram에서의 실수
- Use Case Diagram으로 프로세스를 모델
- 프로세스는 Activity Diagram에서 표현
- Actor를 시스템 내부에 위치
- Actor는 항상 시스템 바깥에 위치함.
- 단순 기능 분할로 너무 많은 Use Case를 생성
- 유사 목적은 그룹화
- 대표적 예시 : CRUD
- Use Case 내부 단계들을 각각의 Use Case로 모델링
- 하나의 Use Case안에서 표현을 해야함.