轉載自:https://blog.csdn.net/fly_zxy/article/details/80911942
時序圖是什么
時序圖(Sequence Diagram),又名序列圖、循序圖,是一種UML交互圖。
它通過描述對象之間發送消息的時間順序顯示多個對象之間的動態協作。
再來看看Visio2016對時序圖的解釋:
時序圖的七元素
我們在畫時序圖時會涉及7種元素:角色(Actor)、對象(Object)、生命線(LifeLine)、控制焦點(Activation)、消息(Message)、自關聯消息、組合片段。
其中前6種是比較常用和重要的元素,剩余的一種組合片段元素不是很常用,但是比較復雜。我們先介紹前6種元素,在單獨介紹組合片段元素。
角色(Actor):系統角色,可以是人或者其他系統,子系統。以一個小人圖標表示。
對象(Object):對象位於時序圖的頂部,以一個矩形表示。對象的命名方式一般有三種,如下:
1、對象名和類名。例如:華為手機:手機、loginServiceObject:LoginService
2、只顯示類名,不顯示對象,即為一個匿名類。例如::手機、:LoginSservice
3、只顯示對象名,不顯示類名。例如:華為手機:、loginServiceObject:
生命線(LifeLine):時序圖中每個對象和底部中心都有一條垂直的虛線,這就是對象的生命線(對象的時間線)。以一條垂直的虛線表。
控制焦點(Activation):控制焦點代表時序圖中在對象時間線上某段時期執行的操作。以一個很窄的矩形表示。
消息(Message):表現代表對象之間發送的信息。消息分為三種類型,如下:
1、同步消息(Synchronous Message):消息的發送者把控制傳遞給消息的接收者,然后停止活動,等待消息的接收者放棄或者返回控制。用來表示同步的意義。以一條實線+實心箭頭表示。
2、異步消息(Asynchronous Message):消息發送者通過消息把信號傳遞給消息的接收者,然后繼續自己的活動,不等待接受者返回消息或者控制。異步消息的接收者和發送者是並發工作的。以一條實線+大於號表示。
3、返回消息(Return Message):返回消息表示從過程調用返回。以小於號+虛線表示。
自關聯消息:表示方法的自身調用或者一個對象內的一個方法調用另外一個方法。以一個半閉合的長方形+下方實心剪頭表示。
舉例認識時序圖六種元素:我們來使用Visio2016來畫一個用戶打開微信掃描二維碼支付流程時序圖,通過這個時序圖來認識剛剛介紹的6種時序圖元素。
時序圖解釋:
1、用戶輸入手機密碼
2、打開手機
3、打開微信掃一掃
4、返回微信掃一掃界面
5.1、掃描商家收款碼
5.2、商家生成收款二維碼
5.3、返回收款二維碼
5.4、識別商家收款碼
6、提示用戶輸入微信支付密碼
7.1、輸入微信支付密碼
7.2、微信驗證用戶輸入密碼正確
7.3、向商家匯款
7.4、匯款成功
8、提示用戶支付成功
組合片段:組合片段用來解決交互執行的條件和方式,它允許在序列圖中直接表示邏輯組件,用於通過指定條件或子進程的應用區域,為任何生命線的任何部分定義特殊條件和子進程。組合片段共有13種,如下:
常用組合片段舉例:
抉擇(Alt)
抉擇在任何場合下只發生一個序列。 可以在每個片段中設置一個臨界來指示該片段可以運行的條件。else 的臨界指示其他任何臨界都不為 True 時應運行的片段。如果所有臨界都為 False 並且沒有 else,則不執行任何片段。Alt片段組合可以理解為if..else if...else條件語句。
舉例:拿微信支付的時序圖舉例,如果7.3向商家匯款的成功或失敗流程需要在時序圖中體現出來,可以這么使用Alt片段組合。
選項(Opt)
包含一個可能發生或不發生的序列。Opt相當於if..語句。
循環(Loop)
片段重復一定次數,可以在臨界中指示片段重復的條件。Loop相當於for語句。
並行(Par)
並行處理,片段中的事件可以並行交錯。Par相當於多線程。
時序圖的繪制
工具:微軟Visio挺好用(大家都知道),說一個大家不知道的開源drawio
繪制步驟:
1、划清邊界,識別交互語境
所謂划清邊界是是指要確定好繪制時序圖的范圍。在微信支付例子中省略列商家打開微信、輸入收款金額等交互消息,這些不是我們需要體現的,我們主要體現的是用戶的掃碼支付流程。
所謂識別交互語境就是要知道自己繪制時序圖的前提和背景。在微信支付的例子中用戶登錄了微信、開通了支付功能是前提,背景是用戶需要掃描付款買東西。
2、梳理時序圖中的角色和對象都有哪些
微信支付的例子中角色只有一個,即用戶。對象有華為手機:手機、安卓版微信:微信、:商家。
3、對象之間有哪些交互消息
對象之間交互的消息詳見以上時序圖。
繪制技巧:
1、從初始消息開始畫,依次畫出隨后消息,並給每個消息分配序號,方便理解。
2、角色和對象用名詞,消息用動詞。
3、角色放在時序圖的開始位置,對象重要程度或使用頻率從左到右排列。這就要根據時間的流程考慮了,是一個比較主觀的事情。
4、控制焦點兩端要以消息元素封頂,控制焦點不要超過消息元素。
正確示范:
錯誤示范:
注:最后的技巧就是多聯系繪制時序圖,熟能生巧,自然而然就會畫了。
實例練習:用戶登錄系統時序圖
轉載自:https://blog.csdn.net/fly_zxy/article/details/80911942