時序圖(Sequence Diagram)是顯示對象之間交互的圖,這些對象是按時間順序排列的。順序圖中顯示的是參與交互的對象及其對象之間消息交互的順序。時序圖中包括的建模元素主要有:角色(Actor)、對象(Object)、生命線(Lifeline)、控制焦點(Focus of control)/ 激活(Activation)、消息(Message)、組合片段(Combined Fragments)/交互片段(interaction fragment)。
- 角色 ( Actor )
用以表示和系統進行交互的參與者角色,不一定是人也可以是物或者系統。UML用例圖中用一個小人來表示角色
- 對象 ( Object )
對象就是類的實例。UML用例圖中用矩形框來表示對象。
- 生命線 ( Lifeline )
生命線代表對象在某一用例中的生命周期。UML用例圖中用虛線來表示生命線。 - 控制焦點 ( Focus of Control ) / 激活(Activation)
控制焦點代表對象在某一用例過程中執行某一操作的時間。UML用例圖中用方塊來表示控制焦點。
- 消息(Message)
消息是角色和對象或者對象與對象之間的信息傳遞。消息分為三種:同步消息、異步消息、返回消息。
(1) 同步消息(Synchronous Message):把信息傳遞給接受者后,停止活動,等待返回結果。使用
(實線)
(2) 異步消息(Asynchronous Message):
把信息傳遞給接受者后,不用等待返回結果。可以直接開始下一個活動。類似於打電話的過程,撥通號碼后,用戶變不需要繼續下一步的操作,只需等待連接。UML圖表示如下:
圖示上與同步消息圖示不同的是message的單箭頭。
雙擊message的剪頭圖,彈出屬性對話框,選擇Detail選項卡,將Control flow 下拉選項改成Asynchronous(異步),圖示就會變成單箭頭。
(3) 返回消息(Return Message):代表從過程調用返回。UML圖表示如下:
使用
虛線連接
(4) 自關聯消息(Self-Message):自關聯消息表示方法的自身調用或者一個對象內的一個方法調用另外一個方法
。UML圖表示如下:
- 組合片段(Combined Fragments)/交互片段(interaction fragment):
UML圖表示如下:
中間方框用(Interaction fragment) 圖標表示。可選擇的組合有:
alt:在一組行為中根據特定的條件選擇某個交互;
opt:表示一個可選的行為;
break:提供了和編程語言中的break類擬的機制;
par:支持交互片段的並發執行;
seq:強迫交互按照特定的順序執行;
strict:明確定義了一組交互片段的執行順序;
neg:用來標志不應該發生的交互;
region:標志在組合片段中先於其他交互片斷發生的交互;
ignore:明確定義了交互片段不應該響應的消息;
consider:明確標志了應該被處理的消息
assert:標志了在交互片段中作為事件唯一的合法繼續者的操作數;
loop:說明交互片段會被重復執行
(1)抉擇(Alt):抉擇用來表示多個消息序列下根據不同條件互斥的選擇,類似於if...else,下圖就是一個抉擇的例子,用戶到商店里購買一件商品,如果小於50件就可以購買成功,如果大於50件,就出現貨品不足無法購買的情況,這是個比較粗糙的例子,不過對於解釋抉擇的組合片段還是很好理解的。
(2)選項(Opt):表示一個可能存在又可能不存在的消息通信過程,例如上面購買操作,有可能用戶會購買商品,也可能不購買商品,表示如下圖:
(3) 循環(Loop):表示該消息通信的過程多次根據條件重復執行,類似於for,如下圖示例:
(4)並行(Par):表示對象生命線中持續進行消息通信的部分,具體如下圖:
(5) 中斷(break):用來表示序列中如果選擇一個序列則要放棄其他序列的情況,類似於switch里的break,如下圖:
(6)強順序(strict):多個操作片段必須按照順序發生。下面就是一個典型的例子,做菜這個操作分為切菜和炒菜,這個流程是必須不可逆的,所以是強順序。
(7)弱順序(Seq):多個操作片段在同一生命線上必須按照片段順序發生,如果是不同的生命線則可以是並行發生,這個就不舉實例了,基本表示方法和上面一樣。 - 一個電話撥號的時序圖