新技能Get:如何繪製智能硬體的狀態轉換圖?

2020-11-23 人人都是..

身為產品經理,若要保證所有必要的狀態轉換和事件都完整、準確的在產品功能需求中描述出來,狀態轉換圖是必不可少的強力工具。

絕大多數智能硬體產品是一個包含狀態轉換、數據操作和功能執行的綜合系統(這個系統的狀態是有限的),它在任何時刻都處於眾多狀態中的某一種狀態。只有當某個特定的事件發生或某個被定義的標準被滿足時,系統的狀態才會發生轉換,由一種狀態向另一種狀態發生轉變。比如,當處於「關閉」狀態的電燈的開關系統接收到用戶的指令時(用戶按開關即是「事件」),電燈從「關閉」狀態變為「開啟」狀態。

一、為什麼需要繪製狀態轉換圖?

當我們用文字來描述一系列複雜的狀態轉換邏輯時,很可能會忽略某些關鍵的狀態變化過程,也可能導致某些狀態變化的重複和新增一些本不該出現的狀態變化。這就使需求不清晰,從而導致文檔的閱讀者(通常是工程師)無法全面的理解系統的行為變化。

這時候,我們就需要引入UML中的狀態轉換圖來展示系統狀態關係的全貌,狀態轉換圖英文全稱State transition diagram,縮寫STD,簡稱狀態圖它屬於事件驅動模型,表示系統對外部事件的響應方式,能清晰的描述系統狀態之間的轉換順序和狀態之間的關係,在節省大量文字描述的情況下幫助工程師更好的理解需求和討論設計思路,避免開發時出現狀態轉換邏輯錯誤,並且系統實現後還要用狀態模型來論證系統的結構和操作。狀態圖還明確的定義了狀態發生轉換時必要的觸發事件和影響狀態轉換的關鍵因素,有利於在開發過程中避免非法事件的進入。通過繪製狀態圖,還可以幫助我們檢測系統設計中是否存在缺陷。狀態圖既可以表示系統循環運行過程,也可以表示系統單程生命期。所以,繪製狀態轉換圖這項技能對產品經理是至關重要的。

二、狀態轉換圖有哪些組成要素?

狀態圖樣例

狀態圖(STD)表示系統狀態和引起狀態改變的事件,它包含三種關鍵元素:

01.可能的系統狀態

系統在任何時候都會處於某種狀態中,所有系統都有狀態,一個狀態代表系統的一種行為模式。比如手機具備「待機」、「通話中」、「關機」等狀態,處於「關機」狀態的手機無法接聽電話(消息),而處於「待機」狀態的手機則可以接聽電話。這說明系統所處的狀態決定了系統對事件的響應方式或所接受的消息。

在狀態圖中定義的狀態主要有初態(即初始狀態)、終態(即最終狀態)和中間狀態。在一張狀態圖中只能有一個初態,而終態則可以有0至多個。

系統狀態一般用圓角矩形表示,如上圖所示。其中可能還包括處於該狀態時將要執行的非原子動作(可中斷)的簡單描述,以Do引出,動作完成後狀態就結束,然後一個從當前狀態出發的轉換被觸發。

狀態還可能包括進入動作和退出動作,進入動作指進入狀態時執行的原子動作(不可中斷),以Entry引出,比如手機進入「充電」狀態後屏幕就顯示充電圖標。退出動作指退出狀態時執行的原子動作,以Exit引出,比如手機退出「充電」狀態後屏幕就不再顯示充電圖標,進入「待機」狀態。

02.允許的狀態轉換

即狀態之間的轉換關係,比如電腦可以從「待機」狀態轉換「睡眠」狀態。

狀態的轉換一般用連接兩個圓角矩形的箭頭表示,如上圖所示。

03.導致狀態發生轉換的事件

事件使得系統從一個狀態轉換為另一個狀態,比如用手指點擊一個處於「開啟」狀態的智能音箱的電源,使智能音箱變為「關閉」狀態,在智能音箱狀態的變化是被「用手指點擊開關」這個動作引起的,所以「用用手指點擊開關」就是一個事件。

事件主要分為四類:信號事件、調用事件、變化事件、時間事件。事件一般用狀態轉換箭頭上的文字標籤來表示,如上圖所示。

在繪製狀態圖(系統建模)時,圖形符號的使用通常是非常靈活的,不必嚴格遵守符號的形式和細節,比如描述系統狀態,不管是圓角矩形還是圓形都是可以的,但需要注意的是,對同一事物的描述要使用相同的符號,以保證表述的一致性。

三、繪製狀態圖的步驟有哪些?

