[UML] 유즈케이스 다이어그램

유즈케이스란, 쉽게 말해 사용자 입장에서 본 시스템 동작에 대한 시나리오이다. 유즈케이스는 설계자와 고객간에 소통하기에 좋은 도구(?)이며, 누군가 시스템의 기능에 대해 쉽게 이해하고자 할 때에도 도움이 된다.
또한 설계자는 고객의 요구사항을 바로 이해하고 있는지 명확히 점검을 할 수도 있다.
 중요한 점은 유즈케이스를 작성할 때 사용자 관점에서 작성되어야 한다는것이다. 즉 외부적 관점에서 작성되어야 한다는 것이다. 유즈케이스는 설계가 아닌 분석의 과정이라는 점을 잊지 말아야 한다.


1. Actor (액터)

 Actor는 똑똑한 분들이 모여있다는 xxxx연구소에서 어느분이 "뭐가 저렇게 성이 없이 그렸나"는 그 졸라맨의 모습을 하고 있다.
 Actor는 시스템과 상호작용을 하지만, 시스템에 속하지 않는다. 쉽게 사용자, 운영자 또는 외부 시스템이 이에 속한다. 사람 모양을 하고 있다고 해서 사람만 Actor 가 된다는 생각을 가질 수도 있다.  하지만 외부의 시스템도 본 시스템과 상호작용을 하면 Actor로 표현된다.

Actor의 Generalization (일반화) 또는 inheritance (상속)
 Actor 도 Generalization을 한다. UML 에서는 inheritance 보다는Generalization라는 표현을 주로 한다.
이해를 돕기 위해 다음 다이어그램을 보자.


그림을 보면 운영자는 사용를 Generalization하고 있다.
'일반 사용자가 할 수 있는 일은 운영자도 할 수 있다라는 게 된다.'

다음 다이어그램을 보면서 이해해보자.
 
 '사용자는 로그인을 할 수 있고 운영자 또한 로그인을 할 수 있다' 가 된다.

하지만 그 반대는 어떨까? 다음 그림을 보자.


여기서 운영자는 로그인을 할 수 있고 권한 설정을 할 수 있다. 하지만 일반사용자는 권한설정을 할 수 없다.


2. UseCase (유즈케이스)

유즈케이스는 타원형(원형)으로 표시한다. 유즈케이스는 액터가 주체가 되어 사용되어지는 기능이라고 할 수 있다. 이때 유즈케이스의 정의는 사용자(고객)의 관점에서 이루어져야 한다. 위의 그림에서 유즈케이스는 로그인과, 권한 설정 같은 것이 유즈케이스라고 할 수 있다.


include, extend, generalize에 대해
 

include
 include란 포함(호출)한다는 뜻이다. include는 일단 리펙토링 후에 공통으로 사용되는 유즈케이스나 사용자의 요구로 인해 분리시켜야 할 유즈케이스가 있다면 이를 include 로 연결시킨다.  다시말해 하위작업의 관계를 표시할 때 사용한다.
 연결은 기반 유즈케이스에서 시작하여 include 할 대상 유즈케이스를 향해 점선 화살표로 표시한다.

 만약 고객이 로그인시에 SSO를 원한다면 다음과 같이, include를 통해 관계를 표시할 수 있다. 여기서 다시 한번 강조하지만 고객의 눈높이에서 작성해야 한다는 점이다. 

include

extend
 extend란 확장이란 의미이다. include 와 비슷하지만, extend는 선택적인 유즈케이스와의 관계를 표시할 때 사용된다. 쉽게 말해 필수적이지 않고 옵션이라고 할 수 있다.
표시방법은 필수적인 유즈케이스인 include와 다르게 반대이다. 
 

extend

 위의 다이어그램을 보면 손님은 계산을 할 수 있지만 현금결제, 카드결제, 외상등의 방법이 있음을 알수 있다.

generalize 
 이것은 일반화의 의미인데 클래스의 상속과 비슷한 의미로 사용된다. 이 관계의 표시를 사용할 때에는 부모 유즈케이스의 단계를 모두 따라야 하며, 부모 유즈케이스가 가지고 있는 include, extends 등을 모두 포함한 모든 관계들도 만족해야 한다. 

2. 시스템 경계

시스템 경계란 시스템을 구분하기 위해 표시하는 사각형의 구역을 말한다. 시스템 내부는 사각형 안에 표시하고 외부는 사각형 바깥에 표시한다.


 

'디자인 패턴' 카테고리의 다른 글

UML 기초.  (0) 2009.04.07