解析常用的六大UML圖
本文和大家重點(diǎn)討論一下最常用六大UML圖,用例圖描述了系統(tǒng)提供的一個(gè)功能單元,類圖表示不同的實(shí)體(人、事物和數(shù)據(jù))如何彼此相關(guān);換句話說,它顯示了系統(tǒng)的靜態(tài)結(jié)構(gòu)。至于其他圖的作用請(qǐng)看下面詳細(xì)介紹。
最常用六大UML圖
1.用例圖
用例圖描述了系統(tǒng)提供的一個(gè)功能單元。用例圖的主要目的是幫助開發(fā)團(tuán)隊(duì)以一種可視化的方式理解系統(tǒng)的功能需求,包括基于基本流程的"角色"(actors,也就是與系統(tǒng)交互的其他實(shí)體)關(guān)系,以及系統(tǒng)內(nèi)用例之間的關(guān)系。用例圖一般表示出用例的組織關(guān)系--要么是整個(gè)系統(tǒng)的全部用例,要么是完成具有功能(例如,所有安全管理相關(guān)的用例)的一組用例。要在用例圖上顯示某個(gè)用例,可繪制一個(gè)橢圓,然后將用例的名稱放在橢圓的中心或橢圓下面的中間位置。要在用例圖上繪制一個(gè)角色(表示一個(gè)系統(tǒng)用戶),可繪制一個(gè)人形符號(hào)。角色和用例之間的關(guān)系使用簡(jiǎn)單的線段來描述,
2.類圖
類圖表示不同的實(shí)體(人、事物和數(shù)據(jù))如何彼此相關(guān);換句話說,它顯示了系統(tǒng)的靜態(tài)結(jié)構(gòu)。六大UML圖中類圖可用于表示邏輯類,邏輯類通常就是業(yè)務(wù)人員所談及的事物種類--搖滾樂隊(duì)、CD、廣播??;或者貸款、住房抵押、汽車信貸以及利率。類圖還可用于表示實(shí)現(xiàn)類,實(shí)現(xiàn)類就是程序員處理的實(shí)體。實(shí)現(xiàn)類圖或許會(huì)與邏輯類圖顯示一些相同的類。然而,實(shí)現(xiàn)類圖不會(huì)使用相同的屬性來描述,因?yàn)樗芸赡芫哂袑?duì)諸如Vector和HashMap這種事物的引用。
類在類圖上使用包含三個(gè)部分的矩形來描述,最上面的部分顯示類的名稱,中間部分包含類的屬性,最下面的部分包含類的操作(或者說"方法")。
3.序列圖
序列圖顯示具體用例(或者是用例的一部分)的詳細(xì)流程。它幾乎是自描述的,并且顯示了流程中中不同對(duì)象之間的調(diào)用關(guān)系,同時(shí)還可以很詳細(xì)地顯示對(duì)不同對(duì)象的不同調(diào)用。
序列圖有兩個(gè)維度:垂直維度以發(fā)生的時(shí)間順序顯示消息/調(diào)用的序列;水平維度顯示消息被發(fā)送到的對(duì)象實(shí)例。
六大UML圖中序列圖的繪制非常簡(jiǎn)單。橫跨圖的頂部,每個(gè)框(參見圖4)表示每個(gè)類的實(shí)例(對(duì)象)。在框中,類實(shí)例名稱和類名稱之間用空格/冒號(hào)/空格來分隔,例如,myReportGenerator:ReportGenerator。如果某個(gè)類實(shí)例向另一個(gè)類實(shí)例發(fā)送一條消息,則繪制一條具有指向接收類實(shí)例的開箭頭的連線,并把消息/方法的名稱放在連線上面。對(duì)于某些特別重要的消息,您可以繪制一條具有指向發(fā)起類實(shí)例的開箭頭的虛線,將返回值標(biāo)注在虛線上。就我而言,我總喜歡繪制出包括返回值的虛線,這些額外的信息可以使得序列圖更易于閱讀。
4.狀態(tài)圖
狀態(tài)圖表示某個(gè)類所處的不同狀態(tài)和該類的狀態(tài)轉(zhuǎn)換信息。有人可能會(huì)爭(zhēng)論說每個(gè)類都有狀態(tài),但不是每個(gè)類都應(yīng)該有一個(gè)狀態(tài)圖。只對(duì)"感興趣的"狀態(tài)的類(也就是說,在系統(tǒng)活動(dòng)期間具有三個(gè)或更多潛在狀態(tài)的類)才進(jìn)行狀態(tài)圖描述。
六大UML圖中狀態(tài)圖的符號(hào)集包括5個(gè)基本元素:初始起點(diǎn),它使用實(shí)心圓來繪制;狀態(tài)之間的轉(zhuǎn)換,它使用具有開箭頭的線段來繪制;狀態(tài),它使用圓角矩形來繪制;判斷點(diǎn),它使用空心圓來繪制;以及一個(gè)或者多個(gè)終止點(diǎn),它們使用內(nèi)部包含實(shí)心圓的圓來繪制。要繪制狀態(tài)圖,首先繪制起點(diǎn)和一條指向該類的初始狀態(tài)的轉(zhuǎn)換線段。狀態(tài)本身可以在圖上的任意位置繪制,然后只需使用狀態(tài)轉(zhuǎn)換線條將它們連接起來。
閱讀序列圖也非常簡(jiǎn)單。從左上角啟動(dòng)序列的"驅(qū)動(dòng)"類實(shí)例開始,然后順著每條消息往下閱讀。記?。弘m然圖4所示的例子序列圖顯示了每條被發(fā)送消息的返回消息,但這只是可選的。
5.活動(dòng)圖
活動(dòng)圖表示在處理某個(gè)活動(dòng)時(shí),兩個(gè)或者更多類對(duì)象之間的過程控制流?;顒?dòng)圖可用于在業(yè)務(wù)單元的級(jí)別上對(duì)更高級(jí)別的業(yè)務(wù)過程進(jìn)行建模,或者對(duì)低級(jí)別的內(nèi)部類操作進(jìn)行建模。根據(jù)我的經(jīng)驗(yàn),活動(dòng)圖最適合用于對(duì)較高級(jí)別的過程建模,比如公司當(dāng)前在如何運(yùn)作業(yè)務(wù),或者業(yè)務(wù)如何運(yùn)作等。這是因?yàn)榕c序列圖相比,活動(dòng)圖在表示上"不夠技術(shù)性的",但有業(yè)務(wù)頭腦的人們往往能夠更快速地理解它們。
六大UML圖中活動(dòng)圖的符號(hào)集與狀態(tài)圖中使用的符號(hào)集類似。像狀態(tài)圖一樣,活動(dòng)圖也從一個(gè)連接到初始活動(dòng)的實(shí)心圓開始?;顒?dòng)是通過一個(gè)圓角矩形(活動(dòng)的名稱包含在其內(nèi))來表示的?;顒?dòng)可以通過轉(zhuǎn)換線段連接到其他活動(dòng),或者連接到判斷點(diǎn),這些判斷點(diǎn)連接到由判斷點(diǎn)的條件所保護(hù)的不同活動(dòng)。結(jié)束過程的活動(dòng)連接到一個(gè)終止點(diǎn)(就像在狀態(tài)圖中一樣)。作為一種選擇,活動(dòng)可以分組為泳道(swimlane),泳道用于表示實(shí)際執(zhí)行活動(dòng)的對(duì)象。
6.組件圖
組件圖提供系統(tǒng)的物理視圖。它的用途是顯示系統(tǒng)中的軟件對(duì)其他軟件組件(例如,庫(kù)函數(shù))的依賴關(guān)系。組件圖可以在一個(gè)非常高的層次上顯示,從而僅顯示粗粒度的組件,也可以在組件包層次2上顯示。
組件圖的建模最適合通過例子來描述。圖7顯示了4個(gè)組件:ReportingTool、BillboardService、Servlet2.2API和JDBCAPI。從ReportingTool組件指向BillboardService、Servlet2.2API和JDBCAPI組件的帶箭頭的線段,表示ReportingTool依賴于那三個(gè)組件。
【編輯推薦】
- UML解惑:圖說UML六大關(guān)系
- 深入剖析建模工具UML中有哪些UML圖
- 面向?qū)ο笾邪男︰ML圖及每件圖的作用
- 學(xué)習(xí)筆記 用Visio畫UML圖類結(jié)構(gòu)圖(進(jìn)階篇)
- 揭秘UML對(duì)象圖和類圖的六大關(guān)系