序列圖比較選項

從設計程式考慮,規格序列圖只顯示一個特定的執行緒。因此,某些實例及訊息將會遺漏。但是,執行(動畫)序列圖會反映物件之間的完整協同作業。這是規格序列圖與執行序列圖之間的簡單比較一律失敗的原因。IBM® Rational® Rhapsody® 會提供各種選項,可讓您在執行順序比較時補償這兩類圖表之間的部分必要差異。

在「序列圖比較」視窗中選取選項以開啟「序列圖比較選項」視窗。

一般比較選項

使用一般標籤上的下列欄位以指定是否使用同步化,以及是否儲存或上傳選項設定:

有時,抵達訊息的順序無關緊要。同步化選項可讓您忽略訊息的抵達時間,而只考量這些訊息的傳送順序。

在產生的比較顯示畫面中,相當的訊息會在相鄰的窗格中垂直同步。這可協助您在這兩個圖表中尋找對應的訊息。

若要啟用或停用同步化選項,請選取或清除一般標籤中的同步化方框。

您可以將選項設定儲存至檔案,然後重新載入它們以用於後續的訊息比較。

若要儲存設定,請執行下列動作:

  1. 按一下一般標籤上的儲存按鈕。
  2. 這時會開啟「另存新檔」視窗。選項檔案的預設名稱由所比較之每個圖表標題的第一個單字組合而成(以底線區隔):
       <SD2>_<SD1>.sdo

    副檔名 .sdo 代表「序列圖選項」。如果需要,請編輯選項檔案的路徑及預設名稱。

  3. 按一下確定

若要重新載入選項設定,請執行下列動作:

  1. 一般標籤上,按一下載入。這時會顯示「開啟」視窗。
  2. 選取包含選項設定的 .sdo 檔案。
  3. 按一下開啟

順序比較選項會還原為上次儲存在檔案中的設定。

訊息選取

下圖中顯示的訊息選取標籤可讓您選取要包括的訊息,以及是否要在比較中包括引數。

「序列圖比較對話框」視窗,「訊息選取」標籤

在此訊息選取標籤上,單字「忽略」是所有訊息「引數」直欄的預設值。這意味著,依預設會忽略訊息的引數比較。

使用此標籤,您可以:

從比較中排除訊息

規格序列圖通常包括對特定使用案例或範例情節很重要的資訊。在許多案例中,它們會排除起始設定階段訊息,而執行序列圖會包括所有訊息。因此,在執行比較時可能有必要忽略某些訊息,如建構子。忽略的訊息在產生的比較視窗中無法存取。

若要從比較中排除訊息,請執行下列動作:

  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 之前傳送的相同訊息:

忽略訊息計時的比較範例

同時可以存在有兩則以上的訊息要傳送,但其順序並不重要的情況。訊息群組可讓您指定排序對其並不重要的訊息群組。如果群組中的任何訊息以任何順序出現,則會存在相符訊息。

透過下列範例中所示的訊息群組標籤,您可以建立、修改及刪除訊息群組。

「序列圖比較對話框」視窗,「訊息群組」標籤

回饋