UML狀態(tài)圖制度規(guī)定_第1頁
UML狀態(tài)圖制度規(guī)定_第2頁
UML狀態(tài)圖制度規(guī)定_第3頁
UML狀態(tài)圖制度規(guī)定_第4頁
UML狀態(tài)圖制度規(guī)定_第5頁
已閱讀5頁,還剩56頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

UML狀態(tài)圖制度規(guī)定一、概述

UML狀態(tài)圖(StateMachineDiagram)是統(tǒng)一建模語言(UML)中的一種行為圖,用于描述系統(tǒng)或?qū)ο鬆顟B(tài)隨時(shí)間變化的動(dòng)態(tài)行為。狀態(tài)圖通過狀態(tài)、轉(zhuǎn)換、事件和動(dòng)作等元素,清晰地展現(xiàn)對(duì)象在不同狀態(tài)下的響應(yīng)和轉(zhuǎn)換邏輯。本制度規(guī)定旨在規(guī)范UML狀態(tài)圖的設(shè)計(jì)、繪制和應(yīng)用標(biāo)準(zhǔn),確保其準(zhǔn)確性和一致性,便于系統(tǒng)分析和設(shè)計(jì)人員使用。

二、UML狀態(tài)圖的基本構(gòu)成

(一)核心元素

1.狀態(tài)(State):表示對(duì)象或系統(tǒng)所處的穩(wěn)定條件。

(1)初態(tài):用實(shí)心圓圈表示,位于圖的左側(cè)。

(2)末態(tài):用空心圓圈表示,位于圖的右側(cè)。

(3)內(nèi)部狀態(tài):用矩形表示,包含子狀態(tài)和轉(zhuǎn)換。

2.轉(zhuǎn)換(Transition):表示狀態(tài)之間的變化,用帶箭頭的實(shí)線表示。

(1)事件(Event):觸發(fā)轉(zhuǎn)換的輸入條件,如“點(diǎn)擊”“完成”等。

(2)動(dòng)作(Action):轉(zhuǎn)換發(fā)生時(shí)執(zhí)行的操作,用方括號(hào)表示。

3.事件(Event):包括內(nèi)部事件(InternalEvent)、外部事件(ExternalEvent)和同步事件(SynchronizationEvent)。

(1)內(nèi)部事件:在狀態(tài)內(nèi)部觸發(fā),不離開狀態(tài)。

(2)外部事件:由系統(tǒng)外部觸發(fā),導(dǎo)致狀態(tài)轉(zhuǎn)換。

(二)輔助元素

1.嵌套狀態(tài):表示狀態(tài)內(nèi)部的子狀態(tài),如“活動(dòng)1”“活動(dòng)2”。

2.復(fù)合狀態(tài):包含一個(gè)入口和出口,內(nèi)部由多個(gè)簡單狀態(tài)組成。

三、UML狀態(tài)圖的設(shè)計(jì)規(guī)范

(一)繪制規(guī)則

1.狀態(tài)圖應(yīng)從初態(tài)開始,以末態(tài)結(jié)束,箭頭方向表示狀態(tài)轉(zhuǎn)換的順序。

2.狀態(tài)內(nèi)部可包含多個(gè)子狀態(tài),但需明確主狀態(tài)和子狀態(tài)的層次關(guān)系。

3.轉(zhuǎn)換的命名應(yīng)簡潔明了,避免歧義,如“收到訂單”“取消操作”。

(二)應(yīng)用步驟

1.確定對(duì)象或系統(tǒng)的關(guān)鍵狀態(tài),如“待處理”“處理中”“完成”。

2.分析狀態(tài)之間的轉(zhuǎn)換條件,如“提交申請(qǐng)”“超時(shí)取消”。

3.繪制狀態(tài)圖,標(biāo)注事件和動(dòng)作,確保邏輯清晰。

4.驗(yàn)證狀態(tài)圖的正確性,與實(shí)際業(yè)務(wù)邏輯一致。

四、示例

(一)簡單狀態(tài)圖示例

1.對(duì)象“訂單”的狀態(tài)轉(zhuǎn)換:

-初態(tài):待支付

-轉(zhuǎn)換1:支付成功→狀態(tài):已支付

-轉(zhuǎn)換2:支付失敗→狀態(tài):待重試

-末態(tài):已取消(超時(shí)未支付)

(二)復(fù)合狀態(tài)圖示例

1.對(duì)象“用戶登錄”的復(fù)合狀態(tài):

-主狀態(tài):登錄過程

-子狀態(tài)1:輸入憑證

-子狀態(tài)2:驗(yàn)證憑證

-子狀態(tài)3:登錄成功/失敗

-轉(zhuǎn)換:輸入憑證→驗(yàn)證憑證→登錄成功/失敗

五、注意事項(xiàng)

(一)狀態(tài)圖應(yīng)避免過于復(fù)雜,狀態(tài)和轉(zhuǎn)換數(shù)量不宜過多,以免影響可讀性。

(二)狀態(tài)轉(zhuǎn)換的條件應(yīng)明確,避免出現(xiàn)模糊或冗余的轉(zhuǎn)換邏輯。

(三)定期審查和更新狀態(tài)圖,確保其與系統(tǒng)實(shí)際行為一致。

一、概述

UML狀態(tài)圖(StateMachineDiagram)是統(tǒng)一建模語言(UML)中的一種行為圖,用于描述系統(tǒng)或?qū)ο鬆顟B(tài)隨時(shí)間變化的動(dòng)態(tài)行為。狀態(tài)圖通過狀態(tài)、轉(zhuǎn)換、事件和動(dòng)作等元素,清晰地展現(xiàn)對(duì)象在不同狀態(tài)下的響應(yīng)和轉(zhuǎn)換邏輯。本制度規(guī)定旨在規(guī)范UML狀態(tài)圖的設(shè)計(jì)、繪制和應(yīng)用標(biāo)準(zhǔn),確保其準(zhǔn)確性和一致性,便于系統(tǒng)分析和設(shè)計(jì)人員使用。通過遵循本規(guī)范,可以提升模型的可讀性、可維護(hù)性,并促進(jìn)團(tuán)隊(duì)協(xié)作。狀態(tài)圖特別適用于描述具有明確生命周期或狀態(tài)轉(zhuǎn)換的對(duì)象,例如訂單處理、用戶會(huì)話、設(shè)備操作等。

二、UML狀態(tài)圖的基本構(gòu)成

(一)核心元素

1.狀態(tài)(State):表示對(duì)象或系統(tǒng)所處的穩(wěn)定條件,是系統(tǒng)行為建模的基本單元。

(1)初態(tài)(InitialState):用實(shí)心圓圈表示,通常位于圖的左側(cè)或頂部,代表對(duì)象或系統(tǒng)生命周期開始時(shí)的狀態(tài)。初態(tài)可以連接到任何有效狀態(tài)。

(2)末態(tài)(FinalState):用帶有圓圈的實(shí)心圓圈表示,通常位于圖的右側(cè)或底部,代表對(duì)象或系統(tǒng)生命周期結(jié)束或終止的狀態(tài)。一個(gè)對(duì)象可以有一個(gè)或多個(gè)末態(tài),表示不同的結(jié)束方式。

(3)處理狀態(tài)(SimpleState):用矩形表示,包含狀態(tài)名稱和一個(gè)可選的內(nèi)部區(qū)域。內(nèi)部區(qū)域可以包含子狀態(tài)、轉(zhuǎn)換、活動(dòng)(Activity)或偽狀態(tài)。處理狀態(tài)代表對(duì)象的一個(gè)穩(wěn)定、可識(shí)別的時(shí)期。

(4)復(fù)合狀態(tài)(CompositeState):用矩形表示,包含一個(gè)入口點(diǎn)(EntryPoint)、一個(gè)出口點(diǎn)(ExitPoint)和一個(gè)可選的內(nèi)部區(qū)域。復(fù)合狀態(tài)內(nèi)部可以包含子狀態(tài)(SimpleState、復(fù)合狀態(tài))、轉(zhuǎn)換、活動(dòng)、偽狀態(tài)和接點(diǎn)(Junction)。復(fù)合狀態(tài)代表一個(gè)包含內(nèi)部結(jié)構(gòu)的“宏?duì)顟B(tài)”,其行為由內(nèi)部子狀態(tài)和轉(zhuǎn)換的組合決定。

(5)特殊狀態(tài):包括初始偽狀態(tài)(Initialpseudostate)、終止偽狀態(tài)(Finalpseudostate)、活動(dòng)(Activity)、分叉(Fork)、匯合(Join)、時(shí)間約束(TimeConstraint)和并發(fā)(Concurrent)等,用于表達(dá)更復(fù)雜的行為。

2.轉(zhuǎn)換(Transition):表示狀態(tài)之間的變化,由帶箭頭的實(shí)線表示,箭頭指向目標(biāo)狀態(tài)。轉(zhuǎn)換定義了狀態(tài)轉(zhuǎn)換的觸發(fā)條件(觸發(fā)事件)和可選的動(dòng)作。

(1)觸發(fā)事件(Trigger):表示導(dǎo)致轉(zhuǎn)換發(fā)生的條件或事件,可以是具體的信號(hào)、消息、時(shí)間流逝或內(nèi)部條件滿足。觸發(fā)事件寫在方括號(hào)`[]`中。例如,`[buttonClicked]`表示按鈕點(diǎn)擊事件觸發(fā)轉(zhuǎn)換。如果轉(zhuǎn)換沒有明確的觸發(fā)事件,則表示該轉(zhuǎn)換在特定條件下總是發(fā)生。

(2)動(dòng)作(Action):表示狀態(tài)轉(zhuǎn)換發(fā)生時(shí)執(zhí)行的操作或行為,寫在花括號(hào)`{}`中。動(dòng)作可以是賦值、計(jì)算、發(fā)送消息等。例如,`{log("Transitioncompleted")}`表示在轉(zhuǎn)換發(fā)生時(shí)記錄一條日志。

(3)保護(hù)條件(GuardCondition):表示轉(zhuǎn)換發(fā)生的附加布爾條件,寫在圓括號(hào)`()()`中。只有當(dāng)保護(hù)條件為真時(shí),轉(zhuǎn)換才會(huì)發(fā)生。例如,`[buttonClicked](userLoggedIn)`表示只有當(dāng)用戶已登錄時(shí),點(diǎn)擊按鈕的轉(zhuǎn)換才會(huì)發(fā)生。

3.事件(Event):觸發(fā)轉(zhuǎn)換的輸入或內(nèi)部信號(hào),是狀態(tài)機(jī)行為的核心驅(qū)動(dòng)因素。

(1)內(nèi)部事件(InternalEvent):在狀態(tài)內(nèi)部觸發(fā),不離開狀態(tài),由`internal:`前綴標(biāo)識(shí)。內(nèi)部事件用于改變狀態(tài)機(jī)內(nèi)部的臨時(shí)條件或執(zhí)行內(nèi)部動(dòng)作,但不改變狀態(tài)機(jī)的當(dāng)前狀態(tài)。例如,`internal:timerExpired`表示內(nèi)部計(jì)時(shí)器到期的事件。

(2)外部事件(ExternalEvent):由系統(tǒng)外部觸發(fā),導(dǎo)致狀態(tài)轉(zhuǎn)換,不使用`internal:`前綴。外部事件通常來自其他對(duì)象或系統(tǒng)的消息、信號(hào)或用戶輸入。例如,`startButtonPressed`表示外部啟動(dòng)按鈕被按下的事件。

(3)時(shí)間事件(TimeEvent):基于時(shí)間的觸發(fā)條件,通常表示為`after[time]`或`onTime[time]`。例如,`after5sec`表示在5秒后觸發(fā)的事件。

(4)條件事件(ConditionEvent):基于某個(gè)條件表達(dá)式的觸發(fā),例如`[orderAmount>1000]`表示當(dāng)訂單金額大于1000時(shí)觸發(fā)的事件。

(二)輔助元素

1.嵌套狀態(tài):表示復(fù)合狀態(tài)內(nèi)部的狀態(tài)層次結(jié)構(gòu),用于將復(fù)雜的行為分解為更小的單元。嵌套狀態(tài)必須有一個(gè)入口轉(zhuǎn)換和一個(gè)出口轉(zhuǎn)換,或者其內(nèi)部轉(zhuǎn)換必須最終匯合到出口。

2.復(fù)合狀態(tài):如前所述,包含入口和出口,內(nèi)部由多個(gè)狀態(tài)和轉(zhuǎn)換組成,形成一個(gè)獨(dú)立的狀態(tài)機(jī)。

3.接點(diǎn)(Junction):用空心圓圈表示,用于在復(fù)合狀態(tài)內(nèi)部或轉(zhuǎn)換路徑中創(chuàng)建標(biāo)記點(diǎn),以便于連接或控制流程,避免復(fù)雜的箭頭交叉。

