UML基礎(chǔ) 解析動態(tài)UML模型圖
本文和大家重點討論一下UML模型圖,九種UML模型圖分為三大類:結(jié)構(gòu)分類、動態(tài)行為和模型管理,結(jié)構(gòu)分類包括用例圖、類圖、對象圖、構(gòu)件圖和部署圖,動態(tài)行為包括狀態(tài)圖、活動圖、順序圖和協(xié)作圖,模型管理則包含類圖。本文主要介紹一下動態(tài)UML模型圖。
UML模型圖
UML定義了九種UML模型圖:用例圖(UseCaseView)、類圖(ClassDiagram)、對象圖(ObjectDiagram)、構(gòu)件圖(ComponentDiagram)、部署圖(DeploymentDiagram)、狀態(tài)圖(StateChartDiagram)、活動圖(ActivityDiagram)、序列圖(SequenceDiagram)以及協(xié)作圖(CollaborationDiagram)。這九種UML模型圖各有側(cè)重,如用例圖側(cè)重描述用戶需求,類圖側(cè)重描述系統(tǒng)具體實現(xiàn);描述的方面都不相同,如類圖描述的是系統(tǒng)的結(jié)構(gòu),序列圖描述的是系統(tǒng)的行為;抽象的層次也不同,如構(gòu)件圖描述系統(tǒng)的模塊結(jié)構(gòu),抽象層次較高,類圖是描述具體模塊的結(jié)構(gòu),抽象層次一般,對象圖描述了具體的模塊實現(xiàn),抽象層次較低。
在有的文獻(xiàn)書籍中,將這九種UML模型圖分為三大類:結(jié)構(gòu)分類、動態(tài)行為和模型管理,結(jié)構(gòu)分類包括用例圖、類圖、對象圖、構(gòu)件圖和部署圖,動態(tài)行為包括狀態(tài)圖、活動圖、順序圖和協(xié)作圖,模型管理則包含類圖。本文則從動態(tài)和靜態(tài)的角度分別介紹UML的九種UML模型圖。
1.動態(tài)UML模型圖
動態(tài)行為UML模型圖描述了系統(tǒng)隨時間變化的行為。動態(tài)UML模型圖包括:用例圖、狀態(tài)圖、活動圖、順序圖和協(xié)作圖。
1.1用例圖
用例圖從用戶的角度來描述系統(tǒng)的行為和特征。用例圖一般是用來進(jìn)行系統(tǒng)的需求分析的工具。
用例圖中首先要明確的概念就是用例。用例是系統(tǒng)的一個功能單元,描述了參與者與系統(tǒng)發(fā)生的一次交互行為。例如:銀行的ATM自動提款機(jī)系統(tǒng),用戶提款就是一個用例。
用例圖有以下幾種模型元素:用例(UseCase)、參與者(Actor)、關(guān)聯(lián)關(guān)系(Association)、包含關(guān)系(Include)、擴(kuò)展關(guān)系(Extend)以及泛化關(guān)系(Generalization)。用例是以一個橢圓形來表示,橢圓中心是用例的名稱;參與者就是與所要建模的系統(tǒng)交互的外部用戶、進(jìn)程或其他系統(tǒng),參與者是以一個人形的圖標(biāo)表示;關(guān)聯(lián)關(guān)系描述參與者與其需要交互的用例之間的通信路徑,用一條實線段表示;包含關(guān)系描述一個用例利用另一個用例完成某個過程,用一個帶箭頭的虛線段并在虛線段上以“《include》”作為標(biāo)識來表示,箭頭指向被包含的用例;擴(kuò)展關(guān)系描述一個用例在原有的另一個用例的基礎(chǔ)上,擴(kuò)展了那個用例的部分功能,和包含關(guān)系類似,也是以一個帶箭頭的虛線段表示,不同的是虛線段上顯示的是“《extend》”,箭頭指向被擴(kuò)展的用例;泛化關(guān)系描述用例之間的一般和特殊的關(guān)系,特殊用例是在繼承了一般用例的特性的基礎(chǔ)上添加了新的特性,泛化關(guān)系和擴(kuò)展關(guān)系有相似之處,不同的是擴(kuò)展關(guān)系的需要明確標(biāo)明被擴(kuò)展用例的擴(kuò)展點,擴(kuò)展用例只能擴(kuò)展這些擴(kuò)展點,泛化關(guān)系用一個帶有空心三角箭頭的實線段表示。
1.2狀態(tài)圖
UML模型圖中狀態(tài)圖以狀態(tài)的概念描述對象、子系統(tǒng)、系統(tǒng)在生命周期中的各種行為,簡單的說就是一個狀態(tài)圖只描述某一個對象(可以是類、程序模塊、系統(tǒng))的行為。通過狀態(tài)圖可以知道一個對象、子系統(tǒng)、系統(tǒng)的各種狀態(tài)及其收到的消息對其狀態(tài)的影響。世界萬物都有可以描述的狀態(tài),因此都可以通過狀態(tài)圖來描述他們的行為,狀態(tài)圖具有很強(qiáng)的表達(dá)能力。
狀態(tài)圖有以下幾種常用的模型元素:狀態(tài)(State)、轉(zhuǎn)換(Transition)、起始狀態(tài)(StartState)、終止?fàn)顟B(tài)(EndState)。狀態(tài)描述一個對象的生命周期中某個時間段的特征,狀態(tài)是用圓角的矩形表示;轉(zhuǎn)換描述狀態(tài)間的轉(zhuǎn)移,用一個帶箭頭的實線段表示,還可以給轉(zhuǎn)換添加標(biāo)注,通過標(biāo)注來描述引起狀態(tài)轉(zhuǎn)移的事件、條件和要執(zhí)行的操作,標(biāo)注的格式為:事件名[條件]/操作,標(biāo)注的每個部分都可以省略;起始狀態(tài)描述對象生命周期的開始階段,用一個黑色的圓表示,有時為了表述清楚,在不產(chǎn)生混淆概念的情況下,可以省去起始狀態(tài);終止?fàn)顟B(tài)描述對象生命周期的終止階段,用一個帶圓形外框的黑色圓表示,一個狀態(tài)圖可以有多個終止?fàn)顟B(tài),有時為了表述清楚,在不產(chǎn)生混淆概念的情況下,可以省去終止?fàn)顟B(tài)。
1.3活動圖
活動圖是通過一系列活動描述對象的行為,對象可以是程序、模塊、子系統(tǒng)、系統(tǒng)。通過活動圖,可以了解所描述對象的要進(jìn)行的各種任務(wù)和過程。
UML模型圖中活動圖常用的模型元素包括:活動(Activity)、起始點(Start)、終止點(End)、轉(zhuǎn)換(Transition)、對象(Object)、條件判斷(Decision)、同步條(SynchronizationBar)、信息流和泳道(Swinlane)?;顒用枋龅氖窍到y(tǒng)要完成的一個任務(wù)或要進(jìn)行的一個過程,是活動圖中的一個原子活動,活動用一個圓角的矩形表示,并標(biāo)上活動名;起始點描述活動圖的開始狀態(tài),與狀態(tài)圖類似,用一個黑色的圓標(biāo)識,活動圖可以有多個起始點;終止點描述活動圖的終止?fàn)顟B(tài),與狀態(tài)圖類似,用一個帶圓圈的黑色圓表示,活動圖可以有多個終止點;轉(zhuǎn)換描述活動之間的轉(zhuǎn)換,也就是被描述對象的控制流,轉(zhuǎn)換用帶箭頭的實線段表示,箭頭指向轉(zhuǎn)向的活動,可以在轉(zhuǎn)換上用文字標(biāo)識轉(zhuǎn)換發(fā)生的條件;對象是活動圖中參與的對象,它可以發(fā)送信號給活動或是接收活動的信號,也可以表示活動的輸入/輸出結(jié)果,對象的表示和對象圖中的表示相同。
條件判斷描述活動間轉(zhuǎn)換的分支,只有一個流入的信息流,不同的條件下輸出的信息流有不同的流向,條件判斷用一個菱形表示;同步條描述活動之間的同步,一般有多個信息流流入,多個信息流流出,必須是流入的信息流都到達(dá),流出的信息流才能同時流出,同步條用一條較粗的水平的或是垂直的實線段表示;信息流描述活動和對象的交互關(guān)系,對象可以作為活動的輸入/輸出,也可以作為一個實體,接收活動的信號或是向活動發(fā)送信號,信息流用帶箭頭的虛線段表示,箭頭標(biāo)識信息流的方向;泳道描述的是活動圖中的活動的分組,通常,可以將活動按照某種標(biāo)準(zhǔn)分組,泳道在UML活動圖中的表示就是在橫向上將活動圖劃分出一個縱向的區(qū)域,同組的活動和對象都在這個區(qū)域中,區(qū)域之間用虛線分隔。
1.4順序圖
順序圖通過描述對象之間的交互來表達(dá)被描述對象的行為。順序圖重點強(qiáng)調(diào)對象交互的時間性順序性。與前面介紹的UML模型圖可以隨意組織模型元素不同,順序圖有一定的結(jié)構(gòu),可以將順序圖看成一個二維坐標(biāo),縱向上表示的是不同的對象,橫向上是順序的時間
順序圖常用的模型元素有:對象(Object)和消息(Message)。對象是順序圖描述的對象中的一個子對象,對象的表示和對象圖的類似,但是順序圖中的對象只放置在圖中對象所在的縱向區(qū)域的頂端,同時有一條向下延伸的虛線,表示對象的生命線,在對象正在執(zhí)行動作(如向其它對象發(fā)送消息)的區(qū)間,生命線的虛線就被一個矩形方塊代替,用來表示此時對象處于激活狀態(tài),在對象生命線末尾用一個“×”標(biāo)識對象生命期的結(jié)束;消息是對象間通訊的信息,可以是控制信息、數(shù)據(jù)信息等,消息可以分為簡單消息、同步消息、異步消息和返回消息,簡單消息標(biāo)識對象間的一般消息,沒有具體的細(xì)節(jié),只描述了對象間的一次通訊,簡單消息用一個帶箭頭的實線段表示,同步消息描述的是消息的發(fā)送方發(fā)送了消息之后,必須收到回復(fù)消息才能進(jìn)行后續(xù)的動作,同步消息用帶實心三角箭頭的實線段表示,異步消息描述的是消息的發(fā)送方在發(fā)送了消息之后就能進(jìn)行后續(xù)動作,不需要等待回復(fù)消息,返回消息描述的是從同步消息激活的動作返回到同步消息發(fā)送者的消息,返回消息用帶箭頭的虛線段表示。
1.5協(xié)作圖
UML模型圖中協(xié)作圖描述在一定的語境中一組對象以及用來實現(xiàn)某些功能的對象之間的相互作用和對象之間的關(guān)系。協(xié)作圖可以看成是在對象圖的基礎(chǔ)上,加入了對象之間的消息通訊以描述對象之間的交互。與順序圖不同,協(xié)作圖重點是在空間上描述對象的交互。
協(xié)作圖除了具有對象圖的模型元素之外,就是加入了消息(Message),消息是對象之間的通訊,從而實現(xiàn)對象的交互,消息可以分為:指向源的簡單消息、指向目的的簡單消息、指向源的異步消息、指向目的的異步消息、指向源的同步消息、指向目的的同步消息,指向源和指向目的都是表示簡單消息的流向,只是圖形表示的指向不同而已,指向源的簡單消息和指向目的的簡單消息都用帶箭頭的線段表示,指向源的簡單消息只指向左邊邊,指向目的的簡單消息只指向右邊,指向源的異步消息用帶有下半個箭頭的實線段表示,指向目的的異步消息用帶有上半個箭頭的實線段表示,指向源的同步消息和指向目的的同步消息用帶實心三角箭頭的實線段表示,指向源的同步消息只指向左邊,指向目的的同步消息只指向右邊。
【編輯推薦】
- 深入剖析靜態(tài)UML模型圖
- 術(shù)語匯編 UML模型圖組成解析
- 九種UML模型圖及其功能詳解
- 解析UML中五類UML模型圖
- 用UML模型實現(xiàn)大型實時監(jiān)控應(yīng)用軟件