為了便於理解,我們以一個簡化了的智能洗衣機控制系統來分析一下繪製狀態圖的方法。這款智能洗衣機具備:一個用來顯示按鈕和設備設置的觸控屏;一個用來選擇洗滌模式的按鈕,可以選擇強力洗滌和超快洗滌兩種方式;一個用來設置水量的數字鍵盤;一個能控制開始/停止的按鈕。還具備安全鎖功能,在沒關閉洗衣機倉門時洗衣機不會工作,工作中打開蓋子洗衣機會暫停工作,且工作完成後洗衣機會發出提示音提示用戶來取衣物。

假設該智能洗衣機的操作步驟如下:

  1. 選擇洗滌模式,強力洗滌或超快洗滌;
  2. 用數字鍵盤設置本次洗滌所需水量;
  3. 點擊開始按鈕,使用相應洗滌模式和水量開始洗滌。

產品邏輯梳理清楚之後,我們下面開始繪製狀態轉換圖。

步驟1:列出產品/系統的所有狀態

梳理產品邏輯,列出產品/系統可能出現的所有狀態,比如:待機狀態、強力洗滌、快速洗滌、水量設置、可工作狀態(就緒)、不可工作狀態(異常)、正在工作等。

羅列狀態

步驟2:列出每個狀態須執行的動作

在狀態名稱下方列出該狀態下所包含的所有動作,即用Entry,Do,Exit標註進入動作、執行動作和退出動作。比如:待機狀態下執行等待指令動作、強力洗滌狀態下設置洗滌模式為強力洗滌等。

羅列動作

步驟3:確認並繪製出引起狀態發生轉換的事件

事件可以通過狀態表來梳理,狀態表是用矩陣的形式表示不同狀態之間存在的所有轉換,通過使用狀態表和分析矩陣中的每一個單元格,能確保遍歷所有的狀態轉換事件。首先,在表格的首行和首列分別列出系統的所有狀態。單元格表示列狀態到行狀態之間的轉換是否有效,如果是有效的轉換狀態,在單元格中寫出引起轉換的事件,如果是無效的轉換,則可以使用「」或「無」表示。這樣的狀態表能保證我們對所有的狀態轉換沒有遺漏,它可以幫助閱讀者直觀的理解可能存在的轉換順序。

狀態轉換表

使用狀態表梳理出所有引起狀態發生轉換的事件後,就可以通過箭頭連接可以發生轉換的狀態,並在箭頭上標註出引起該狀態轉換的事件或條件。比如:系統處於待機狀態時,用戶可以點擊強力洗滌按鈕進入強力洗滌狀態或點擊快速洗滌按鈕進入快速洗滌狀態,當用戶改變想法時可以點擊另個一洗滌模式按鈕。設置好水量並且關閉倉門後,點擊開始按鈕,智能洗衣機就會開始一個工作周期,工作周期完成後系統回到待機狀態。

繪製並標註事件

步驟4:標註初態和終態並細化狀態圖

在步驟3的基礎上標註出初態和終態,然後補充更多系統狀態和系統事件方面的細節,可以用表格的形式來展現,下面的兩個表格也可以分別在進行步驟2和步驟3時創建,這樣一份完整的狀態轉換圖就完成了!

完整的狀態轉換圖

狀態描述表

事件描述表

四、超態與子狀態