4.活動(dòng)(Activity):用橢圓或帶有邊框的矩形表示,表示狀態(tài)內(nèi)部或轉(zhuǎn)換執(zhí)行的一個(gè)有意義的操作或過程?;顒?dòng)可以嵌套在其他活動(dòng)或狀態(tài)內(nèi)部。

5.分叉(Fork)與匯合(Join):用于并發(fā)行為的建模。分叉?zhèn)螤顟B(tài)將一個(gè)控制流分裂成多個(gè)并發(fā)控制流,匯合偽狀態(tài)將多個(gè)并發(fā)控制流合并成一個(gè)。

三、UML狀態(tài)圖的設(shè)計(jì)規(guī)范

(一)繪制規(guī)則

1.結(jié)構(gòu)清晰:狀態(tài)圖應(yīng)邏輯清晰,狀態(tài)和轉(zhuǎn)換的布局應(yīng)易于理解,避免過于擁擠或混亂。通常,初態(tài)位于圖的左側(cè)或頂部,末態(tài)位于右側(cè)或底部,轉(zhuǎn)換按時(shí)間順序排列。

2.命名規(guī)范:狀態(tài)、事件、動(dòng)作和條件的命名應(yīng)簡潔、明確、具有描述性,避免使用縮寫或模糊的術(shù)語。狀態(tài)名稱應(yīng)使用名詞或名詞短語,如“訂單已接收”、“設(shè)備正在充電”。事件名稱應(yīng)使用動(dòng)詞或動(dòng)詞短語,如“提交訂單”、“收到確認(rèn)”。

3.元素一致性:圖中的符號(hào)使用應(yīng)保持一致,例如,所有初態(tài)都使用實(shí)心圓圈,所有轉(zhuǎn)換都使用帶箭頭的實(shí)線。

4.注釋說明:對(duì)于復(fù)雜的邏輯或需要額外解釋的內(nèi)容,可以使用注釋(Note)圖標(biāo)添加文本說明。注釋通過虛線連接到被解釋的元素。

5.避免循環(huán)引用:盡量避免狀態(tài)轉(zhuǎn)換形成無意義的循環(huán),除非該循環(huán)具有特定的業(yè)務(wù)意義。

6.狀態(tài)數(shù)量:單個(gè)狀態(tài)圖中的狀態(tài)數(shù)量不宜過多,如果狀態(tài)和轉(zhuǎn)換過于復(fù)雜,應(yīng)考慮分解為多個(gè)相關(guān)的狀態(tài)圖或使用更高級(jí)的建模技術(shù)。

(二)應(yīng)用步驟

1.識(shí)別關(guān)鍵對(duì)象/系統(tǒng):確定需要建模其行為的對(duì)象或系統(tǒng)單元。例如,一個(gè)電子商務(wù)平臺(tái)的“訂單”對(duì)象、一個(gè)智能設(shè)備的“電源管理”系統(tǒng)。

2.確定主要狀態(tài):分析對(duì)象/系統(tǒng)在其生命周期中經(jīng)歷的主要狀態(tài)。這些狀態(tài)應(yīng)該是可識(shí)別的、相對(duì)穩(wěn)定的時(shí)期。例如,對(duì)于“訂單”對(duì)象,主要狀態(tài)可能包括:“待支付”、“已支付”、“處理中”、“已發(fā)貨”、“已完成”、“已取消”。對(duì)于“電源管理”系統(tǒng),主要狀態(tài)可能包括:“開啟”、“關(guān)閉”、“充電中”、“放電中”、“待機(jī)”。

3.分析狀態(tài)轉(zhuǎn)換:確定對(duì)象/系統(tǒng)從一個(gè)狀態(tài)到另一個(gè)狀態(tài)的原因,即觸發(fā)轉(zhuǎn)換的事件。分析每個(gè)轉(zhuǎn)換可能伴隨的條件和動(dòng)作。例如,“訂單”對(duì)象從“待支付”到“已支付”的轉(zhuǎn)換由事件“支付成功”觸發(fā),可能伴隨動(dòng)作“更新訂單狀態(tài)”和“記錄支付信息”。從“已支付”到“處理中”的轉(zhuǎn)換由事件“訂單確認(rèn)”觸發(fā)。

4.繪制狀態(tài)圖草圖:使用紙筆或繪圖工具,初步繪制狀態(tài)圖草圖,包括主要狀態(tài)、轉(zhuǎn)換、事件和動(dòng)作??梢詴簳r(shí)忽略復(fù)合狀態(tài)和復(fù)雜的內(nèi)部細(xì)節(jié)。

5.添加內(nèi)部細(xì)節(jié)(如需):對(duì)于復(fù)雜的狀態(tài),特別是復(fù)合狀態(tài),分析其內(nèi)部行為,添加子狀態(tài)、內(nèi)部轉(zhuǎn)換、內(nèi)部事件和活動(dòng)。例如,“處理中”狀態(tài)可能包含“檢查庫存”(子狀態(tài))和“安排發(fā)貨”(子狀態(tài))。

6.定義事件和動(dòng)作:為每個(gè)轉(zhuǎn)換明確定義觸發(fā)事件、保護(hù)條件和動(dòng)作。確保事件和動(dòng)作的描述清晰、準(zhǔn)確??梢允褂脛?dòng)詞、名詞短語或簡短的描述性語句。

7.添加初始和結(jié)束狀態(tài):在圖中標(biāo)明對(duì)象的初始狀態(tài)(通常用實(shí)心圓圈表示,可以位于圖的左側(cè)或連接到第一個(gè)有效狀態(tài))和可能的結(jié)束狀態(tài)(通常用帶有圓圈的實(shí)心圓圈表示,可以位于圖的右側(cè)或連接到最終行為)。

8.驗(yàn)證和評(píng)審:與業(yè)務(wù)分析師、開發(fā)人員或其他相關(guān)人員進(jìn)行評(píng)審,檢查狀態(tài)圖的完整性、準(zhǔn)確性、一致性和可理解性。確保狀態(tài)圖正確地反映了對(duì)象/系統(tǒng)的實(shí)際行為邏輯。根據(jù)反饋進(jìn)行修改和完善。

9.文檔化:將最終的狀態(tài)圖及其關(guān)鍵說明(如注釋、命名約定)記錄在案,作為系統(tǒng)設(shè)計(jì)文檔的一部分。

四、示例

(一)簡單狀態(tài)圖示例:訂單處理流程

1.對(duì)象:在線購物訂單

2.狀態(tài)圖:

-初態(tài):待支付(InitialState)

-轉(zhuǎn)換1:`[支付成功]`→已支付(Paid)

-動(dòng)作:`{記錄支付信息}`

-轉(zhuǎn)換2:`[支付失敗]`或`[用戶取消]`→已取消(Cancelled)

-動(dòng)作:`{記錄取消原因}`

-狀態(tài):已支付

-轉(zhuǎn)換1:`[發(fā)貨請(qǐng)求]`→已發(fā)貨(Shipped)

-動(dòng)作:`{更新物流信息}`

-轉(zhuǎn)換2:`[訂單超時(shí)未處理]`→已取消(Cancelled)

-保護(hù)條件:`(time>30days)`

-狀態(tài):已發(fā)貨

-轉(zhuǎn)換1:`[用戶簽收]`→已完成(Completed)

-動(dòng)作:`{記錄簽收時(shí)間}`

-轉(zhuǎn)換2:`[物流異常]`→已取消(Cancelled)

-保護(hù)條件:`(物流狀態(tài)="丟失"or物流狀態(tài)="損壞")`

-末態(tài):已完成(FinalState)

-轉(zhuǎn)換1:`[申請(qǐng)退貨]`→待退貨處理(ReturnPending)(此示例中未展示完整退貨流程,僅為轉(zhuǎn)換示例)

-末態(tài):已取消(FinalState)

3.說明:此狀態(tài)圖展示了訂單從創(chuàng)建到最終結(jié)果(完成或取消)的主要流程和分支。

(二)復(fù)合狀態(tài)圖示例:電源管理狀態(tài)

1.對(duì)象:便攜式設(shè)備電源管理

2.狀態(tài)圖:

-初態(tài):關(guān)閉(Off)(InitialState)

-轉(zhuǎn)換1:`[電源按鈕長按]`→開啟(On)

-狀態(tài):開啟(On)

-復(fù)合狀態(tài):充電中(Charging)

-入口:`[連接電源]`

-內(nèi)部轉(zhuǎn)換1:`[充滿電]`→出口(Exit)

-動(dòng)作:`{停止充電}`

-內(nèi)部轉(zhuǎn)換2:`[用戶斷開電源]`→出口(Exit)

-動(dòng)作:`{記錄充電量}`

-內(nèi)部事件:`internal:checkBatteryLevel`

-轉(zhuǎn)換:`[lowBattery]`→開啟(On)

-動(dòng)作:`{告警(lowlevel)}`

-復(fù)合狀態(tài):放電中(Discharging)

-入口:`[出口充電]`

-內(nèi)部轉(zhuǎn)換1:`[電量耗盡]`→出口(Exit)

-動(dòng)作:`{記錄放電量}`

-內(nèi)部轉(zhuǎn)換2:`[連接電源]`→充電中(Charging)

-動(dòng)作:`{啟動(dòng)充電}`

-內(nèi)部事件:`internal:checkBatteryLevel`

-轉(zhuǎn)換:`[lowBatteryandnotOnCharge]`→待機(jī)(Standby)

-動(dòng)作:`{告警(lowlevel)}`

-出口:連接到關(guān)閉(Off)的轉(zhuǎn)換,由事件`[用戶選擇關(guān)閉]`或`[電源斷開且電量充足]`觸發(fā)。

-狀態(tài):待機(jī)(Standby)

-轉(zhuǎn)換1:`[用戶喚醒]`→開啟(On)

-轉(zhuǎn)換2:`[電源斷開且電量低]`→關(guān)閉(Off)

-保護(hù)條件:`(batteryLevel<10%)`

-末態(tài):無明確末態(tài)(設(shè)備可無限循環(huán))

3.說明:此狀態(tài)圖展示了設(shè)備電源管理的層次結(jié)構(gòu),特別是“充電中”和“放電中”這兩個(gè)復(fù)合狀態(tài)內(nèi)部的詳細(xì)行為和轉(zhuǎn)換。

五、注意事項(xiàng)

(一)狀態(tài)圖的粒度:選擇合適的狀態(tài)粒度至關(guān)重要。粒度太細(xì)會(huì)導(dǎo)致狀態(tài)圖過于復(fù)雜,難以理解和維護(hù);粒度太粗則可能丟失重要的行為細(xì)節(jié)。應(yīng)根據(jù)建模目的和對(duì)象/系統(tǒng)的復(fù)雜性來確定粒度。

(二)事件和條件的清晰性:確保所有事件和條件的命名清晰、無歧義,并且邏輯上相互一致。避免使用模糊的術(shù)語或容易引起誤解的命名。

(三)狀態(tài)轉(zhuǎn)換的完整性:對(duì)于每個(gè)狀態(tài),應(yīng)考慮所有可能的輸入事件和對(duì)應(yīng)的轉(zhuǎn)換。確保沒有遺漏重要的行為路徑,特別是異?;蝈e(cuò)誤情況的處理??梢允褂谩澳J(rèn)”轉(zhuǎn)換(用虛線箭頭表示)來處理未明確指定的轉(zhuǎn)換,但需謹(jǐn)慎使用。

(四)并發(fā)行為的建模:對(duì)于涉及并發(fā)行為的對(duì)象或系統(tǒng),正確使用分叉、匯合和并發(fā)狀態(tài)是關(guān)鍵。需要仔細(xì)設(shè)計(jì)并發(fā)狀態(tài)之間的同步和通信機(jī)制。

(五)與用例圖的關(guān)聯(lián):狀態(tài)圖通常與用例圖關(guān)聯(lián),一個(gè)用例的執(zhí)行可能涉及對(duì)象狀態(tài)的變化。理解用例場景有助于確定狀態(tài)圖中的哪些狀態(tài)和轉(zhuǎn)換是相關(guān)的。

(六)狀態(tài)圖的維護(hù):隨著系統(tǒng)的發(fā)展,狀態(tài)圖可能需要更新。應(yīng)建立版本控制和變更管理流程,確保狀態(tài)圖的變更得到適當(dāng)?shù)脑u(píng)審和記錄。

(七)工具支持:利用UML建模工具(如EnterpriseArchitect,VisualParadigm,StarUML等)可以提高狀態(tài)圖的繪制效率和規(guī)范性,并支持模型的一致性檢查和文檔生成。

一、概述

UML狀態(tài)圖(StateMachineDiagram)是統(tǒng)一建模語言(UML)中的一種行為圖,用于描述系統(tǒng)或?qū)ο鬆顟B(tài)隨時(shí)間變化的動(dòng)態(tài)行為。狀態(tài)圖通過狀態(tài)、轉(zhuǎn)換、事件和動(dòng)作等元素,清晰地展現(xiàn)對(duì)象在不同狀態(tài)下的響應(yīng)和轉(zhuǎn)換邏輯。本制度規(guī)定旨在規(guī)范UML狀態(tài)圖的設(shè)計(jì)、繪制和應(yīng)用標(biāo)準(zhǔn),確保其準(zhǔn)確性和一致性,便于系統(tǒng)分析和設(shè)計(jì)人員使用。

