맨위로가기

유스 케이스

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

유스 케이스는 시스템의 요구 사항을 캡처하고 명세하기 위한 방법으로, 1987년 이바 야콥슨에 의해 처음 소개되었다. 객체 지향 분석 및 설계, UML, 통합 프로세스 등 다양한 분야에서 활용되며, 소프트웨어 개발의 기능 요구 사항을 정의하는 데 중요한 역할을 한다. 유스 케이스는 액터와 시스템 간의 상호 작용을 묘사하며, 비즈니스 유스 케이스와 시스템 유스 케이스로 구분된다. 작성 방법에는 콕번 스타일, 파울러 스타일 등 다양한 템플릿이 존재하며, 유스 케이스 다이어그램을 통해 시각적으로 표현되기도 한다. 사용자 중심적이고 의사 소통을 개선하며, 테스트 및 사용자 문서 작성을 용이하게 한다는 장점이 있지만, 비상호 작용 기반 요구 사항 캡처에 부적합하고, 표준 정의가 없다는 한계도 존재한다. 최근에는 애자일 개발 방법론과 결합하여 유연하게 활용되고 있으며, 사용자 스토리와의 관계에 대한 오해도 존재한다.

더 읽어볼만한 페이지

  • 1986년 컴퓨팅 - 브레인 (컴퓨터 바이러스)
    브레인 바이러스는 1986년 파키스탄 형제가 제작한 플로피 디스크 부트 섹터 변조 바이러스로, 디스크 드라이브 속도를 늦추고 메모리를 사용 불가능하게 하며 디스크 레이블을 변경하고 제작자의 연락처를 포함한다.
  • 애자일 소프트웨어 개발 - 스크럼 (애자일 개발 프로세스)
    스크럼은 제품 개발을 위해 반복적, 점진적 접근 방식을 사용하는 애자일 소프트웨어 개발 방법론의 프레임워크로, 제품 책임자, 개발자, 스크럼 마스터로 구성된 팀을 중심으로 투명성, 검사, 적응의 원칙을 따른다.
  • 애자일 소프트웨어 개발 - 페어 프로그래밍
    페어 프로그래밍은 두 명의 프로그래머가 한 컴퓨터로 코드를 함께 작성하며, 드라이버와 네비게이터 역할을 번갈아 수행하여 지식 공유, 실시간 코드 검토, 문제 해결 능력 향상 등의 이점을 제공하는 소프트웨어 개발 방법이다.
  • 통합 모델링 언어 - 모델 기반 개발
    모델 기반 개발은 모델을 활용하여 소프트웨어 및 시스템을 개발하는 접근 방식이며, 컴퓨터 지원 소프트웨어 공학 도구에서 시작하여 통합 모델링 언어와 모델 중심 아키텍처 표준을 거쳐 발전했다.
  • 통합 모델링 언어 - 시퀀스 다이어그램
    시퀀스 다이어그램은 객체 간의 상호 작용을 시간 순서대로 시각화하는 다이어그램으로, 액터, 메시지, 생명선 등의 구성 요소를 포함하며, UML의 상호 작용 프래그먼트를 통해 복잡한 상호 작용 모델링이 가능하다.
유스 케이스
개요
정의어떤 액터(사람, 장치, 시스템)가 시스템을 사용하여 목표를 달성하기 위해 수행하는 일련의 시퀀스
액터가 목표를 달성하기 위해 수행하는 시스템과의 상호 작용
액터시스템과 상호 작용하는 외부 개체 (사람, 시스템, 조직)
시스템에 정보를 제공하거나 시스템으로부터 정보를 받는 역할
목표액터가 시스템을 통해 달성하고자 하는 결과
시나리오유스 케이스의 구체적인 실행 인스턴스
종류
기본 유스 케이스액터의 목표 달성을 위한 핵심 기능
확장 유스 케이스기본 유스 케이스의 선택적 확장 또는 예외 처리
다이어그램
표현UML (Unified Modeling Language)을 사용하여 다이어그램으로 표현
구성 요소액터 (Actor): 시스템 외부의 행위자
유스 케이스 (Use Case): 시스템의 기능 또는 목표
관계 (Relationship): 액터와 유스 케이스 간의 상호 작용
관계 종류
포함 (Include) 관계하나의 유스 케이스가 다른 유스 케이스의 기능을 포함
확장 (Extend) 관계특정 조건 하에서 유스 케이스의 기능을 확장
일반화 (Generalization) 관계유스 케이스 간의 상속 관계
장점
요구사항 정의사용자 관점에서 시스템의 요구사항을 명확하게 정의
의사소통개발자와 사용자 간의 의사소통 도구로 활용
설계시스템 설계의 기초 자료로 활용
테스트시스템 테스트 케이스 생성에 활용
단점
복잡성복잡한 시스템의 경우 유스 케이스 다이어그램이 복잡해질 수 있음
주관성액터 및 유스 케이스 정의가 주관적일 수 있음
활용 분야
소프트웨어 개발소프트웨어 요구사항 분석 및 설계
비즈니스 분석비즈니스 프로세스 모델링 및 개선
시스템 분석시스템 요구사항 분석 및 설계
참고 자료
외부 링크Alistair A.R. Cockburn의 Use cases, ten years later

2. 역사

1987년, 이바 야콥슨은 OOPSLA'87 컨퍼런스에서 유스 케이스에 대한 첫 번째 논문을 발표했다.[1] 그는 텍스트, 구조, 시각적 모델링 기술을 사용하여 시스템의 요구 사항을 캡처하고 명세하기 위해 이 기술을 에릭슨에서 어떻게 사용했는지 설명했으며, 이는 객체 지향 분석 및 설계를 추진했다.[2] 원래 그는 '사용 시나리오'와 '사용 사례'라는 용어를 사용했는데, 후자는 그의 스웨덴어 용어 'användningsfall'을 직접 번역한 것이었지만, 이 용어들이 영어로는 자연스럽게 들리지 않아 결국 '유스 케이스'로 결정했다.[3]

