Dev ETC/UML
UseCase Diagram
Huikyun
2009. 2. 18. 22:08
유즈케이스란 "
어떤 대상을 사용하는 한가지 사례, 방식" 이라는 의미입니다.
그래서 유즈케이스들을 모두 모아 놓으면 결국 그 대상을 사용하는 방법의 모든 것,
즉
대상이 제공하는 모든 서비스의 집합이 됩니다.
그런 의미에서 유즈케이스 다이어그램은 전자상가에서 볼 수 있는 상품의
주요기능을 적어놓은 선전용 전단과 유사한 의미를 가집니다. 유즈케이스
다이어그램은 사용자가 나중에 인도받게 될 SW시스템의 기능과 서비스의 내용을
직관적으로 파악할 수 있게 합니다.
누구나 알 수 있는 그림의 형태로 이 모든 것이 정의되기 때문에 SW에 대한 지식이
없는 사용자들이 쉽게 이해하고 동의할 수 있습니다.
자 그럼 유즈케이스 다이어그램의 세계로 떠나 볼까요 ?
1. 개요
|
UML의 9개 다이어그램은 각기 독립적인 의도와 목적으로 사용됩니다.
그렇기 때문에 어떤 다이어그램부터 공부해야 하는가 하는 순서는 없다고 할 수
있습니다. 하지만 대부분의 UML관련 교재나 자료에서 유즈케이스 다이어그램을 UML의
여러 다이어그램 중에서 제일 먼저 소개합니다.
왜 그럴까요 ?
유즈케이스 다이어그램을 가장 먼저 공부해야 하는 이유는 다음과 같습니다. |
 |
 |
유즈케이스 다이어그램은 대개의 경우 다른 다이어그램들보다 먼저 작성됩니다. |
 |
 |
유즈케이스 다이어그램은 다른 다이어그램을 작성할 때의 기준이 됩니다. |
 |
 |
다른 다이어그램들은 유즈케이스 다이어그램에서 정의한 내용을 보다 상세하고 |
|
구체적으로 추가 정의하는 형태로 작성될 때가 많습니다. | | |
 |
유즈케이스 다이어그램은 다른 UML 다이어그램들과 유기적인 관계를 가지고 있습니다.
현장에서 UML을 적용할 때의 중요한 성공요인은 모델링과정에서 항상 이러한 유기적인
관계를 염두에 두고 모델간의 의미적, 문법적 일관성을 유지하는 것입니다.
즉, UML의 9개 다이어그램은 각기 고유의 목적이 있어 독립적이며, 특성에 맞게
적용하면 되지만, 종합적인 면에서 서로 유기적인 연관성을 가진다는 것도 알아두시기
바랍니다. |
|
|
유즈케이스 다이어그램은 |
|
 |
 |
|
유즈케이스 다이어그램은 건물을 짓기전에 미리
건물의 설계도를 작성하는 것처럼 나중에 완성될
SW 시스템의 모습을 개념적으로 정의하여 여러
관련자들과 의견을 나누고 합의하는 과정에서
사용됩니다. | |
 |
우리는 이 유즈케이스 다이어그램을 통해 이후 완성될 SW 시스템의 모습을 상상하는
최초의 시도를 하게 되는 것입니다. | |
|
유즈케이스 다이어그램을 작성하는 시기는 SW개발 프로젝트를 시작하는 시기입니다.
구체적으로 프로젝트 개발 초기단계 중에서도 다음과 같은 시점에 유즈케이스
다이어그램을 작성하게 됩니다. |
 |
 |
|
 |
SW 프로젝트의 개발 범위를 정의하는 |
|
단계 |
 |
 |
SW에 대한 요구사항을 정의하는 단계 |
 |
 |
SW의 세부기능을 분석하는 단계 |
 |
 |
SW가 아닌 업무영역(Business |
|
Domain)을 이해하고 분석하는 단계 | | | |
 |
특히 |
 |
의 경우는 작성내용이 SW의 기능이 아닌 업무지식를 내용으로 하고 있기에 | |
"비즈니스 유즈케이스 다이어그램"이라고 합니다.
이러한 유즈케이스 다이어그램을 작성하기 전에 먼저 선행되어야 할 사항은 시스템에
대한 사용자의 요구사항이 수렴되고 정의되어야 합니다. |
|
2. 구성요소 : 액터와 유즈케이스
|
유즈케이스 다이어그램의 구성요소는 다음과 같습니다. |
 |
|
|
|
 |
 |
|
|
 |
|
|
|
 |
액터의 예 |
 |
|
 |
결재 시스템에서 : 상신자, 합의자, 결재자, 통보자 |
 |
 |
전자 상거래 시스템에서 : 회원, 구매자, 배달자, 관리자, 배송시스템, 결재시스템 |
 |
 |