二、UML狀態(tài)圖的基本構(gòu)成

(一)核心元素

1.狀態(tài)(State):表示對(duì)象或系統(tǒng)所處的穩(wěn)定條件。

(1)初態(tài):用實(shí)心圓圈表示,位于圖的左側(cè)。

(2)末態(tài):用空心圓圈表示,位于圖的右側(cè)。

(3)內(nèi)部狀態(tài):用矩形表示,包含子狀態(tài)和轉(zhuǎn)換。

2.轉(zhuǎn)換(Transition):表示狀態(tài)之間的變化,用帶箭頭的實(shí)線表示。

(1)事件(Event):觸發(fā)轉(zhuǎn)換的輸入條件,如“點(diǎn)擊”“完成”等。

(2)動(dòng)作(Action):轉(zhuǎn)換發(fā)生時(shí)執(zhí)行的操作,用方括號(hào)表示。

3.事件(Event):包括內(nèi)部事件(InternalEvent)、外部事件(ExternalEvent)和同步事件(SynchronizationEvent)。

(1)內(nèi)部事件:在狀態(tài)內(nèi)部觸發(fā),不離開狀態(tài)。

(2)外部事件:由系統(tǒng)外部觸發(fā),導(dǎo)致狀態(tài)轉(zhuǎn)換。

(二)輔助元素

1.嵌套狀態(tài):表示狀態(tài)內(nèi)部的子狀態(tài),如“活動(dòng)1”“活動(dòng)2”。

2.復(fù)合狀態(tài):包含一個(gè)入口和出口,內(nèi)部由多個(gè)簡單狀態(tài)組成。

三、UML狀態(tài)圖的設(shè)計(jì)規(guī)范

(一)繪制規(guī)則

1.狀態(tài)圖應(yīng)從初態(tài)開始,以末態(tài)結(jié)束,箭頭方向表示狀態(tài)轉(zhuǎn)換的順序。

2.狀態(tài)內(nèi)部可包含多個(gè)子狀態(tài),但需明確主狀態(tài)和子狀態(tài)的層次關(guān)系。

3.轉(zhuǎn)換的命名應(yīng)簡潔明了,避免歧義,如“收到訂單”“取消操作”。

(二)應(yīng)用步驟

1.確定對(duì)象或系統(tǒng)的關(guān)鍵狀態(tài),如“待處理”“處理中”“完成”。

2.分析狀態(tài)之間的轉(zhuǎn)換條件,如“提交申請(qǐng)”“超時(shí)取消”。

3.繪制狀態(tài)圖,標(biāo)注事件和動(dòng)作,確保邏輯清晰。

4.驗(yàn)證狀態(tài)圖的正確性,與實(shí)際業(yè)務(wù)邏輯一致。

四、示例

(一)簡單狀態(tài)圖示例

1.對(duì)象“訂單”的狀態(tài)轉(zhuǎn)換:

-初態(tài):待支付

-轉(zhuǎn)換1:支付成功→狀態(tài):已支付

-轉(zhuǎn)換2:支付失敗→狀態(tài):待重試

-末態(tài):已取消(超時(shí)未支付)

(二)復(fù)合狀態(tài)圖示例

1.對(duì)象“用戶登錄”的復(fù)合狀態(tài):

-主狀態(tài):登錄過程

-子狀態(tài)1:輸入憑證

-子狀態(tài)2:驗(yàn)證憑證

-子狀態(tài)3:登錄成功/失敗

-轉(zhuǎn)換:輸入憑證→驗(yàn)證憑證→登錄成功/失敗

五、注意事項(xiàng)

(一)狀態(tài)圖應(yīng)避免過于復(fù)雜,狀態(tài)和轉(zhuǎn)換數(shù)量不宜過多,以免影響可讀性。

(二)狀態(tài)轉(zhuǎn)換的條件應(yīng)明確,避免出現(xiàn)模糊或冗余的轉(zhuǎn)換邏輯。

(三)定期審查和更新狀態(tài)圖,確保其與系統(tǒng)實(shí)際行為一致。

一、概述

UML狀態(tài)圖(StateMachineDiagram)是統(tǒng)一建模語言(UML)中的一種行為圖,用于描述系統(tǒng)或?qū)ο鬆顟B(tài)隨時(shí)間變化的動(dòng)態(tài)行為。狀態(tài)圖通過狀態(tài)、轉(zhuǎn)換、事件和動(dòng)作等元素,清晰地展現(xiàn)對(duì)象在不同狀態(tài)下的響應(yīng)和轉(zhuǎn)換邏輯。本制度規(guī)定旨在規(guī)范UML狀態(tài)圖的設(shè)計(jì)、繪制和應(yīng)用標(biāo)準(zhǔn),確保其準(zhǔn)確性和一致性,便于系統(tǒng)分析和設(shè)計(jì)人員使用。通過遵循本規(guī)范,可以提升模型的可讀性、可維護(hù)性,并促進(jìn)團(tuán)隊(duì)協(xié)作。狀態(tài)圖特別適用于描述具有明確生命周期或狀態(tài)轉(zhuǎn)換的對(duì)象,例如訂單處理、用戶會(huì)話、設(shè)備操作等。

二、UML狀態(tài)圖的基本構(gòu)成

(一)核心元素

1.狀態(tài)(State):表示對(duì)象或系統(tǒng)所處的穩(wěn)定條件,是系統(tǒng)行為建模的基本單元。

(1)初態(tài)(InitialState):用實(shí)心圓圈表示,通常位于圖的左側(cè)或頂部,代表對(duì)象或系統(tǒng)生命周期開始時(shí)的狀態(tài)。初態(tài)可以連接到任何有效狀態(tài)。

(2)末態(tài)(FinalState):用帶有圓圈的實(shí)心圓圈表示,通常位于圖的右側(cè)或底部,代表對(duì)象或系統(tǒng)生命周期結(jié)束或終止的狀態(tài)。一個(gè)對(duì)象可以有一個(gè)或多個(gè)末態(tài),表示不同的結(jié)束方式。

(3)處理狀態(tài)(SimpleState):用矩形表示,包含狀態(tài)名稱和一個(gè)可選的內(nèi)部區(qū)域。內(nèi)部區(qū)域可以包含子狀態(tài)、轉(zhuǎn)換、活動(dòng)(Activity)或偽狀態(tài)。處理狀態(tài)代表對(duì)象的一個(gè)穩(wěn)定、可識(shí)別的時(shí)期。

(4)復(fù)合狀態(tài)(CompositeState):用矩形表示,包含一個(gè)入口點(diǎn)(EntryPoint)、一個(gè)出口點(diǎn)(ExitPoint)和一個(gè)可選的內(nèi)部區(qū)域。復(fù)合狀態(tài)內(nèi)部可以包含子狀態(tài)(SimpleState、復(fù)合狀態(tài))、轉(zhuǎn)換、活動(dòng)、偽狀態(tài)和接點(diǎn)(Junction)。復(fù)合狀態(tài)代表一個(gè)包含內(nèi)部結(jié)構(gòu)的“宏?duì)顟B(tài)”,其行為由內(nèi)部子狀態(tài)和轉(zhuǎn)換的組合決定。

(5)特殊狀態(tài):包括初始偽狀態(tài)(Initialpseudostate)、終止偽狀態(tài)(Finalpseudostate)、活動(dòng)(Activity)、分叉(Fork)、匯合(Join)、時(shí)間約束(TimeConstraint)和并發(fā)(Concurrent)等,用于表達(dá)更復(fù)雜的行為。

2.轉(zhuǎn)換(Transition):表示狀態(tài)之間的變化,由帶箭頭的實(shí)線表示,箭頭指向目標(biāo)狀態(tài)。轉(zhuǎn)換定義了狀態(tài)轉(zhuǎn)換的觸發(fā)條件(觸發(fā)事件)和可選的動(dòng)作。

(1)觸發(fā)事件(Trigger):表示導(dǎo)致轉(zhuǎn)換發(fā)生的條件或事件,可以是具體的信號(hào)、消息、時(shí)間流逝或內(nèi)部條件滿足。觸發(fā)事件寫在方括號(hào)`[]`中。例如,`[buttonClicked]`表示按鈕點(diǎn)擊事件觸發(fā)轉(zhuǎn)換。如果轉(zhuǎn)換沒有明確的觸發(fā)事件,則表示該轉(zhuǎn)換在特定條件下總是發(fā)生。

(2)動(dòng)作(Action):表示狀態(tài)轉(zhuǎn)換發(fā)生時(shí)執(zhí)行的操作或行為,寫在花括號(hào)`{}`中。動(dòng)作可以是賦值、計(jì)算、發(fā)送消息等。例如,`{log("Transitioncompleted")}`表示在轉(zhuǎn)換發(fā)生時(shí)記錄一條日志。

(3)保護(hù)條件(GuardCondition):表示轉(zhuǎn)換發(fā)生的附加布爾條件,寫在圓括號(hào)`()()`中。只有當(dāng)保護(hù)條件為真時(shí),轉(zhuǎn)換才會(huì)發(fā)生。例如,`[buttonClicked](userLoggedIn)`表示只有當(dāng)用戶已登錄時(shí),點(diǎn)擊按鈕的轉(zhuǎn)換才會(huì)發(fā)生。

3.事件(Event):觸發(fā)轉(zhuǎn)換的輸入或內(nèi)部信號(hào),是狀態(tài)機(jī)行為的核心驅(qū)動(dòng)因素。

(1)內(nèi)部事件(InternalEvent):在狀態(tài)內(nèi)部觸發(fā),不離開狀態(tài),由`internal:`前綴標(biāo)識(shí)。內(nèi)部事件用于改變狀態(tài)機(jī)內(nèi)部的臨時(shí)條件或執(zhí)行內(nèi)部動(dòng)作,但不改變狀態(tài)機(jī)的當(dāng)前狀態(tài)。例如,`internal:timerExpired`表示內(nèi)部計(jì)時(shí)器到期的事件。

(2)外部事件(ExternalEvent):由系統(tǒng)外部觸發(fā),導(dǎo)致狀態(tài)轉(zhuǎn)換,不使用`internal:`前綴。外部事件通常來自其他對(duì)象或系統(tǒng)的消息、信號(hào)或用戶輸入。例如,`startButtonPressed`表示外部啟動(dòng)按鈕被按下的事件。

(3)時(shí)間事件(TimeEvent):基于時(shí)間的觸發(fā)條件,通常表示為`after[time]`或`onTime[time]`。例如,`after5sec`表示在5秒后觸發(fā)的事件。

(4)條件事件(ConditionEvent):基于某個(gè)條件表達(dá)式的觸發(fā),例如`[orderAmount>1000]`表示當(dāng)訂單金額大于1000時(shí)觸發(fā)的事件。

(二)輔助元素

1.嵌套狀態(tài):表示復(fù)合狀態(tài)內(nèi)部的狀態(tài)層次結(jié)構(gòu),用于將復(fù)雜的行為分解為更小的單元。嵌套狀態(tài)必須有一個(gè)入口轉(zhuǎn)換和一個(gè)出口轉(zhuǎn)換,或者其內(nèi)部轉(zhuǎn)換必須最終匯合到出口。

2.復(fù)合狀態(tài):如前所述,包含入口和出口,內(nèi)部由多個(gè)狀態(tài)和轉(zhuǎn)換組成,形成一個(gè)獨(dú)立的狀態(tài)機(jī)。

3.接點(diǎn)(Junction):用空心圓圈表示,用于在復(fù)合狀態(tài)內(nèi)部或轉(zhuǎn)換路徑中創(chuàng)建標(biāo)記點(diǎn),以便于連接或控制流程,避免復(fù)雜的箭頭交叉。

4.活動(dòng)(Activity):用橢圓或帶有邊框的矩形表示,表示狀態(tài)內(nèi)部或轉(zhuǎn)換執(zhí)行的一個(gè)有意義的操作或過程。活動(dòng)可以嵌套在其他活動(dòng)或狀態(tài)內(nèi)部。

5.分叉(Fork)與匯合(Join):用于并發(fā)行為的建模。分叉?zhèn)螤顟B(tài)將一個(gè)控制流分裂成多個(gè)并發(fā)控制流,匯合偽狀態(tài)將多個(gè)并發(fā)控制流合并成一個(gè)。

三、UML狀態(tài)圖的設(shè)計(jì)規(guī)范

(一)繪制規(guī)則

1.結(jié)構(gòu)清晰:狀態(tài)圖應(yīng)邏輯清晰,狀態(tài)和轉(zhuǎn)換的布局應(yīng)易于理解,避免過于擁擠或混亂。通常,初態(tài)位于圖的左側(cè)或頂部,末態(tài)位于右側(cè)或底部,轉(zhuǎn)換按時(shí)間順序排列。