1992년에는 객체 지향 소프트웨어 공학 시스템 공학 방법의 토대를 마련하고, 특히 소프트웨어 개발에서 기능 요구 사항을 캡처하기 위해 유스 케이스를 대중화하는 데 기여한 책, ''객체 지향 소프트웨어 공학 - 유스 케이스 주도 접근 방식''을 공동 저술했다.[4] 1994년에는 비즈니스 모델 및 업무 프로세스 재설계에 적용된 유스 케이스 및 객체 지향 기술에 대한 책을 출판했다.[5]

동시에 그레이디 부치와 제임스 럼바우는 각각 부치 방법과 객체 모델링 기법(OMT)이라는 객체 지향 분석 및 설계 방법을 통합하는 작업을 했다. 1995년 이바 야콥슨이 그들과 합류하여 함께 통합 모델링 언어(UML)를 만들었으며, 여기에는 유스 케이스 모델링이 포함된다. UML은 1997년 객체 관리 그룹(OMG)에 의해 표준화되었다.[6] 야콥슨, 부치, 럼바우는 또한 Objectory 소프트웨어 개발 프로세스를 개선하는 작업을 했다. 그 결과인 통합 프로세스는 1999년에 출판되었고 유스 케이스 주도 접근 방식을 장려했다.[7]

그 이후로 많은 저자들이 이 기술의 발전에 기여했으며, 특히 다음과 같다.


  • 래리 콘스탄틴은 1995년에 사용자 중심 설계의 맥락에서, 사용자 인터페이스의 설계를 제약하거나 편향시킬 수 있는 일련의 동작이나 시나리오가 아닌, 사용자의 의도를 설명하는 것을 목표로 하는 이른바 "필수 유스 케이스"를 개발했다.[8]
  • 앨리스터 콕번은 2000년에 텍스트 내러티브와 표 형식의 명세를 기반으로 하는 목표 지향 유스 케이스 실천법을 출판했다.[9]
  • 커트 비트너와 이안 스펜스는 2002년에 유스 케이스로 기능 요구 사항을 분석하기 위한 고급 실천법을 개발했다.[10]
  • 딘 레핑웰과 돈 위드릭은 유스 케이스를 변경 관리 및 이해 관계자 커뮤니케이션 활동에 적용할 것을 제안했다.[11]
  • 군나르 오버가드는 2004년에 디자인 패턴의 원리를 유스 케이스로 확장할 것을 제안했다.[12]


2011년, 야콥슨은 이안 스펜스 및 커트 비트너와 함께, 이 기술을 애자일 환경에 적용하고, 점진적인 유스 케이스 "슬라이스"로 풍부하게 하며, 전체 개발 수명 주기에서 그 사용을 장려하기 위해 전자책 ''유스 케이스 2.0''을 출판했다.[13] 이는 국제 비즈니스 분석 연구소(IIBA) 연례 컨퍼런스에서 새롭게 개선된 접근 방식을 발표한 이후의 일이다.[14][15]

3. 유스케이스 구성 요소

액터는 시스템을 사용하는 외부 존재로, 사람, 시스템, 장치가 될 수 있다.[10] 액터는 사용자가 인식 가능한 기능 단위이며, 유스 케이스 다이어그램UML 구성 요소의 일부로 표현된다.

요구 사항 분석에서 유스 케이스는 식별 시 기본 액터에 대해 나타내는 특정 사용자 목표에 따라 이름이 지정된다.[1] 유스 케이스는 시스템이 액터와 상호 작용하여 수행하는 일련의 동작이며, 시스템 목표에 기여하는 관찰 가능한 결과를 생성한다. 액터는 인간 사용자 또는 다른 시스템이 상호 작용에서 갖는 역할을 나타낸다.

유스 케이스는 다음과 같은 종류와 변형이 있다.


  • 시스템 유스 케이스: 개발될 시스템의 요구 사항을 명시한다.[2] 액터와의 상호 작용뿐만 아니라 처리에 관련된 엔티티도 식별하며, 추가 분석 모델 및 설계 활동의 시작점이다.
  • 비즈니스 유스 케이스: 소프트웨어 시스템 대신 비즈니스 조직에 초점을 맞춘다.[5] 비즈니스 프로세스 재설계 이니셔티브의 맥락에서 비즈니스 모델 및 비즈니스 프로세스 요구 사항을 지정하는 데 사용된다.
  • 필수 유스 케이스 (추상 유스 케이스): 시퀀스를 정의하거나 시나리오를 설명하지 않고, 액터의 잠재적 의도와 시스템이 이를 어떻게 다루는지를 설명한다.[8] 사용자 중심 설계를 지원하고 시스템 사양 초기 단계에서 사용자 인터페이스에 대한 편견을 유발하지 않도록 하기 위해 개발되었다.[7]
  • 유스 케이스 2.0: 애자일 개발 방법의 맥락에 맞춰 기술을 적용한 것이다.[1] 사용자 스토리 내러티브에 대한 지원을 통해 요구 사항 수집 관행을 풍부하게 하고, 요구 사항의 점진적 유도와 점진적 구현을 용이하게 하기 위해 유스 케이스 "슬라이스"를 제공한다.


유스 케이스의 범위는 주체와 목표에 의해 정의될 수 있다.[17]

  • 주체는 상호 작용을 제공할 시스템, 하위 시스템 또는 구성 요소를 식별한다.
  • 목표는 목표에 관심 있는 조직 수준(예: 회사, 부서, 사용자)과 사용자의 목표를 하위 목표로 분해하는 것을 고려하여 계층적으로 구조화될 수 있다.[9]


