實例解析四大常見UML圖用法
本文和大家加重點討論一下常用UML圖的問題,上節(jié)我們介紹了用例圖、類圖、序列圖,本文主要就向大家介紹一下狀態(tài)圖,活動圖,組件圖和部署圖。
常用UML圖
狀態(tài)圖
狀態(tài)圖表示某個類所處的不同狀態(tài)和該類的狀態(tài)轉(zhuǎn)換信息。有人可能會爭論說每個類都有狀態(tài),但不是每個類都應(yīng)該有一個狀態(tài)圖。只對"感興趣的"狀態(tài)的類(也就是說,在系統(tǒng)活動期間具有三個或更多潛在狀態(tài)的類)才進行狀態(tài)圖描述。
如圖5所示,常用UML圖中狀態(tài)圖的符號集包括5個基本元素:初始起點,它使用實心圓來繪制;狀態(tài)之間的轉(zhuǎn)換,它使用具有開箭頭的線段來繪制;狀態(tài),它使用圓角矩形來繪制;判斷點,它使用空心圓來繪制;以及一個或者多個終止點,它們使用內(nèi)部包含實心圓的圓來繪制。要繪制狀態(tài)圖,首先繪制起點和一條指向該類的初始狀態(tài)的轉(zhuǎn)換線段。狀態(tài)本身可以在圖上的任意位置繪制,然后只需使用狀態(tài)轉(zhuǎn)換線條將它們連接起來。
圖5:顯示類通過某個功能系統(tǒng)的各種狀態(tài)的狀態(tài)圖
圖5中的狀態(tài)圖顯示了它們可以表達的一些潛在信息。例如,從中可以看出貸款處理系統(tǒng)最初處于LoanApplication狀態(tài)。當(dāng)批準(zhǔn)前(pre-approval)過程完成時,根據(jù)該過程的結(jié)果,或者轉(zhuǎn)到LoanPre-approved狀態(tài),或者轉(zhuǎn)到LoanRejected狀態(tài)。這個判斷(它是在轉(zhuǎn)換過程期間做出的)使用一個判斷點來表示--即轉(zhuǎn)換線條間的空心圓。通過該狀態(tài)圖可知,如果沒有經(jīng)過LoanClosing狀態(tài),貸款不可能從LoanPre-Approved狀態(tài)進入LoaninMaintenance狀態(tài)。而且,所有貸款都將結(jié)束于LoanRejected或者LoaninMaintenance狀態(tài)。
活動圖
常用UML圖中活動圖表示在處理某個活動時,兩個或者更多類對象之間的過程控制流。活動圖可用于在業(yè)務(wù)單元的級別上對更高級別的業(yè)務(wù)過程進行建模,或者對低級別的內(nèi)部類操作進行建模。根據(jù)我的經(jīng)驗,活動圖最適合用于對較高級別的過程建模,比如公司當(dāng)前在如何運作業(yè)務(wù),或者業(yè)務(wù)如何運作等。這是因為與序列圖相比,活動圖在表示上"不夠技術(shù)性的",但有業(yè)務(wù)頭腦的人們往往能夠更快速地理解它們。
活動圖的符號集與狀態(tài)圖中使用的符號集類似。像狀態(tài)圖一樣,活動圖也從一個連接到初始活動的實心圓開始。活動是通過一個圓角矩形(活動的名稱包含在其內(nèi))來表示的。活動可以通過轉(zhuǎn)換線段連接到其他活動,或者連接到判斷點,這些判斷點連接到由判斷點的條件所保護的不同活動。結(jié)束過程的活動連接到一個終止點(就像在狀態(tài)圖中一樣)。作為一種選擇,活動可以分組為泳道(swimlane),泳道用于表示實際執(zhí)行活動的對象,如圖6所示。
圖6:活動圖,具有兩個泳道,表示兩個對象的活動控制:樂隊經(jīng)理,以及報告工具
圖字(沿箭頭方向):樂隊經(jīng)理;報告工具;選擇"查看樂隊的銷售報告";檢索該樂隊經(jīng)理所管理的樂隊;顯示報告條件選擇屏幕;選擇要查看其銷售報告的樂隊;從銷售數(shù)據(jù)庫檢索銷售數(shù)據(jù);顯示銷售報告。
該活動圖中有兩個泳道,因為有兩個對象控制著各自的活動:樂隊經(jīng)理和報告工具。整個過程首先從樂隊經(jīng)理選擇查看他的樂隊銷售報告開始。然后報告工具檢索并顯示他管理的所有樂隊,并要求他從中選擇一個樂隊。在樂隊經(jīng)理選擇一個樂隊之后,報告工具就檢索銷售信息并顯示銷售報告。該活動圖表明,顯示報告是整個過程中的最后一步。
組件圖
常用UML圖中組件圖提供系統(tǒng)的物理視圖。它的用途是顯示系統(tǒng)中的軟件對其他軟件組件(例如,庫函數(shù))的依賴關(guān)系。組件圖可以在一個非常高的層次上顯示,從而僅顯示粗粒度的組件,也可以在組件包層次2上顯示。
組件圖的建模最適合通過例子來描述。圖7顯示了4個組件:ReportingTool、BillboardService、Servlet2.2API和JDBCAPI。從ReportingTool組件指向BillboardService、Servlet2.2API和JDBCAPI組件的帶箭頭的線段,表示ReportingTool依賴于那三個組件。
圖7:組件圖顯示了系統(tǒng)中各種軟件組件的依賴關(guān)系
部署圖
部署圖表示該軟件系統(tǒng)如何部署到硬件環(huán)境中。常用UML圖中部署圖的用途是顯示該系統(tǒng)不同的組件將在何處物理地運行,以及它們將如何彼此通信。因為部署圖是對物理運行情況進行建模,系統(tǒng)的生產(chǎn)人員就可以很好地利用這種圖。
部署圖中的符號包括組件圖中所使用的符號元素,另外還增加了幾個符號,包括節(jié)點的概念。一個節(jié)點可以代表一臺物理機器,或代表一個虛擬機器節(jié)點(例如,一個大型機節(jié)點)。要對節(jié)點進行建模,只需繪制一個三維立方體,節(jié)點的名稱位于立方體的頂部。所使用的命名約定與序列圖中相同:[實例名稱]:[實例類型](例如,"w3reporting.myco.com:ApplicationServer")。
圖8:部署圖
由于ReportingTool組件繪制在IBMWebSphere內(nèi)部,后者又繪制在節(jié)點w3.reporting.myco.com內(nèi)部,因而我們知道,用戶將通過運行在本地機器上的瀏覽器來訪問ReportingTool,瀏覽器通過公司intranet上的HTTP協(xié)議與ReportingTool建立連接。
圖8中的部署圖表明,用戶使用運行在本地機器上的瀏覽器訪問ReportingTool,并通過公司intranet上的HTTP協(xié)議連接到ReportingTool組件。這個工具實際運行在名為w3reporting.myco.com的ApplicationServer上。這個圖還表明ReportingTool組件繪制在IBMWebSphere內(nèi)部,后者又繪制在w3.reporting.myco.com節(jié)點內(nèi)部。ReportingTool使用Java語言通過IBMDB2數(shù)據(jù)庫的JDBC接口連接到它的報告數(shù)據(jù)庫上,然后該接口又使用本地DB2通信方式,與運行在名為db1.myco.com的服務(wù)器上實際的DB2數(shù)據(jù)庫通信。除了與報告數(shù)據(jù)庫通信外,ReportTool組件還通過HTTPS上的SOAP與BillboardService進行通信。
結(jié)束語
盡管本文僅提供了對常用UML圖的簡要介紹,但還是鼓勵大家把從這里學(xué)到的基本信息應(yīng)用到自己的項目中,同時更深入地鉆研UML。已經(jīng)有多種軟件工具可以幫助您把UML圖集成到軟件開發(fā)過程中,不過即使沒有自動化的工具,您也可以使用白板上的標(biāo)記或者紙和筆來手工繪制UML圖,仍然會獲益匪淺。
【編輯推薦】
- 解析常用UML圖中用例圖,類圖,序列圖
- 全面認識九種基本的UML模型圖
- 繪制UML圖時應(yīng)避免的六大問題
- UML部署圖繪制及應(yīng)用說明
- 面向?qū)ο笾邪男︰ML圖及每件圖的作用