如何畫時序圖、流程圖、狀態流轉圖
- 流程圖
- 符號
- 約定
- 時序圖
- 元素
- 交互框
- 最佳實踐
- 狀態流轉圖
在研發或者寫技術方案的時候,我們經常會畫各種圖。圖比文字更加容易理解一些,那么如何畫出優秀好看的圖呢
下面簡單介紹一些畫圖時需要注意的點
流程圖
流程圖是流程的圖形化。所謂流程,IS09000 系列國際標準中將流程定義為一組將輸入轉化為輸出的相互群或相互作用的活動。流程有六個要素構成,分別是流程的輸入資源、流程中的若干活動、活動的相互作用、輸出結果、顧客、最終流程創造的價值
一個流程會將這6個要素有序串聯起來,而流程圖則是承載上述程序的圖形載體
符號
流程圖中的每個符號都有著特定含義:
約定
除了符號規劃、結構規劃,繪制流程圖過程中還要注意一些約定俗成的路徑規劃,比如
1,繪制流程圖時,為了提高流程圖的邏輯性,應遵循從左到右、從上到下的順序排列
2,一個流程從開始符開始,以結束符結束。開始符號只能出現一次,而結束符號可出現多次。若流程足夠清晰,可省略開始、結束符號
3,同一流程圖內,符號大小需要保持一致,同時連接線不能交叉,連接線不能無故彎曲
4,流程處理關系為并行關系的,需要將流程放在同一高度
5,處理流程須以單一入口和單一出口繪制,同一路徑的指示箭頭應只有一個
一個簡單的示例
時序圖
時序圖,又名序列圖、循序圖,是一種 UML 交互圖。它通過描述對象之間發送消息的時間順序顯示多個對象之間的動態協作,時序圖可以清晰的說明在多個系統、多個對象中的交互邏輯
元素
我們在畫時序圖時會涉及7種元素:角色、對象、生命線、控制焦點()、消息(Message)、自關聯消息、組合片段。其中前6種是比較常用和重要的元素,剩余的一種組合片段元素不是很常用,但是比較復雜。我們先介紹前6種元素,在單獨介紹組合片段元素。
角色(Actor):系統角色,可以是人或者其他系統,子系統。以一個小人圖標表示
對象(Object):
對象位于時序圖的頂部,以一個矩形表示。對象的命名方式一般有三種:
- 對象名和類名。例如:華為手機:手機
- 只顯示類名,不顯示對象,即為一個匿名類。例如::手機
- 只顯示對象名,不顯示類名。例如:華為手機:
生命線(LifeLine):時序圖中每個對象和底部中心都有一條垂直的虛線,這就是對象的生命線
活動條(Activation):在生命線的虛線上可以用活動條來表示某種行為的開始和結束,一般用小矩形來表示
消息(Message):表現代表對象之間發送的信息。消息分為三種類型
- 同步消息(Synchronous Message):消息的發送者把控制傳遞給消息的接收者,然后停止活動,等待消息的接收者放棄或者返回控制。用來表示同步的意義。以一條實線和實心箭頭表示
- 異步消息(Asynchronous Message):消息發送者通過消息把信號傳遞給消息的接收者,然后繼續自己的活動,不等待接受者返回消息或者控制。異步消息的接收者和發送者是并發工作的。以一條實線加大于號表示
- 返回消息(Return Message):返回消息表示從過程調用返回。以小于號加虛線表示
交互框
UML 在2.0時在時序圖中加入了交互框。交互框用來解決交互執行的條件和方式,它允許在序列圖中直接表示邏輯組件,用于通過指定條件或子進程的應用區域,為任何生命線的任何部分定義特殊條件和子進程。組合片段共有13種,這里只展示一些常用的
最佳實踐
1,從初始消息開始畫,依次畫出隨后消息,并給每個消息分配序號,方便理解
2,角色和對象用名詞,消息用動詞
3,角色放在時序圖的開始位置,對象重要程度或使用頻率從左到右排列。這就要根據時間的流程考慮了,是一個比較主觀的事情
4,活動條兩端要以消息元素封頂,控制焦點不要超過消息元素,錯誤示例:
狀態流轉圖
狀態流轉圖是一種用于描述狀態之間流轉過程的需求文檔,在電商類產品的訂單流、審批流一類的需求中比較常見,可以直觀的看見狀態機的變更
狀態流轉圖較簡單,箭頭中寫了一些操作,模塊中則寫了狀態,沒有判斷、循環等額外模塊