解析UML狀態機視圖狀態和轉換

2021-01-07 51CTO

本節和大家一起學習一下UML狀態機視圖的概念,這裡主要介紹一下UML狀態機視圖的狀態和轉換兩部分內容,相信通過本節的介紹你對UML狀態機視圖有一定的了解。下面是具體介紹。

UML狀態機視圖狀態和轉換

◆狀態

狀態描述了一個類對象生命期中的一個時間段。它可以用三種附加方式說明:在某些方面性質相似的一組對象值;一個對象等待一些事件發生時的一段時間;對象執行持續活動時的一段時間。雖然狀態通常是匿名的並僅用處於該狀態時對象進行的活動描述,但它也可以有名字。

在狀態機中,一組狀態由轉換相連接。雖然轉換連接著兩個狀態(或多個狀態,如果圖中含有分支和結合控制),但轉換隻由轉換出發的狀態處理。當對象處於某種狀態時,它對觸發狀態轉換的觸發器事件很敏感。狀態用具有圓形拐角的矩形表示。如圖6-2所示。

 
圖6–2狀態

◆轉換

我們再來看一下UML狀態機視圖的轉換。從狀態出發的轉換定義了處於此狀態的對象對外界發生的事件所做出的反應。通常,定義一個轉換要有引起轉換的觸發器事件、監護條件、轉換的動作和轉換的目標狀態。表6–2列出了幾種轉換和由轉換所引起的隱含動作。

轉換的種類
描述
語法

入口動作
進入某一狀態時執行的動作
entry/action

出口動作
離開某一狀態時執行的動作
exit/action

外部轉換
引起狀態轉換或自身轉換,同時執行一個具體的動作,包括引起入口動作和出口動作被執行的轉換
e(a:T)[exp]/action

內部轉換
引起一個動作的執行但不引起狀態的改變或不引起入口動作或出口動作的執行
e(a:T)[exp]/action
表6–2轉換的種類及隱含動作

◆1.外部轉換

我們先來看一下UML狀態機視圖中的外部轉換,它是一種改變活動狀態的轉換,它是最普通的一種轉換。它用從源狀態到目標狀態的箭頭表示,其他屬性以文字串附加在箭頭旁(如圖6–3所示)。
圖6–3外部轉換

◆2.觸發器事件

觸發器事件是引起轉換的事件。事件可以有參數,以供轉換的動作使用。如果一個信號有後代,那麼信號中的任一個後代都可以引起轉換。例如,如果轉換將MouseButton作為觸發器,那麼MouseButtonDown可以觸發這個轉換(如圖6–1)。

事件並不是持續發生的,它只在時間的一點上發生。當一個對象接收到一個事件時,如果它沒有空閒時間來處理事件,就將事件保存起來。對象一次只處理一個事件,在對象處理事件時轉換必須激發,事件過後是不會被記住的(某些特殊的延遲事件除外,在觸發一個轉換前或處延遲被解除前,這類事件被保存起來)。如果兩個事件同時發生,它們被每次處理一個。沒有觸發任何轉換的事件被簡單地忽略或遺棄,這並不是一個錯誤,忽略不想要的事件要比詳細指明所有事件容易得多。

◆3.監護條件

UML狀態機視圖中轉換可能具有一個監護條件,監護條件是一個布爾表達式。監護條件可以引用對象的屬性值和觸發事件的參數。當一個觸發器事件被觸發時,監護條件被賦值。如果布爾表達式的值為「真」,那麼觸發事件即,使轉換有效。如果布爾表達式的值為「假」,則不會引起轉換。監護條件只能在觸發事件發生時被賦值一次。如果在轉換發生後監護條件由原來的「假」變為「真」,則因為賦值太遲而不能觸發轉換。

從一個狀態引出的多個轉換可以有同樣的觸發器事件,但是每個轉換必須具有不同的監護條件。當其中一個監護條件滿足時,觸發器事件會引起相應的轉換。通常,監護條件的設置要考慮到各種可能的情況以確保一個觸發器事件的發生應該能夠引起某些轉換。如果有些情況沒有考慮到,一個觸發器事件沒有引起任何轉換,那麼在狀態機視圖中要忽略這個事件。一個事件的發生只能同時引起一個轉換(在一個控制線程中)。如果一個事件可能引起多個轉換,那麼其中只有一個轉換有效。如果兩個相互矛盾的轉換同時有效,則無法確定到底發生了哪個轉換。這兩個轉換隨機地發生一個,或者由系統的實現細節決定究竟發生哪一個,但是對建模者來說,無法預料這種轉換產生的後果。

◆4.完成轉換