각 유스 케이스는 하나의 목표나 과제를 달성하는 방법을 묘사한다. 소프트웨어 프로젝트에서는 개발 예정인 시스템에 관한 유스 케이스를 수십 개 정도 묘사하는 경우가 있다.

유스 케이스는 시스템을 블랙 박스로 취급하며, 시스템의 반응을 포함한 시스템과의 상호 작용은 외부에서 관측되는 것으로 묘사된다.

유스 케이스 작성 시 주의점은 다음과 같다.

  • 특정 목표를 달성하기 위해 시스템을 액터가 어떻게 사용하는지를 묘사한다.
  • 구현을 한정하는 듯한 단어를 사용하지 않는다.
  • 적절한 수준의 상세함으로 묘사한다.
  • 사용자 인터페이스나 표시 등의 세부 사항을 포함하지 않는다.


유스 케이스는 다음과 같은 구성 요소들을 가진다.

구성 요소설명
개요유스 케이스 본체가 완성되기 전에 그 개요를 기술하는 절이다. 독자가 쉽게 개요를 알 수 있도록 수 개의 문장으로 기술되며, 목표와 주요 액터에 대한 설명을 포함한다.
사전 조건유스 케이스를 시작할 때 충족되어야 하는 조건을 설명하는 절이다. 유스 케이스를 시작하게 하는 트리거와는 다르다.
트리거해당 유스 케이스를 시작하기 위한 조건이다. 외부적 조건, 시간적 조건, 내부적 조건이 있을 수 있다.
기본 시나리오 (기본 이벤트 경로)적어도 하나의 기본 시나리오 또는 전형적인 이벤트 흐름이 존재한다.
대체 시나리오 (대체 경로)동일한 주제에 관한 두 번째 경로 또는 대체 시나리오가 존재하는 경우도 있다. 예외적인 상황이나 문제가 발생한 경우 등도 기술할 수 있다.
예외적 경로예외적인 상황을 다룬다.
사후 조건시나리오가 완료된 시점에서 참이어야 하는 조건이다.
비즈니스 규칙해당 유스 케이스와 관련하여 조직의 비즈니스 수행 시 따라야 하는 규칙이다.
기타 정보템플릿을 사용하더라도 어디에도 해당하지 않는 중요한 정보가 있다면 기술하는 절이다.
작성자와 작성일이 판의 유스 케이스 작성자와 작성일을 기술한다. 이전 판에 대해서도 마찬가지의 정보를 기술해야 한다.


4. 유스케이스 모델링

이바 야콥슨은 1987년 OOPSLA'87 컨퍼런스에서 유스 케이스에 대한 첫 번째 논문을 발표했다.[1] 1992년에는 객체 지향 소프트웨어 공학 시스템 공학 방법의 토대를 마련하고, 소프트웨어 개발에서 기능 요구 사항을 캡처하기 위해 유스 케이스를 대중화하는 데 기여한 책, ''객체 지향 소프트웨어 공학 - 유스 케이스 주도 접근 방식''을 공동 저술했다.[4]

그레이디 부치와 제임스 럼바우는 객체 모델링 기법(OMT)이라는 객체 지향 분석 및 설계 방법을 통합하는 작업을 하였고, 1995년 이바 야콥슨이 그들과 합류하여 함께 통합 모델링 언어(UML)를 만들었으며, 여기에는 유스 케이스 모델링이 포함된다.[6]

유스 케이스는 시스템의 요구 사항을 캡처, 모델링 및 명세하기 위한 기법이다.[10] 유스 케이스는 시스템이 액터와 상호 작용하여 수행할 수 있는 일련의 동작에 해당하며, 이는 시스템의 목표에 기여하는 관찰 가능한 결과를 생성한다. 액터는 인간 사용자 또는 다른 시스템이 상호 작용에서 갖는 역할을 나타낸다.

요구 사항 분석에서 유스 케이스는 식별 시 기본 액터에 대해 나타내는 특정 사용자 목표에 따라 이름이 지정된다. 이 케이스는 일반적인 활동 및 이벤트의 시퀀스, 특수 조건, 예외 또는 오류 상황과 같은 변형을 설명하는 텍스트 설명 또는 추가 그래픽 모델로 추가적으로 상세화된다.

소프트웨어 공학 지식 체계(SWEBOK)에 따르면,[16] 유스 케이스는 시나리오 기반 요구 사항 수집 기법뿐만 아니라 모델 기반 시스템 엔지니어링 분석 기법에도 속한다. 그러나 유스 케이스는 내러티브 기반 요구 사항 수집, 점진적 요구 사항 획득, 시스템 문서화 및 인수 테스트도 지원한다.[1]

유스 케이스의 범위는 주체와 목표에 의해 정의될 수 있다.


  • 주체는 상호 작용을 제공할 시스템, 하위 시스템 또는 구성 요소를 식별한다.[17]
  • 목표는 목표에 관심 있는 조직 수준(예: 회사, 부서, 사용자)과 사용자의 목표를 하위 목표로 분해하는 것을 고려하여 계층적으로 구조화될 수 있다.[9] 목표의 분해는 사용자의 관점에서 수행되며, 시스템과 독립적으로 수행되는데, 이는 전통적인 기능적 분해와는 다릅니다.[10]


유스 케이스는 필요에 따라 텍스트뿐만 아니라 다이어그램으로 표현될 수도 있다. 통합 모델링 언어에서 유스 케이스와 액터 간의 관계는 원래 이바 야콥슨의 Objectory 표기법을 기반으로 한 유스 케이스 다이어그램으로 표현된다. SysML은 시스템 블록 수준에서 동일한 표기법을 사용한다.

또한, 활동 다이어그램, 시퀀스 다이어그램, 커뮤니케이션 다이어그램, 상태 머신 다이어그램과 같은 다른 행위 UML 다이어그램도 유스 케이스를 시각화하는 데 사용할 수 있다. 특히, 시스템 시퀀스 다이어그램(SSD)은 종종 외부 액터와 설계 중인 시스템(SuD) 간의 상호 작용을 보여주는 시퀀스 다이어그램으로, 일반적으로 유스 케이스의 특정 시나리오를 시각화하는 데 사용된다.

