쓰임새 (USE CASE) 란 ?

시스템의 사용에 대한 시나리오의 집합


목적

- 사용자의 관점에서 시스템을 모델링하기 위함. 즉, 사용자가 시스템에 대하여 바라는 바를 표현함으로써 사용자의 시점을 빨리 이해하고 쓸모있고 (Useful), 쓸 수 있는 (Useable) 시스템을 만들 수 있도록 함.


사용 

- 대게 의뢰인과 개발팀이 참조하는 설계문서의 한 부분으로 사용.

- 새로 만들어진 시스템을 테스트하는데 사용 : 사용자의 시스템 사용 시나리오를 표현한 것이기 때문에 테스트도 그 시나리오에 따라서 하면 됨


시스템 분석가와 사용자 힘을 합쳐 시스템의 사용 방법을 결정하는데 도움이 된다. 시스템이 가진 User Interface 설계 & 프로그래밍 방식에 매우 도움이 되는 다이어그램

[요구사항 수집]의 "시스템 요구사항 파악"의 과정과 [분석]과정에서의 출력물 → 사용자와의 대화를 통하여 얻어낸 정보를 표현한다. 



▶ USE CASE 의 분석과정 및 사용 방법 : 사용자를 만나 의견을 듣는것으로 시작 

1. 시스템 사용자를 시스템 분석과 설계의 초기 단계에 참여시킴

2. [요구사항 수집] 의뢰인과 대화 → 초기 클래스 다이어그램 → 사용하고 있는 용어를 통해서 개념정리 → 사용자 와의 대화가 유연해짐 

3. 사용자와 대화 → 설계하고자 하는 시스템을 가지고 어떤 일을 하는지 질문 → 얻어낸 대답은 미래에 USE CASE 다이어그램을 만드는대 토대로 사용

4. USE CASE 에 대한 간단한 설명을 붙임 → 설명이 많을 수록 사용자와 할 수 있는 대화의 밀도도 높아진다. 


USE CASE 의 재사용을 위한 방법 : 

- 포함(inclusion) : 다른 쓰임새를 구성하는 하나의 진행 과정으로 쓰임새를 사용.

- 확장(extension) : 기존의 쓰임새에 몇 개의 단계를 추가하여 새로운 쓰임새를 만듦.


※ USE CASE 만들때 주의사항

 - 해당 시나리오를 시작할때 만족 되어야 하는 선행조건

 - 시나리오가 완료될 때 만족되어야 하는 종료조건




행위자 (Actor)

시스템과 교류하는 사람이나 시스템 또는 장치, UseCase를 시작시키고, 구성하는 진행단계가 끝나면 그 결과를 받는다. 막대기로 사람모양을 표현, 행위자의 이름은 막대인간 아래에 쓴다. 


쓰임새 (UseCase) 

타원으로 표현, 쓰임새의 이름은 타원 안쪽 또는 아래에 쓴다. 쓰임새를 시작시킨 행위자는 왼쪽, 결과를 받는 행위자는 오른쪽에 표현. 행위자와 쓰임새 간의 연결은 실 선으로 그림. 


시스템 

쓰임새를 둘러싸는 사각형으로 표현, 행위자는 대게 시스템 외부에 있는 반면, 쓰임새는 시스템 내부에 존재한다. 즉, 쓰임새분석을 통하여 시스템과 외부세계와의 경계를 효과적으로 보여줄 수 있다.



[시나리오의 진행단계 나타내기]


- 쓰임새는 시나리오로 진행되며, 각 시나리오는 진행단계로 이루어진다. 

- USECASE를 구성하는 시나리오는 각각의 USECASE 다이어그램의 페이지에다가 텍스트로 적어둔다. 

- USECASE 다이어그램에  Note를 붙임으로써 표현할 수 있지만, 너무 지저분하게 보인다면 다이어그램의 생명인 '명확성'을 잃어버릴수 있다. 


 작성요령

1. USECASE를 시작하는 ACTOR

2. USECASE가 시작하는데 필요한 선행조건

3. 시나리오의 진행단계

4. 쓰임새가 끝나는데 필요한 종료조건

5. 쓰임새의 결과를 받는 행위자

6. 쓰임새의 가정 - Ex) "한번에 소비자 한명이 음료수 자판기를 사용한다" 등..

7. 간단한 한 문장 정도의 설명문


포함(Include) - 쓰임새가 다른 쓰임새를 포함하는 관계

 여러 쓰임새에서 공통으로 중복되는 시나리오가 있다면 이 시나리오를 따로 분리하여 새로운 쓰임새로 만들고 , 새로 만든 쓰임새를 각 쓰임새 마다 포함시키면 됨. 사용하려는 쓰임새가 사용되어지는 쓰임새를 필수적으로 포함해야 한다. 


포함된 쓰임새는 절대로 단독으로 존재할 수 없으며, 전체 쓰임새의 부분으로만 존재한다. 


표현

- 포함관계에 있는 쓰임새 사이를 쇄선으로 잇고, 포함되어지는 쓰임새 쪽에 화살표 머리를 둔다.

연결선 위에는 스테레오 타입 <<include>>를 붙인다. 


