유스케이스라 함은 말 그대로 ‘쓰이는 경우’ 혹은 ‘용도’ 같은 의미로 받아들이면 된다. 즉, 어떤 일에 쓰느냐 하는 것을 의미한다. 시스템이 쓰여지는 용도를 모아서 시스템을 만들어낸다면 다용도 시스템이 만들어진다. 이처럼 유스케이스들을 모아서 시스템으로 연결시키는 것을 개발 과정의 간단한 정의로 봐도 무리가 없을 만큼 유스케이스는 가치있는 것이다.

유스케이스는 사용자 시각에 맞춘 분석이다.

어떤 시스템을 만드느냐를 사용자 입장에서 조망하는 것이라고 할 수 있다. 유스케이스는 시스템보다는 그것을 사용하는 인간, 즉 사용자의 입장을 우선해서 시스템이 어떠해야 하는가를 알아보는 것이다.

유스케이스는 시스템의 행위를 결정하는 것이다.

구체적으로 시스템의 기능을 정의하고, 범위를 결정함으로써 시스템과 외부 환경 변수를 구분하고, 상호 관계를 정립하는 것이다.


유스케이스 모델

유스케이스를 나타내는 유스케이스 모델(Model)은 유스케이스 다이어그램으로 표현된다. 유스케이스 다이어그램은 액터(Actor, 행위자), 유스케이스 그리고 관계(Relationship)로 나타낸다.

usecase1

위의 유스케이스 다이어그램은 온라인으로 수강신청을 하는 시스템의 일부를 나타낸 것이다. 위 다이어그램에서 액터는 학생과 은행시스템이고, 유스케이스는 수강신청이다. 화살표는 액터와 유스케이스간의 관계를 나타낸 것인데, 위의 예제에서는 단방향으로의 관계만 나타내고 있다.

위의 다이어그램은 학생이 웹에 접속해서 수강신청을 하면, 그 정보가 은행시스템에 입력이 되는 과정을 나타내고 있습니다. 유스케이스 다이어그램으로 표현된 요구사항을 자연어로 표기해보면 다음과 같습니다.

유스케이스 다이어그램으로 표현 usecase2 usecase3
자연어로 표현 학생은 수강신청을 한다. 수강신청을 통해 들어온 학생의 정보는 은행시스템에 입력이 된다.

액터(Actors)

usecase4

액터는 시스템의 일부가 아니다. 액터는 시스템과 상호작용을 하는 모든 것들을 나타낸다. 시스템을 사용하게 될 사람은 물론이고, 연관된 다른 시스템도 액터이다. 액터는 다이어그램 상에서 막대인간으로 표현된다.

대체로 액터의 행위는 정보의 입력과 출력이다. 정보를 입력하거나 출력하는 액터가 있고, 입출력을 모두 행하는 액터가 있을 것이다.

특정 요구사항에 이해관계자는 누구인가?
어떠한 부서나 집단에서 시스템을 사용하는가?
시스템을 사용함으로써 이익을 얻는 이는 누구인가?
누가 시스템에 정보를 입력하고 사용하고 삭제하는가?
누가 시스템의 유지보수를 수행하는가?
시스템이 외부 자원을 사용하는가?
한 사람이 복수의 역할을 수행하는가?
여러 사람이 한 가지 역할을 수행하는가?
시스템이 기존 시스템(legacy system)과 상호작용하는가?

유스케이스(Use-case)

유스케이스 모델은 시스템과 액터와의 의사소통을 표현한다. 각각의 유스케이스는 시스템이 제공해야 하는 기능을 묘사하고, 이러한 유스케이스들이 시스템 전체의 기능을 나타낸다. 유스케이스는 다이어그램 상에서 타원으로 표현된다.

usecase5

하나의 유스케이스는 액터가 원하는 기능을 수행하기 위해 시스템이 수행하는 일련의 처리들의 연속이다. 다음과 같은 질문들이 유스케이스를 뽑아내는데 도움을 준다.

각각의 액터의 업무는 무엇인가?
액터가 시스템의 정보를 생성, 저장, 수정, 삭제하고 읽는가?
어떠한 유스케이스가 시스템의 정보를 생성, 저장, 수정, 삭제하고 읽는가?
액터가 돌연한 외부 변화에 대한 정보를 시스템에게 알릴 필요가 있는가?
시스템에 갑자기 발생한 일들을 액터가 알아야 하는가?
어떠한 유스케이스들이 시스템을 지원하고 유지하는가?
유스케이스들이 모든 요구되는 기능을 포괄하여 수행하는가?

관계(Relationship)

관계는 ‘액터와 유스케이스의 관계‘와 ‘유스케이스간의 관계’ 두 가지로 볼 수 있다.

액터와 유스케이스와의 관계 는 연관(Association) 혹은 커뮤니케이션 연관(Communicates Association)이라고 합니다. 이는 액터와 유스케이스간의 의사소통을 나타내기 때문입니다. 또한 연관(Association)은 진행되는 방향에 따라 2가지로 나뉩니다.

  • 단방향 연관 : 액터 혹은 유스케이스만이 연관을 유발
  • 양방향 연관 : 액터와 유스케이스 양쪽 모두에서 연관을 유발

유스케이스간의 관계 는 유스케이스간의 의사소통을 나타낸다.

  • 포함(Inclusion) : 여러 유스케이스들이 하나의 기능 조각을 공유할 때 이를 모든 유스케이스에 각각 집어 넣는 것보다는 이를 분리해 두고 필요한 유스케이스들이 이를 포함해서 사용하게 됨.
  • 확장(Extension) : 기본 유스케이스에서 특정 조건이나 액터의 선택에 따라 발생하는 유스케이스를 말함.

액터나 유스케이스간의 관계는 선으로 표기하며, 관계의 방향성은 화살표로 나타냅니다.