유스 케이스 분석은 일반적으로 유스 케이스 다이어그램을 그리는 것으로 시작한다. 애자일 개발의 경우, 유스 케이스를 묘사하는 여러 UML 다이어그램과 텍스트 설명, 메모 또는 "유스 케이스 브리프"로 구성된 요구사항 모델은 매우 가볍고 작거나 쉬운 프로젝트에 사용하기에 충분하다. 유스 케이스 텍스트를 보완하는 좋은 방법으로, 유스 케이스의 시각적 다이어그램 표현은 복잡한 시스템 행위 요구사항을 더 잘 이해하고 소통하며 설계하는 효과적인 도구이기도 하다.

각 유스 케이스는 하나의 목표나 과제를 달성하는 방법을 묘사한다. 소프트웨어 프로젝트에서는 개발 예정인 시스템에 관한 유스 케이스를 수십 개 정도 묘사하는 경우가 있다. 해당 소프트웨어 프로젝트의 형식성 정도나 프로젝트의 단계에 따라 유스 케이스에 요구되는 상세함의 수준이 변화한다.

유스 케이스와 시스템의 기능은 일치하지 않을 수 있다. 하나의 유스 케이스가 여러 기능에 대응하는 경우도 있고, 하나의 기능이 여러 유스 케이스에 대응하는 경우도 있다.

유스 케이스는 어떤 골을 달성하기 위한 외부 액터와 시스템 간의 상호 작용을 정의한다. 액터는 해당 시스템과 상호 작용하는 인간이나 사물의 "역할"이다. 실제로는 한 명의 인간이라도 역할이 여러 개 있다면 여러 액터로 묘사된다. 예를 들어, A 씨가 현금 자동 입출금기(ATM)에서 예금을 인출하는 경우에는 "고객"이지만, 같은 A 씨가 "은행원"으로서 ATM에 돈을 보충한다면, 그것은 다른 역할이다.

유스 케이스에서는 시스템을 블랙 박스로 취급한다. 따라서 시스템의 반응을 포함한 시스템과의 상호 작용은 외부에서 관측되는 것으로 묘사된다.

유스 케이스에는 비즈니스 유스 케이스와 시스템 유스 케이스가 있다. 이러한 차이는 그 대상 범위뿐이다. 비즈니스 유스 케이스는 비즈니스 전체를 블랙 박스로 취급하여, 해당 비즈니스와 외부 액터 간의 상호 작용을 묘사한다(예를 들어, 고객이 무언가를 구매하는 시나리오 등). 비즈니스 유스 케이스의 상세함에 따라 비즈니스 프로세스가 정의된다.

비즈니스 유스 케이스를 구체화함으로써, 노동자가 해당 비즈니스에서 어떻게 협력하여 비즈니스의 외부 액터에게 가치를 제공하는지가 설명된다. 노동자의 일부라도 자동화된다면, 해당 자동화되는 부분은 시스템 유스 케이스의 대상이 된다. 그 경우, 다른 노동자나 외부 액터는 해당 시스템 유스 케이스에서의 액터가 된다.

유스 케이스 작성 시의 주의점은 다음과 같다:

  • 특정 골을 달성하기 위해 시스템을 액터가 어떻게 사용하는지를 묘사한다.
  • 구현을 한정하는 듯한 단어를 사용하지 않는다.
  • 적절한 수준의 상세함으로 묘사한다.
  • 사용자 인터페이스나 표시 등의 세부 사항을 포함하지 않는다. 이는 사용자 인터페이스 설계의 범주이다.


유스 케이스와 액터의 관계는 유스 케이스 다이어그램으로 도식화할 수 있다. 이는 이바 야콥슨의 Objectory에 기반한 통합 모델링 언어의 일부이다. SysML에서도 유사한 기술을 시스템 블록 레벨에서 사용한다.

5. 유스케이스 작성 방법

유스 케이스는 사용자가 인식 가능한 기능 단위이며, 유스 케이스 다이어그램으로 나타낼 수 있는 UML의 구성 요소 중 하나이다. 유스 케이스를 텍스트로 작성하는 방법은 여러 가지가 있으며, 업계에서는 다양한 템플릿을 활용하여 기능적 시스템 요구 사항을 확보하는 것이 일반적인 관행이다.

앨리스테어 콕번의 《효과적인 유스 케이스 작성》에서 제시된 템플릿은 널리 사용되는 스타일 중 하나이다.

유스 케이스 작성 시 주의점은 다음과 같다.


  • 특정 목표를 달성하기 위해 액터(사용자)가 시스템을 어떻게 사용하는지 묘사한다.
  • 구현을 한정하는 단어를 사용하지 않는다.
  • 적절한 수준의 상세함으로 묘사한다.
  • 사용자 인터페이스나 표시 등의 세부 사항은 포함하지 않는다. (이는 사용자 인터페이스 설계의 영역이다.)


앨리스테어 콕번은 유스 케이스의 상세 수준을 요약, 약식, 상세의 3단계로 정의했다.

  • 요약(brief) 유스 케이스: 몇 문장으로 요약한 것으로, 스프레드시트를 이용한 소프트웨어 개발 계획에 적합하다.
  • 약식(casual) 유스 케이스: 요약 유스 케이스보다 자세하게 문장으로 나타낸 것이다.
  • 상세 유스 케이스: 여러 절로 나뉜 템플릿에 따라 작성되는 정형 문서이다. 일반적으로 유스 케이스라고 하면 이를 지칭한다.


