用例圖描述了系統(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)系使用簡單的線段來描述,如圖1所示。

圖1:示例用例圖
圖字(從上到下):CD銷售系統(tǒng);查看樂隊(duì)CD的銷售統(tǒng)計(jì);樂隊(duì)經(jīng)理;查看Billboard 200排行榜報(bào)告;唱片經(jīng)理;查看特定CD的銷售統(tǒng)計(jì);檢索最新的Billboard 200排行榜報(bào)告;排行榜報(bào)告服務(wù)
用例圖通常用于表達(dá)系統(tǒng)或者系統(tǒng)范疇的高級(jí)功能。如圖1所示,可以很容易看出該系統(tǒng)所提供的功能。這個(gè)系統(tǒng)允許樂隊(duì)經(jīng)理查看樂隊(duì)CD的銷售統(tǒng)計(jì)報(bào)告以及Billboard 200排行榜報(bào)告。它也允許唱片經(jīng)理查看特定CD的銷售統(tǒng)計(jì)報(bào)告和這些CD在Billboard 200排行榜的報(bào)告。這個(gè)圖還告訴我們,系統(tǒng)將通過一個(gè)名為"排行榜報(bào)告服務(wù)"的外部系統(tǒng)提供Billboard排行榜報(bào)告。
此外,在用例圖中,沒有列出的用例表明了該系統(tǒng)不能完成的功能。例如,它不能提供給樂隊(duì)經(jīng)理收聽Billboard 200上不同專輯中的歌曲的途徑 -- 也就是說,系統(tǒng)沒有引用一個(gè)叫做"收聽Billboard 200上的歌曲"的用例。這種缺少不是一件小事。在用例圖中提供清楚的、簡要的用例描述,項(xiàng)目贊助商就很容易看出系統(tǒng)是否提供了必須的功能。
2 類圖
類圖表示不同的實(shí)體(人、事物和數(shù)據(jù))如何彼此相關(guān);換句話說,它顯示了系統(tǒng)的靜態(tài)結(jié)構(gòu)。類圖可用于表示邏輯類,邏輯類通常就是業(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è)部分的矩形來描述,如圖2所示。最上面的部分顯示類的名稱,中間部分包含類的屬性,最下面的部分包含類的操作(或者說"方法")。

圖2:類圖中的示例類對(duì)象
根據(jù)我的經(jīng)驗(yàn),幾乎每個(gè)開發(fā)人員都知道這個(gè)類圖是什么,但是我發(fā)現(xiàn)大多數(shù)程序員都不能正確地描述類的關(guān)系。對(duì)于像圖3這樣的類圖,您應(yīng)該使用帶有頂點(diǎn)指向父類的箭頭的線段來繪制繼承關(guān)系1,并且箭頭應(yīng)該是一個(gè)完全的三角形。如果兩個(gè)類都彼此知道對(duì)方,則應(yīng)該使用實(shí)線來表示關(guān)聯(lián)關(guān)系;如果只有其中一個(gè)類知道該關(guān)聯(lián)關(guān)系,則使用開箭頭表示。

圖3:一個(gè)完整的類圖,包括了圖2所示的類對(duì)象
在圖3中,我們同時(shí)看到了繼承關(guān)系和兩個(gè)關(guān)聯(lián)關(guān)系。CDSalesReport類繼承自Report類。一個(gè)CDSalesReport類與一個(gè)CD類關(guān)聯(lián),但是CD類并不知道關(guān)于CDSalesReport類的任何信息。CD類和Band類都彼此知道對(duì)方,兩個(gè)類彼此都可以與一個(gè)或者多個(gè)對(duì)方類相關(guān)聯(lián)。
一個(gè)類圖可以整合其他許多概念,這將在本系列文章的后續(xù)文章中介紹。
活動(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ù)頭腦的人們往往能夠更快速地理解它們。
活動(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所示。
圖6:活動(dòng)圖,具有兩個(gè)泳道,表示兩個(gè)對(duì)象的活動(dòng)控制:樂隊(duì)經(jīng)理,以及報(bào)告工具
圖字(沿箭頭方向):樂隊(duì)經(jīng)理;報(bào)告工具;選擇"查看樂隊(duì)的銷售報(bào)告";檢索該樂隊(duì)經(jīng)理所管理的樂隊(duì);顯示報(bào)告條件選擇屏幕;選擇要查看其銷售報(bào)告的樂隊(duì);從銷售數(shù)據(jù)庫檢索銷售數(shù)據(jù);顯示銷售報(bào)告。
該活動(dòng)圖中有兩個(gè)泳道,因?yàn)橛袃蓚€(gè)對(duì)象控制著各自的活動(dòng):樂隊(duì)經(jīng)理和報(bào)告工具。整個(gè)過程首先從樂隊(duì)經(jīng)理選擇查看他的樂隊(duì)銷售報(bào)告開始。然后報(bào)告工具檢索并顯示他管理的所有樂隊(duì),并要求他從中選擇一個(gè)樂隊(duì)。在樂隊(duì)經(jīng)理選擇一個(gè)樂隊(duì)之后,報(bào)告工具就檢索銷售信息并顯示銷售報(bào)告。該活動(dòng)圖表明,顯示報(bào)告是整個(gè)過程中的最后一步。