2.命名規(guī)范:狀態(tài)、事件、動(dòng)作和條件的命名應(yīng)簡潔、明確、具有描述性,避免使用縮寫或模糊的術(shù)語。狀態(tài)名稱應(yīng)使用名詞或名詞短語,如“訂單已接收”、“設(shè)備正在充電”。事件名稱應(yīng)使用動(dòng)詞或動(dòng)詞短語,如“提交訂單”、“收到確認(rèn)”。

3.元素一致性:圖中的符號(hào)使用應(yīng)保持一致,例如,所有初態(tài)都使用實(shí)心圓圈,所有轉(zhuǎn)換都使用帶箭頭的實(shí)線。

4.注釋說明:對(duì)于復(fù)雜的邏輯或需要額外解釋的內(nèi)容,可以使用注釋(Note)圖標(biāo)添加文本說明。注釋通過虛線連接到被解釋的元素。

5.避免循環(huán)引用:盡量避免狀態(tài)轉(zhuǎn)換形成無意義的循環(huán),除非該循環(huán)具有特定的業(yè)務(wù)意義。

6.狀態(tài)數(shù)量:單個(gè)狀態(tài)圖中的狀態(tài)數(shù)量不宜過多,如果狀態(tài)和轉(zhuǎn)換過于復(fù)雜,應(yīng)考慮分解為多個(gè)相關(guān)的狀態(tài)圖或使用更高級(jí)的建模技術(shù)。

(二)應(yīng)用步驟

1.識(shí)別關(guān)鍵對(duì)象/系統(tǒng):確定需要建模其行為的對(duì)象或系統(tǒng)單元。例如,一個(gè)電子商務(wù)平臺(tái)的“訂單”對(duì)象、一個(gè)智能設(shè)備的“電源管理”系統(tǒng)。

2.確定主要狀態(tài):分析對(duì)象/系統(tǒng)在其生命周期中經(jīng)歷的主要狀態(tài)。這些狀態(tài)應(yīng)該是可識(shí)別的、相對(duì)穩(wěn)定的時(shí)期。例如,對(duì)于“訂單”對(duì)象,主要狀態(tài)可能包括:“待支付”、“已支付”、“處理中”、“已發(fā)貨”、“已完成”、“已取消”。對(duì)于“電源管理”系統(tǒng),主要狀態(tài)可能包括:“開啟”、“關(guān)閉”、“充電中”、“放電中”、“待機(jī)”。

3.分析狀態(tài)轉(zhuǎn)換:確定對(duì)象/系統(tǒng)從一個(gè)狀態(tài)到另一個(gè)狀態(tài)的原因,即觸發(fā)轉(zhuǎn)換的事件。分析每個(gè)轉(zhuǎn)換可能伴隨的條件和動(dòng)作。例如,“訂單”對(duì)象從“待支付”到“已支付”的轉(zhuǎn)換由事件“支付成功”觸發(fā),可能伴隨動(dòng)作“更新訂單狀態(tài)”和“記錄支付信息”。從“已支付”到“處理中”的轉(zhuǎn)換由事件“訂單確認(rèn)”觸發(fā)。

4.繪制狀態(tài)圖草圖:使用紙筆或繪圖工具,初步繪制狀態(tài)圖草圖,包括主要狀態(tài)、轉(zhuǎn)換、事件和動(dòng)作。可以暫時(shí)忽略復(fù)合狀態(tài)和復(fù)雜的內(nèi)部細(xì)節(jié)。

5.添加內(nèi)部細(xì)節(jié)(如需):對(duì)于復(fù)雜的狀態(tài),特別是復(fù)合狀態(tài),分析其內(nèi)部行為,添加子狀態(tài)、內(nèi)部轉(zhuǎn)換、內(nèi)部事件和活動(dòng)。例如,“處理中”狀態(tài)可能包含“檢查庫存”(子狀態(tài))和“安排發(fā)貨”(子狀態(tài))。

6.定義事件和動(dòng)作:為每個(gè)轉(zhuǎn)換明確定義觸發(fā)事件、保護(hù)條件和動(dòng)作。確保事件和動(dòng)作的描述清晰、準(zhǔn)確??梢允褂脛?dòng)詞、名詞短語或簡短的描述性語句。

7.添加初始和結(jié)束狀態(tài):在圖中標(biāo)明對(duì)象的初始狀態(tài)(通常用實(shí)心圓圈表示,可以位于圖的左側(cè)或連接到第一個(gè)有效狀態(tài))和可能的結(jié)束狀態(tài)(通常用帶有圓圈的實(shí)心圓圈表示,可以位于圖的右側(cè)或連接到最終行為)。

8.驗(yàn)證和評(píng)審:與業(yè)務(wù)分析師、開發(fā)人員或其他相關(guān)人員進(jìn)行評(píng)審,檢查狀態(tài)圖的完整性、準(zhǔn)確性、一致性和可理解性。確保狀態(tài)圖正確地反映了對(duì)象/系統(tǒng)的實(shí)際行為邏輯。根據(jù)反饋進(jìn)行修改和完善。

9.文檔化:將最終的狀態(tài)圖及其關(guān)鍵說明(如注釋、命名約定)記錄在案,作為系統(tǒng)設(shè)計(jì)文檔的一部分。

四、示例

(一)簡單狀態(tài)圖示例:訂單處理流程

1.對(duì)象:在線購物訂單

2.狀態(tài)圖:

-初態(tài):待支付(InitialState)

-轉(zhuǎn)換1:`[支付成功]`→已支付(Paid)

-動(dòng)作:`{記錄支付信息}`

-轉(zhuǎn)換2:`[支付失敗]`或`[用戶取消]`→已取消(Cancelled)

-動(dòng)作:`{記錄取消原因}`

-狀態(tài):已支付

-轉(zhuǎn)換1:`[發(fā)貨請(qǐng)求]`→已發(fā)貨(Shipped)

-動(dòng)作:`{更新物流信息}`

-轉(zhuǎn)換2:`[訂單超時(shí)未處理]`→已取消(Cancelled)

-保護(hù)條件:`(time>30days)`

-狀態(tài):已發(fā)貨

-轉(zhuǎn)換1:`[用戶簽收]`→已完成(Completed)

-動(dòng)作:`{記錄簽收時(shí)間}`

-轉(zhuǎn)換2:`[物流異常]`→已取消(Cancelled)

-保護(hù)條件:`(物流狀態(tài)="丟失"or物流狀態(tài)="損壞")`

-末態(tài):已完成(FinalState)

-轉(zhuǎn)換1:`[申請(qǐng)退貨]`→待退貨處理(ReturnPending)(此示例中未展示完整退貨流程,僅為轉(zhuǎn)換示例)

-末態(tài):已取消(FinalState)

3.說明:此狀態(tài)圖展示了訂單從創(chuàng)建到最終結(jié)果(完成或取消)的主要流程和分支。

(二)復(fù)合狀態(tài)圖示例:電源管理狀態(tài)

1.對(duì)象:便攜式設(shè)備電源管理

2.狀態(tài)圖:

-初態(tài):關(guān)閉(Off)(InitialState)

-轉(zhuǎn)換1:`[電源按鈕長按]`→開啟(On)

-狀態(tài):開啟(On)

-復(fù)合狀態(tài):充電中(Charging)

-入口:`[連接電源]`

-內(nèi)部轉(zhuǎn)換1:`[充滿電]`→出口(Exit)

-動(dòng)作:`{停止充電}`

-內(nèi)部轉(zhuǎn)換2:`[用戶斷開電源]`→出口(Exit)

-動(dòng)作:`{記錄充電量}`

-內(nèi)部事件:`internal:checkBatteryLevel`

-轉(zhuǎn)換:`[lowBattery]`→開啟(On)

-動(dòng)作:`{告警(lowlevel)}`

-復(fù)合狀態(tài):放電中(Discharging)

-入口:`[出口充電]`

-內(nèi)部轉(zhuǎn)換1:`[電量耗盡]`→出口(Exit)

-動(dòng)作:`{記錄放電量}`

-內(nèi)部轉(zhuǎn)換2:`[連接電源]`→充電中(Charging)

-動(dòng)作:`{啟動(dòng)充電}`

-內(nèi)部事件:`internal:checkBatteryLevel`

-轉(zhuǎn)換:`[lowBatteryandnotOnCharge]`→待機(jī)(Standby)

-動(dòng)作:`{告警(lowlevel)}`

-出口:連接到關(guān)閉(Off)的轉(zhuǎn)換,由事件`[用戶選擇關(guān)閉]`或`[電源斷開且電量充足]`觸發(fā)。

-狀態(tài):待機(jī)(Standby)

-轉(zhuǎn)換1:`[用戶喚醒]`→開啟(On)

-轉(zhuǎn)換2:`[電源斷開且電量低]`→關(guān)閉(Off)

-保護(hù)條件:`(batteryLevel<10%)`

-末態(tài):無明確末態(tài)(設(shè)備可無限循環(huán))

3.說明:此狀態(tài)圖展示了設(shè)備電源管理的層次結(jié)構(gòu),特別是“充電中”和“放電中”這兩個(gè)復(fù)合狀態(tài)內(nèi)部的詳細(xì)行為和轉(zhuǎn)換。

五、注意事項(xiàng)

(一)狀態(tài)圖的粒度:選擇合適的狀態(tài)粒度至關(guān)重要。粒度太細(xì)會(huì)導(dǎo)致狀態(tài)圖過于復(fù)雜,難以理解和維護(hù);粒度太粗則可能丟失重要的行為細(xì)節(jié)。應(yīng)根據(jù)建模目的和對(duì)象/系統(tǒng)的復(fù)雜性來確定粒度。

(二)事件和條件的清晰性:確保所有事件和條件的命名清晰、無歧義,并且邏輯上相互一致。避免使用模糊的術(shù)語或容易引起誤解的命名。

(三)狀態(tài)轉(zhuǎn)換的完整性:對(duì)于每個(gè)狀態(tài),應(yīng)考慮所有可能的輸入事件和對(duì)應(yīng)的轉(zhuǎn)換。確保沒有遺漏重要的行為路徑,特別是異?;蝈e(cuò)誤情況的處理??梢允褂谩澳J(rèn)”轉(zhuǎn)換(用虛線箭頭表示)來處理未明確指定的轉(zhuǎn)換,但需謹(jǐn)慎使用。

(四)并發(fā)行為的建模:對(duì)于涉及并發(fā)行為的對(duì)象或系統(tǒng),正確使用分叉、匯合和并發(fā)狀態(tài)是關(guān)鍵。需要仔細(xì)設(shè)計(jì)并發(fā)狀態(tài)之間的同步和通信機(jī)制。

(五)與用例圖的關(guān)聯(lián):狀態(tài)圖通常與用例圖關(guān)聯(lián),一個(gè)用例的執(zhí)行可能涉及對(duì)象狀態(tài)的變化。理解用例場景有助于確定狀態(tài)圖中的哪些狀態(tài)和轉(zhuǎn)換是相關(guān)的。

(六)狀態(tài)圖的維護(hù):隨著系統(tǒng)的發(fā)展,狀態(tài)圖可能需要更新。應(yīng)建立版本控制和變更管理流程,確保狀態(tài)圖的變更得到適當(dāng)?shù)脑u(píng)審和記錄。

(七)工具支持:利用UML建模工具(如EnterpriseArchitect,VisualParadigm,StarUML等)可以提高狀態(tài)圖的繪制效率和規(guī)范性,并支持模型的一致性檢查和文檔生成。

一、概述

UML狀態(tài)圖(StateMachineDiagram)是統(tǒng)一建模語言(UML)中的一種行為圖,用于描述系統(tǒng)或?qū)ο鬆顟B(tài)隨時(shí)間變化的動(dòng)態(tài)行為。狀態(tài)圖通過狀態(tài)、轉(zhuǎn)換、事件和動(dòng)作等元素,清晰地展現(xiàn)對(duì)象在不同狀態(tài)下的響應(yīng)和轉(zhuǎn)換邏輯。本制度規(guī)定旨在規(guī)范UML狀態(tài)圖的設(shè)計(jì)、繪制和應(yīng)用標(biāo)準(zhǔn),確保其準(zhǔn)確性和一致性,便于系統(tǒng)分析和設(shè)計(jì)人員使用。

二、UML狀態(tài)圖的基本構(gòu)成

(一)核心元素

1.狀態(tài)(State):表示對(duì)象或系統(tǒng)所處的穩(wěn)定條件。

(1)初態(tài):用實(shí)心圓圈表示,位于圖的左側(cè)。

(2)末態(tài):用空心圓圈表示,位于圖的右側(cè)。

(3)內(nèi)部狀態(tài):用矩形表示,包含子狀態(tài)和轉(zhuǎn)換。

2.轉(zhuǎn)換(Transition):表示狀態(tài)之間的變化,用帶箭頭的實(shí)線表示。