병원관리시스템에서 : 의사, 간호사, 환자, 수납책임자, 약사 |
 |
 |
소방경보시스템에서 : 관리자, 연기센서, 온도센서, 경보기 | |
 |
 |
액터의 식별방법 |
 |
|
SW가 담당할 문제영역에 따라 액터는 항상 다르게 정의됩니다.
액터를 식별하는 것은 생각보다는 어려운 작업이고, 액터를 정의하는 사람에 따라,
경험수준에 따라 차이가 있습니다. 따라서 액터를 정의하는 과정에서 관련
당사자들이 지속적으로 의견을 나누고, 결과는 반드시 리뷰하는 과정이 필요합니다.
UML을 적용하여 SW를 잘 만들려면 액터부터 정확히 식별해야 합니다.
다음은 액터를 식별하는데 도움을 얻을 수 있는 질문들입니다. |
 |
|
| |
3. 구성요소 : 관계
|
이번에는 액터-유즈케이스, 혹은 액터-액터, 유즈케이스-유즈케이스 사이에 정의되는
관계에 대해 학습하겠습니다. 유즈케이스 다이어그램에서 관계를 정의하는 것은 액터나
유즈케이스를 식별하는 것 만큼 중요합니다.
유즈케이스 다이어그램에서 사용되는 관계의 종류는 다음과 같습니다. |
 |
|
|
|
 |
정의 및 특징 |
 |
|
 |
communicates는 액터와 유즈케이스 사이에 정의되는 관계입니다. |
 |
 |
communicates관계는 두 개체가 일반 상호작용 관계에 있다는 것을 의미합니다. |
 |
 |
즉, 액터가 특정 사용목적을 가지고, 유즈케이스와 상호작용할 때 정의합니다. |
 |
 |
액터는 서비스를 요구 하는 입장, 유즈케이스는 서비스를 제공하는 입장에 |
|
있습니다. |
 |
 |
혹은 액터는 정보를 통보받거나 요구하는 입장, 유즈케이스는 정보를 제공하는 |
|
입장에 있습니다. | |
 |
 |
표기법 |
 |
|
 |
화살표 없는 실선으로 표현합니다. |
 |
|
모델 |
설명 |
 |
학생(액터)는 수강하다(유즈케이스)와 교류하고
있습니다. 즉 학생 액터는 수강하다라는
유즈케이스의 서비스를 받습니다.
(또는 사용합니다.) | |
 |
 |
한쪽 화살표를 가진 실선으로 표현합니다. |
 |
|
모델 |
설명 |
 |
알람을 울리다(유즈케이스)가 잠꾸러기 (액터)에게
알람을 울리고 있습니다. 이 경우 화살표의 방향은
communication을 누가 개시하느냐에 따라
달라집니다. 위의 예는 "알람을 울리다"라는
유즈케이스가 교류를 시작하고 있음을 알 수
있습니다. (이렇게 유즈케이스가 액터에 먼저
communication하는 예는 흔하지 않습니다) | | | |
|
 |
정의 및 특징 |
 |
|
|
 |
 |
표기법 |
 |
|
 |
삼각형 화살표가 붙은 실선으로 표현합니다. |
 |
|
모델 |
설명 |
 |
인터넷 고객(액터)와 고객(액터)는 일반화 관계가
있습니다. 즉, 인터넷 고객은 고객이 가진 특성을
모두 가지고 있고, 자신만의 특성을 추가적으로
가집니다.(상속) |
 |
사용자 인증(유즈케이스)와 패스워드 확인
(유즈케이스)는 일반화 관계가 있습니다.
즉, 사용자 인증은 보다 보편적인 것, 패스워드
확인은 보다 더 구체적인 방법으로서 상호간
관계를 가집니다. | | | |
|
 |
정의 및 특징 |
 |
|
|
 |
 |
표기법 |
 |
|
 |
화살표 붙은 점선에 <<include>> 스테레오타입을 정의합니다. |
 |
 |
화살표의 방향은 수행을 의뢰하는 쪽에서 수행될 유즈케이스쪽으로 향합니다. |
 |
|
모델 |
설명 |
 |
로그인(유즈케이스)과 계좌이체
(유즈케이스)는 Shared Service인
사용자인증(유즈케이스)의 서비스
수행을 의뢰합니다.
즉, 로그인과 계좌이체 유즈케이스는
자신의 서비스 수행단계 중 특정한
시점에서 사용자 인증 서비스의
수행을 요청하는 것입니다. | | | |
|
 |
정의 및 특징 |
 |
|
 |
extend는 유즈케이스와 유즈케이스 사이에 정의되는 관계입니다. |
 |
 |
