시퀀스 다이어그램 비교 옵션

스펙 시퀀스 다이어그램은 디자이너의 마인드에서 하나의 특정 스레드만 표시합니다. 따라서 특정 인스턴스 및 메시지가 누락됩니다. 그러나 실행(애니메이션) 시퀀스 다이어그램은 오브젝트 간의 전체 협업을 반영합니다. 따라서 스펙 시퀀스 다이어그램과 실행 시퀀스 다이어그램 간의 단순 비교는 항상 실패합니다. IBM® Rational® Rhapsody®는 시퀀스 비교를 수행할 때 두 가지 유형의 다이어그램 간의 필수 차이점을 일부 보상할 수 있게 하는 다양한 옵션을 제공합니다.

시퀀스 다이어그램 비교 창에서 옵션을 선택하여 시퀀스 다이어그램 비교 옵션 창을 여십시오.

일반 비교 옵션

일반 탭의 다음 필드를 사용하여 동기화 사용 여부 및 옵션 설정 저장 또는 업로드 여부를 지정하십시오.

메시지 도착 순서가 중요하지 않은 경우가 있습니다. 동기화 옵션을 사용하여 메시지 도착 시간을 무시하고 메시지 전송 순서만 고려할 수 있습니다.

결과 비교 표시에서 등가 메시지는 인접 창 분할창에 세로로 동기화됩니다. 따라서 두 다이어그램 모두에서 해당 메시지를 쉽게 찾을 수 있습니다.

동기화 옵션을 사용하거나 사용하지 않으려면, 일반 탭에서 동기화 상자를 선택하거나 지우십시오.

옵션 설정을 파일에 저장한 후 후속 메시지 비교를 위해 다시 로드할 수 있습니다.

설정을 저장하려면 다음을 수행하십시오.

  1. 일반 탭에서 저장 단추를 클릭하십시오.
  2. 다른 이름으로 저장 창이 열립니다. 옵션 파일의 기본 이름은 비교 중인 각 다이어그램 제목의 첫 번째 단어로 구성됩니다(밑줄로 구분됨).
       <SD2>_<SD1>.sdo

    파일 확장자 .sdo는 시퀀스 다이어그램 옵션을 나타냅니다. 원하면, 옵션 파일의 경로 및 기본 이름을 편집하십시오.

  3. 확인을 클릭하십시오.

옵션 설정을 다시 로드하려면 다음을 수행하십시오.

  1. 일반 탭에서 로드를 클릭하십시오. 열기 창이 표시됩니다.
  2. 옵션 설정이 포함된 .sdo 파일을 선택하십시오.
  3. 열기를 클릭하십시오.

파일에 마지막으로 저장된 설정으로 시퀀스 비교 옵션이 복원됩니다.

메시지 선택

다음 그림에 표시된 메시지 선택 탭을 사용하여 포함시킬 메시지와 비교에 인수를 포함시킬지 여부를 선택할 수 있습니다.

시퀀스 다이어그램 비교 대화 상자 창, 메시지 선택 탭

메시지 선택 탭에서 "무시"라는 단어는 모든 메시지의 인수 열의 기본 설정입니다. 이는 기본적으로 메시지에 대해 인수 비교를 무시함을 의미합니다.

이 탭을 사용하여 다음을 수행할 수 있습니다.

비교에서 메시지 제외

스펙 시퀀스 다이어그램은 일반적으로 특정 유스 케이스 또는 시나리오에 필수적인 정보를 포함합니다. 대다수의 경우, 스펙 시퀀스 다이어그램은 초기화 단계(Phase) 메시지를 제외하는 반면 실행 시퀀스 다이어그램은 모든 메시지를 포함합니다. 따라서 비교를 수행할 때 생성자와 같은 특정 메시지를 무시해야 할 수도 있습니다. 결과 비교 창에서 무시된 메시지에는 액세스할 수 없습니다.

비교에서 메시지를 제외하려면 다음을 수행하십시오.

  1. 제외할 메시지를 선택하십시오.
  2. 편집을 클릭하십시오. 메시지 편집 비교 옵션 창이 열립니다.
    메시지 편집 비교 옵션 창
  3. 무시 상자를 클릭하여 비교에서 메시지를 제외하십시오.
  4. 세 개의 단일 선택 단추를 사용하여 선택된 메시지와 연관된 인수 처리 방법을 지정할 수 있습니다.
  5. 확인을 클릭하십시오.

인수 비교

메시지가 동일한지 여부를 판별하는 두 가지 옵션이 있습니다. 첫 번째는 메시지 이름과 모든 인수를 비교하는 것이고 두 번째는 메시지 이름만 비교하는 것입니다. 시퀀스 다이어그램은 다음 네 가지 서로 다른 유형의 인수를 표시하기 때문에 후자 옵션이 더 유용합니다.

스펙 시퀀스 다이어그램에서는 메시지 인수에 대한 전체 정보를 항상 제공하지는 않을 수 있습니다. 실행 시퀀스 다이어그램은 시스템이 실제로 수행한 작업을 기록하기 때문에 항상 인수 값과 이름을 둘 다 표시합니다. 따라서 메시지 비교는 이상적으로 인수를 사용하지 않고 메시지 이름에 주로 초점을 맞춥니다.