(1)事件(Event):觸發(fā)轉(zhuǎn)換的輸入條件,如“點(diǎn)擊”“完成”等。

(2)動(dòng)作(Action):轉(zhuǎn)換發(fā)生時(shí)執(zhí)行的操作,用方括號(hào)表示。

3.事件(Event):包括內(nèi)部事件(InternalEvent)、外部事件(ExternalEvent)和同步事件(SynchronizationEvent)。

(1)內(nèi)部事件:在狀態(tài)內(nèi)部觸發(fā),不離開狀態(tài)。

(2)外部事件:由系統(tǒng)外部觸發(fā),導(dǎo)致狀態(tài)轉(zhuǎn)換。

(二)輔助元素

1.嵌套狀態(tài):表示狀態(tài)內(nèi)部的子狀態(tài),如“活動(dòng)1”“活動(dòng)2”。

2.復(fù)合狀態(tài):包含一個(gè)入口和出口,內(nèi)部由多個(gè)簡單狀態(tài)組成。

三、UML狀態(tài)圖的設(shè)計(jì)規(guī)范

(一)繪制規(guī)則

1.狀態(tài)圖應(yīng)從初態(tài)開始,以末態(tài)結(jié)束,箭頭方向表示狀態(tài)轉(zhuǎn)換的順序。

2.狀態(tài)內(nèi)部可包含多個(gè)子狀態(tài),但需明確主狀態(tài)和子狀態(tài)的層次關(guān)系。

3.轉(zhuǎn)換的命名應(yīng)簡潔明了,避免歧義,如“收到訂單”“取消操作”。

(二)應(yīng)用步驟

1.確定對(duì)象或系統(tǒng)的關(guān)鍵狀態(tài),如“待處理”“處理中”“完成”。

2.分析狀態(tài)之間的轉(zhuǎn)換條件,如“提交申請(qǐng)”“超時(shí)取消”。

3.繪制狀態(tài)圖,標(biāo)注事件和動(dòng)作,確保邏輯清晰。

4.驗(yàn)證狀態(tài)圖的正確性,與實(shí)際業(yè)務(wù)邏輯一致。

四、示例

(一)簡單狀態(tài)圖示例

1.對(duì)象“訂單”的狀態(tài)轉(zhuǎn)換:

-初態(tài):待支付

-轉(zhuǎn)換1:支付成功→狀態(tài):已支付

-轉(zhuǎn)換2:支付失敗→狀態(tài):待重試

-末態(tài):已取消(超時(shí)未支付)

(二)復(fù)合狀態(tài)圖示例

1.對(duì)象“用戶登錄”的復(fù)合狀態(tài):

-主狀態(tài):登錄過程

-子狀態(tài)1:輸入憑證

-子狀態(tài)2:驗(yàn)證憑證

-子狀態(tài)3:登錄成功/失敗

-轉(zhuǎn)換:輸入憑證→驗(yàn)證憑證→登錄成功/失敗

五、注意事項(xiàng)

(一)狀態(tài)圖應(yīng)避免過于復(fù)雜,狀態(tài)和轉(zhuǎn)換數(shù)量不宜過多,以免影響可讀性。

(二)狀態(tài)轉(zhuǎn)換的條件應(yīng)明確,避免出現(xiàn)模糊或冗余的轉(zhuǎn)換邏輯。

(三)定期審查和更新狀態(tài)圖,確保其與系統(tǒng)實(shí)際行為一致。

一、概述

UML狀態(tài)圖(StateMachineDiagram)是統(tǒng)一建模語言(UML)中的一種行為圖,用于描述系統(tǒng)或?qū)ο鬆顟B(tài)隨時(shí)間變化的動(dòng)態(tài)行為。狀態(tài)圖通過狀態(tài)、轉(zhuǎn)換、事件和動(dòng)作等元素,清晰地展現(xiàn)對(duì)象在不同狀態(tài)下的響應(yīng)和轉(zhuǎn)換邏輯。本制度規(guī)定旨在規(guī)范UML狀態(tài)圖的設(shè)計(jì)、繪制和應(yīng)用標(biāo)準(zhǔn),確保其準(zhǔn)確性和一致性,便于系統(tǒng)分析和設(shè)計(jì)人員使用。通過遵循本規(guī)范,可以提升模型的可讀性、可維護(hù)性,并促進(jìn)團(tuán)隊(duì)協(xié)作。狀態(tài)圖特別適用于描述具有明確生命周期或狀態(tài)轉(zhuǎn)換的對(duì)象,例如訂單處理、用戶會(huì)話、設(shè)備操作等。

二、UML狀態(tài)圖的基本構(gòu)成

(一)核心元素

1.狀態(tài)(State):表示對(duì)象或系統(tǒng)所處的穩(wěn)定條件,是系統(tǒng)行為建模的基本單元。

(1)初態(tài)(InitialState):用實(shí)心圓圈表示,通常位于圖的左側(cè)或頂部,代表對(duì)象或系統(tǒng)生命周期開始時(shí)的狀態(tài)。初態(tài)可以連接到任何有效狀態(tài)。

(2)末態(tài)(FinalState):用帶有圓圈的實(shí)心圓圈表示,通常位于圖的右側(cè)或底部,代表對(duì)象或系統(tǒng)生命周期結(jié)束或終止的狀態(tài)。一個(gè)對(duì)象可以有一個(gè)或多個(gè)末態(tài),表示不同的結(jié)束方式。

(3)處理狀態(tài)(SimpleState):用矩形表示,包含狀態(tài)名稱和一個(gè)可選的內(nèi)部區(qū)域。內(nèi)部區(qū)域可以包含子狀態(tài)、轉(zhuǎn)換、活動(dòng)(Activity)或偽狀態(tài)。處理狀態(tài)代表對(duì)象的一個(gè)穩(wěn)定、可識(shí)別的時(shí)期。

(4)復(fù)合狀態(tài)(CompositeState):用矩形表示,包含一個(gè)入口點(diǎn)(EntryPoint)、一個(gè)出口點(diǎn)(ExitPoint)和一個(gè)可選的內(nèi)部區(qū)域。復(fù)合狀態(tài)內(nèi)部可以包含子狀態(tài)(SimpleState、復(fù)合狀態(tài))、轉(zhuǎn)換、活動(dòng)、偽狀態(tài)和接點(diǎn)(Junction)。復(fù)合狀態(tài)代表一個(gè)包含內(nèi)部結(jié)構(gòu)的“宏?duì)顟B(tài)”,其行為由內(nèi)部子狀態(tài)和轉(zhuǎn)換的組合決定。

(5)特殊狀態(tài):包括初始偽狀態(tài)(Initialpseudostate)、終止偽狀態(tài)(Finalpseudostate)、活動(dòng)(Activity)、分叉(Fork)、匯合(Join)、時(shí)間約束(TimeConstraint)和并發(fā)(Concurrent)等,用于表達(dá)更復(fù)雜的行為。

2.轉(zhuǎn)換(Transition):表示狀態(tài)之間的變化,由帶箭頭的實(shí)線表示,箭頭指向目標(biāo)狀態(tài)。轉(zhuǎn)換定義了狀態(tài)轉(zhuǎn)換的觸發(fā)條件(觸發(fā)事件)和可選的動(dòng)作。

(1)觸發(fā)事件(Trigger):表示導(dǎo)致轉(zhuǎn)換發(fā)生的條件或事件,可以是具體的信號(hào)、消息、時(shí)間流逝或內(nèi)部條件滿足。觸發(fā)事件寫在方括號(hào)`[]`中。例如,`[buttonClicked]`表示按鈕點(diǎn)擊事件觸發(fā)轉(zhuǎn)換。如果轉(zhuǎn)換沒有明確的觸發(fā)事件,則表示該轉(zhuǎn)換在特定條件下總是發(fā)生。

(2)動(dòng)作(Action):表示狀態(tài)轉(zhuǎn)換發(fā)生時(shí)執(zhí)行的操作或行為,寫在花括號(hào)`{}`中。動(dòng)作可以是賦值、計(jì)算、發(fā)送消息等。例如,`{log("Transitioncompleted")}`表示在轉(zhuǎn)換發(fā)生時(shí)記錄一條日志。

(3)保護(hù)條件(GuardCondition):表示轉(zhuǎn)換發(fā)生的附加布爾條件,寫在圓括號(hào)`()()`中。只有當(dāng)保護(hù)條件為真時(shí),轉(zhuǎn)換才會(huì)發(fā)生。例如,`[buttonClicked](userLoggedIn)`表示只有當(dāng)用戶已登錄時(shí),點(diǎn)擊按鈕的轉(zhuǎn)換才會(huì)發(fā)生。

3.事件(Event):觸發(fā)轉(zhuǎn)換的輸入或內(nèi)部信號(hào),是狀態(tài)機(jī)行為的核心驅(qū)動(dòng)因素。

(1)內(nèi)部事件(InternalEvent):在狀態(tài)內(nèi)部觸發(fā),不離開狀態(tài),由`internal:`前綴標(biāo)識(shí)。內(nèi)部事件用于改變狀態(tài)機(jī)內(nèi)部的臨時(shí)條件或執(zhí)行內(nèi)部動(dòng)作,但不改變狀態(tài)機(jī)的當(dāng)前狀態(tài)。例如,`internal:timerExpired`表示內(nèi)部計(jì)時(shí)器到期的事件。

(2)外部事件(ExternalEvent):由系統(tǒng)外部觸發(fā),導(dǎo)致狀態(tài)轉(zhuǎn)換,不使用`internal:`前綴。外部事件通常來自其他對(duì)象或系統(tǒng)的消息、信號(hào)或用戶輸入。例如,`startButtonPressed`表示外部啟動(dòng)按鈕被按下的事件。

(3)時(shí)間事件(TimeEvent):基于時(shí)間的觸發(fā)條件,通常表示為`after[time]`或`onTime[time]`。例如,`after5sec`表示在5秒后觸發(fā)的事件。

(4)條件事件(ConditionEvent):基于某個(gè)條件表達(dá)式的觸發(fā),例如`[orderAmount>1000]`表示當(dāng)訂單金額大于1000時(shí)觸發(fā)的事件。

(二)輔助元素

1.嵌套狀態(tài):表示復(fù)合狀態(tài)內(nèi)部的狀態(tài)層次結(jié)構(gòu),用于將復(fù)雜的行為分解為更小的單元。嵌套狀態(tài)必須有一個(gè)入口轉(zhuǎn)換和一個(gè)出口轉(zhuǎn)換,或者其內(nèi)部轉(zhuǎn)換必須最終匯合到出口。

2.復(fù)合狀態(tài):如前所述,包含入口和出口,內(nèi)部由多個(gè)狀態(tài)和轉(zhuǎn)換組成,形成一個(gè)獨(dú)立的狀態(tài)機(jī)。

3.接點(diǎn)(Junction):用空心圓圈表示,用于在復(fù)合狀態(tài)內(nèi)部或轉(zhuǎn)換路徑中創(chuàng)建標(biāo)記點(diǎn),以便于連接或控制流程,避免復(fù)雜的箭頭交叉。

4.活動(dòng)(Activity):用橢圓或帶有邊框的矩形表示,表示狀態(tài)內(nèi)部或轉(zhuǎn)換執(zhí)行的一個(gè)有意義的操作或過程?;顒?dòng)可以嵌套在其他活動(dòng)或狀態(tài)內(nèi)部。

5.分叉(Fork)與匯合(Join):用于并發(fā)行為的建模。分叉?zhèn)螤顟B(tài)將一個(gè)控制流分裂成多個(gè)并發(fā)控制流,匯合偽狀態(tài)將多個(gè)并發(fā)控制流合并成一個(gè)。

三、UML狀態(tài)圖的設(shè)計(jì)規(guī)范

(一)繪制規(guī)則

1.結(jié)構(gòu)清晰:狀態(tài)圖應(yīng)邏輯清晰,狀態(tài)和轉(zhuǎn)換的布局應(yīng)易于理解,避免過于擁擠或混亂。通常,初態(tài)位于圖的左側(cè)或頂部,末態(tài)位于右側(cè)或底部,轉(zhuǎn)換按時(shí)間順序排列。

2.命名規(guī)范:狀態(tài)、事件、動(dòng)作和條件的命名應(yīng)簡潔、明確、具有描述性,避免使用縮寫或模糊的術(shù)語。狀態(tài)名稱應(yīng)使用名詞或名詞短語,如“訂單已接收”、“設(shè)備正在充電”。事件名稱應(yīng)使用動(dòng)詞或動(dòng)詞短語,如“提交訂單”、“收到確認(rèn)”。

3.元素一致性:圖中的符號(hào)使用應(yīng)保持一致,例如,所有初態(tài)都使用實(shí)心圓圈,所有轉(zhuǎn)換都使用帶箭頭的實(shí)線。