由於智能硬體的系統越來越複雜,系統的狀態數量急速增加。因此,對於比較複雜的系統模型,我們需要隱藏一些系統執行處理的細節,僅展示系統狀態的變化。此時就需要引入超態(superstate)和子狀態((substate),它們是一種嵌套關係,超態中嵌套了兩個或兩個以上的子狀態。這兩個概念的引入,可以幫助我們更好的繪製和解釋複雜系統的狀態轉換關係。

依然拿智能洗衣機為例,它在工作開始前會檢測系統狀態,如果一切正常則啟動渦輪開始洗滌,洗滌完成後聲音模塊播放提示音,然後設備進入待機狀態;如果檢測到任何異常,則聲音模塊播放報警提示音,然後設備進入異常狀態。通過下圖可以看到,正在工作是超態,而檢測狀態、洗滌狀態、報警狀態、工作完成都是其子狀態。

超態與子狀態

五、繪製狀態轉換圖的工具

工欲善其事必先利其器,可以繪製狀態轉換圖的工具有很多,除了原型繪製工具外,還可以嘗試一些專業繪圖工具。

下面推薦一些簡潔易用的繪圖工具:

  • Diagram Maker | Online Diagram Software
  • Online Diagram and Flowchart Software | Cacoo
  • Diagramming Software & Team Collaboration Tools | Gliffy
  • ProcessOn – 免費在線作圖,實時協作
  • 流程圖製作軟體,圖表製作軟體 – Microsoft Visio

六、結語

狀態轉換圖無須展示系統數據處理的細節,它只需完整的展示系統運行可能導致的狀態的變化。狀態轉換圖提供了一種橫跨多個用戶故事或用例的更高層視圖,且每個用戶故事或用例都可能涉及系統狀態的轉換。它幫助項目干係人快速理解系統狀態聯繫,更快理解系統的預期行為。狀態轉換圖涵蓋了所有狀態可能發生變化的關鍵路徑,測試人員可以由狀態圖衍生出測試用例,使早期的測試工作更順利的展開。

 

作者:少穻,知乎:少穻

本文由 @少穻 原創發布於人人都是產品經理,未經許可,禁止轉載

題圖來自 Unsplash,基於 CC0 協議

相關焦點

  • UML狀態機圖繪製方法及其應用說明
    UML狀態機圖繪製方法及其應用說明 在學習UML的過程中你是否遇到過UML狀態機圖,你對他是否了解,這裡就向大家介紹一下UML狀態機圖的概念,如何繪製UML狀態機圖以及它的應用說明。
  • 【實用帖】簡單的維恩圖分析技能,你get了嗎?
    相信很多人會想到維恩圖,在解決問題的同時,還為文章積累了一個小圖。維恩圖(Venn diagram),又稱文氏圖、溫氏圖、韋恩圖、範氏圖,用於展示在不同的事物群組之間的邏輯聯繫,表示集合間的從屬關係。今天小編就為大家介紹三種做維恩圖的方法,簡單get維恩圖技能。
  • 智能儀表工作原理_智能儀表硬體的組成
    單片機)為主體,將計算機技術和檢測技術有機結合,組成新一代「智能化儀表」。   智能儀表硬體的組成   智能儀表硬體部分包括控制器及其接口電路、模擬量輸入通道、開關量輸入通道、模擬量輸出通道、開關量輸出通道、接口電路、人機通道(如鍵盤、顯示器接口電路等)以及其他外圍設備(印表機等)接口電路。智能儀表系統組成如圖1所示。
  • 解析UML狀態機視圖狀態和轉換
    然而,實際上任何動作的執行都要耗費一定時間,新到來的事件必須被安置在一個隊列中。整個系統可以在同一時間執行多個動作。我們說動作是原子性的,並不是說整個系統是原子性的。系統能夠處理硬體的中斷和多個動作的時間共享。動作在它的控制線程中是原子性的。一旦開始執行,它必須執行到底並且不能與同時處於活動狀態的動作發生交互作用。但動作不能用於表達處理過程很長的事物。
  • 美圖與小米達成戰略合作 推出美圖手機及智能硬體
    11月19日,美圖公司與小米集團宣布達成戰略合作夥伴關係,聯合推出更加強大的美圖手機及智能硬體。此外,小米還被授權生產和推廣一系列美圖品牌的智能硬體產品(與皮膚相關的智能硬體產品除外)。據美圖介紹,美圖公司擁有領先的影像技術和美顏算法,高質量的女性用戶群體,以及高溢價的品牌形象,美圖公司的APP產品在全球覆蓋了超過15億臺獨立設備。
  • UML實例:ATM的狀態圖 活動圖和協作圖詳解
    1.4狀態圖圖1.4描述了顧客在ATM機上進行操作會經歷的幾種狀態,及各種狀態之間轉換的條件。因為是簡化了的例子,所以除了等待顧客插入磁卡的起始狀態和結束服務的終止狀態,顧客會處於輸入密碼、選擇服務類型、存款及取款四種狀態。
  • LabVIEW設計模型——狀態機之狀態轉換圖
    狀態機是由一系列的狀態構成的,其中包括一個「初始化」狀態,和一個「停止」狀態。程序油「初始化」狀態開始,由「停止」狀態結束。一般來說,在「初始化」狀態中進行控制項與變量的初始化、打開文件以及創建引用等操作,而在「停止」狀態中進行清除臨時數據、關閉文件和結束引用等操作。在狀態機中,每一個狀態都可能導致一個或多個狀態的發生,其下一狀態是由用戶的輸入信息和當前狀態所決定的。
  • 除了硬體和算法 無人機「狀態」視角到底是什麼
    大家從上面兩幅圖中就可以看出,直升機型無人機相比於四旋翼就會多出兩個揮舞角(Flapping angle)作為描述揮舞的狀態。無人機狀態可以「大體」分為兩部分:描述「外部位置環」的六個狀態,位置狀態:x、y、z,該狀態體現了無人機在三個軸線上所處的具體位置;速度狀態:u、v、w用於描述無人機本身沿三個方向的飛行線速度。
  • FPGA工程師:如何在FPGA中實現狀態機?
    狀態機是在數量有限的狀態之間進行轉換的邏輯結構。一個狀態機在某個特定的時間點只處於一種狀態。但在一系列觸發器的觸發下,將在不同狀態間進行轉換。本文引用地址:http://www.eepw.com.cn/article/201710/367294.htm  理論上講,狀態機可以分為Moore狀態機和Mealy狀態機兩大類。它們之間的差異僅在於如何生成狀態機的輸出。
  • 智慧型手機的硬體組成部分及結構圖
    智慧型手機的主電路板是手機中最重要的部件,它位於智慧型手機的內部,與各部件之間通過數據軟線或觸點相連接。主電路板可以說是手機的核心部件,它負責手機信號的輸入、輸出、處理、手機信號的發送,以及整機的供電、控制等工作。圖3為智慧型手機主電路板。
  • UML圖形中UML狀態圖和組件圖用法實例解析
    ,狀態圖表示某個類所處的不同狀態和該類的狀態轉換信息,而UML圖形中的組件圖提供系統的物理視圖。UML圖形中UML狀態圖UML圖形中狀態圖表示某個類所處的不同狀態和該類的狀態轉換信息。有人可能會爭論說每個類都有狀態,但不是每個類都應該有一個狀態圖。只對"感興趣的"狀態的類(也就是說,在系統活動期間具有三個或更多潛在狀態的類)才進行狀態圖描述。
  • 零件圖繪製步驟
    零件圖繪製步驟一、視圖1、基本視圖六個基本視圖的繪製,可在三視圖的基礎上進行,繪製三視圖的時候,儘量使用OFFSET偏移命令,繪製等距線。有了三視圖,可以使用MIRROR影射命令。如有了左視圖,右視圖可以對左視圖進行映射,移動到適當的位置,再使用PROPERTIES命令對視圖中的線型進行轉換。
  • 智能電錶硬體電路設計圖詳解 —電路圖天天讀(225)
    本文引用地址:http://www.eepw.com.cn/article/201710/369038.htm  智能電錶的工作原理  智能電錶的硬體方案框圖如圖1 所示。電能表主要由計量、電源管理、存儲、顯示、按鍵處理、脈衝輸出和通信單元7 個部分組成 。本文的智能電錶是以80C51為核心處理器。
  • 科研作圖之光譜圖繪製(matlab版)
    之前給大家介紹過一期有關如何用origin繪製光譜圖(科研作圖之光譜圖繪製),有小夥伴在公眾號中回復希望能通過matlab作出這樣的光譜圖,本期就來介紹如何通過matlab實現光譜圖繪製。matlab繪製原理和origin繪製原理是一樣的,先繪製全範圍波長RGB圖,再在該圖上疊加實驗數據曲線。
  • 如何自己DIY一套智能家居方案
    如何自己DIY一套智能家居方案 皮皮學電子 發表於 2020-02-04 10:33:31
  • 如何使用MindManager洋蔥圖繪製需求圖譜
    MindManager又有新視圖可供選擇啦!借著今年春分初始,小編就為大家講解如何用洋蔥圖來繪製關於「春分」的需求圖譜。1.打開MindManager,新建一個視圖,在【本地模板】-【圓形圖】中選擇【洋蔥圖居中】創建導圖。2.右鍵單擊圖的背景,選擇【背景】-解鎖所有背景對象,完成此步驟後可以對各圓形圖進行編輯。
  • 如何用Python實現超級瑪麗的界面和狀態機?
    這篇文章是要介紹下遊戲中的幾個界面顯示和界面之間如何轉換,所以特意寫了一個demo程序,完整的遊戲代碼在下面的github連結(https://github.com/marblexu/PythonSuperMario)中下載。
  • 如何用 Python 實現超級瑪麗的界面和狀態機?
    這篇文章是要介紹下遊戲中的幾個界面顯示和界面之前如何轉換,所以特意寫了一個demo程序,完整的遊戲代碼在下面的github連結(https://github.com/marblexu/PythonSuperMario)中下載。
  • 新技能get!老司機談BT種子可以怎麼藏
    這到底是如何做的呢?圖種的原理並不複雜,在圖種當中,圖片和BT種子的二進位數據會被合併在一起,圖種的前半部分是圖片的數據,後半部分則是壓縮文件或者種子文件的數據。視後綴名不同,不同電腦會讀取圖種不同部分的數據,例如後綴名是「jpg」的時候會讀取圖片數據,後綴名是「rar」的時候會讀取另一部分的壓縮文件數據。
  • 圍觀丨新技能get,疫情期間這樣跟外國人打招呼
    圍觀丨新技能get,疫情期間這樣跟外國人打招呼 2020-03-24 18:42 來源:澎湃新聞·澎湃號·政務