狀態圖
出自 MBA智库百科(https://wiki.mbalib.com/)
狀態圖(Statechart Diagram)
目錄 |
狀態圖是指描述一個實體基於事件反應的動態行為,顯示了該實體如何根據當前所處的狀態對不同的事件做出反應的。通常我們創建一個UML狀態圖是為了以下的研究目的:研究類、角色、子系統、或組件的複雜行為。
建立狀態圖的步驟如下:
(1)確定上下文環境。狀態圖是立足於狀態遷移而進行行為描述的。因此建立狀態圖時首先要搞清楚狀態的主體,確定狀態的上下文環境。常見的狀態主體有:類、用例、多個用例和整個系統。
(2)識別狀態。狀態主體會表現出一些穩定的狀態,它們需要被識別出來,並且標記出其中的初始狀態和結束狀態集。在有些情況下,可能會不存在確定的初始狀態和結束狀態。
(3)建立狀態轉換。根據需求所描述的系統行為,建立各個穩定狀態之間可能存在的轉換。
(4)補充詳細信息,完善狀態圖。添加轉換的觸發事件、轉換行為和監護條件等詳細信息。
在有些情況下也可能會需要建立狀態圖的層次結構或者進行其他更加複雜的工作。
例如,針對ATM系統示例,可以按照下麵的步驟建立取錢類的狀態圖:
(1)明確狀態圖的主體:取錢類。
(2)識別取錢類可能存在的穩定狀態:
①接收取錢請求狀態。
②身份驗證狀態。
③向銀行信息系統提交取錢信息狀態。
④處理取錢交易狀態。
⑤處理身份驗證錯誤狀態。
⑥處理取錢成功狀態。
⑦詢問是否進行其他交易。
其中,接收取錢請求為系統的初始狀態。
(3)建立狀態轉換。可能的狀態轉換如表所示,其中如果第i行第J列的元素被標記為y,則表示第i行的狀態可以轉換為第J列的狀態。
接收取錢請求 | 身份驗證 | 提交信息 | 處理取錢交易 | 處理身份驗證錯誤 | 取錢交易失敗處理 | 詢問是否進行其他交易 | |
接收取錢請求 | Y | Y | |||||
身份驗證 | Y | Y | |||||
提交信息 | Y | Y | |||||
處理取錢交易 | Y | ||||||
處理身份驗證錯誤 | Y | ||||||
取錢交易失敗處理 | Y | ||||||
詢問是否進行其他交易 | Y |
(4)在已識別狀態和轉換的基礎上,添加詳細的信息說明,建立狀態圖。