4.注釋說明:對(duì)于復(fù)雜的邏輯或需要額外解釋的內(nèi)容,可以使用注釋(Note)圖標(biāo)添加文本說明。注釋通過虛線連接到被解釋的元素。

5.避免循環(huán)引用:盡量避免狀態(tài)轉(zhuǎn)換形成無意義的循環(huán),除非該循環(huán)具有特定的業(yè)務(wù)意義。

6.狀態(tài)數(shù)量:單個(gè)狀態(tài)圖中的狀態(tài)數(shù)量不宜過多,如果狀態(tài)和轉(zhuǎn)換過于復(fù)雜,應(yīng)考慮分解為多個(gè)相關(guān)的狀態(tài)圖或使用更高級(jí)的建模技術(shù)。

(二)應(yīng)用步驟

1.識(shí)別關(guān)鍵對(duì)象/系統(tǒng):確定需要建模其行為的對(duì)象或系統(tǒng)單元。例如,一個(gè)電子商務(wù)平臺(tái)的“訂單”對(duì)象、一個(gè)智能設(shè)備的“電源管理”系統(tǒng)。

2.確定主要狀態(tài):分析對(duì)象/系統(tǒng)在其生命周期中經(jīng)歷的主要狀態(tài)。這些狀態(tài)應(yīng)該是可識(shí)別的、相對(duì)穩(wěn)定的時(shí)期。例如,對(duì)于“訂單”對(duì)象,主要狀態(tài)可能包括:“待支付”、“已支付”、“處理中”、“已發(fā)貨”、“已完成”、“已取消”。對(duì)于“電源管理”系統(tǒng),主要狀態(tài)可能包括:“開啟”、“關(guān)閉”、“充電中”、“放電中”、“待機(jī)”。

3.分析狀態(tài)轉(zhuǎn)換:確定對(duì)象/系統(tǒng)從一個(gè)狀態(tài)到另一個(gè)狀態(tài)的原因,即觸發(fā)轉(zhuǎn)換的事件。分析每個(gè)轉(zhuǎn)換可能伴隨的條件和動(dòng)作。例如,“訂單”對(duì)象從“待支付”到“已支付”的轉(zhuǎn)換由事件“支付成功”觸發(fā),可能伴隨動(dòng)作“更新訂單狀態(tài)”和“記錄支付信息”。從“已支付”到“處理中”的轉(zhuǎn)換由事件“訂單確認(rèn)”觸發(fā)。

4.繪制狀態(tài)圖草圖:使用紙筆或繪圖工具,初步繪制狀態(tài)圖草圖,包括主要狀態(tài)、轉(zhuǎn)換、事件和動(dòng)作??梢詴簳r(shí)忽略復(fù)合狀態(tài)和復(fù)雜的內(nèi)部細(xì)節(jié)。

5.添加內(nèi)部細(xì)節(jié)(如需):對(duì)于復(fù)雜的狀態(tài),特別是復(fù)合狀態(tài),分析其內(nèi)部行為,添加子狀態(tài)、內(nèi)部轉(zhuǎn)換、內(nèi)部事件和活動(dòng)。例如,“處理中”狀態(tài)可能包含“檢查庫存”(子狀態(tài))和“安排發(fā)貨”(子狀態(tài))。

6.定義事件和動(dòng)作:為每個(gè)轉(zhuǎn)換明確定義觸發(fā)事件、保護(hù)條件和動(dòng)作。確保事件和動(dòng)作的描述清晰、準(zhǔn)確??梢允褂脛?dòng)詞、名詞短語或簡短的描述性語句。

7.添加初始和結(jié)束狀態(tài):在圖中標(biāo)明對(duì)象的初始狀態(tài)(通常用實(shí)心圓圈表示,可以位于圖的左側(cè)或連接到第一個(gè)有效狀態(tài))和可能的結(jié)束狀態(tài)(通常用帶有圓圈的實(shí)心圓圈表示,可以位于圖的右側(cè)或連接到最終行為)。

8.驗(yàn)證和評(píng)審:與業(yè)務(wù)分析師、開發(fā)人員或其他相關(guān)人員進(jìn)行評(píng)審,檢查狀態(tài)圖的完整性、準(zhǔn)確性、一致性和可理解性。確保狀態(tài)圖正確地反映了對(duì)象/系統(tǒng)的實(shí)際行為邏輯。根據(jù)反饋進(jìn)行修改和完善。

9.文檔化:將最終的狀態(tài)圖及其關(guān)鍵說明(如注釋、命名約定)記錄在案,作為系統(tǒng)設(shè)計(jì)文檔的一部分。

四、示例

(一)簡單狀態(tài)圖示例:訂單處理流程

1.對(duì)象:在線購物訂單

2.狀態(tài)圖:

-初態(tài):待支付(InitialState)

-轉(zhuǎn)換1:`[支付成功]`→已支付(Paid)

-動(dòng)作:`{記錄支付信息}`

-轉(zhuǎn)換2:`[支付失敗]`或`[用戶取消]`→已取消(Cancelled)

-動(dòng)作:`{記錄取消原因}`

-狀態(tài):已支付

-轉(zhuǎn)換1:`[發(fā)貨請(qǐng)求]`→已發(fā)貨(Shipped)

-動(dòng)作:`{更新物流信息}`

-轉(zhuǎn)換2:`[訂單超時(shí)未處理]`→已取消(Cancelled)

-保護(hù)條件:`(time>30days)`

-狀態(tài):已發(fā)貨

-轉(zhuǎn)換1:`[用戶簽收]`→已完成(Completed)

-動(dòng)作:`{記錄簽收時(shí)間}`

-轉(zhuǎn)換2:`[物流異常]`→已取消(Cancelled)

-保護(hù)條件:`(物流狀態(tài)="丟失"or物流狀態(tài)="損壞")`

-末態(tài):已完成(FinalState)

-轉(zhuǎn)換1:`[申請(qǐng)退貨]`→待退貨處理(ReturnPending)(此示例中未展示完整退貨流程,僅為轉(zhuǎn)換示例)

-末態(tài):已取消(FinalState)

3.說明:此狀態(tài)圖展示了訂單從創(chuàng)建到最終結(jié)果(完成或取消)的主要流程和分支。

(二)復(fù)合狀態(tài)圖示例:電源管理狀態(tài)

1.對(duì)象:便攜式設(shè)備電源管理

2.狀態(tài)圖:

-初態(tài):關(guān)閉(Off)(InitialState)

-轉(zhuǎn)換1:`[電源按鈕長按]`→開啟(On)

-狀態(tài):開啟(On)

-復(fù)合狀態(tài):充電中(Charging)

-入口:`[連接電源]`

-內(nèi)部轉(zhuǎn)換1:`[充滿電]`→出口(Exit)

-動(dòng)作:`{停止充電}`

-內(nèi)部轉(zhuǎn)換2:`[用戶斷開電源]`→出口(Exit)

-動(dòng)作:`{記錄充電量}`

-內(nèi)部事件:`internal:checkBatteryLevel`

-轉(zhuǎn)換:`[lowBattery]`→開啟(On)

-動(dòng)作:`{告警(lowlevel)}`

-復(fù)合狀態(tài):放電中(Discharging)

-入口:`[出口充電]`

-內(nèi)部轉(zhuǎn)換1:`[電量耗盡]`→出口(Exit)

-動(dòng)作:`{記錄放電量}`

-內(nèi)部轉(zhuǎn)換2:`[連接電源]`→充電中(Charging)

-動(dòng)作:`{啟動(dòng)充電}`

-內(nèi)部事件:`internal:checkBatteryLevel`

-轉(zhuǎn)換:`[lowBatteryandnotOnCharge]`→待機(jī)(Standby)

-動(dòng)作:`{告警(lowlevel)}`

-出口:連接到關(guān)閉(Off)的轉(zhuǎn)換,由事件`[用戶選擇關(guān)閉]`或`[電源斷開且電量充足]`觸發(fā)。

-狀態(tài):待機(jī)(Standby)

-轉(zhuǎn)換1:`[用戶喚醒]`→開啟(On)

-轉(zhuǎn)換2:`[電源斷開且電量低]`→關(guān)閉(Off)

-保護(hù)條件:`(batteryLevel<10%)`

-末態(tài):無明確末態(tài)(設(shè)備可無限循環(huán))

3.說明:此狀態(tài)圖展示了設(shè)備電源管理的層次結(jié)構(gòu),特別是“充電中”和“放電中”這兩個(gè)復(fù)合狀態(tài)內(nèi)部的詳細(xì)行為和轉(zhuǎn)換。

五、注意事項(xiàng)

(一)狀態(tài)圖的粒度:選擇合適的狀態(tài)粒度至關(guān)重要。粒度太細(xì)會(huì)導(dǎo)致狀態(tài)圖過于復(fù)雜,難以理解和維護(hù);粒度太粗則可能丟失重要的行為細(xì)節(jié)。應(yīng)根據(jù)建模目的和對(duì)象/系統(tǒng)的復(fù)雜性來確定粒度。

(二)事件和條件的清晰性:確保所有事件和條件的命名清晰、無歧義,并且邏輯上相互一致。避免使用模糊的術(shù)語或容易引起誤解的命名。

(三)狀態(tài)轉(zhuǎn)換的完整性:對(duì)于每個(gè)狀態(tài),應(yīng)考慮所有可能的輸入事件和對(duì)應(yīng)的轉(zhuǎn)換。確保沒有遺漏重要的行為路徑,特別是異常或錯(cuò)誤情況的處理??梢允褂谩澳J(rèn)”轉(zhuǎn)換(用虛線箭頭表示)來處理未明確指定的轉(zhuǎn)換,但需謹(jǐn)慎使用。

(四)并發(fā)行為的建模:對(duì)于涉及并發(fā)行為的對(duì)象或系統(tǒng),正確使用分叉、匯合和并發(fā)狀態(tài)是關(guān)鍵。需要仔細(xì)設(shè)計(jì)并發(fā)狀態(tài)之間的同步和通信機(jī)制。

(五)與用例圖的關(guān)聯(lián):狀態(tài)圖通常與用例圖關(guān)聯(lián),一個(gè)用例的執(zhí)行可能涉及對(duì)象狀態(tài)的變化。理解用例場景有助于確定狀態(tài)圖中的哪些狀態(tài)和轉(zhuǎn)換是相關(guān)的。

(六)狀態(tài)圖的維護(hù):隨著系統(tǒng)的發(fā)展,狀態(tài)圖可能需要更新。應(yīng)建立版本控制和變更管理流程,確保狀態(tài)圖的變更得到適當(dāng)?shù)脑u(píng)審和記錄。

(七)工具支持:利用UML建模工具(如EnterpriseArchitect,VisualParadigm,StarUML等)可以提高狀態(tài)圖的繪制效率和規(guī)范性,并支持模型的一致性檢查和文檔生成。

一、概述

UML狀態(tài)圖(StateMachineDiagram)是統(tǒng)一建模語言(UML)中的一種行為圖,用于描述系統(tǒng)或?qū)ο鬆顟B(tài)隨時(shí)間變化的動(dòng)態(tài)行為。狀態(tài)圖通過狀態(tài)、轉(zhuǎn)換、事件和動(dòng)作等元素,清晰地展現(xiàn)對(duì)象在不同狀態(tài)下的響應(yīng)和轉(zhuǎn)換邏輯。本制度規(guī)定旨在規(guī)范UML狀態(tài)圖的設(shè)計(jì)、繪制和應(yīng)用標(biāo)準(zhǔn),確保其準(zhǔn)確性和一致性,便于系統(tǒng)分析和設(shè)計(jì)人員使用。

二、UML狀態(tài)圖的基本構(gòu)成

(一)核心元素

1.狀態(tài)(State):表示對(duì)象或系統(tǒng)所處的穩(wěn)定條件。

(1)初態(tài):用實(shí)心圓圈表示,位于圖的左側(cè)。

(2)末態(tài):用空心圓圈表示,位于圖的右側(cè)。

(3)內(nèi)部狀態(tài):用矩形表示,包含子狀態(tài)和轉(zhuǎn)換。

2.轉(zhuǎn)換(Transition):表示狀態(tài)之間的變化,用帶箭頭的實(shí)線表示。

(1)事件(Event):觸發(fā)轉(zhuǎn)換的輸入條件,如“點(diǎn)擊”“完成”等。

(2)動(dòng)作(Action):轉(zhuǎn)換發(fā)生時(shí)執(zhí)行的操作,用方括號(hào)表示。

3.事件(Event):包括內(nèi)部事件(InternalEvent)、外部事件(ExternalEvent)和同步事件(SynchronizationEvent)。

(1)內(nèi)部事件:在狀態(tài)內(nèi)部觸發(fā),不離開狀態(tài)。

(2)外部事件:由系統(tǒng)外部觸發(fā),導(dǎo)致狀態(tài)轉(zhuǎn)換。

(二)輔助元素

1.嵌套狀態(tài):表示狀態(tài)內(nèi)部的子狀態(tài),如“活動(dòng)1”“活動(dòng)2”。