두 메시지의 이름이 동일하게 지정된 경우, 인수를 비교할 수 있습니다.

예를 들어, evDigitDialed(Digit) 메시지를 고려하십시오. 인수 이름(Digit)만 비교하면 메시지가 같습니다. 그러나 값(EvDigitDialed(Digit=0), EvDigitDialed(Digit=1) 등)을 비교하면 인수 값이 같지 않습니다.

인수 비교는 다음 단계로 발생합니다.

  1. 각 인수를 찾으십시오.
  2. 인수 이름 및 값을 찾으십시오.
  3. 비교를 위해 이름, 값 또는 둘 다를 사용할지 여부를 판별하십시오.

인수 이름을 사용할지 또는 값을 사용할지 여부를 지정하려면 다음을 수행하십시오.

  1. 메시지 선택 탭에서 메시지를 선택하고 편집을 클릭하십시오. 메시지 편집 비교 옵션 창이 열립니다.
  2. 다음 옵션 중 하나를 선택하십시오.
    • 이름만 비교 - 인수 이름을 비교하지만 값은 무시합니다.
    • 이름 및 값 비교 - 인수 이름과 값을 둘 다 비교합니다.

      일반적으로 사용되는 설정은 다음과 같습니다.

표 1. 메시지 편집 비교 옵션 창의 일반적으로 사용되는 설정
스펙 시퀀스 다이어그램 실행 시퀀스 다이어그램
Message() Message(Arg = 1) 인수 무시
Message(Arg) Message(Arg = 1) 이름만 비교
Message(1) Message(Arg = 1) 이름 및 값 비교
  1. 확인을 클릭하십시오.

    선택사항에 따라 메시지 선택 탭의 인수 열에 다음 레이블이 표시됩니다.
    • 사용 안함 - 인수를 무시할 메시지를 의미합니다.
    • 이름 - 인수 이름을 비교하지만 인수 값을 비교하지 않을 메시지를 의미합니다.
    • - 인수 이름과 값을 둘 다 비교할 메시지를 의미합니다.

인스턴스 그룹

스펙 시퀀스 다이어그램에서는 환경이 전송한 모든 메시지가 특정 오브젝트에서 비롯됩니다. 그러나 실행 시퀀스 다이어그램에서는 이런 메시지가 애니메이션과 상호작용하는 사용자에서 비롯될 가능성이 있습니다. 이 차이점이 비교를 손상시킬 수 있습니다.

일반적으로 실행 시퀀스 다이어그램과 스펙 시퀀스 다이어그램 간에 완벽한 오브젝트 일치를 요구하는 것은 요구사항을 너무 엄격히 적용한 것입니다. 솔루션은 한 시퀀스 다이어그램의 오브젝트를 다른 시퀀스 다이어그램의 기타 오브젝트와 연관시키는 것입니다. 소스 및 대상 오브젝트가 두 시퀀스 다이어그램에서 모두 연관되면 메시지가 일치할 수 있습니다.

오브젝트를 서로 연관시키려면 오브젝트 그룹을 작성하십시오. 오브젝트 그룹은 본질적으로 상위 레벨 유스 케이스와 실제 구현 간의 차이를 브릿지하는 인스턴스 추상화입니다. 오브젝트 그룹을 사용하면 이름이 동일하지 않은 오브젝트를 비교하거나 한 오브젝트를 몇 개의 기타 오브젝트와 비교할 수 있습니다.

오브젝트 그룹을 보려면, 시퀀스 다이어그램 비교 옵션 창에서 인스턴스 그룹 탭을 선택하십시오. 다음 그림에 표시된 인스턴스 그룹 탭이 모델의 기존 오브젝트 그룹 목록을 표시합니다. 각 오브젝트(기본적으로 자체 그룹의 유일한 멤버임)에 대해 하나의 오브젝트 그룹이 있습니다.

시퀀스 다이어그램 대화 상자 창, 인스턴스 그룹 탭

그룹에 속한 오브젝트가 창 맨 아래의 오브젝트 그룹 목록에 표시됩니다. 이는 SD1에 대해 나열된 오브젝트를 SD2에 대해 나열된 오브젝트와 논리적으로 동일한 것으로 간주함을 의미합니다.

인스턴스 그룹 탭을 사용하여 다음 조작을 수행할 수 있습니다.

인스턴스 그룹을 작성하려면 다음을 수행하십시오.

  1. 인스턴스 그룹 탭에서 추가를 클릭하십시오. 오브젝트 그룹 편집 창이 열립니다. 새 오브젝트 그룹의 기본 이름은 ClassBuffn입니다(여기서 n은 1부터 시작하는 정수임).
  2. 원하면, 새 오브젝트 그룹의 이름을 편집하십시오.
  3. 그룹에 오브젝트를 추가하려면, 하나 이상의 사용하지 않는 오브젝트를 오른쪽에 있는 상자에서 왼쪽에 있는 해당 상자로 이동하십시오.
  4. 확인을 클릭하십시오.

