順序圖
順序圖是交互圖的一種形式,它顯示對象沿生命線發展,對象之間隨時間的交互表示為從源生命線指向目標生命線的消息。順序圖能很好地顯示那些對象與其它那些對象通信,什么消息觸發了這些通信,順序圖不能很好顯示復雜過程的邏輯。
生命線
一條生命線在順序圖中代表一個獨立的參與者。表示為包含對象名的矩形,如果它的名字是"self",則說明該生命線代表控制帶順序圖的類元。
有時,順序圖會包含一個頂端是執行者的生命線。這情況說明掌握這個順序圖的是用例。健壯圖中的邊界,控制和實體元素也可以有生命線。
消息
消息顯示為箭頭。消息可以完成傳輸,也可能丟失和找回,它可以是同步的,也可以是異步的,即可以是調用,也可以是信號。在下圖中,第一條消息是同步消息(標為實箭頭)完成傳輸,並隱含一條返回消息。第二條消息是異步消息 (標為實線箭頭),第三條是異步返回消息(標為虛線)。
執行發生
向下延伸的細條狀矩形表示執行事件或控制焦點的激活。在上圖中有三個執行事件。第一個是源對象發送兩條消息和收到兩條回復。第二個是目標對象收到一條同步消息並返回一條回復。第三個是目標對象收到一條異步消息並返回一條回復。
內部通信
內部消息表現為一個操作的遞歸調用,或一個方法調用屬於同一個對象的其他方法。顯示為生命線上執行事件的嵌套控制焦點。
迷路消息和拾取消息
迷路消息是那些發送了卻沒有到達指定接收者,或者到達的接收者不再當前圖中。拾取消息是收到來自那些未知的發送者,或者來自沒有顯示在當前圖的發送者的消息。它們都表明是去往或來自一個終點元素。
生命線開始與結束
生命線可以在順序圖時間刻度范圍內創建和銷毀,在下面的例子中,生命線被停止符號(叉號)終止。在前面的例子中,生命線頂端的符號(Child)顯示在比創建它的對象符號(parent)沿頁面要低的位置上。下圖顯示創建和終止對象。
時間和期限約束
消息默認顯示為水平線。因為生命線顯示為沿屏幕向下的時間通道,所以當給實時系統建模,或是有時間約束的業務過程建模,考慮執行動作所需時間長度是很重要的。因此可以給消息設置一個期限約束,這樣的消息顯示為下斜線。
復合片段
如前面所說,順序圖不適合表達復雜的過程邏輯。在一種情況下,有許多機制允許把一定程度的過程邏輯加入到圖中,並把它們放到復合片段的標題下。復合片段是一個或多個處理順序被包含在一個框架中,並在指定名稱的環境下執行。 片段可以是:
- 選擇性片段 (顯示 "alt") 為 if…then…else 結構建模。
- 選項片段 (顯示 "opt") 為 "switch"(開關) 結構建模。
- 中斷片段對被處理事件的可選擇順序建模,而不是該圖的其他部分。
- 並行片段(顯示 "par") 為並發處理建模。
- 弱順序片段 (顯示 "seq") 包含了一組消息,這組消息必須在后繼片段開始之前被處理。但不會把片段內消息的先后順序強加到不共享同一條生命線的消息上。
- 嚴格順序片段 (顯示 "strict") 包含了一系列需要按照給定順序處理的消息。
- 非片段 (顯示 "neg") 包含了一系列不可用的消息。
- 關鍵片段 具有關鍵部分。
- 忽略片段 聲明一個沒有意義的消息,如果它出現在當前上下文中。
- 考慮片段與忽略片段相反,不包含在考慮片段內的消息都應該被忽略。
- 斷言片段 (顯示 "assert")標明任何沒有顯示為聲明操作數的順序都是無效的。
-
循環片段 包含一系列被重復的消息。
下圖顯示的是循環片段:
這也是一個類似於復合片段的交互發生。 交互發生被其他圖參考,顯示為左上角帶"ref",將被參考圖名顯示在方框的中間。
門
門是連接片段內消息和片段外消息的連接點。 在EA中,門顯示為片段框架上的小正方形。作用為順序圖與頁面外的連接器。 用來表示進來的消息源,或者出去消息的終點。下面兩個圖顯示它們在實踐中的使用。注意:" top level diagram"中的門用消息箭頭指向參考片段,在這里沒有必要把它畫成方塊。
部分分解
一個對象可以引出多條生命線,使得對象內部和對象之間的消息顯示在同一圖上。
狀態常量 / 延續
狀態常量是生命線的約束,運行時始終為"真"。顯示為兩側半圓的矩形,如下圖:
延續雖與狀態常量有同樣的標注,但是被用於復合片段,並可以延伸跨越多條生命線。
