확장 관계는 기존 유스 케이스에 확장 유스 케이스를 연결합니다. 기본적으로 기본 유스 케이스에서 확장점을 참조하여 확장을 삽입할 위치를 정의합니다(중간 산출물 가이드라인: 유스
케이스, 확장점에 대한 논의 참조). 확장 유스 케이스는 추상인 경우가 자주 있지만 반드시 추상인 것은 아닙니다.
다음과 같이 여러 가지 목적으로 확장을 사용할 수 있습니다.
-
유스 케이스 파트가 선택적(또는 잠재적으로 선택적) 시스템 동작임을 표시하는 경우. 이 경우 모델의 필수 동작과 선택적 동작을 구분합니다.
-
특정(때때로 예외적) 조건에서만 서브플로우가 실행됨을 표시하는 경우(예: 알람 트리거).
-
기본 유스 케이스의 확장점에 하나 이상의 동작 세그먼트 세트가 삽입되었음을 표시하는 경우. 삽입된 동작 세그먼트(및 삽입 순서)는 기본 유스 케이스 실행 중 액터와의 상호작용에 따라 다릅니다.
확장은 조건부입니다. 즉, 해당 실행은 기본 유스 케이스를 실행하는 중 발생하는 상황에 따라 다릅니다. 기본 유스 케이스는 확장 실행의 조건을 제어하지는 않습니다. 조건은 확장 관계 내부에서 설명됩니다. 확장 유스
케이스는 기본 유스 케이스의 속성에 액세스하여 수정할 수도 있습니다. 그러나 기본 유스 케이스는 확장을 볼 수 없으므로 해당 속성에 액세스할 수 없습니다.
기본 유스 케이스는 내재적으로 확장에 의해 수정됩니다. 또한 기본 유스 케이스는 확장을 추가할 수 있는 모듈 프레임워크를 정의하지만 기본에는 특정 확장의 가시성이 없습니다.
기본 유스 케이스는 내부 및 자체에서 완료되어야 합니다. 즉, 확장을 참조하지 않아도 자체로 이해 가능하고 유용해야 한다는 의미입니다. 그러나 기본 유스 케이스는 확장과 독립된 것은 아닙니다. 확장을 따를 가능성이
없으면 실행할 수 없기 때문입니다.
예제:
전화 회의 시작 및 발신자 ID 표시 유스 케이스 모두 전화 걸기 기본 유스 케이스의 확장입니다.
전화 시스템에서 사용자에게 제공되는 기본 서비스는 전화 걸기 유스 케이스로 표시됩니다. 다음은 선택적 서비스에 대한 예제입니다.
전화 걸기 기본 유스 케이스에 대한 확장 유스 케이스로 이 선택적 서비스에 필요한 동작을 표시할 수 있습니다. 이것이 확장 관계의 올바른 사용입니다. 전화 걸기는 자체만으로도 유용하기 때문에 기본 유스 케이스의
기본 목적을 이해하기 위해 확장 유스 케이스의 설명을 읽을 필요는 없습니다. 확장 유스 케이스는 선택적 특징을 가지고 있습니다.
기본 유스 케이스 및 "기본 플러스 확장" 유스 케이스 모두 명시적으로 인스턴스화되거나 기본 유스 케이스를 추가로 수정할 경우, 유스 케이스 일반화를 대신 사용해야 합니다(중간 산출물 가이드라인: 유스 케이스 일반화 참조).
확장 유스 케이스는 하나 이상의 삽입 세그먼트로 구성될 수 있습니다. 각각 그 안에 대체 경로가 들어 있습니다. 삽입 세그먼트는 기본 유스 케이스의 동작을 조금씩 수정합니다. 확장 유스 케이스에 있는 각 삽입
세그먼트는 기본 유스 케이스의 별도의 위치에 삽입될 수 있습니다. 즉, 확장 관계에는 확장점에 대한 참조 목록이 확장 유스 케이스에 있는 삽입 세그먼트의 수만큼 들어 있음을 의미합니다. 각 확장점은 기본 유스
케이스에서 정의되어야 합니다.
하나의 기본 유스 케이스는 여러 확장 관계로 구성됩니다. 즉, 유스 케이스 인스턴스는 수명 동안 둘 이상의 확장을 따를 수 있습니다. 하나의 확장 유스 케이스는 여러 기본 유스 케이스로 확장될 수 있지만 기본 유스
케이스 사이의 종속성을 의미하지는 않습니다. 확장이 기본의 서로 다른 위치에 삽입된 경우 동일한 확장 유스 케이스 및 기본 유스 케이스 사이의 확장 관계가 여러 개일 수도 있습니다. 즉, 서로 다른 확장 관계가
기본 유스 케이스의 서로 다른 확장점을 참조해야 함을 의미합니다. 확장 유스 케이스 자체가 확장, 포함 또는 일반화 관계에서 기본이 될 수 있습니다. 예를 들어 확장 유스 케이스는 중첩된 방식으로 다른 확장 유스
케이스를 확장할 수 있다는 의미입니다.
기본 유스 케이스를 수행하는 유스 케이스 인스턴스가 기본 유스 케이스에서 확장점을 정의한 위치에 도달한 경우 해당 확장 관계의 조건을 평가합니다. 조건이 true이거나 없는 경우, 유스 케이스 인스턴스는 확장(또는
확장점에 해당하는 위치 내부의 삽입 세그먼트)을 따릅니다. 확장 관계의 조건이 false인 경우 확장은 실행되지 않습니다.
다른 유스 케이스와 같이 확장 유스 케이스는 기본적인 이벤트 플로우 및 대체 이벤트 플로우가 있습니다(중간 산출물 가이드라인: 유스
케이스, 이벤트 플로우 구조에 대한 논의 참조). 유스 케이스 인스턴스가 확장점을 통해 사용하는 정확한 경로는 실행 전의 상황(유스 케이스 인스턴스 상태) 및 확장 실행 시 액터와의 상호작용에서 발생한
상황에 따라 다릅니다. 유스 케이스 인스턴스에서 확장을 수행하면 유스 케이스 인스턴스는 중단 위치에서 기본 유스 케이스 실행을 재개합니다.
기본 유스 케이스 및 확장을 따르는 유스 케이스 인스턴스입니다.
확장 유스 케이스는 둘 이상의 삽입 세그먼트를 포함할 수 있습니다. 각각 기본 유스 케이스의 해당 확장점과 관련이 있습니다. 이 경우 유스 케이스 인스턴스는 기본 유스 케이스를 재개하고 확장 관계에 지정된 다음
확장점으로 계속 진행합니다. 이때 확장 유스 케이스의 다음 삽입 세그먼트를 실행합니다. 이는 최종 삽입 세그먼트를 실행할 때까지 반복됩니다. 확장 관계의 조건은 첫 번째 확장점에서만 검사됨에 유의하십시오. 조건이
true이면 유스 케이스 인스턴스는 모든 삽입 세그먼트를 수행해야 합니다.
기본 유스 케이스 및 확장을 따르는 유스 케이스 인스턴스입니다. 후자는 두 개의 삽입 세그먼트를 포함합니다.
확장 관계의 다중성은 발생할 수 있는 전체 확장의 반복 수를 제한합니다. 하나의 삽입 세그먼트가 아니라 전체 확장이 반복된다는 점(다중성으로 제한됨)에 유의하십시오.
기본 유스 케이스의 속성과 관련하여 확장 조건을 설명합니다. 조건을 생략할 수도 있습니다. 이 경우 항상 확장을 실행합니다.
각 확장 관계는 기본 유스 케이스의 확장점(하나 이상)에 대한 참조 목록을 포함합니다. 확장점은 이름으로 참조됩니다. 확장 유스 케이스에 여러 삽입 세그먼트가 있는 경우 확장점에 해당하는 세그먼트를 지정해야
합니다. 각 삽입 세그먼트를 구성하는 확장 유스 케이스의 단계 또는 서브플로우도 지정해야 합니다.
예제:
전화 시스템에서 전화 걸기 유스 케이스는 발신자 ID 표시 추상 유스 케이스로 확장될 수 있습니다. 이 유스 케이스는 수신측에 의해 요청될 수도 요청되지 않을 수도 있는 선택적 서비스이며 흔히 "발신자 ID"라고도
합니다. 발신자 ID 표시에서 전화 걸기로의 확장 관계에 대한 설명은 다음과 같을 수 있습니다.
조건: 수신측은 "발신자 ID" 서비스를 주문해야 합니다.
확장점: ID 표시 - 전체 발신자 ID 표시 유스 케이스를 삽입합니다.
다중성이 1로 가정되어 생략된 경우 확장 관계에 다중성을 제공할 수 있습니다.
다음과 같이 단순한 전화 시스템을 고려하십시오.
전화 회의 시작 추상 유스 케이스는 전화 걸기 유스 케이스의 확장입니다.
익숙한 전화 시스템을 단순히 표현한 이 모델에서 기본 통화 서비스는 전화 걸기 유스 케이스에서 설명됩니다. 기본적인 이벤트 플로우에 대한 단계별 아웃라인은 다음과 같습니다.
-
발신자가 수화기를 듭니다.
-
발신음이 들립니다.
-
발신자가 숫자를 눌러 전화를 겁니다.
-
발신음이 꺼집니다.
-
발신자가 나머지 숫자를 입력합니다.
-
숫자를 분석하고 수신측의 네트워크 주소를 판별합니다.
-
숫자를 분석하고 수신측이 있는 네트워크상의 위치를 판별합니다.
-
가상 회선을 수신측에 설정할 수 있는지 판별합니다.
-
가상 회선을 설정할 수 있으면 수신측 전화기를 울리고 발신자의 전화에 신호음을 울립니다.
-
수신측이 전화를 받으면 발신자 전화에서 신호음을 없애고 수신측 전화가 울리는 것을 중단하며 가상 회선을 완료합니다.
-
통화 시작 시간, 통화의 종료점 및 발신자의 고객 정보를 기록하면서 청구 레코드가 시작됩니다.
-
일정 시간 동안 통화가 계속됩니다. 발신자 또는 수신측이 통화를 끊으면 통화의 종료 시간을 기록하고 가상 회선을 지원하는 데 필요한 모든 자원을 해제합니다. 유스 케이스가 종료됩니다.
이 시스템에 발신자 또는 수신측이 써드파티를 연결할 수 있는 기능을 추가하려면 이벤트 플로우에 동작을 추가해야 합니다. 먼저 고려해야 할 한 가지 대안으로 전화 걸기에 직접 차이를 삽입하는 방법이 있습니다. 중간 산출물 가이드라인: 유스 케이스에서 설명한 대로 대체 이벤트 플로우를 사용하여 이 차이를 모델링할 수 있습니다. 이 솔루션은 추가된 기능이 유스
케이스의 원래 의미를 혼동시키거나 모호하게 하지 않는 경우와 같이 가장 단순한 추가 작업에서 효과적입니다. 다른 대안으로, 기본 유스 케이스를 확장한 전화 회의 시작이라는 추상 확장 유스 케이스로 차이점을
분리시키는 방법이 있습니다.
전화 걸기 유스 케이스에 다음이 추가될 수 있습니다.
확장점:
전화 회의는 11단계 이후에 나타납니다.
전화 회의 시작 확장 유스 케이스는 다음과 같이 설명될 수 있습니다.
전화 회의 시작 유스 케이스
이 유스 케이스는 전화 걸기를 확장한 것입니다. 전화 회의 확장점에 삽입됩니다.
기본 플로우:
1. 발신자가 수화기 단추, 링크 또는 플래시 단추를 누릅니다.
2. 수신확인을 위해 3번의 짧은 발신음이 들립니다.
3..12.<기본 유스 케이스의 3..12단계와 동일합니다.>
13. 발신자가 전화 걸기 유스 케이스에서 수신측과 다시 연결됩니다.
기본 유스 케이스의 3..12단계와 공통되는 상황은 바람직하지 않습니다. 이 문제를 해결하는 방법은 공통 파트를 포함 유스 케이스로 요소로 처리하는 것입니다(중간 산출물 가이드라인: 포함 관계 참조).
|