沒有標明觸發器事件的轉換是由狀態中的活動的完成引起的(即完成轉換)。完成轉換也可以帶一個監護條件,這個監護條件是在狀態中的活動完成時被賦值的(而不是完成以後)。

◆5.動作

當轉換被引起時,它對應的動作被執行。UML狀態機視圖中動作是原子性的,一般是一個簡短的計算處理過程,通常是一個賦值操作或算術計算。另外還有一些動作,包括給另一個對象發送消息、調用一個操作、設置返回值、創建和銷毀對象,沒有被定義的控制動作用外部語言來進行詳細說明。動作也可以是一個動作序列,即一系列簡單的動作。動作或動作序列的執行不會被同時發生的其他動作影響或終止。按照UML中的概念,動作的執行時間非常短,與外界事件所經歷的時間相比是可以忽略的,因此,在動作的執行過程中不能再插入其他事件。然而,實際上任何動作的執行都要耗費一定時間,新到來的事件必須被安置在一個隊列中。

整個系統可以在同一時間執行多個動作。我們說動作是原子性的,並不是說整個系統是原子性的。系統能夠處理硬體的中斷和多個動作的時間共享。動作在它的控制線程中是原子性的。一旦開始執行,它必須執行到底並且不能與同時處於活動狀態的動作發生交互作用。但動作不能用於表達處理過程很長的事物。與系統處理外部事件所需要的反應時間相比,動作的執行過程應該很簡潔,否則系統不能夠做到實時響應。

一個動作可以使用觸發器事件的參數和對象的屬性值作為表達式的一部分。

表6–3列出了各種動作及描述。

表6–3動作的種類

◆6.狀態改變

當動作執行完畢後,轉換的目標狀態被激活,這時會觸發出口動作或入口動作的執行。

◆7.嵌套狀態

狀態可以被嵌套在其他的組成狀態之內(看下一段)。從一個外部狀態出發的轉換可以應用於這個狀態所有的內部嵌套狀態。任何一個內部嵌套狀態被激活時,轉換都有可能發生。組成狀態可用於表達例外和異常,因為組成狀態上的轉換適用於所有它所嵌套的狀態,不需要每個嵌套狀態顯式地單獨處理異常。

◆8.入口和出口動作

一個跨越多個嵌套層次的轉換可能會離開或進入某個狀態。只要轉換進入或離開某個狀態,則該狀態可能包含要被執行的動作。進入一個狀態可能會執行一個依附於該狀態的入口動作。如果轉換離開初始狀態,那麼在轉換的動作和新狀態的入口動作被執行前,執行該狀態的出口動作。

入口動作通常用來進行狀態所需要的內部初始化。因為不能迴避一個入口動作,任何狀態內的動作在執行前都可以假定狀態的初始化工作已經完成,不需要考慮如何進入這個狀態。同樣,無論何時從一個狀態離開都要執行一個出口動作來進行後處理工作。當出現代表錯誤情況的高層轉換使嵌套狀態異常終止時,出口動作特別有用。出口動作可以處理這種情況以使對象的狀態保持前後一致。入口動作和出口動作原則上依附於進來的和出去的轉換,但是將它們聲明為特殊的動作可以使狀態的定義不依賴狀態的轉換,因此起到封裝的作用。

◆9.內部轉換

我們再來看一下UML狀態機視圖中內部轉換。內部轉換有一個源狀態但是沒有目標狀態。內部轉換的激發規則和改變狀態的轉換的激發規則相同。由於內部轉換沒有目標狀態,因此轉換激發的結果不改變本狀態。如果一個內部轉換帶有動作,它也要被執行,但是沒有狀態改變發生,因此也不需要執行入口和出口動作。內部轉換用於對不改變狀態的插入動作建立模型(如,記錄發生的事件數目或建立幫助信息屏)。

儘管入口動作和出口動作的執行是由進入或離開某狀態的外部轉換所引起的,除了使用保留字entry和exit代替觸發事件名稱之外,入口和出口動作使用與內部轉換相同的表示法。

一個自身轉移會激發狀態上的入口動作和出口動作的執行(從概念上來講,自身轉換從一個狀態出發後又會到自身狀態),因此,自身轉換不等價於內部轉換。圖6–4說明了入口動作、出口動作和內部轉換。

圖6–4內部轉、入口動作和出口動作

【編輯推薦】

UML狀態圖及其組成元素簡介 UML狀態圖創建過程中需要注意問題 UML建模風格 UML狀態圖表現形式解析 在回歸測試中UML狀態圖切片的應用  UML用戶指南--UML圖簡介

【責任編輯:

程華權

TEL:(010)68476606】

