<유스케이스 다이어그램>
- 시스템과 사용자의 상호작용을 다이어그램으로 표현한 것이다.
- 사용자의 관점에서 시스템의 서비스, 기능 및 그와 관련한 외부와의 관계를 보여준다.
- 프로젝트에 대한 요구사항을 정의하고 세부기능을 분석하여 개발 범위를 정할 때 작성한다.
<구성 요소>
1) 시스템(System)
- 만들고자 하는 프로그램을 나타냄
- 유스케이스들을 둘러싼 사각형 틀로 시스템 명칭을 안쪽 상단에 작성한다.
2) 액터(Actor)
- 시스템의 외부에 있고 시스템과 상호작용을 하는 사람(시스템의 기능을 사용하는 사람), 시스템(시스템에 정보를 제공하는 또 다른 시스템)을 말한다.
- 원과 선을 조합하여 사람모양으로 표현
- 액터명은 위나 아래에 표시하여 액터의 역할을 작성
3) 유스케이스(Usecase)
- 사용자 입장에서 바라본 시스템의 기능
- 시스템이 액터에게 제공해야 하는 기능으로 시스템의 요구사항을 나타낸다.
- 타원으로 표시하고 안쪽에 유스케이스명을 작성한다.(보통 "~한다"와 같이 동사로 표현한다.)
4) 관계(Relation)
- 액터와 유스케이스 사이의 의미있는 관계를 나타낸다.
- 종류로는 연관, 의존, 일반화가 있으며 의존관계는 포함,확장으로 나눠진다.
4-1) 연관관계(Association)
- 유스케이스와 액터간의 상호작용이 있음을 표현한다.
- 유스케이스와 액터를 실선으로 연결
4-2) 의존관계(Dependency)
1. 포함관계(include)
- 하나의 유스케이스가 다른 유스케이스의 실행을 전제로 할 때 형성되는 관계
- 포함되는 유스케이스는 포함하는 유스케이스를 실행하기 위해 반드시 실행되어야 하는 경우에 적용한다.
- 포함하는 유스케이스에서 포함되는 유스케이스 방향으로 점선으로 연결 후 <<include>> 라고 표기한다.
2. 확장관계(extend)
- 확장 기능 유스케이스와 확장 대상 유스케이스 사이에 형성되는 관계
- 확장 대상 유스케이스를 수행할 때 특정 조건에 의해서만 확장 기능 유스케이스를 수행하는 경우에 적용한다.
- 확장 기능 유스케이스에서 확장 대상 유스케이스 방향으로 화살표를 점선으로 연결하고 <<extend>> 라고 표기한다.
4-3) 일반화 관계(Generalization)
- 유사한 유스케이스나 액터를 모아 추상화한 유스케이스
- 액터와 연결시켜 그룹을 만들어 이해도를 높이기 위한 관계
- 구체적인 유스케이스에서 추상적인 유스케이스 방향으로 끝부분이 삼각형으로 표현된 화살표를 실선으로 연결하여 표현
<작성 순서>
1. 시스템 정의
- 시스템 영역과 이름을 정의한다.
2. 액터 정의
- 사용자(Primary Actor)를 정의한다.
- 시스템과 상호작용하는 외부 시스템(Secondary Actor)을 정의한다.
3. 유스케이스 정의
- Actor가 요구하는 서비스를 식별한다.
- Actor들이 시스템과 상호작용하는 행위를 식별한다.
4. 관계 정의
- Actor와 Actor 사이의 관계를 정의한다.
- Actor와 유스케이스 사이의 관계를 정의한다.
- 유스케이스 간의 관계를 정의한다.
5. 유스케이스 구조화
- 두 개 이상의 유스케이스의 공통된 서비스를 추출하여 일반화시킨다.
<주의사항>
- 유스케이스 다이어그램은 흐름도가 아니므로 기능의 순서대로 그리면 안됨
- 모든 기능은 액터가 수행할 수 있는 개별 기능으로 봐야하고, 순서는 꼭 필요한 경우만 include, extend의 용번에 맞춰서 사용해야한다.
- inclue를 문어발처럼 사용하면 안됨
- include된 유스케이스도 기능이므로, 액터에서 뻗어나가는 기능으로도 표현할 수 있다.
- 여러 유스케이스에서 사용하는 공통적인 기능이 아니고, 액터에서 뻗어나가는 것이 가장 이상적이다.