소프트웨어 개발 공정에 따라 요구되는 유스 케이스의 상세 수준은 다를 수 있다. 프로젝트 규모가 크고, 개발 단계가 진행될수록 더 상세한 유스 케이스가 필요하다.

래셔널 통합 프로세스에서는 요약 유스 케이스를 유스 케이스 다이어그램으로 표현하고, 약식 기술과 상세한 이벤트 흐름을 추가하는 방식을 사용한다.

상세 유스 케이스를 위한 표준 템플릿은 존재하지 않지만, 일반적으로 다음과 같은 절을 포함한다.

  • 유스 케이스 명칭
  • 버전
  • 개요
  • 사전 조건
  • 트리거
  • 기본 경로
  • 대체 경로
  • 사후 조건
  • 비즈니스 규칙
  • 주석
  • 작성자 및 작성일


템플릿에 따라 추가적인 절이 포함될 수 있으며, 업계에 따라 특수한 기술이 추가되기도 한다. 유스 케이스 이름은 명사와 동사의 조합으로, 완료 가능한 목표를 나타내며, 최종 사용자가 이해할 수 있도록 상세하게 작성하는 것이 좋다.

5. 1. 코번 스타일

앨리스테어 콕번이 그의 저서 《효과적인 유스 케이스 작성》에서 정의한 템플릿은 유스 케이스 작성 스타일 중 가장 널리 사용되는 스타일 중 하나이다.[23] 콕번은 각 유스 케이스에 "설계 범위"와 "목표 레벨"을 표시하기 위해 기호를 주석으로 추가할 것을 제안했다.[22]

콕번은 디자인 범위에 따라 다음과 같은 기호를 사용했다.

범위아이콘
조직 (블랙 박스)
Scope-icons-filled-house
조직 (화이트 박스)
Scope-icons-unfilled-house
시스템 (블랙 박스)
Scope-icons-filled-box
시스템 (화이트 박스)
Scope-icons-unfilled-box
컴포넌트
Scope-icons-screw-bolt



다른 저자들은 때때로 조직 수준의 유스 케이스를 "비즈니스 유스 케이스"라고 부르기도 한다.

콕번은 목표 레벨에 따라 다음과 같은 기호를 사용했다.

목표 레벨아이콘
매우 높은 요약
Goal-level-icons-cloud
요약
Goal-level-icons-flying-kite
사용자 목표
Goal-level-icons-waves-at-sea
하위 기능
Goal-level-icons-fish
너무 낮음
Goal-level-icons-seabed-clam-shell



텍스트를 작성할 때 유스 케이스 이름 뒤에 대체 텍스트 기호(!, +, -, 등)를 붙이는 것이 레벨을 표시하는 더 간결하고 편리한 방법이 될 수 있다. 예를 들어, ''주문하기!'', ''로그인-'' 와 같이 사용할 수 있다.

콕번은 유스 케이스에 대한 보다 자세한 구조를 설명했지만, 세부 정보가 덜 필요할 때는 단순화하는 것을 허용한다. 그의 Fully Dressed 유스 케이스 템플릿은 다음과 같은 필드를 나열한다.[23]


  • 제목: "주요 액터의 목표를 명시하는 능동형 동사 구문"[24]
  • 주요 액터
  • 컨텍스트 내 목표
  • 범위
  • 레벨
  • 이해 관계자 및 관심사
  • 사전 조건
  • 최소 보장 사항
  • 성공 보장 사항
  • 트리거
  • 주요 성공 시나리오
  • 확장
  • 기술 및 데이터 변형 목록


콕번의 접근 방식은 다른 저자들에게 영향을 미쳤다. 예를 들어, 알렉산더와 비우스-두키치는 콕번의 "Fully Dressed 유스 케이스" 템플릿을 소프트웨어에서 모든 종류의 시스템으로 일반화했으며, 다음 필드가 콕번과 다르다:[25]

  • 변형 시나리오 "(아마도 메인 시나리오에서 분기되거나 다시 돌아올 수 있음)"
  • 예외 "즉, 예외 이벤트 및 해당 예외 처리 시나리오"


콕번은 프로젝트가 항상 자세한 "완전한 형태의" 유스 케이스를 필요로 하는 것은 아닐 수 있다고 말한다. 그는 다음과 같은 필드를 갖는 캐주얼 유스 케이스를 설명한다:[23]

  • 제목(목표)
  • 주(主) 행위자
  • 범위
  • 레벨
  • (스토리): 유스 케이스의 본문은 일어나는 일을 비공식적으로 설명하는 한두 단락의 텍스트이다.


마틴 파울러는 "유스 케이스의 내용을 작성하는 표준 방법은 없으며, 다양한 형식은 상황에 따라 잘 작동한다"고 언급했다.[26] 그는 "자주 사용되는 스타일"을 다음과 같이 설명한다.[26]

  • 제목: "유스 케이스가 만족시키려는 목표"[26]
  • 주요 성공 시나리오: 단계별 번호 목록[26]
  • 단계: "액터와 시스템 간의 상호 작용에 대한 간단한 설명"[26]
  • 확장: 각 확장에 대해 별도로 번호가 매겨진 목록[26]
  • 확장: "주요 성공 시나리오와 다른 상호 작용을 초래하는 조건". 주요 단계 3의 확장은 3a 등으로 번호가 매겨진다.[26]


파울러 스타일은 콕번 템플릿의 단순화된 변형으로 볼 수도 있다.

5. 2. 기타 템플릿

유스 케이스를 텍스트로 작성하는 방법에는 '유스 케이스 개요', '비공식', '개요', '완전 상세' 등 여러 가지가 있으며, 다양한 템플릿을 사용할 수 있다. 여러 벤더 또는 전문가가 고안한 템플릿으로 유스 케이스를 작성하는 것은 양질의 기능적 시스템 요구 사항을 확보하기 위한 일반적인 업계 관행이다.

