一、**
最早是電路設計領域裡面的概念,具體來說是一種根據電路訊號按照預先設定的狀態進行轉移,協調相關訊號動作並完成特定操作的控制硬體。
後來軟體程式設計裡面繼承了這種思想,用來表示有限多個狀態以及在這些狀態之間轉移和動作的模型。簡稱為
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
列表內容 標準的狀態機分為摩爾狀態機和公尺勒狀態機兩種。摩爾狀態機的輸出只與當前狀態值有關,且只在時鐘邊沿來時才會有狀態變化。公尺勒狀態機的輸出不但與當前狀態有關,而且與當前輸入值有關,這一特點是其控 制和輸出更加靈活,但同時也增加了設計的複雜度。時鐘到達各個觸發器的延時往往有差異 時鐘歪斜 這種差...