extend 관계는 include 관계와 마찬가지로 한 유즈케이스가 다른 유즈케이스의 |
|
서비스 수행을 요청하는 관계입니다. |
 |
 |
다만, include관계와는 달리 수행요청을 의뢰받은 서비스는 수행되지 않을 수도 |
|
있습니다. |
 |
 |
즉 수행을 의뢰하는 유즈케이스는 조건에 따라 수행을 의뢰할 수도 있고 의뢰하지 |
|
않을 수도 있습니다. 이것이 include관계와의 차이점입니다. |
 |
 |
수행을 의뢰할 조건을 extension point 라고 합니다. |
 |
 |
include와는 달리 하나의 유즈케이스에 의해 서비스 수행을 요청받을 수도 |
|
있습니다. | |
 |
 |
표기법 |
 |
|
 |
화살표 붙은 점선에 <<extend>> 스테레오타입을 정의합니다. |
 |
 |
화살표는 include와 반대로 수행될 유즈케이스에서 수행을 의뢰하는 쪽으로 |
|
향함합니다. |
 |
|
모델 |
설명 |
 |
고객목록조회(유즈케이스)는 고객상세 정보
조회(유즈케이스)의 서비스 수행을 의뢰합니다.
그런데 무조건 의뢰하는 것이 아니고, 고객의
요청이 있을 경우에 한해 상세정보조회 서비스의
수행을 요청합니다. | | | |
4. 사례연구
|
다음은 어느 회사의 간단한 인사시스템의 유즈케이스 다이어그램입니다.
유즈케이스 다이어그램의 실 사례를 편안한 마음으로 보시면서 이 다이어그램이
의미하는 시스템 영역과 기능을 정리할 수 있는지 판단해 보시기 바랍니다. |
 |
| |
|
|
어느 회사의 간단한 인사관리시스템입니다.
이 시스템의 사용자는 액터인 인사담당자와 시스템관리자입니다.
인사담당자에게 시스템은 인사정보를 신규등록하고 수정하고 인사현황 조회를
서비스합니다. 그리고 이를 위해 사원 검색 서비스를 공통 서비스로 분리하여
정의하였습니다. 시스템 관리자는 기준정보를 관리합니다. |
|
실제 현실에서 경험할 수 있는 사례를 가지고 모델링을 수행한 결과를 살펴보도록
하겠습니다. 아래에 기술된 문제영역은 모델링의 대상이 되는 주제와 이것과 관련된 |
주변정보를 제공합니다. 이 문제영역에 대한 분석을 통해 실제 유즈케이스
다이어그램을 작성하고 이를 소개하도록 하겠습니다.
여러분은 "문제영역" 설명을 보시고 현재까지의 지식을 총 동원하여 나름대로
유즈케이스 다이어그램을 작성해 보십시오. 그런 다음 "문제영역에 대한 유즈케이스
다이어그램" 항목의 기준모델과 비교해 보시기 바랍니다. 모델링은 눈으로 익히는 것이
아니라 손과 머리로 익히는 것입니다. |
 |
 |
A병원은 이번 기회에 SW시스템을 구축하여 업무의 일부를 자동화 하기를
원합니다. A병원에는 기존시스템으로 병원의 수입과 지출을 관리하는
"회계시스템"이 운영되고 있습니다.
이 시스템과 연계하면서 병원정보, 환자의 병력및 진료정보, 의료진 정보의 각종
정보관리와 진료예약 처리 및 수납지원을 수행하는 신규 시스템을 구축하기를
원하고 있습니다.
병원의 각 관계자는 시스템을 통해 아래와 같은 기능을 수행하기를 원합니다. |
 |
 |
진료비는 진료정보를 입력하면 자동 산정됩니다. |
 |
 |
환자는 진료 예약을 하고, 환자의 과거병력과 진료정보는 관리됩니다. |
 |
 |
일반사용자는 병원 정보와 의료진 정보를 조회하고 상담 및 문의를 할 수 |
|
있습니다. |
 |
 |
의료진은 자신의 진료스케쥴을 자동 생성하고, 진료 내역을 관리하고, |
|
환자 정보를 조회하기를 원합니다. |
 |
 |
원무과 직원은 이 시스템을 통해 진료비 청구서를 조회, 발행하고, |
|
진료예약을 확정하기를 원합니다. | | | | |
| |
|
5. 작성단계 및 주의사항
|
유즈케이스 다이어그램을 작성하는 순서는 딱 정해진 바는 없습니다.
그러나 프로젝트 현장에서는 다음의 순서대로 작성하는 것이 일반적입니다. 물론
순서를 꼭 지켜야만 하는 것은 아닙니다. |
 |
|
 |
| |
|
다음은 유즈케이스 다이어그램시 작성시 주의사항입니다. |
 |
| |