상세 유스 케이스를 문서화할 때 표준 템플릿은 존재하지 않는다. 몇 가지 방식이 존재하며, 프로젝트마다 어떤 것을 선택하거나 개발자가 적절한 것을 선택하여 사용하고 있다. 특정 방식의 상세 비교보다는 프로젝트 내에서 표준화하는 것이 중요하다. 그러나 주요 부분에 대해서는 어떤 방식이든 거의 일정하다. 방식에 따른 차이는 용어 사용법이나 기술 순서이며, 본질적인 차이는 없다.

전형적인 절에는 다음과 같은 것들이 있다.

  • 유스 케이스 명칭
  • 버전
  • 개요
  • 사전 조건
  • 트리거
  • 기본 경로
  • 대체 경로
  • 사후 조건
  • 비즈니스 규칙
  • 주석
  • 작성자 및 작성일


템플릿에 따라 이 외의 절을 추가하기도 한다. 예를 들어, "가정", "예외", "권장", "기술적 요구 사항" 등이다. 또한, 업계에 따라 특수한 기술이 추가되기도 한다.

6. 유스케이스의 종류

유스 케이스에는 여러 종류와 변형이 존재한다.


  • 시스템 유스 케이스는 개발될 시스템의 요구 사항을 명시한다.[2] 시스템 유스 케이스는 액터와의 상호 작용뿐만 아니라 처리에 관련된 엔티티도 식별하며, 추가 분석 모델 및 설계 활동의 시작점이다.
  • 비즈니스 유스 케이스는 소프트웨어 시스템 대신 비즈니스 조직에 초점을 맞춘다.[5] 비즈니스 유스 케이스는 비즈니스 프로세스 재설계 이니셔티브의 맥락에서 비즈니스 모델 및 비즈니스 프로세스 요구 사항을 지정하는 데 사용된다.
  • 필수 유스 케이스(추상 유스 케이스)는 시퀀스를 정의하거나 시나리오를 설명하지 않고, 액터의 잠재적 의도와 시스템이 이를 어떻게 다루는지를 설명한다.[8] 이 방식은 사용자 중심 설계를 지원하고 시스템 사양 초기 단계에서 사용자 인터페이스에 대한 편견을 유발하지 않도록 하기 위해 개발되었다.[7]
  • 유스 케이스 2.0은 애자일 개발 방법의 맥락에 맞춰 기술을 적용한 것이다.[1] 이 기술은 사용자 스토리 내러티브에 대한 지원을 통해 요구 사항 수집 관행을 풍부하게 한다. 또한 요구 사항의 점진적 유도와 점진적 구현을 용이하게 하기 위해 유스 케이스 "슬라이스"를 제공한다.


유스 케이스와 시스템의 기능은 일치하지 않을 수 있다. 하나의 유스 케이스가 여러 기능에 대응하는 경우도 있고, 하나의 기능이 여러 유스 케이스에 대응하는 경우도 있다.

유스 케이스는 시스템을 블랙 박스로 취급한다. 따라서 시스템의 반응을 포함한 시스템과의 상호 작용은 외부에서 관측되는 것으로 묘사된다. 비즈니스 유스 케이스는 비즈니스 전체를 블랙 박스로 취급하여, 해당 비즈니스와 외부 액터 간의 상호 작용을 묘사하며, 비즈니스 유스 케이스의 상세함에 따라 비즈니스 프로세스가 정의된다.

7. 유스케이스 활용 분야

유스 케이스는 다음과 같은 분야에서 활용되는 것으로 알려져 있다.



개발 과정에서 유스 케이스를 사용하는 방식은 개발 방법론에 따라 다르다. 일부 개발 방법론에서는 단순한 유스 케이스 조사만 필요로 한다. 다른 방법론에서는 개발이 진행됨에 따라 유스 케이스를 상세화하고 그 성격을 변화시킨다. 또 다른 방법론에서는 비즈니스 유스 케이스부터 시작하여, 더 상세한 시스템 유스 케이스로 발전시키고, 더 나아가 매우 상세한 테스트 케이스로 발전시킨다.

8. 장점

유스 케이스는 사용자 중심의 소프트웨어 요구 사항 명세에 유용한 도구이다.[33] 유스 케이스 모델링은 시스템과 상호작용하는 주요 이해 관계자 역할(''액터'')과 시스템이 달성해야 하는 목표를 식별하는 것에서 시작한다. 이러한 사용자 중심 접근 방식은 실제 비즈니스 가치가 있고 사용자가 원하는 것을 개발하도록 돕는다.

유스 케이스는 구조화된 템플릿을 사용하여 자연어로 작성되므로, 고객, 최종 사용자, 개발자, 테스터 및 관리자를 포함한 모든 이해 관계자 간의 의사 소통을 향상시킨다.[33] 이는 더 나은 품질의 요구 사항과 시스템으로 이어진다.

유스 케이스 템플릿은 주요 성공 시나리오(기본 흐름) 및 확장 시나리오(확장, 예외, 대체 흐름)를 분석하여 요구 사항을 체계적으로 파악하도록 돕는다.[33] 사용자 목표 달성을 위해 유스 케이스의 액션 단계를 최소화하고 최적화하면 더 나은 상호 작용 디자인 및 사용자 경험에 기여한다.

잘 작성된 유스 케이스 모델은 시스템 테스트 케이스 및 사용자 매뉴얼 설계를 위한 훌륭한 기반을 제공한다.[34] 유스 케이스의 흐름 경로와 해당 테스트 케이스 간에는 명확한 연결이 있으며, 시나리오를 통해 유스 케이스에서 기능 테스트 케이스를 도출하는 것은 간단하다.