相關焦點

  • UML狀態機圖繪製方法及其應用說明
    ,主要包括繪製UML狀態機圖步驟和UML狀態機圖應用說明等內容,希望通過本節的學習你對UML狀態機圖有一個初步的認識。UML狀態和UML狀態機狀態、狀態表示法及狀態機◆狀態是指在對象生命周期中滿足某些條件、執行某些活動或等待某些事件的一個條件和狀況◆一個狀態通常包括名稱、進入/退出活動、內部轉換、子狀態和延遲事件等五個部分組成
  • UML圖形中UML狀態圖和組件圖用法實例解析
    UML圖形中UML狀態圖和組件圖用法實例解析 本文向大家介紹一下UML圖形中的UML狀態圖和組件圖,這兩種圖各有各的特點和作用,相信通過本文的介紹你一定會有不少收穫。
  • LabVIEW設計模型——狀態機之狀態轉換圖
    狀態機是由一系列的狀態構成的,其中包括一個「初始化」狀態,和一個「停止」狀態。程序油「初始化」狀態開始,由「停止」狀態結束。一般來說,在「初始化」狀態中進行控制項與變量的初始化、打開文件以及創建引用等操作,而在「停止」狀態中進行清除臨時數據、關閉文件和結束引用等操作。在狀態機中,每一個狀態都可能導致一個或多個狀態的發生,其下一狀態是由用戶的輸入信息和當前狀態所決定的。
  • UML建模工具中的五大視圖
    本節和大家一起學習一下UML建模工具方面的知識,本節主要包括面向對象建模概念和UML中的五大視圖等內容,相信通過本節的介紹你對UML建模工具有一定的認識。下面讓我們一起來學習UML建模工具吧。
  • UML實例:ATM的狀態圖 活動圖和協作圖詳解
    UML實例:ATM的狀態圖 活動圖和協作圖詳解 UML統一建模語言在軟體開發過程中經常會用到,這裡就向大家介紹一個UML實例:ATM取款機系統,本文向大家介紹一下ATM中的狀態圖,活動圖和協作圖,希望本文的介紹對你的學習有所幫助。
  • UML對象圖和類圖關係解析
    UML對象圖和類圖關係解析 UML共有九種視圖,它們之間各有自己的特點和作用,它們之間有什麼聯繫嗎,這裡就向大家介紹一下UML對象圖和UML類之間的聯繫,希望通過本文的學習你對UML的圖形之間的關係有一定的認識。
  • 有限狀態機的FPGA設計
    有限狀態機是一種常見的電路,由於時序電路和組合電路組成,設計有限狀態機的第一步是確定採用Moore狀態機還是採用Mealy狀態機。Mealy狀態機的狀態轉變不僅和當前狀態有關,而且和各輸入信號有關;Moore狀態機的轉變只和當前狀態有關。
  • 初學者對有限狀態機(FSM)的設計的認識
    有限狀態機(FSM)是一種常見的電路,由時序電路和組合電路組成。設計有限狀態機的第一步是確定採用Moore狀態機還是採用Mealy狀態機。(Mealy型:狀態的轉變不僅和當前狀態有關,而且跟各輸入信號有關;Moore型:狀態的轉變只和當前狀態有關)。
  • 產品經理不得不知的——有限狀態機
    下圖所示的是一個識別中國地址有限狀態機的例子。每一個有限狀態機都有一個開始狀態和一個終止狀態,以及若干中間狀態。每一條弧上帶有從一個狀態進入下一個狀態的條件。如果一個地址能從狀態機的開始狀態進過狀態機的若干中間狀態,走到終止狀態,那麼這條地址有效,否則無效。比如「北京市雙清路83號」對於上面的狀態機有效,而「上海市遼寧省馬家莊」則無效。
  • FPGA工程師:如何在FPGA中實現狀態機?
    FPGA常常用於執行基於序列和控制的行動,比如實現一個簡單的通信協議。對於設計人員來說,滿足這些行動和序列要求的最佳方法則是使用狀態機。狀態機是在數量有限的狀態之間進行轉換的邏輯結構。一個狀態機在某個特定的時間點只處於一種狀態。但在一系列觸發器的觸發下,將在不同狀態間進行轉換。
  • 基於有限狀態機的飛行器自毀系統時序控制設計
    分析飛行器自毀系統工作原理,採用複雜可編程邏輯器件(CPLD)實現了飛行器自毀系統設計,結合CPLD的特點,提出一種基於改進型有限狀態機的飛行器自毀系統時序控制的設計方法,並在CPLD中予以實現。仿真及實驗表明,基於有限狀態機的飛行器自毀系統定時精度達到納秒級,可以有效地控制自毀信號輸出並消除毛刺現象,很好地滿足系統性能要求。該方法具有結構簡單緊湊、成本低、可靠性高、精度高等優點。
  • 簡單的狀態機入門!
    為啥突然會寫這個話題,因為今天要看文章和視頻學習的時候,突然看到了「狀態機」三個字,也突然讓我想起了,在剛入職一家公司的時候,看產品的原始碼畫出整個軟體框架流程圖來,現在我還清晰的記得當時公司產品裡面就有用到這個狀態機的用法,但是當時我剛接觸到這個東西,看了老半天那個源碼嗎,沒看懂,因為那時候第一次看那麼大的工程量代碼,說實話腦袋有點暈暈的,不是很習慣。
  • 解析UML動態建模中消息 狀態圖和順序圖
    本文和大家 重點討論一下UML動態建模機制問題,主要包括消息,狀態圖和順序圖等內容,希望通過本文的學習你對UML動態建模機制有一定的認識。首先看一下消息的概念。1.消息在面向對象技術中,對象間的交互是通過對象間消息的傳遞來完成的。
  • 基於UML的校園一卡通管理系統的分析與設計
    其中在第一步與第二步中所建立的模型都是靜態的,包括用例圖、類圖〈包含包〉、對象圖、組件圖和配置圖等五個圖形,是標準建模語言UML 的靜態建模機制。其中第三步中所建立的模型或者可以執行,或者表示執行時的時序狀態或交互系,它包括狀態圖、活動圖、順序圖和合作圖等四個圖形。
  • 如何以面向對象的思想設計有限狀態機
    狀態機的概念有限狀態機又稱有限狀態自動機,簡稱狀態機,是表示有限個狀態以及在這些狀態之間的轉移和動作等行為的數學計算模型,用英文縮寫也被簡稱為 FSM。FSM 會響應「事件」而改變狀態,當事件發生時,就會調用一個函數,而且 FSM 會執行動作產生輸出,所執行的動作會因為當前系統的狀態和輸入的事件不同而不同。
  • 新技能Get:如何繪製智能硬體的狀態轉換圖?
    身為產品經理,若要保證所有必要的狀態轉換和事件都完整、準確的在產品功能需求中描述出來,狀態轉換圖是必不可少的強力工具。它屬於事件驅動模型,表示系統對外部事件的響應方式,能清晰的描述系統狀態之間的轉換順序和狀態之間的關係,在節省大量文字描述的情況下幫助工程師更好的理解需求和討論設計思路,避免開發時出現狀態轉換邏輯錯誤,並且系統實現後還要用狀態模型來論證系統的結構和操作。狀態圖還明確的定義了狀態發生轉換時必要的觸發事件和影響狀態轉換的關鍵因素,有利於在開發過程中避免非法事件的進入。
  • 利用有限狀態機的交通燈控制系統設計與仿真
    1 有限狀態機的基本特性 有限狀態機FSM(finite state machine)由有限的狀態及其相互之間的轉移關係構成。從有限狀態機的角度看,許多數字系統中的時序電路都可以用其來描述,因此,有限狀態機是一種重要的、易於建立的、比較規範、以描述控制特性為主的建模方法,它可以應用於從系統分析到設計的所有階段。同時,因為有限狀態機具有有限個狀態,所以可以在實際的工程上實現。
  • 用STATECAD快速設計有限狀態機
    作者Email: zlyadvocate@163.com 數字系統通常劃分為信息處理單元和控制單元。信息單元主要進行信息的傳輸和運算, 而控制單元的主要任務是控制信息處理單元的微操作的順序。控制單元的實現方式有: 有限狀態機、控制寄存器和微代碼控制器等。
  • 為什麼大家都說萬能的狀態機?
    我們先來看一下有關狀態機的定義:「狀態機由狀態寄存器和組合邏輯電路構成,能夠根據控制信號按照預先設定的狀態進行狀態轉移,是協調相關信號動作、完成特定操作的控制中心。有限狀態機簡寫為FSM(Finite State Machine),主要分為2大類:第一類,若輸出只和狀態有關而與輸入無關,則稱為Moore狀態機;第二類,輸出不僅和狀態有關而且和輸入有關係,則稱為Mealy狀態機「。
  • 基於VHDL的MTM總線主模塊有限狀態機設計
    摘要:為了能夠更簡潔嚴謹地描述MTM總線的主模塊有限狀態機的狀態轉換,同時減少FPGA晶片功耗,提高系統穩定性,文中在分析MTM總線結構和主模塊有限狀態機模型的基礎上,基於VHDL語言採用「單進程」式對該有限狀態機進行了設計,並在QuartusⅡ開發軟體中實現了對語言代碼的編譯及程序的時序仿真和功能仿真