Ex) 자판기 내용물 공급자와 수금원이 포함된 자판기 시스템의 USECASE 다이어그램

→ "내용물 보충하기" 쓰임새와 "수금하기" 쓰임새 시나리오에서 공통으로 중복된 보안장치 해제나 보안장치 관련 설정과 관련된 진행 단계들을 따로 떼어내서 새로운 쓰임새로 만들고 포함시켰다. 



확장(Extend) - 쓰임새와 그 쓰임새를 확장한 확장 쓰임새의 관계

쓰임새의 시나리오에서, 어떤 조건에 따라 특정한 진행 단계의 행위를 확장하고자 다른 쓰임새를 참조하는 것을 말함. 이 때 확장 용도로 사용하기 위하여 참조되는 쓰임새를 '확장 쓰임새' 라고 함. 이 확장 쓰임새를 참조하는 쓰임새를 기본(Base) 쓰임새라 한다. 확장 쓰임새를 참조하는 시나리오의 특정한 진행단계를 확장포인트(extend point)라 한다. 즉, 특별한 조건에서만 수행되는 부 흐름부를 모형화 한 것으로, 어떤 조건이 부합되어야만 포함되는 쓰임새를 표현한다. 


따라서, 포함 관계의 쓰임새와 달리 확장 쓰임새와의 관계는 선택적이다. 

※ 기본 쓰임새에서 특정한 시나리오의 진행 단계의 확장이기 때문에 확장된 쓰임새는 절대로 단독으로 존재할 수가 없다.


표현   

두 쓰임새 사이를 쇄선으로 잇고, 기본 쓰임새 쪽에다가 화살표 머리를 둔다. 연결선 위에는 스테레오 타입 <<extend>> 를 붙입니다. 


예) 음료 자판기의 "내용물 보충하기" 쓰임새에서 각 음료수 마다 판매실적이 엇 비슷할 때는 문제가 없지만, 만약 음료수 마다 판매실적이 두드러지게 차이가 난다면, 우리는 판매실적이 따라 채우는 음료수의 양을 달리해야 할 것이다. 즉, 특정한 조건(판매실적 차이가 클 때) 이 만족 되었을 때 판매실적에 따라 달리 보충하도록 기존의 "내용물 보충하기" 쓰임새를 확장한 "판매실적에 따라 보충하기"라는 새로운 쓰임새를 만들고 확장관계를 가지게 했다. 


일반화 (Generalization) 


- 쓰임새를 상속하는 것을 의미 

- 상속을 해주는 쓰임새를 "부모 쓰임새"라 하고, 상속을 받는 쪽을 "자식 쓰임새"라고 한다. 

- 자식 쓰임새는 부모 쓰임새의 모든 행동과 의미를 물려 받으며, 여기에 자신만의 행동을 추가 할 수 있다. 

- 부모 쓰임새가 등장하는 곳에 자식 쓰임새를 대신 놓을 수 있다. 

- 두 쓰임새 사이를 실 선으로 연결하고, 부모 쓰임새 쪽에 속이 빈 화살표 머리를 붙인다. 

- 일반화 관계는 행위자(Actor)사이에도 적용할 수 있다. 

- 예) "음료수 사기" 쓰임새에서 상속받은 "음료수 자~알 사기" 쓰임새가 있다. 이 자식 쓰임새에는 "음료수 사기" 쓰임새의 모든 행동과 의미를 사지고 있고 추가적으로 '얼음추가', '여러 음료수 혼합하기' 등의 행동을 갖을 수 있다. 


예) 음료를 보충하는 '공급자'가 있고 수금을 하는 '수금원'이 있다. 그러나, 이 두 행위자 모두 음료수 제공 업체 직원으로 볼 수 있다. 


그룹화

관련된 쓰임새를 하나의 패키지로 그룹화 하는것. 시스템이 여러개의 서브 시스템으로 구성되어 있거나, 시스템에 대한 다양한 요구를 수집하기 위하여 사용자의 의견을 조사할 때 (즉, 요구사항이 각각의 쓰임새로 표현되기 때문에) 그룹화를 한다. 패키지 다이어그램에서 패키지 안에 관련되 쓰임새를 넣어서 표현


예) 가계부 시스템에서 통장 관리 관련된 쓰임새를 패키지로 그룹화 한것


[요구사항 수집]과 [분석] 영역에서의 USECASE 다이어그램


1. 의뢰인과의 인터뷰

2. 시스템 분야 (문제해결 대상이 되는 Domain)에 대한 기초가 되는 Class Diagram을 그림

3. 용어 정리후 사용자와의 인터뷰

4. 행위자의 추상적 수준의 USECASE 다이어그램을 그림으로써 기능적인 요구사항 정리

5. 사용자와의 계속적인 인터뷰를 통한 시스템 요구사항 구체화 → USECASE 모델은 상세한 자신의 시나리오를 가지게 되고, 포함관계 & 확장관계가 나타나게 됨.


* 그 분야에 대한 이해가 부족하게 되면 쓰임새가 쓸데없이 많아지게 되고 시스템 설계와 개발 작업에 오히려 발목을 잡히게 됨