상위 유스 케이스는 상위의 보다 특정적인 양식을 나타내는 하나 이상의 하위 유스 케이스로 전문화할 수 있습니다. 대부분의 경우에 상위는 추상적이지만 상위도 하위도 반드시 추상인 것은 아닙니다. 하위는 상위의 모든
구조, 동작 및 관계를 상속합니다. 같은 상위의 하위는 모두 상위의 전문화된 내용입니다. 이 일반화는 유스 케이스에도 적용됩니다. 클래스에 적용되는 일반화 개념에 대한 자세한 정보는 가이드라인: 일반화를 참조하십시오.
일반화는 동작, 구조 및 목적에 있어서 공통성을 갖는 두 개 이상의 유스 케이스를 찾은 경우에 사용됩니다. 일반화가 일어나면, 하위 유스 케이스에 의해 전문화되는 새 유스 케이스(대개 추상적임)의 공유 파트를
설명할 수 있습니다.
예제:
전화 주문 및 인터넷 주문 유스 케이스는 주문 제출 추상 유스 케이스의 전문화입니다.
주문 관리 시스템에서 전화 주문 및 인터넷 주문 유스 케이스는 구조 및 동작의 많은 부분을 공유합니다. 일반 유스 케이스 주문 제출은 구조 및 공통 동작이 정의되어 있는 부분에 정의됩니다. 추상 유스 케이스 주문
제출은 그 자체가 완전할 필요는 없고 하위 유스 케이스로 완전해지게 되는 일반 동작 프레임워크를 제공합니다.
상위 유스 케이스가 항상 추상적인 것은 아닙니다.
예제:
이전 예제에서 주문 관리 시스템을 고려하십시오. 고객을 대신하여 시스템에 주문을 입력할 수 있는 주문 등록 담당자 액터를 추가한다고 가정해 보십시오. 이 액터는 일반 주문 제출 유스 케이스를 시작하여 이제 해당
유스 케이스에 대한 전체 이벤트 플로우를 설명해야 합니다. 하위 유스 케이스는 상위 유스 케이스가 제공하는 구조에 동작을 추가할 수 있고 상위의 동작을 수정할 수도 있습니다.
주문 등록 담당자 액터는 주문 제출 일반 유스 케이스를 인스턴스화할 수 있습니다. 또한 주문 제출은 전화 주문 또는 인터넷 주문 유스 케이스에 의해 전문화될 수 있습니다.
하위 유스 케이스는 상위 유스 케이스의 구조에 따라 결정됩니다(가이드라인: 유스 케이스에서
이벤트 플로우의 구조에 대한 논의 참조). 하위 유스 케이스는 상속된 동작에 동작 세그먼트를 삽입하거나 하위 유스 케이스에 대한 포함 및 확장 관계를 선언하여 상위에 추가 동작을 추가할 수 있습니다. 하위는
상위에서 상속된 동작 세그먼트를 수정할 수 있으나 상위의 개념이 보존될 수 있도록 주의하여 수행해야 합니다. 상위 유스 케이스의 구조는 하위에 의해 보존됩니다. 따라서 상위 이벤트 플로우의 단계나 서브 플로우로
설명되는 모든 동작 세그먼트는 여전히 존재해야 하지만 이 동작 세그먼트의 컨텐츠는 하위에 의해 수정될 수 있습니다.
상위가 추상 유스 케이스인 경우 불완전한 동작 세그먼트가 있을 수 있습니다. 이 경우 하위는 해당 동작 세그먼트를 완료하여 액터에게 의미 있게 만들어야 합니다.
상위 유스 케이스는 추상 유스 케이스인 경우 액터와 관계가 없어야 합니다.
두 하위 유스 케이스가 같은 상위(또는 기본)을 전문화할 경우, 해당 전문화는 서로 영향을 받지 않습니다. 즉, 독립 유스 케이스 인스턴스에서 실행된다는 의미입니다. 이는 확장 또는 포함 관계와는 다르며, 몇 가지
추가사항이 같은 기본 유스 케이스를 실행하는 하나의 유스 케이스 인스턴스를 내재적 또는 명시적으로 수정합니다.
유스 케이스 일반화 및 포함은 둘 다 모델의 유스 케이스 간 동작을 다시 사용하는 데 사용될 수 있습니다. 차이는 유스 케이스 일반화의 경우 하위의 실행이 상위(재사용된 파트)의 구조 및 동작에 의해 결정된다는
것입니다. 반면, 포함 관계에서 기본 유스 케이스의 실행은 포함 유스 케이스(재사용된 파트)가 수행하는 기능의 결과에만 의존합니다. 또 다른 차이는 일반화에서 하위는 목적 및 구조에서 유사점을 공유하는 반면, 포함
관계에서 같은 포함을 재사용 중인 기본 유스 케이스는 완전히 다른 목적을 가질 수 있지만 수행해야 할 기능은 같아야 합니다.
하위 유스 케이스를 실행하는 유스 케이스 인스턴스는 상위 유스 케이스에 대해 설명된 이벤트 플로우를 따라 추가 동작을 삽입하고 하위 유스 케이스의 이벤트 플로우에 정의된 동작을 수정합니다.
유스 케이스 인스턴스는 하위 유스 케이스에 설명된 대로 동작이 삽입되거나 수정된 상위 유스 케이스를 수행합니다.
일반적으로 일반화 관계 자체를 설명하지 않습니다. 대신 하위 유스 케이스의 이벤트 플로우에서 새 단계가 상속된 동작에 어떻게 삽입되는지와 상속된 동작이 어떻게 수정되는지를 지정합니다.
하위가 둘 이상의 상위를 전문화할 경우(복수 상속), 상위의 동작 시퀀스가 하위에 인터리브되는 방식을 하위의 스펙에 명시해야 합니다.
단순 전화 시스템의 유스 케이스에 대해 다음 단계별 아웃라인을 고려하십시오.
시내 전화 걸기
-
발신자가 수화기를 듭니다.
-
발신음이 들립니다.
-
발신자가 숫자를 눌러 전화를 겁니다.
-
발신음이 꺼집니다.
-
발신자가 나머지 숫자를 입력합니다.
-
시스템이 번호를 분석합니다.
-
시스템이 상대방을 찾습니다.
-
시스템이 관련자를 연결합니다.
-
관련자가 연결을 끊습니다.
장거리 전화 걸기
-
발신자가 수화기를 듭니다.
-
발신음이 들립니다.
-
발신자가 숫자를 눌러 전화를 겁니다.
-
발신음이 꺼집니다.
-
발신자가 나머지 숫자를 입력합니다.
-
시스템이 번호를 분석합니다.
-
시스템이 다른 시스템에 번호를 전송합니다.
-
시스템이 회선을 연결합니다.
-
관련자가 연결을 끊습니다.
파란색 텍스트는 두 유스 케이스에서 매우 유사합니다. 두 유스 케이스가 매우 유사한 경우 하나로 병합하는 것을 고려해야 합니다. 여기서 대체 서브 플로우는 시내
통화와 장거리 통화 사이에 차이를 표시합니다.
그러나 두 통화 간에 차이가 상당하고 유스 케이스 모델에서 시내 통화와 장거리 통화 간에 관계를 명확히 할 가치가 있는 경우, 공통 동작을 추출하여 전화 걸기라는 보다 일반적인 새 유스 케이스에 넣을 수 있습니다.
유스 케이스 다이어그램에서 작성된 일반화 관계가 다음과 같이 설명됩니다.
시내 전화 걸기 및 장거리 전화 걸기 유스 케이스는 추상 유스 케이스 전화 걸기에서 상속합니다.
|