程式設計師必備畫圖技能之——時序圖
什麼是時序圖
時序圖(Sequence Diagram),又名序列圖、循序圖,是一種UML交互圖。它通過描述對象之間發送消息的時間順序顯示多個對象之間的動態協作。
使用場景
時序圖的使用場景非常廣泛,幾乎各行各業都可以使用。當然,作為一個軟體工作者,我這邊主要列舉和軟體開發有關的場景。
1. 梳理業務流程
一般的軟體開發都是為了支撐某個具體的業務。有時候業務的流程會比較複雜,涉及到多種角色,這時就可以使用時序圖來梳理這個業務邏輯。這樣會使業務看起來非常清晰,程式碼寫起來也是水到渠成的事情了。
2. 梳理開源軟體
作為一個合格的程式設計師,閱讀源程式碼的能力一定要過關。一般成熟框架的源程式碼調用深度都比較深,類之間的調用關係也比較複雜。我喜歡用時序圖來梳理框架中這些對象之間的關係。比如再看Tomcat啟動流程的過程中,我就時序圖梳理了各個組件之間的關係,看起來層次非常清楚,也便於記憶。
時序圖的角色
我們在畫時序圖時會涉及下面7種元素:
-
角色(Actor)
-
對象(Object)
-
生命線(LifeLine)
-
控制焦點(Activation)
-
消息(Message)
-
自關聯消息
-
組合片段。
其中前6種是比較常用和重要的元素,最後的組合片段元素不是很常用,但是比較複雜。我們先介紹前6種元素,再單獨介紹組合片段元素。
1. 角色(Actor)
系統角色,可以是人或者其他系統和子系統。以一個小人圖標表示。
2. 對象(Object)
對象位於時序圖的頂部,以一個矩形表示。對象的命名方式一般有三種:
-
對象名和類名。例如:華為手機:手機、loginServiceObject:LoginService;
-
只顯示類名,不顯示對象,即為一個匿名類。例如::手機、:LoginSservice。
-
只顯示對象名,不顯示類名。例如:華為手機:、loginServiceObject:。
3. 生命線(LifeLine)
時序圖中每個對象和底部中心都有一條垂直的虛線,這就是對象的生命線(對象的時間線)。以一條垂直的虛線表。
4. 控制焦點(Activation)
控制焦點代表時序圖中在對象時間線上某段時期執行的操作。以一個很窄的矩形表示。
5. 消息(Message)
表示對象之間發送的資訊。消息分為三種類型。
-
同步消息(Synchronous Message)
消息的發送者把控制傳遞給消息的接收者,然後停止活動,等待消息的接收者放棄或者返回控制。用來表示同步的意義。以一條實線和實心箭頭表示。 -
非同步消息(Asynchronous Message)
消息發送者通過消息把訊號傳遞給消息的接收者,然後繼續自己的活動,不等待接受者返回消息或者控制。非同步消息的接收者和發送者是並發工作的。以一條實線和大於號表示。
-
返回消息(Return Message)
返回消息表示從過程調用返回。以小於號和虛線表示。
6. 自關聯消息
表示方法的自身調用或者一個對象內的一個方法調用另外一個方法。以一個半閉合的長方形+下方實心剪頭表示。
下面舉例一個時序圖的列子,看下上面幾種元素具體的使用方式。
7. 組合片段
組合片段用來解決交互執行的條件和方式,它允許在序列圖中直接表示邏輯組件,用於通過指定條件或子進程的應用區域,為任何生命線的任何部分定義特殊條件和子進程。組合片段共有13種,名稱及含義如下:
組合名稱 | 組合含義 |
---|---|
ref | 引用其他地方定義的組合片段 |
alt | 在一組行為中根據特定的條件選擇某個交互 |
opt | 表示一個可選的行為 |
break | 提供了和程式語言中的break類擬的機制 |
par | 支援交互片段的並發執行 |
seq | 強迫交互按照特定的順序執行 |
strict | 明確定義了一組交互片段的執行順序 |
neg | 用來標誌不應該發生的交互 |
region | 標誌在組合片段中先於其他交互片斷髮生的交互 |
ignore | 明確定義了交互片段不應該響應的消息 |
consider | 明確標誌了應該被處理的消息 |
assert | 標誌了在交互片段中作為事件唯一的合法繼續者的操作數 |
loop | 說明交互片段會被重複執行 |
組合片段的功能平時用的不是很多,具體使用時可以參考本文最後關於組合片段的文章,這邊不做深入介紹了。
畫圖工具推薦
- ProcessOn是一個在線作圖工具的聚合平台,它可以在線畫流程圖、思維導圖、UI原型圖、UML、網路拓撲圖、組織結構圖等等,您無需擔心下載和更新的問題,不管Mac還是Windows,一個瀏覽器就可以隨時隨地的發揮創意,規劃工作;
- 您可以把作品分享給團隊成員或好友,無論何時何地大家都可以對作品進行編輯、閱讀和評論;
- ProcessOn不僅僅匯聚著強大的作圖工具,這裡還有著海量的圖形化知識資源我們儘可能的將有價值的知識進行梳理,傳遞到您的眼前。
參考
- //blog.csdn.net/fly_zxy/article/details/80911942(重點參)
- //baijiahao.baidu.com/s?id=1561926824533534&wfr=spider&for=pc
- 組合片段