기존 오브젝트 그룹을 삭제하려면 다음을 수행하십시오.

  1. 인스턴스 그룹 탭에서 삭제할 오브젝트 그룹을 선택하십시오.
  2. 삭제를 클릭하십시오.
  3. 확인을 클릭하십시오.

삭제된 그룹에 속했던 오브젝트를 이제 사용하지 않으며 다른 오브젝트 그룹에 지정할 수 있습니다.

인스턴스 그룹을 모두 삭제하려면 다음을 수행하십시오.

  1. 인스턴스 그룹 탭에서 모두 삭제를 클릭하십시오.
  2. 확인을 클릭하십시오.

모든 오브젝트를 이제 사용하지 않으며 새 오브젝트 그룹에 지정할 수 있습니다.

표시된 오브젝트와 다른 오브젝트를 연관시키려면, 하나 이상의 오브젝트를 다른 오브젝트 그룹으로 이동하거나 그룹을 작성하십시오. 오브젝트는 동시에 한 그룹에만 속할 수 있기 때문에 어느 경우든 오브젝트를 현재 사용 중인 그룹에서 이동 중인 오브젝트를 먼저 제거해야 합니다.

그룹에서 오브젝트를 제거하려면 다음을 수행하십시오.

  1. 인스턴스 그룹 탭에서 오브젝트 그룹을 선택하십시오.
  2. 편집을 클릭하십시오. 오브젝트 그룹 편집 창이 열립니다.

    선택된 오브젝트 그룹의 이름이 창 맨 위에 표시됩니다. 여기서는 이름을 편집할 수 없기 때문에 이름 상자를 사용할 수 없습니다.

    오브젝트 그룹 편집 창은 네 개의 상자를 포함합니다. 왼쪽에 있는 두 개는 SD1의 어느 오브젝트가 SD2의 어느 오브젝트와 연관될지 표시합니다. 오른쪽에 있는 두 개는 그룹에 현재 지정되지 않아 그룹에 지정할 수 있는 각 다이어그램의 오브젝트를 표시합니다.
  3. 왼쪽에 있는 상자 중 하나에서 오브젝트를 선택하고 오른쪽 화살표 단추를 클릭하십시오.

그룹에 오브젝트를 추가하려면 다음을 수행하십시오.

  1. 오른쪽에 있는 상자 중 하나에서 오브젝트를 선택하고 왼쪽 화살표 단추를 사용하여 이동하십시오.
  2. 확인을 클릭하십시오. 한 다이어그램에서 선택된 오브젝트를 이제 다른 그룹에 추가할 수 있습니다.
  3. 인스턴스 그룹 탭에서 오브젝트의 새 그룹을 선택하고 편집을 클릭하십시오.
  4. 오른쪽 하단 모서리에서 SD<number>에서 사용하지 않는 오브젝트 상자에서 오브젝트를 선택하고 왼쪽 화살표 키를 클릭하여 그룹에 추가하십시오.
  5. 오른쪽 하단 모서리에서 SD<number>의 대상 오브젝트 상자에서 오브젝트를 선택하고 오른쪽 화살표 단추를 클릭하여 그룹에서 제거하십시오.
  6. 확인을 클릭하십시오.

모든 오브젝트 그룹을 기본값(오브젝트당 한 그룹)으로 다시 설정하려면, 인스턴스 그룹 탭에서 기본값으로 설정을 클릭하십시오. 그룹에 속한 SD1 및 SD2의 동일 오브젝트와 함께 각 오브젝트에 오브젝트 그룹이 추가됩니다.

메시지 그룹

스펙 시퀀스 다이어그램에서는 메시지 시퀀스를 판별하기 위해 메시지 큐 작동 방법을 가정해야 하는 경우가 많습니다. 스펙 시퀀스 다이어그램에서는 메시지 순서가 상태 차트에 지정된 실제 순서와 다를 가능성이 높습니다. 순서 지정 가정이 올바르지 않아 대형 불일치가 발생할 수 있습니다.

이러한 문제점을 방지하려면 비교에서 메시지 타이밍을 무시할 수 있어야 합니다. 예를 들어, A2 인스턴스가 M2 메시지를 보낸 후에 A1 인스턴스가 보낸 M1 메시지는 M2 전에 보낸 동일한 메시지와 일치할 수 있습니다.

메시지 타이밍을 무시한 비교 예제

두 개 이상의 메시지가 동시에 전송되는 경우도 있을 수 있지만 순서는 중요하지 않습니다. 메시지 그룹을 사용하여 순서 지정이 중요하지 않은 메시지 그룹을 지정할 수 있습니다. 그룹에서 메시지가 임의 순서로 발생하면 일치합니다.

다음 그림에 표시된 메시지 그룹 탭을 사용하여 메시지 그룹을 작성, 수정 및 삭제할 수 있습니다.

시퀀스 다이어그램 비교 대화 상자 창, 메시지 그룹 탭

피드백