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