作為一名合格的程式設計師,在需求整理及功能實現的時候,各種流程圖是避免不了的,像用例圖、時序圖、狀態圖基本上是必備,輔助分析需求及梳理實現思路。
- 時序圖,又稱為序列圖、循序圖,是一種UML互動圖。時序圖透過描述物件之間傳送訊息的時間順序,顯示多個物件之間的動態協作過程。
- 時序圖的使用場景非常廣泛,幾乎各行各業都可以使用。當然,作為一個軟體工作者,我這邊主要列舉和軟體開發有關的場景。
- 時序圖涉及到的角色主要包括
- 角色(Actor)系統角色,可以是人或者其他系統和子系統。以一個小人圖標表示。
- 物件(Object)物件位於時序圖的頂部,以一個矩形表示。
- 生命線(LifeLine)時序圖中每個物件和底部中心都有一條垂直的虛線,這就是物件的生命線(物件的時間線)。以一條垂直的虛線表。
- 控制焦點(Activation)控制焦點代表時序圖中在物件時間線上某段時期執行的操作。以一個很窄的矩形表示。
- 訊息(Message)表示物件之間傳送的資訊。主要分同步訊息、非同步訊息、返回訊息
- 自關聯訊息表示方法的自身呼叫或者一個物件內的一個方法呼叫另外一個方法。以一個半閉合的長方形+下方實心剪頭表示。
- 組合片段組合片段用來解決互動執行的條件和方式,它允許在序列圖中直接表示邏輯元件,用於透過指定條件或子程序的應用區域,為任何生命線的任何部分定義特殊條件和子程序。
- 狀態圖,是描述一個實體基於事件反應的動態行為,常常用於顯示狀態機、使物件達到這些狀態的事件和條件、以及達到這些狀態時所發生的操作。UML狀態圖可以研究類、角色、子系統、或元件的複雜行為。
- 用狀態機對一個物件的生命週期建模,狀態圖用於顯示狀態機(State Machine Diagram),重點在與描述狀態圖的控制流。
- 狀態圖涉及到的角色主要包括
- 狀態(States)指在物件的生命週期中的某個條件或者狀況,在此期間物件將滿足某些條件、執行某些活動活活等待某些事件,狀態用圓角矩形表示
- 轉移(Transitions)轉移(Transitions)是兩個狀態之間的一種關係,表示物件將在源狀態(Source State)中執行一定的動作,並在某個特定事件發生而且某個特定的警界條件滿足時進入目標狀態(Target State)
- 動作(State Actions)動作(Actions)是一個可執行的原子操作,也就是說動作是不可中斷的,其執行時間是可忽略不計的。
- 自身轉移(Self-Transitions狀態可以有返回自身狀態的轉移,稱之為自身轉移(Self-Transitions)
- 組合狀態(Compound States巢狀在另外一個狀態中的狀態稱之為子狀態(sub-state),一個含有子狀態的狀態被稱作組合狀態(Compound States)
- 進入節點(Entry Point)由於一些原因並不會執行初始化(initialization),而是直接透過一個節點進入狀態【Ready】,則此節點稱之為進入節點(Entry Point)
- 歷史狀態(History States)歷史狀態是一個偽狀態(Pseudostate),其目的是記住從組合狀態中退出時所處的子狀態,當再次進入組合狀態,可直接進入這個子狀態,而不是再次從組合狀態的初態開始。
- 併發區域(Concurrent Regions)狀態圖可以分為區域,而區域又包括退出或者當前執行的子狀態。說明組合狀態在某一時刻可以同時達到多個子狀態。
- 在介紹工具使用時主要以時序圖為主,狀態圖只要明白了概念,設計的時候類似,主要是介紹工具的選擇,供參考
常用工具
- 在工作中常用的工具有visio、Typora(最新版收費)、Drawio(免費)
- visio是office辦公套件之一,也是普遍使用的流程圖工具,程式設計師及非程式設計師都可以使用,產品做的也非常人性化,容易上手,如下時序圖所示效果
- 繪圖區域上半部分為示例圖下面為時序圖各個組成部分的說明,幾點可以檢視每個時序圖組成部分的用意及使用說明
- visio左邊為工具欄、右側為繪畫圖,像生命線、參與者、訊息 都提供了完整的支援,工具欄提供的工具如圖所示:
- Typora應該是程式設計師的最愛,Typora容許隨時隨地開展無縫拼接瀏覽,因而您能夠在檢查顯示資訊實際效果的另外形象化地開展撰寫。在Win,Mac和Linux上能用。它具備審校作用,能夠檢查拼讀和英語的語法。全自動匹配Markdown標記,比如括弧。支援大概100種語言並支援英語的語法突顯。豐富多彩的作用和鍵盤快捷鍵使您輕輕鬆鬆瀏覽瘙癢的地區。與內聯公式和顯示資訊公式適配。公式還可以即時瀏覽。能夠輕輕鬆鬆插進圖象(載入時顯示資訊圖象)。以各種各樣格式匯出來,比如PDF,LaTeX,HTML 。您能夠依據自身的喜好變更外型(主題)。支援全自動儲存和修復。有對焦模式,印表機方式和原始碼方式,能夠依據本人喜好開展轉換。識別符號,行和英語單詞的總數能夠馬上檢查。能夠建立簡易的序列圖。可以說一個寫作的利器,目前應該是程式設計師的標配了,在做流程圖這塊也是佼佼者,但對非程式設計師不是太友好,效果顯示如下
- 顯示的原始檔
Title: Typora 時序圖示例
物件A->物件B: 物件B你好嗎?(請求)
物件B-->物件A: 我很好(響應)
物件B->小三: 你好嗎
小三-->>物件A: 物件B找我了
物件A->物件B: 你真的好嗎?
Note over 小三,物件B: 我們是朋友
- typora設計流程圖非常簡潔,但沒有提供直接的設計工具,對非開發人員中很少使用。
- Drawio是一款繪製流程圖的利器。而且介面簡潔清晰,最重要的是免費的,visio 不是免費的。還有其他很多好處,它跨平臺,還提供了 Chrome 外掛和 VScode 外掛,而且支援多語言,很友好。這麼多好處,那必須搞起來啊。我已經完成從 visio 轉移到 draw.io,不過國內用的好像並不多,人性化設計的不錯,可以跟visio又得一拼,效果如下
- 流程圖非常的簡潔漂亮,同事還提供大量的模板供參考,非常的方便
- 工作區也分工具區及繪畫區,工具區如下所示,個人感覺比office的visio更全面
推薦總結
- 如果已經安裝office,建議使用visio,可以滿足大部分需求,同時滿足業務流程圖設計,visio面向各個行業的人員使用
- 如果是沒有安裝office,又有流程圖設計要求,推薦使用drawio,設計的圖也非常漂亮,覺得不讓你失望
- 如果是開發人員,強烈推薦Typora,有一種寫程式碼的感覺,逼格絕對上升一個檔次,同時跟寫文件結合,非常流暢