UML은 Unified Modeling Language의 약자로 객체지향 소프트웨어 개발을 위한 표준화된 모델링 언어이다. UML은 소프트웨어 시스템을 시각적으로 모델링하고 문서화하기 위해 사용된다. 객체, 클래스 상속, 연결 및 행위와 같은 소프트웨어 요소를 나타내는 다양한 다이어그램을 제공해서 소프트웨어 개발 프로세스를 지원한다.
UML은 다양한 종류의 다이어그램을 제공해 소프트웨어 시스템의 다양한 측면을 모델링할 수 있다. 주요 UML 다이어그램에는 다음과 같은 것들이 있다.
Class Diagram : 클래스, 인터페이스, 관계 및 속성을 사용하여 시스템의 정적 구조를 모델링한다.
Sequence Diagram: 객체 간의 사용 작용 및 메시지 교환을 시간 순서에 따라 보여준다.
State Diagram : 객체의 상태 전이를 모델링하여 객체의 동적 행위를 나타낸다.
Use Case Diagram: 시스템의 기능적 요구사항과 사용자와의 상호작용을 모델링한다.
요구사항 분석 단계에서는 Use Case Diagram을 주로사용하고 Domain concept Model이나 Software design을 기술한다. UML이전에는 여러개의 다른 표기법들이 존재했는데 이것을 하나로 표준화 시켜서 UML로 만들어 현재는 가장 많이 사용하고 있다.
UML의 전체적인 다이어그램을 도식화 하면 이렇게 나타낼 수 있다. 모든 OOAD에서 각 과정을 거치지는 않고 필요한 Diagram을 사용하여 결과적으로 도출하는 편이다.
UML Diagram을 포함한 다른 산출물과 자원의 상관관계를 표현하면 아래와 같이 나타낼 수 있다. (중요)
Use Case Diagram을 살펴보기 전에 Use Case에 대해 다시 상기해보자면, Use Case의 용도는 시스템의 전체적인 흐름을 파악할 수 있게 해주고 시스템의 기능적 요구사항을 이해할 수 있다. 또한 Use case는 Actor가 보는 시스템의 외부 뷰를 표현해서 Acotr와 system의 상호관계를 확인 할 수 있다. Use Case는 텍스트 서술에 focuse되어 있다.
UML은 Use Case Diagram의 표기법을 정의하여 Use case를 Diagram으로 바라볼 수 있게 해준다.
Use Case Diagram은 만들려는 system의 청사진으로 stakeholer와 커뮤니케이션하기 좋은 tool이다. Use Case들의 목차를 크래픽적인 테이블로 표현하여 Actor, Use Case, Actor와 Use Case간의 관계(include, extend)로 구성된다. 시스템의 사용에 대한 시나리오의 집합으로 사용자의 관점에서 시스템을 모델링 하기 위해 사용자가 시스템에 대해 어떻게 바라보는지를 표현한다. Use Case Diagram은 Diagram으로 표현되어 있어 대개 의뢰인과 개발팀이 참조하는 설계문서의 한 부분으로 사용된다.
이제 Use Case Diagram을 어떻게 그리는지 구성요소를 살펴보자.
Use Case의 핵심이 시스템을 사용하는 입장을 표현하고 공통적인 사용자 목표에 의해 묶인 시나리오들의 집합이기 때문에 Use Case Diagram에도 해당 내용들이 잘 담겨 있어야한다. Use Case의 2가지 레벨을 살펴 보자면 시스템 UseCases와 비즈니스 UseCases가 있다. 시스템 UseCases는 소프트웨어 시스템과의 상호작용을 표현하고 비즈니스 UseCases는 비즈니스와 고객 또는 이벤트와의 상호작용을 표현한다.
Actor는 시스템에 대해서 수행하는 역할자를 의미하는 단어로 시스템과 교류하는 사람이나 시스템 자체이거나 장치가 될 수도 있다. 여러 사람이 하나의 액터로 맵핑되거나 하나의 사람이 여러 액터로 맵핑되는 것도 가능하다. Use Case를 시작시키고, Use Case가 끝나면 그 결과를 받는다.
액터의 종류를 주 액터와 이차 액터로 구분할 수 있다. 주 액터는 UseCase의 주 목적을 가지고 있는 액터로 UseCase를 주도적으로 접근한다. 이차 액터는 UseCase를 실행시키기 위해 시스템이 필요로 하는 지원하는 액터이다. 예를 들어 고객이 물건은 구매하는 UseCase에서 주액터는 물건을 사려는 고객이고 이차 액터는 물건을 계산해주는 직원이다.
Use Case Diagram을 그릴 때 보통 Use Case를 시작시킨 행위자는 왼쪽, 결과를 받는 행위자는 오른쪽에 표현한다.
Use Case Diagram의 예시
Use Case간의 관계에는 Extend와 Include가 있다. 이 두 관계는 Use-Case 다이어그램에서 Use-Case 간의 상호작용을 모델링 할 때 사용된다.
Extend 관계는 하나의 Use Case가 다른 Use Case를 "확장"할 수 있음을 나타낸다. 주로 선택적이거나 예외적인 기능을 나타내며, 기본 Use Case의 흐름을 "확장"한다. 일반적으로 사용자가 특정 조건이나 상황에서 선택할 수 있는 보조적인 기능을 표현한다. Extend 관계를 실선 화살표로 표시되며, 확장되는 Use Case에서 확장될 Use Case를 가리킨다.
다이어그램에서는 아래와 같이 독립적으로표시되어 지는 것을 알 수 있다.
Include관계는 하나의 Use Case가 다른 Use Case를 "포함"할 수 있음을 나타낸다. 주로 공통된 기능을 묶어서 하나의 Use Case로 나타내는데 Include관게는 한 Use Case의 실행 흐름에 다른 Use Case의 기능이 포함됨을 의미한다. Include관계는 점선 화살표로 표시되며, 포함되는 Use Case에서 포함될 Use Case를 가리킨다.
인출은 카드 확인을 포함하는 관계
Use Case Description은 Use Case를 형식에 맞춰서 작성한 것으로 하나의 산출물로 한번에 Use Case에 관한 모든 내용을 확인할 수 있다.