2.復(fù)合狀態(tài):包含一個(gè)入口和出口,內(nèi)部由多個(gè)簡單狀態(tài)組成。

三、UML狀態(tài)圖的設(shè)計(jì)規(guī)范

(一)繪制規(guī)則

1.狀態(tài)圖應(yīng)從初態(tài)開始,以末態(tài)結(jié)束,箭頭方向表示狀態(tài)轉(zhuǎn)換的順序。

2.狀態(tài)內(nèi)部可包含多個(gè)子狀態(tài),但需明確主狀態(tài)和子狀態(tài)的層次關(guān)系。

3.轉(zhuǎn)換的命名應(yīng)簡潔明了,避免歧義,如“收到訂單”“取消操作”。

(二)應(yīng)用步驟

1.確定對(duì)象或系統(tǒng)的關(guān)鍵狀態(tài),如“待處理”“處理中”“完成”。

2.分析狀態(tài)之間的轉(zhuǎn)換條件,如“提交申請(qǐng)”“超時(shí)取消”。

3.繪制狀態(tài)圖,標(biāo)注事件和動(dòng)作,確保邏輯清晰。

4.驗(yàn)證狀態(tài)圖的正確性,與實(shí)際業(yè)務(wù)邏輯一致。

四、示例

(一)簡單狀態(tài)圖示例

1.對(duì)象“訂單”的狀態(tài)轉(zhuǎn)換:

-初態(tài):待支付

-轉(zhuǎn)換1:支付成功→狀態(tài):已支付

-轉(zhuǎn)換2:支付失敗→狀態(tài):待重試

-末態(tài):已取消(超時(shí)未支付)

(二)復(fù)合狀態(tài)圖示例

1.對(duì)象“用戶登錄”的復(fù)合狀態(tài):

-主狀態(tài):登錄過程

-子狀態(tài)1:輸入憑證

-子狀態(tài)2:驗(yàn)證憑證

-子狀態(tài)3:登錄成功/失敗

-轉(zhuǎn)換:輸入憑證→驗(yàn)證憑證→登錄成功/失敗

五、注意事項(xiàng)

(一)狀態(tài)圖應(yīng)避免過于復(fù)雜,狀態(tài)和轉(zhuǎn)換數(shù)量不宜過多,以免影響可讀性。

(二)狀態(tài)轉(zhuǎn)換的條件應(yīng)明確,避免出現(xiàn)模糊或冗余的轉(zhuǎn)換邏輯。

(三)定期審查和更新狀態(tài)圖,確保其與系統(tǒng)實(shí)際行為一致。

一、概述

UML狀態(tài)圖(StateMachineDiagram)是統(tǒng)一建模語言(UML)中的一種行為圖,用于描述系統(tǒng)或?qū)ο鬆顟B(tài)隨時(shí)間變化的動(dòng)態(tài)行為。狀態(tài)圖通過狀態(tài)、轉(zhuǎn)換、事件和動(dòng)作等元素,清晰地展現(xiàn)對(duì)象在不同狀態(tài)下的響應(yīng)和轉(zhuǎn)換邏輯。本制度規(guī)定旨在規(guī)范UML狀態(tài)圖的設(shè)計(jì)、繪制和應(yīng)用標(biāo)準(zhǔn),確保其準(zhǔn)確性和一致性,便于系統(tǒng)分析和設(shè)計(jì)人員使用。通過遵循本規(guī)范,可以提升模型的可讀性、可維護(hù)性,并促進(jìn)團(tuán)隊(duì)協(xié)作。狀態(tài)圖特別適用于描述具有明確生命周期或狀態(tài)轉(zhuǎn)換的對(duì)象,例如訂單處理、用戶會(huì)話、設(shè)備操作等。

二、UML狀態(tài)圖的基本構(gòu)成

(一)核心元素

1.狀態(tài)(State):表示對(duì)象或系統(tǒng)所處的穩(wěn)定條件,是系統(tǒng)行為建模的基本單元。

(1)初態(tài)(InitialState):用實(shí)心圓圈表示,通常位于圖的左側(cè)或頂部,代表對(duì)象或系統(tǒng)生命周期開始時(shí)的狀態(tài)。初態(tài)可以連接到任何有效狀態(tài)。

(2)末態(tài)(FinalState):用帶有圓圈的實(shí)心圓圈表示,通常位于圖的右側(cè)或底部,代表對(duì)象或系統(tǒng)生命周期結(jié)束或終止的狀態(tài)。一個(gè)對(duì)象可以有一個(gè)或多個(gè)末態(tài),表示不同的結(jié)束方式。

(3)處理狀態(tài)(SimpleState):用矩形表示,包含狀態(tài)名稱和一個(gè)可選的內(nèi)部區(qū)域。內(nèi)部區(qū)域可以包含子狀態(tài)、轉(zhuǎn)換、活動(dòng)(Activity)或偽狀態(tài)。處理狀態(tài)代表對(duì)象的一個(gè)穩(wěn)定、可識(shí)別的時(shí)期。

(4)復(fù)合狀態(tài)(CompositeState):用矩形表示,包含一個(gè)入口點(diǎn)(EntryPoint)、一個(gè)出口點(diǎn)(ExitPoint)和一個(gè)可選的內(nèi)部區(qū)域。復(fù)合狀態(tài)內(nèi)部可以包含子狀態(tài)(SimpleState、復(fù)合狀態(tài))、轉(zhuǎn)換、活動(dòng)、偽狀態(tài)和接點(diǎn)(Junction)。復(fù)合狀態(tài)代表一個(gè)包含內(nèi)部結(jié)構(gòu)的“宏?duì)顟B(tài)”,其行為由內(nèi)部子狀態(tài)和轉(zhuǎn)換的組合決定。

(5)特殊狀態(tài):包括初始偽狀態(tài)(Initialpseudostate)、終止偽狀態(tài)(Finalpseudostate)、活動(dòng)(Activity)、分叉(Fork)、匯合(Join)、時(shí)間約束(TimeConstraint)和并發(fā)(Concurrent)等,用于表達(dá)更復(fù)雜的行為。

2.轉(zhuǎn)換(Transition):表示狀態(tài)之間的變化,由帶箭頭的實(shí)線表示,箭頭指向目標(biāo)狀態(tài)。轉(zhuǎn)換定義了狀態(tài)轉(zhuǎn)換的觸發(fā)條件(觸發(fā)事件)和可選的動(dòng)作。

(1)觸發(fā)事件(Trigger):表示導(dǎo)致轉(zhuǎn)換發(fā)生的條件或事件,可以是具體的信號(hào)、消息、時(shí)間流逝或內(nèi)部條件滿足。觸發(fā)事件寫在方括號(hào)`[]`中。例如,`[buttonClicked]`表示按鈕點(diǎn)擊事件觸發(fā)轉(zhuǎn)換。如果轉(zhuǎn)換沒有明確的觸發(fā)事件,則表示該轉(zhuǎn)換在特定條件下總是發(fā)生。

(2)動(dòng)作(Action):表示狀態(tài)轉(zhuǎn)換發(fā)生時(shí)執(zhí)行的操作或行為,寫在花括號(hào)`{}`中。動(dòng)作可以是賦值、計(jì)算、發(fā)送消息等。例如,`{log("Transitioncompleted")}`表示在轉(zhuǎn)換發(fā)生時(shí)記錄一條日志。

(3)保護(hù)條件(GuardCondition):表示轉(zhuǎn)換發(fā)生的附加布爾條件,寫在圓括號(hào)`()()`中。只有當(dāng)保護(hù)條件為真時(shí),轉(zhuǎn)換才會(huì)發(fā)生。例如,`[buttonClicked](userLoggedIn)`表示只有當(dāng)用戶已登錄時(shí),點(diǎn)擊按鈕的轉(zhuǎn)換才會(huì)發(fā)生。

3.事件(Event):觸發(fā)轉(zhuǎn)換的輸入或內(nèi)部信號(hào),是狀態(tài)機(jī)行為的核心驅(qū)動(dòng)因素。

(1)內(nèi)部事件(InternalEvent):在狀態(tài)內(nèi)部觸發(fā),不離開狀態(tài),由`internal:`前綴標(biāo)識(shí)。內(nèi)部事件用于改變狀態(tài)機(jī)內(nèi)部的臨時(shí)條件或執(zhí)行內(nèi)部動(dòng)作,但不改變狀態(tài)機(jī)的當(dāng)前狀態(tài)。例如,`internal:timerExpired`表示內(nèi)部計(jì)時(shí)器到期的事件。

(2)外部事件(ExternalEvent):由系統(tǒng)外部觸發(fā),導(dǎo)致狀態(tài)轉(zhuǎn)換,不使用`internal:`前綴。外部事件通常來自其他對(duì)象或系統(tǒng)的消息、信號(hào)或用戶輸入。例如,`startButtonPressed`表示外部啟動(dòng)按鈕被按下的事件。

(3)時(shí)間事件(TimeEvent):基于時(shí)間的觸發(fā)條件,通常表示為`after[time]`或`onTime[time]`。例如,`after5sec`表示在5秒后觸發(fā)的事件。

(4)條件事件(ConditionEvent):基于某個(gè)條件表達(dá)式的觸發(fā),例如`[orderAmount>1000]`表示當(dāng)訂單金額大于1000時(shí)觸發(fā)的事件。

(二)輔助元素

1.嵌套狀態(tài):表示復(fù)合狀態(tài)內(nèi)部的狀態(tài)層次結(jié)構(gòu),用于將復(fù)雜的行為分解為更小的單元。嵌套狀態(tài)必須有一個(gè)入口轉(zhuǎn)換和一個(gè)出口轉(zhuǎn)換,或者其內(nèi)部轉(zhuǎn)換必須最終匯合到出口。

2.復(fù)合狀態(tài):如前所述,包含入口和出口,內(nèi)部由多個(gè)狀態(tài)和轉(zhuǎn)換組成,形成一個(gè)獨(dú)立的狀態(tài)機(jī)。

3.接點(diǎn)(Junction):用空心圓圈表示,用于在復(fù)合狀態(tài)內(nèi)部或轉(zhuǎn)換路徑中創(chuàng)建標(biāo)記點(diǎn),以便于連接或控制流程,避免復(fù)雜的箭頭交叉。

4.活動(dòng)(Activity):用橢圓或帶有邊框的矩形表示,表示狀態(tài)內(nèi)部或轉(zhuǎn)換執(zhí)行的一個(gè)有意義的操作或過程?;顒?dòng)可以嵌套在其他活動(dòng)或狀態(tài)內(nèi)部。

5.分叉(Fork)與匯合(Join):用于并發(fā)行為的建模。分叉?zhèn)螤顟B(tài)將一個(gè)控制流分裂成多個(gè)并發(fā)控制流,匯合偽狀態(tài)將多個(gè)并發(fā)控制流合并成一個(gè)。

三、UML狀態(tài)圖的設(shè)計(jì)規(guī)范

(一)繪制規(guī)則

1.結(jié)構(gòu)清晰:狀態(tài)圖應(yīng)邏輯清晰,狀態(tài)和轉(zhuǎn)換的布局應(yīng)易于理解,避免過于擁擠或混亂。通常,初態(tài)位于圖的左側(cè)或頂部,末態(tài)位于右側(cè)或底部,轉(zhuǎn)換按時(shí)間順序排列。

2.命名規(guī)范:狀態(tài)、事件、動(dòng)作和條件的命名應(yīng)簡潔、明確、具有描述性,避免使用縮寫或模糊的術(shù)語。狀態(tài)名稱應(yīng)使用名詞或名詞短語,如“訂單已接收”、“設(shè)備正在充電”。事件名稱應(yīng)使用動(dòng)詞或動(dòng)詞短語,如“提交訂單”、“收到確認(rèn)”。

3.元素一致性:圖中的符號(hào)使用應(yīng)保持一致,例如,所有初態(tài)都使用實(shí)心圓圈,所有轉(zhuǎn)換都使用帶箭頭的實(shí)線。

4.注釋說明:對(duì)于復(fù)雜的邏輯或需要額外解釋的內(nèi)容,可以使用注釋(Note)圖標(biāo)添加文本說明。注釋通過虛線連接到被解釋的元素。

5.避免循環(huán)引用:盡量避免狀態(tài)轉(zhuǎn)換形成無意義的循環(huán),除非該循環(huán)具有特定的業(yè)務(wù)意義。

6.狀態(tài)數(shù)量:單個(gè)狀態(tài)圖中的狀態(tài)數(shù)量不宜過多,如果狀態(tài)和轉(zhuǎn)換過于復(fù)雜,應(yīng)考慮分解為多個(gè)相關(guān)的狀態(tài)圖或使用更高級(jí)的建模技術(shù)。

(二)應(yīng)用步驟

1.識(shí)別關(guān)鍵對(duì)象/系統(tǒng):確定需要建模其行為的對(duì)象或系統(tǒng)單元。例如,一個(gè)電子商務(wù)平臺(tái)的“訂單”對(duì)象、一個(gè)智能設(shè)備的“電源管理”系統(tǒng)。

