狀態圖與活動圖
狀態圖和活動圖是軟體開發中用於建模複雜系統的兩種常見工具。儘管這兩種圖表用途相似,但它們之間存在顯著差異。在本文中,我們將比較狀態圖和活動圖,並解釋它們的異同。
狀態圖
狀態圖是一種用於描述系統對內部或外部事件反應行為的圖表。它展示了物件的不同狀態以及這些狀態之間的轉移,這些轉移是根據所發生的事件而定。狀態圖廣泛應用於軟體工程中,以建模複雜系統的行為。
狀態圖由狀態、轉移和事件組成。狀態代表物件或系統的不同狀態,轉移代表從一個狀態到另一個狀態的移動,事件則代表觸發系統狀態變化的信號。狀態圖通常用於建模反應式系統,即對外部刺激作出回應的系統。

活動圖
活動圖是另一種用於建模系統行為的圖表。它是流程或工作流程中各個步驟的圖形化表示。活動圖用於建模系統內活動的流程,包括決策、迴圈和並行活動。
活動圖由活動、動作和轉移組成。活動代表流程中的主要步驟,動作代表活動中的單個步驟,轉移則代表從一個活動到另一個活動的移動。活動圖通常用於建模業務流程或其他非反應式系統。

狀態圖與活動圖的相似之處
狀態圖和活動圖都用於建模系統的行為。它們都使用圖形化表示來展示系統內的不同狀態和轉移。它們都對理解並向利益相關者傳達系統行為非常有幫助。
狀態圖與活動圖的差異
狀態圖與活動圖之間的主要差異在於,狀態圖用於建模反應式系統,而活動圖則用於建模非反應式系統。狀態圖著重於物件或系統的內部狀態及其對外部事件的回應,而活動圖則著重於流程或工作流程中所涉及的活動順序。
另一個關鍵差異在於,狀態圖通常用於建模複雜系統,而活動圖則用於建模較簡單的系統。狀態圖比活動圖更複雜,因為它包含了系統的狀態和轉移,而活動圖則專注於流程中所涉及的活動和動作。
以下表格總結了狀態圖與活動圖之間的主要異同:
| 狀態圖 | 活動圖 | |
|---|---|---|
| 目的 | 建模反應式系統 | 建模非反應式系統 |
| 重點 | 物件或系統的內部狀態 | 流程或工作流程中所涉及的活動順序 |
| 元素 | 狀態、轉移、事件 | 活動、動作、轉移 |
| 複雜度 | 更複雜 | 較簡單 |
| 使用案例 | 嵌入式系統、控制系統、實時系統 | 業務流程、工作流程、軟體流程 |
如上所述,狀態圖和活動圖經常被混淆,但它們是兩種用於不同目的的獨立圖形。在下面的例子中,我們將比較狀態圖和活動圖,並突出它們的差異。
狀態圖(如下圖左側所示)表示一個狀態機,該狀態機會根據明確的事件執行操作。它展示了系統的各種狀態以及基於事件發生的狀態之間的轉換。狀態圖對於建模響應事件的反應式系統非常有用,例如交通信號燈或自動販賣機。
另一方面,活動圖(如下圖右側所示)表示系統中活動的流程。它展示了系統中發生的活動序列,包括決策、循環和分支。活動圖對於建模涉及一系列活動的系統非常有用,例如業務流程或軟體演算法。

與狀態圖不同,活動圖不需要明確的事件來從一個節點轉移到另一個節點。相反,活動圖中的控制流是在活動完成後自動確定的。活動圖中的節點代表活動或決策,箭頭表示從一個活動到下一個活動的控制流。
透過一個例子學習差異:對比狀態圖與活動圖
在自動販賣機問題的背景下,我們可以透過使用兩種圖形來建模同一個問題,來說明狀態圖與活動圖之間的差異。這樣做,我們可以比較並對比每種圖形類型的獨特特徵。
例如,我們可以使用狀態圖來建模自動販賣機的不同狀態及其基於外部事件的狀態轉換。另一方面,我們可以使用活動圖來建模自動販賣機交易過程中發生的活動序列,例如投入硬幣、選擇商品以及退還硬幣。
問題 1:自動販賣機
情境:在學校設置了一台可販賣零食和飲料的自動販賣機。一名學生走進自動販賣機並投入一枚硬幣購買零食。自動販賣機顯示可用商品的清單,學生選擇自己想要的零食。自動販賣機檢查該商品是否可得且學生是否有足夠資金,然後發放零食。如果該商品不可得或學生資金不足,自動販賣機將退還硬幣。
透過狀態圖建模自動販賣機
在此狀態圖中,自動販賣機從閒置狀態開始,使用者可投入硬幣。若使用者投入足夠金額,自動販賣機將轉換至資金已接收狀態,使用者可選擇商品。若所選商品可得,自動販賣機將轉換至發放狀態以發放商品,然後返回至閒置狀態,一旦交易完成。若所選商品不可得,自動販賣機將轉換至退還狀態以退還硬幣,然後返回至閒置狀態,一旦交易完成。若使用者未投入足夠金額,自動販賣機將直接轉換至退還狀態以退還硬幣,然後返回至閒置狀態,一旦交易完成。

透過活動圖建模自動販賣機
給定的活動圖表示自動售貨機系統中事件的流程。它從「開始」節點開始,使用者首先需要投入硬幣。圖中接著顯示一個「如果」條件,用來檢查使用者是否投入了足夠的金額。如果金額足夠,使用者便可選擇商品。
接下來的「如果」條件會檢查所選商品是否可取得。如果商品可取得,自動售貨機就會發放商品,圖中顯示轉換至「停止」節點,表示交易已完成。如果所選商品不可取得,自動售貨機會退還硬幣,然後轉換至「停止」節點。
如果使用者未投入足夠金額,自動售貨機會直接退還硬幣,並轉換至「停止」節點。無論何種情況,交易均已完成,使用者可依情況領取退款。

總體而言,活動圖模擬了一個簡單的自動售貨機系統,具有兩種可能結果——根據所選商品是否可取得以及投入金額的多寡,商品會被發放或硬幣會被退還。
總結
這裡所討論的兩種不同類型的圖表是狀態圖與活動圖。這兩種圖表都是軟體工程與系統設計中廣泛使用的圖表類型。
- 狀態圖用於表示系統的各種狀態及其狀態轉移。它們根據系統中發生的事件,顯示控制流程從一個狀態轉移到另一個狀態。狀態圖用於模擬複雜系統的行為,並分析系統中單一元件的行為。它們特別適用於模擬會對事件做出回應的反應式系統,例如自動售貨機或交通信號燈。
- 另一方面,活動圖用於模擬系統中活動的流程。它們顯示系統中發生的活動序列,包括決策、迴圈與分支。活動圖用於模擬系統的業務流程與工作流程,並理解系統中不同元件之間的互動方式。它們特別適用於模擬涉及一系列活動的系統,例如業務流程、軟體演算法或製造流程。
就應用而言,狀態圖更適合用於模擬會對事件做出回應的反應式系統,而活動圖則更適合用於模擬涉及一系列活動的系統。狀態圖有助於理解系統中單一元件的行為,而活動圖則有助於理解系統中不同元件之間的互動。最終,選擇使用哪種圖表,取決於所要模擬系統的性質以及圖表的目的。











