如何繪畫狀態機來描述業務變化

2021-08-01 07:24:40 字數 1638 閱讀 2999

一、**

最早是電路設計領域裡面的概念,具體來說是一種根據電路訊號按照預先設定的狀態進行轉移,協調相關訊號動作並完成特定操作的控制硬體。

後來軟體程式設計裡面繼承了這種思想,用來表示有限多個狀態以及在這些狀態之間轉移和動作的模型。簡稱為

fsm(finite state machine)

,是常見的軟體設計模式之一。

對於pm來說,借鑑這種思想並融入到自己的產品思維中是很有必要的。據此設計業務實體的功能會更容易闡述本質,並且讓技術更容易理解。

二、狀態機有什麼作用

從pm的角度可以這樣定義,狀態機用來表示業務實體的全部狀態以及相互間如何轉移。

其中,業務實體是指客觀上可以相互區分的事物,比如訂單、優惠券、商品、活動……

當然扯遠一點,大部分物件都是有狀態的概念,只是沒必要都畫個狀態機圖。

三、狀態機三要素

從狀態機的內在因果關係可以抽象出3大要素:

包含1個開始狀態和n個終止狀態,以及若干個中間狀態。當到達終態, 狀態機停止。

四、狀態機怎麼畫

1.要素怎麼表示

「狀態」使用圓角矩形表示。

「條件」使用有向線條上的文字表示,比如系統怎麼樣,或者使用者執行xx動作。

線條的方向表示狀態遷移。

一般情況下從左向右的畫圖順序表示了初始→終止的方向,所以無需單獨表示。複雜情況下可以用實心黑圓點初始狀態,用實心黑圓點外包乙個圓圈表示終止狀態。

2 要素如何命名

狀態建議以」已+動詞」的結構來命名,比如已付款、已發貨。

條件建議以」動作+結果」的動賓結構或者」表示式」來命名,以明確狀態遷移的具體條件。比如支付失敗、下單時間》72小時。

注意命名一般站在使用者立場,盡量命名標準化。

3 畫出狀態機

4 畫圖注意點

不需要的狀態盡量去除,讓狀態機結構最簡單。

明確只有乙個初始狀態,終止狀態可能有多個。

合理實現各個狀態之間的切換。

方便擴充套件,狀態有可能會增加,有可能會有子狀態機。

注意不要遺漏狀態,比如優惠券使用的狀態機可能需要「使用中」

不要搞混動作和狀態的區別,命名本身就不一樣。而本質上動作是不穩定的,一旦執行完畢就結束了;而狀態是穩定的,只要沒有外部條件觸發。

狀態機圖和流程圖的區別

經常有人把狀態機圖給錯認為是流程圖的一種,其實他們本質不一樣。

目的不一樣,流程圖表示的是流程,狀態機圖表示的是業務實體的狀態變化。

另外,流程圖中的節點一般是動作,而狀態機圖的節點是狀態。

準確來說,狀態機圖是uml語言中的一種。

*

注意

不是所有的業務實體都有必要產出狀態機圖,關鍵業務的才建議進行產出。

VHDL描述狀態機

狀態機是一種描述或處理數字控制系統的方法。一般將數字控制系統看做是乙個系統黑箱,當有來自環境的輸入刺激時,不但會改變系統現狀,同時黑箱還會輸出反應,改變後的系統狀態稱為次態。這個系統可能是一台機器裝置或乙個電路,用來表示其內部詳細動作的方式,稱為狀態機。通常,狀態機是控制單元的主題,他接收外部訊號,...

快速生成樹之拓撲變化狀態機

1 原始碼 rstplib.1.1.02 topoch.c,topoch.h。2 拓撲變化規則 a 如果乙個網橋檢測到拓撲變化後,它從所有非邊界活動埠傳播拓撲變化訊息 b 如果乙個活動埠收到拓撲變化訊息後,它從所有其它非邊界活動埠傳播拓撲變化消 息。另外如果它是指定埠,它還從該指定埠發回乙個拓撲變化...

如何寫好狀態機1

列表內容 標準的狀態機分為摩爾狀態機和公尺勒狀態機兩種。摩爾狀態機的輸出只與當前狀態值有關,且只在時鐘邊沿來時才會有狀態變化。公尺勒狀態機的輸出不但與當前狀態有關,而且與當前輸入值有關,這一特點是其控 制和輸出更加靈活,但同時也增加了設計的複雜度。時鐘到達各個觸發器的延時往往有差異 時鐘歪斜 這種差...