앨리스테어 코크번은 애자일 개발에서 유스 케이스를 작성하는 다섯 가지 이유를 다음과 같이 나열한다.[32]


  • 목표 이름 목록은 시스템이 제공할 내용에 대한 간결한 요약을 제공하며, 프로젝트 계획의 골격을 제공한다.
  • 각 유스 케이스의 주요 성공 시나리오는 모든 관련 당사자 간의 합의를 제공하고, 각 요구 사항에 대한 컨텍스트를 제공한다.
  • 각 유스 케이스의 확장 조건은 개발 시간과 예산에 큰 영향을 미치는 문제들을 사전에 파악하도록 돕는다.
  • 유스 케이스 확장 시나리오 조각은 비즈니스 질문에 대한 답변을 제공하며, 프로그래머가 문제를 생각하는 데 도움을 준다.
  • 전체 유스 케이스 세트는 모든 사용자의 요구 사항, 목표 및 비즈니스 변형을 고려했음을 보여준다.

9. 한계


  • 유스 케이스는 시스템의 비상호 작용 기반 요구사항(예: 알고리즘 또는 수학적 요구사항) 또는 비기능적 요구사항(예: 플랫폼, 성능, 타이밍 또는 안전 관련 측면)을 캡처하는 데 적합하지 않다. 이러한 사항은 다른 곳에서 선언적으로 지정하는 것이 좋다.
  • 유스 케이스에 대한 완전한 표준 정의가 없으므로, 각 프로젝트는 자체적인 해석을 형성해야 한다.[35]
  • '확장'과 같은 일부 유스 케이스 관계는 해석이 모호하며 이해 관계자가 이해하기 어려울 수 있다.[35]
  • 유스 케이스 개발자는 유스 케이스에 통합할 사용자 인터페이스(UI) 종속성의 수준을 결정하는 데 어려움을 겪는 경우가 많다. 유스 케이스 이론은 UI가 유스 케이스에 반영되지 않아야 한다고 제안하지만, 설계를 이러한 측면에서 추상화하는 것은 유스 케이스를 시각화하기 어렵게 만들므로 어색할 수 있다. 소프트웨어 엔지니어링에서 이러한 어려움은 요구사항 추적성을 적용하여 해결된다. 예를 들어 추적성 행렬을 사용하는 것이다. UI 요소를 유스 케이스와 연결하는 또 다른 방법은 유스 케이스의 각 단계에 UI 디자인을 첨부하는 것이다. 이를 유스 케이스 스토리보드라고 한다.
  • 유스 케이스는 과도하게 강조될 수 있다. 베르트랑 메이어는 유스 케이스에서 시스템 설계를 너무 문자 그대로 이끌어가는 문제, 그리고 다른 잠재적으로 가치 있는 요구사항 분석 기법을 배제하고 유스 케이스를 사용하는 문제 등을 논의한다.[36]
  • 유스 케이스는 테스트 설계를 위한 시작점이지만,[37] 각 테스트에는 자체 성공 기준이 필요하므로 각 경로에 대한 별도의 사후 조건을 제공하기 위해 유스 케이스를 수정해야 할 수 있다.[38]
  • 유스 케이스는 목표와 맥락을 포함하지만, 이러한 목표와 목표 뒤에 숨겨진 동기(이해 관계자의 관심사 및 비상호 작용을 포함한 평가)가 다른 시스템 목표와 충돌하거나 부정적/긍정적으로 영향을 미치는지 여부는 BMM, I*, KAOS 및 ArchiMate ARMOR와 같은 목표 지향적 요구사항 모델링 기법의 대상이다.
  • 유스 케이스는 시스템 관련 기능 이외의 요구 사항을 파악하는 데 적합하지 않다.
  • 유스 케이스 템플릿은 명확성을 자동으로 보장할 수 없다. 명확성은 작성자의 기량에 달려 있다.
  • 정확성이 중요한 미션 크리티컬 시스템이나 실시간 시스템에는 적합하지 않다.
  • 최종 사용자 및 프로그래머에 대해 유스 케이스를 올바르게 이해하는 데 학습 곡선이 존재한다. 표준화된 정의가 없기 때문에 이해는 점차 깊어질 수밖에 없다.
  • 익스트림 프로그래밍에서는 유스 케이스가 불필요하게 문서적이라고 여기며, 오히려 더 단순한 사용자 스토리라는 방법을 선호한다.
  • 유스 케이스를 작성할 때, 사용자 인터페이스에 의존하는 수준을 어떻게 해야 할지에 대해 고민하는 경우가 있다. 이론적으로 유스 케이스는 어떠한 사용자 인터페이스도 전제로 하지 않지만, 어떤 인터페이스를 전제로 하지 않으면 유스 케이스를 시각화할 수 없다.
  • 유스 케이스는 플랫폼의 요구 사양 기술에 적합하지 않다. 유스 케이스는 구현해야 할 하나의 시스템을 상정하고 있지만, 플랫폼(하드웨어 및 운영 체제)은 그 위에서 여러 시스템이 동작한다.
  • 유스 케이스는 지나치게 강조되는 경향이 있다. ''객체 지향 소프트웨어 구축''(제2판)에서 베르트랑 메이어는 유스 케이스에 충실하게 시스템을 설계하다가 다른 유용한 요구 사항 분석 기법을 배제해 버리는 문제를 논하고 있다.

10. 오해

유스 케이스와 관련하여 다음과 같은 일반적인 오해가 있다.


  • '''사용자 스토리는 애자일(Agile)하고 유스 케이스는 그렇지 않다.'''


애자일과 스크럼은 요구사항 기법에 대해 중립적이다. 스크럼 프라이머[39]에서는 다음과 같이 말한다.

> '' 제품 백로그 항목은 명확하고 지속 가능한 방식으로 표현된다. 널리 퍼진 오해와 달리, 제품 백로그에는 "사용자 스토리"가 포함되지 않으며, 단순히 항목만 포함한다. 이러한 항목은 사용자 스토리, 유스 케이스 또는 그룹에서 유용하다고 생각하는 다른 모든 요구사항 방식으로 표현될 수 있다. 그러나 접근 방식에 관계없이 대부분의 항목은 고객에게 가치를 제공하는 데 중점을 두어야 한다.''

