UML軟件開發(fā)與建模工具Enterprise Architect教程:UML 2教程-狀態(tài)機圖
Enterprise Architect是一個對于軟件系統(tǒng)開發(fā)有著極好支持的CASE軟件(Computer Aided Software Engineering)。EA不同于普通的UML畫圖工具(如VISIO),它將支撐系統(tǒng)開發(fā)的全過程。在需求分析階段,系統(tǒng)分析與設計階段,系統(tǒng)開發(fā) 及部署等方面有著強大的支持,同時加上對10種編程語言的正反向工程,項目管理,文檔生成,數(shù)據(jù)建模等方面。可以讓系統(tǒng)開發(fā)中各個角色都獲得最好的開發(fā)效率。
狀態(tài)機圖
狀態(tài)機圖對單個對象的行為進行建模,指定對象在其生命周期中響應事件而經(jīng)歷的事件順序。
例如,以下狀態(tài)機圖顯示了門在其生命周期內所經(jīng)歷的狀態(tài)。
門可以處于以下三種狀態(tài)之一:“打開”,“關閉”或“鎖定”。它可以響應打開,關閉,鎖定和解鎖事件。請注意,并非所有事件在所有狀態(tài)下都有效。例如,如果一扇門打開了,則只有在關上門后才能將其鎖定。還要注意,狀態(tài)轉換可以附加一個保護條件:如果門已打開,則僅當滿足條件doorWay-> isEmpty時,它才能響應Close事件。以下各節(jié)將全面討論狀態(tài)機圖中使用的語法和約定。
狀態(tài)用圓角矩形表示狀態(tài),狀態(tài)名稱寫在其中。
初始狀態(tài)和最終狀態(tài)
初始狀態(tài)由實心黑色圓圈表示,并可以用名稱標記。最終狀態(tài)由內部帶有圓點的圓圈表示,也可以標記名稱。
轉場
從一個狀態(tài)到下一個狀態(tài)的過渡用帶箭頭的線表示。過渡可能具有觸發(fā),防護和效果,如下所示。
“觸發(fā)”是轉換的原因,可能是信號,事件,某些條件的變化或時間的流逝。“保護”是一個必須為true的條件,觸發(fā)器才能引起轉換。“效果”是一種動作,由于轉換,該動作將直接在擁有狀態(tài)機的對象上調用。
State Actions
在上面的過渡示例中,效果與過渡相關聯(lián)。如果目標狀態(tài)有許多過渡到達,并且每個過渡都具有與之關聯(lián)的相同效果,則最好將效果與目標狀態(tài)關聯(lián)而不是過渡。這可以通過為狀態(tài)定義一個輸入動作來完成。下圖顯示了帶有進入動作和退出動作的狀態(tài)。
也可以定義在事件上發(fā)生的動作或始終發(fā)生的動作。可以定義每種類型的任意數(shù)量的動作。
自我轉變
狀態(tài)可以具有返回自身的過渡,如下圖所示。當效果與過渡相關聯(lián)時,這是最有用的。
復合狀態(tài)
狀態(tài)機圖可以包括子機圖,如以下示例所示。
顯示相同信息的另一種方法如下。
上述版本中的符號表示在另一張圖中顯示了Check PIN子機的詳細信息。
入口點
有時,您不想在正常的初始狀態(tài)下進入子計算機。例如,在下面的子計算機中,通常以“ Initializing”狀態(tài)開始,但是如果由于某種原因不需要執(zhí)行初始化,則可以通過“ Ready”狀態(tài)開始過渡到指定的入口點。
下圖顯示了上一級狀態(tài)機。
出口點
以類似于入口點的方式,可以命名替代出口點。下圖給出了一個示例,在該示例中,在主處理狀態(tài)之后執(zhí)行的狀態(tài)取決于使用哪條路徑轉換出該狀態(tài)。
選擇偽狀態(tài)
選擇偽狀態(tài)顯示為菱形,其中一個過渡到達,而兩個或多個過渡離開。下圖顯示,在選擇偽狀態(tài)之后到達的任何狀態(tài)都取決于在執(zhí)行前一狀態(tài)期間選擇的消息格式。
偽狀態(tài)連接點
結偽狀態(tài)用于將多個轉換鏈接在一起。單個結可以具有一個或多個傳入的轉換和一個或多個傳出的轉換;可以對每個過渡應用防護。結點無語義。將輸入的過渡轉換為多個輸出的過渡的結實現(xiàn)了靜態(tài)條件分支,而選擇偽狀態(tài)則實現(xiàn)了動態(tài)條件分支。
終止偽狀態(tài)
輸入終止偽狀態(tài)表示狀態(tài)機的生命線已結束。終止偽狀態(tài)標記為叉號。
歷史狀態(tài)
歷史狀態(tài)用于記住狀態(tài)機被中斷時的先前狀態(tài)。下圖說明了歷史狀態(tài)的使用。該示例是屬于洗衣機的狀態(tài)機。
在這種狀態(tài)機下,當洗衣機運行時,它將從“洗滌”到“漂洗”進入“旋轉”狀態(tài)。如果斷電,則洗衣機將停止運行并進入“關閉電源”狀態(tài)。然后,在恢復電源后,將在“歷史狀態(tài)”符號處進入“運行”狀態(tài),這意味著它應從上次中斷的位置恢復。
并發(fā)區(qū)域
可以將狀態(tài)劃分為包含子狀態(tài)的區(qū)域,這些子狀態(tài)同時存在并執(zhí)行。下面的示例顯示,在“正在應用制動”狀態(tài)下,前后制動器將同時且獨立運行。注意使用fork和join偽狀態(tài),而不是選擇和合并偽狀態(tài)。這些符號用于同步并發(fā)線程。
=====================================================
想要了解或購買Enterprise Architect正版版權,請