時(shí)序圖(Sequence Diagram)

什么是時(shí)序圖

時(shí)序圖(Sequence Diagram),又名序列圖、循序圖,是一種UML交互圖。它通過描述對象之間發(fā)送消息的時(shí)間順序顯示多個(gè)對象之間的動(dòng)態(tài)協(xié)作。

讓我們來看一看visio2016對時(shí)序圖的的解釋。

image

StarUML工具繪制的時(shí)序圖

StarUML下載地址:http://staruml.io/

image.png

時(shí)序圖的元素

我們在畫時(shí)序圖時(shí)會(huì)涉及7種元素:角色(Actor)、對象(Object)、生命線(LifeLine)、控制焦點(diǎn)(Activation)、消息(Message)、自關(guān)聯(lián)消息、組合片段。其中前6種是比較常用和重要的元素,剩余的一種組合片段元素不是很常用,但是比較復(fù)雜。我們先介紹前6種元素,在單獨(dú)介紹組合片段元素。

角色(Actor)

系統(tǒng)角色,可以是人或者其他系統(tǒng),子系統(tǒng)。以一個(gè)小人圖標(biāo)表示。

對象(Object)

對象位于時(shí)序圖的頂部,以一個(gè)矩形表示。對象的命名方式一般有三種:
1 對象名和類名。例如:華為手機(jī):手機(jī)、loginServiceObject:LoginService。
2 只顯示類名,不顯示對象,即為一個(gè)匿名類。例如::手機(jī)、:LoginSservice。
3 只顯示對象名,不顯示類名。例如:華為手機(jī):、loginServiceObject:。

生命線(LifeLine)

時(shí)序圖中每個(gè)對象和底部中心都有一條垂直的虛線,這就是對象的生命線(對象的時(shí)間線)。以一條垂直的虛線表。

控制焦點(diǎn)(Activation)

控制焦點(diǎn)代表時(shí)序圖中在對象時(shí)間線上某段時(shí)期執(zhí)行的操作。以一個(gè)很窄的矩形表示。

消息(Message)

表現(xiàn)代表對象之間發(fā)送的信息。消息分為三種類型。

同步消息(Synchronous Message)

消息的發(fā)送者把控制傳遞給消息的接收者,然后停止活動(dòng),等待消息的接收者放棄或者返回控制。用來表示同步的意義。以一條實(shí)線+實(shí)心箭頭表示。

異步消息(Asynchronous Message)

消息發(fā)送者通過消息把信號傳遞給消息的接收者,然后繼續(xù)自己的活動(dòng),不等待接受者返回消息或者控制。異步消息的接收者和發(fā)送者是并發(fā)工作的。以一條實(shí)線+大于號表示。

返回消息(Return Message)

返回消息表示從過程調(diào)用返回。以小于號+虛線表示。

自關(guān)聯(lián)消息

表示方法的自身調(diào)用或者一個(gè)對象內(nèi)的一個(gè)方法調(diào)用另外一個(gè)方法。以一個(gè)半閉合的長方形+下方實(shí)心剪頭表示。

認(rèn)識時(shí)序圖六種元素

我們來使用Visio2016來畫一個(gè)用戶打開微信掃描二維碼支付流程時(shí)序圖,通過這個(gè)時(shí)序圖來認(rèn)識剛剛介紹的6種時(shí)序圖元素。

image

時(shí)序圖解釋
1,用戶輸入手機(jī)密碼
2,打開手機(jī)
3,打開微信掃一掃
4,返回微信掃一掃界面
5.1 掃描商家收款碼
5.2 商家生成收款二維碼
5.3 返回收款二維碼
5.4 識別商家收款碼
6,提示用戶輸入微信支付密碼
7.1 輸入微信支付密碼
7.2 微信驗(yàn)證用戶輸入密碼正確
7.3 向商家匯款

7.4 匯款成功
8,提示用戶支付成功

組合片段

組合片段用來解決交互執(zhí)行的條件和方式,它允許在序列圖中直接表示邏輯組件,用于通過指定條件或子進(jìn)程的應(yīng)用區(qū)域,為任何生命線的任何部分定義特殊條件和子進(jìn)程。組合片段共有13種,名稱及含義如下:

image
image

常用組合片段舉例

抉擇(Alt)

抉擇在任何場合下只發(fā)生一個(gè)序列。 可以在每個(gè)片段中設(shè)置一個(gè)臨界來指示該片段可以運(yùn)行的條件。else 的臨界指示其他任何臨界都不為 True 時(shí)應(yīng)運(yùn)行的片段。如果所有臨界都為 False 并且沒有 else,則不執(zhí)行任何片段。Alt片段組合可以理解為if..else if...else條件語句。

我們還拿微信支付的時(shí)序圖舉例,如果7.3向商家匯款的成功或失敗流程需要在時(shí)序圖中體現(xiàn)出來,可以這么使用Alt片段組合。

image
選項(xiàng)(Opt)

包含一個(gè)可能發(fā)生或不發(fā)生的序列。Opt相當(dāng)于if..語句。

image
循環(huán)(Loop)

片段重復(fù)一定次數(shù),可以在臨界中指示片段重復(fù)的條件。Loop相當(dāng)于for語句。

image
并行(Par)

并行處理,片段中的事件可以并行交錯(cuò)。Par相當(dāng)于多線程。

image

時(shí)序圖的繪制工具

畫時(shí)序圖的工具有很多,但是個(gè)人只用過微軟visio工具,感覺很好用,可以滿足需要。

時(shí)序圖的繪制步驟

時(shí)序圖的繪制步驟可以總結(jié)為:

1,劃清邊界,識別交互語境

所謂劃清邊界是是指要確定好繪制時(shí)序圖的范圍。在微信支付例子中省略列商家打開微信、輸入收款金額等交互消息,這些不是我們需要體現(xiàn)的,我們主要體現(xiàn)的是用戶的掃碼支付流程。

所謂識別交互語境就是要知道自己繪制時(shí)序圖的前提和背景。在微信支付的例子中用戶登錄了微信、開通了支付功能是前提,背景是用戶需要掃描付款買東西。

2,梳理時(shí)序圖中的角色和對象都有哪些

微信支付的例子中角色只有一個(gè),即用戶。對象有華為手機(jī):手機(jī)、安卓版微信:微信、:商家。

3,對象之間有哪些交互消息

對象之間交互的消息詳見以上時(shí)序圖。

時(shí)序圖的繪制技巧

時(shí)序圖的繪制技巧:

1,從初始消息開始畫,依次畫出隨后消息,并給每個(gè)消息分配序號,方便理解。

2,角色和對象用名詞,消息用動(dòng)詞。

3,角色放在時(shí)序圖的開始位置,對象重要程度或使用頻率從左到右排列。這就要根據(jù)時(shí)間的流程考慮了,是一個(gè)比較主觀的事情。

image

4,控制焦點(diǎn)兩端要以消息元素封頂,控制焦點(diǎn)不要超過消息元素。

正確示范

image

錯(cuò)誤示范

image

最后的技巧就是多聯(lián)系繪制時(shí)序圖,熟能生巧,自然而然就會(huì)畫了。

練習(xí)事例

用戶登錄系統(tǒng)時(shí)序圖

image

參考資料

https://baike.baidu.com/item/%E6%97%B6%E5%BA%8F%E5%9B%BE/3659178?fr=aladdin

http://baijiahao.baidu.com/s?id=1561926824533534&wfr=spider&for=pc

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容