2.確定主要狀態(tài):分析對(duì)象/系統(tǒng)在其生命周期中經(jīng)歷的主要狀態(tài)。這些狀態(tài)應(yīng)該是可識(shí)別的、相對(duì)穩(wěn)定的時(shí)期。例如,對(duì)于“訂單”對(duì)象,主要狀態(tài)可能包括:“待支付”、“已支付”、“處理中”、“已發(fā)貨”、“已完成”、“已取消”。對(duì)于“電源管理”系統(tǒng),主要狀態(tài)可能包括:“開啟”、“關(guān)閉”、“充電中”、“放電中”、“待機(jī)”。

3.分析狀態(tài)轉(zhuǎn)換:確定對(duì)象/系統(tǒng)從一個(gè)狀態(tài)到另一個(gè)狀態(tài)的原因,即觸發(fā)轉(zhuǎn)換的事件。分析每個(gè)轉(zhuǎn)換可能伴隨的條件和動(dòng)作。例如,“訂單”對(duì)象從“待支付”到“已支付”的轉(zhuǎn)換由事件“支付成功”觸發(fā),可能伴隨動(dòng)作“更新訂單狀態(tài)”和“記錄支付信息”。從“已支付”到“處理中”的轉(zhuǎn)換由事件“訂單確認(rèn)”觸發(fā)。

4.繪制狀態(tài)圖草圖:使用紙筆或繪圖工具,初步繪制狀態(tài)圖草圖,包括主要狀態(tài)、轉(zhuǎn)換、事件和動(dòng)作??梢詴簳r(shí)忽略復(fù)合狀態(tài)和復(fù)雜的內(nèi)部細(xì)節(jié)。

5.添加內(nèi)部細(xì)節(jié)(如需):對(duì)于復(fù)雜的狀態(tài),特別是復(fù)合狀態(tài),分析其內(nèi)部行為,添加子狀態(tài)、內(nèi)部轉(zhuǎn)換、內(nèi)部事件和活動(dòng)。例如,“處理中”狀態(tài)可能包含“檢查庫存”(子狀態(tài))和“安排發(fā)貨”(子狀態(tài))。

6.定義事件和動(dòng)作:為每個(gè)轉(zhuǎn)換明確定義觸發(fā)事件、保護(hù)條件和動(dòng)作。確保事件和動(dòng)作的描述清晰、準(zhǔn)確??梢允褂脛?dòng)詞、名詞短語或簡短的描述性語句。

7.添加初始和結(jié)束狀態(tài):在圖中標(biāo)明對(duì)象的初始狀態(tài)(通常用實(shí)心圓圈表示,可以位于圖的左側(cè)或連接到第一個(gè)有效狀態(tài))和可能的結(jié)束狀態(tài)(通常用帶有圓圈的實(shí)心圓圈表示,可以位于圖的右側(cè)或連接到最終行為)。

8.驗(yàn)證和評(píng)審:與業(yè)務(wù)分析師、開發(fā)人員或其他相關(guān)人員進(jìn)行評(píng)審,檢查狀態(tài)圖的完整性、準(zhǔn)確性、一致性和可理解性。確保狀態(tài)圖正確地反映了對(duì)象/系統(tǒng)的實(shí)際行為邏輯。根據(jù)反饋進(jìn)行修改和完善。

9.文檔化:將最終的狀態(tài)圖及其關(guān)鍵說明(如注釋、命名約定)記錄在案,作為系統(tǒng)設(shè)計(jì)文檔的一部分。

四、示例

(一)簡單狀態(tài)圖示例:訂單處理流程

1.對(duì)象:在線購物訂單

2.狀態(tài)圖:

-初態(tài):待支付(InitialState)

-轉(zhuǎn)換1:`[支付成功]`→已支付(Paid)

-動(dòng)作:`{記錄支付信息}`

-轉(zhuǎn)換2:`[支付失敗]`或`[用戶取消]`→已取消(Cancelled)

-動(dòng)作:`{記錄取消原因}`

-狀態(tài):已支付

-轉(zhuǎn)換1:`[發(fā)貨請(qǐng)求]`→已發(fā)貨(Shipped)

-動(dòng)作:`{更新物流信息}`

-轉(zhuǎn)換2:`[訂單超時(shí)未處理]`→已取消(Cancelled)

-保護(hù)條件:`(time>30days)`

-狀態(tài):已發(fā)貨

-轉(zhuǎn)換1:`[用戶簽收]`→已完成(Completed)

-動(dòng)作:`{記錄簽收時(shí)間}`

-轉(zhuǎn)換2:`[物流異常]`→已取消(Cancelled)

-保護(hù)條件:`(物流狀態(tài)="丟失"or物流狀態(tài)="損壞")`

-末態(tài):已完成(FinalState)

-轉(zhuǎn)換1:`[申請(qǐng)退貨]`→待退貨處理(ReturnPending)(此示例中未展示完整退貨流程,僅為轉(zhuǎn)換示例)

-末態(tài):已取消(FinalState)

3.說明:此狀態(tài)圖展示了訂單從創(chuàng)建到最終結(jié)果(完成或取消)的主要流程和分支。

(二)復(fù)合狀態(tài)圖示例:電源管理狀態(tài)

1.對(duì)象:便攜式設(shè)備電源管理

2.狀態(tài)圖:

-初態(tài):關(guān)閉(Off)(InitialState)

-轉(zhuǎn)換1:`[電源按鈕長按]`→開啟(On)

-狀態(tài):開啟(On)

-復(fù)合狀態(tài):充電中(Charging)

-入口:`[連接電源]`

-內(nèi)部轉(zhuǎn)換1:`[充滿電]`→出口(Exit)

-動(dòng)作:`{停止充電}`

-內(nèi)部轉(zhuǎn)換2:`[用戶斷開電源]`→出口(Exit)

-動(dòng)作:`{記錄充電量}`

-內(nèi)部事件:`internal:checkBatteryLevel`

-轉(zhuǎn)換:`[lowBattery]`→開啟(On)

-動(dòng)作:`{告警(lowlevel)}`

-復(fù)合狀態(tài):放電中(Discharging)

-入口:`[出口充電]`

-內(nèi)部轉(zhuǎn)換1:`[電量耗盡]`→出口(Exit)

-動(dòng)作:`{記錄放電量}`

-內(nèi)部轉(zhuǎn)換2:`[連接電源]`→充電中(Charging)

-動(dòng)作:`{啟動(dòng)充電}`

-內(nèi)部事件:`internal:checkBatteryLevel`

-轉(zhuǎn)換:`[lowBatteryandnotOnCharge]`→待機(jī)(Standby)

-動(dòng)作:`{告警(lowlevel)}`

-出口:連接到關(guān)閉(Off)的轉(zhuǎn)換,由事件`[用戶選擇關(guān)閉]`或`[電源斷開且電量充足]`觸發(fā)。

-狀態(tài):待機(jī)(Standby)

-轉(zhuǎn)換1:`[用戶喚醒]`→開啟(On)

-轉(zhuǎn)換2:`[電源斷開且電量低]`→關(guān)閉(Off)

-保護(hù)條件:`(batteryLevel<10%)`

-末態(tài):無明確末態(tài)(設(shè)備可無限循環(huán))

3.說明:此狀態(tài)圖展示了設(shè)備電源管理的層次結(jié)構(gòu),特別是“充電中”和“放電中”這兩個(gè)復(fù)合狀態(tài)內(nèi)部的詳細(xì)行為和轉(zhuǎn)換。

五、注意事項(xiàng)

(一)狀態(tài)圖的粒度:選擇合適的狀態(tài)粒度至關(guān)重要。粒度太細(xì)會(huì)導(dǎo)致狀態(tài)圖過于復(fù)雜,難以理解和維護(hù);粒度太粗則可能丟失重要的行為細(xì)節(jié)。應(yīng)根據(jù)建模目的和對(duì)象/系統(tǒng)的復(fù)雜性來確定粒度。

(二)事件和條件的清晰性:確保所有事件和條件的命名清晰、無歧義,并且邏輯上相互一致。避免使用模糊的術(shù)語或容易引起誤解的命名。

(三)狀態(tài)轉(zhuǎn)換的完整性:對(duì)于每個(gè)狀態(tài),應(yīng)考慮所有可能的輸入事件和對(duì)應(yīng)的轉(zhuǎn)換。確保沒有遺漏重要的行為路徑,特別是異?;蝈e(cuò)誤情況的處理??梢允褂谩澳J(rèn)”轉(zhuǎn)換(用虛線箭頭表示)來處理未明確指定的轉(zhuǎn)換,但需謹(jǐn)慎使用。

(四)并發(fā)行為的建模:對(duì)于涉及并發(fā)行為的對(duì)象或系統(tǒng),正確使用分叉、匯合和并發(fā)狀態(tài)是關(guān)鍵。需要仔細(xì)設(shè)計(jì)并發(fā)狀態(tài)之間的同步和通信機(jī)制。

(五)與用例圖的關(guān)聯(lián):狀態(tài)圖通常與用例圖關(guān)聯(lián),一個(gè)用例的執(zhí)行可能涉及對(duì)象狀態(tài)的變化。理解用例場景有助于確定狀態(tài)圖中的哪些狀態(tài)和轉(zhuǎn)換是相關(guān)的。

(六)狀態(tài)圖的維護(hù):隨著系統(tǒng)的發(fā)展,狀態(tài)圖可能需要更新。應(yīng)建立版本控制和變更管理流程,確保狀態(tài)圖的變更得到適當(dāng)?shù)脑u(píng)審和記錄。

(七)工具支持:利用UML建模工具(如EnterpriseArchitect,VisualParadigm,StarUML等)可以提高狀態(tài)圖的繪制效率和規(guī)范性,并支持模型的一致性檢查和文檔生成。

一、概述

UML狀態(tài)圖(StateMachineDiagram)是統(tǒng)一建模語言(UML)中的一種行為圖,用于描述系統(tǒng)或?qū)ο鬆顟B(tài)隨時(shí)間變化的動(dòng)態(tài)行為。狀態(tài)圖通過狀態(tài)、轉(zhuǎn)換、事件和動(dòng)作等元素,清晰地展現(xiàn)對(duì)象在不同狀態(tài)下的響應(yīng)和轉(zhuǎn)換邏輯。本制度規(guī)定旨在規(guī)范UML狀態(tài)圖的設(shè)計(jì)、繪制和應(yīng)用標(biāo)準(zhǔn),確保其準(zhǔn)確性和一致性,便于系統(tǒng)分析和設(shè)計(jì)人員使用。

二、UML狀態(tài)圖的基本構(gòu)成

(一)核心元素

1.狀態(tài)(State):表示對(duì)象或系統(tǒng)所處的穩(wěn)定條件。

(1)初態(tài):用實(shí)心圓圈表示,位于圖的左側(cè)。

(2)末態(tài):用空心圓圈表示,位于圖的右側(cè)。

(3)內(nèi)部狀態(tài):用矩形表示,包含子狀態(tài)和轉(zhuǎn)換。

2.轉(zhuǎn)換(Transition):表示狀態(tài)之間的變化,用帶箭頭的實(shí)線表示。

(1)事件(Event):觸發(fā)轉(zhuǎn)換的輸入條件,如“點(diǎn)擊”“完成”等。

(2)動(dòng)作(Action):轉(zhuǎn)換發(fā)生時(shí)執(zhí)行的操作,用方括號(hào)表示。

3.事件(Event):包括內(nèi)部事件(InternalEvent)、外部事件(ExternalEvent)和同步事件(SynchronizationEvent)。

(1)內(nèi)部事件:在狀態(tài)內(nèi)部觸發(fā),不離開狀態(tài)。

(2)外部事件:由系統(tǒng)外部觸發(fā),導(dǎo)致狀態(tài)轉(zhuǎn)換。

(二)輔助元素

1.嵌套狀態(tài):表示狀態(tài)內(nèi)部的子狀態(tài),如“活動(dòng)1”“活動(dòng)2”。

2.復(fù)合狀態(tài):包含一個(gè)入口和出口,內(nèi)部由多個(gè)簡單狀態(tài)組成。

三、UML狀態(tài)圖的設(shè)計(jì)規(guī)范

(一)繪制規(guī)則

1.狀態(tài)圖應(yīng)從初態(tài)開始,以末態(tài)結(jié)束,箭頭方向表示狀態(tài)轉(zhuǎn)換的順序。

2.狀態(tài)內(nèi)部可包含多個(gè)子狀態(tài),但需明確主狀態(tài)和子狀態(tài)的層次關(guān)系。

3.轉(zhuǎn)換的命名應(yīng)簡潔明了,避免歧義,如“收到訂單”“取消操作”。

(二)應(yīng)用步驟

1.確定對(duì)象或系統(tǒng)的關(guān)鍵狀態(tài),如“

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論