유스 케이스 기법은 유스 케이스 슬라이스를 사용하여 유스 케이스를 점진적으로 풍부하게 함으로써 애자일 접근 방식을 고려하도록 발전했다.[13]

  • '''유스 케이스는 주로 다이어그램이다.'''


크레이그 라르만은 "유스 케이스는 다이어그램이 아니라 텍스트"라고 강조한다.[40]

  • '''유스 케이스는 UI 관련 내용이 너무 많다.'''


일부에서는 다음과 같이 말한다.

> '' 유스 케이스는 새로운 시스템의 요구사항을 처음부터 파악하기에 적합하지 않은 세부 정보(예: 레이블 및 버튼 이름 지정)를 포함하는 경우가 많다.''

이는 초보자의 오해이다. 잘 작성된 유스 케이스의 각 단계는 ''액터(Actor)''의 목표 또는 의도(기능 요구사항의 본질)를 제시해야 하며, 일반적으로 레이블 및 버튼 이름 지정, UI 작업 등과 같은 사용자 인터페이스 세부 정보를 포함해서는 안 된다.

  • '''대규모 시스템의 유스 케이스를 작성하는 것은 지루하고 시간 낭비이다.'''


일부에서는 다음과 같이 말한다.

> '' 유스 케이스 형식은 수백 페이지 미만으로 대규모 시스템(예: CRM 시스템)을 설명하기 어렵게 만듭니다. 시간이 많이 걸리고 불필요한 양의 재작업을 하는 데 시간을 할애하게 될 것이다.''

가치를 거의 또는 전혀 추가하지 않고 많은 재작업을 초래하는 지루한 유스 케이스를 작성하는 데 많은 시간을 할애하는 것은 작성자가 숙련되지 않았음을 나타내는 ''나쁜 징후''이다.

참조

[1] 웹사이트 Use-Case 2.0 ebook https://www.ivarjaco[...] 2020-08-09
[2] 학술지 Object-oriented development in an industrial environment http://portal.acm.or[...] 1987-12-01
[3] 웹사이트 Use cases, ten years later http://alistair.cock[...] Alistair Cockburn 2013-04-17
[4] 서적 Object-oriented software engineering: a use case driven approach ACM Press
[5] 서적 The object advantage : business process reengineering with object technology Addison-Wesley 1995
[6] 웹사이트 About the Unified Modeling Language Specification Version 2.5.1 https://www.omg.org/[...] 2020-08-09
[7] 서적 The unified software development process Addison-Wesley 1999
[8] 학술지 Essential modeling: use cases for user interfaces http://portal.acm.or[...] 1995-04-01
[9] 서적 Writing effective use cases https://www.academia[...] Addison-Wesley 2001
[10] 서적 Use case modeling Addison Wesley 2003
[11] 서적 Managing software requirements : a use case approach Addison-Wesley 2003
[12] 서적 Use cases : patterns and blueprints Addison-Wesley 2005
[13] 웹사이트 Use Case 2.0: The Guide to Succeeding with Use Cases http://www.ivarjacob[...] Ivar Jacobson International 2014-05-05
[14] 웹사이트 Business Analysis Conference Europe 2011 - 26-28 September 2011, London, UK http://www.irmuk.co.[...] Irmuk.co.uk 2013-04-17
[15] 웹사이트 Use-Case 2.0 Presentation https://www.ivarjaco[...] 2020-08-09
[16] 서적 SWEBOK: guide to the software engineering body of knowledge IEEE Computer Society
[17] 웹사이트 Unified Modeling Language Specification Version 2.5.1 https://www.omg.org/[...] 2020-08-16
[18] 서적 More about software requirements: thorny issues and practical advice Microsoft Press 2010
[19] 웹사이트 System Use Cases: An Agile Introduction http://agilemodeling[...] 2020-08-16
[20] 문서 Cockburn, 2001. Inside front cover. Icons "Design Scope".
[21] 문서 Suzanne Robertson. Scenarios in Requirements Discovery. Chapter 3 in Alexander and Maiden, 2004. Pages 39-59.
[22] 문서 Cockburn, 2001. Inside front cover. Icons "Goal Level".
[23] 문서 Cockburn, 2001. Page 120.
[24] 문서 Cockburn, 2001. Inside rear cover. Field "Use Case Title".
[25] 문서 Alexander and Beus-Dukic, 2009. Page 121
[26] 문서 Fowler, 2004.
[27] 웹사이트 User Story And Use Case Comparison http://wiki.c2.com/?[...] 2024-01-19
[28] 문서 Cockburn, 2001. Page 53.
[29] 문서 Cockburn, 2001. Page 55.
[30] 문서 Alexander and Beus-Dukic, 2009. Page 39.
[31] 서적 Business Modeling with UML https://archive.org/[...] Wiley Computer Publishing
[32] 웹사이트 Why I still use cases http://alistair.cock[...] 2008-01-09
[33] 웹사이트 Listening to the Customer's Voice http://www.processim[...] Software Development 1997-03
[34] 웹사이트 Traceability from Use Cases to Test Cases http://www.ibm.com/d[...] IBM developerWorks 2006-05
[35] 웹사이트 Alistair.Cockburn.us - Structuring use cases with goals http://alistair.cock[...] 2018-03-16
[36] 문헌 Meyer
[37] 문헌 Armour and Miller
[38] 문헌 Denney
[39] 웹사이트 The Scrum Primer: A Lightweight Guide to the Theory and Practice of Scrum (Version 2.0) http://www.infoq.com[...] InfoQ 2012-12-17
[40] 서적 Applying UML and patterns Prentice Hall
[41] 웹사이트 Use cases, ten years later - AC http://alistair.cock[...]



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com