新手指南 UML用例圖初探
本文和大家重點(diǎn)討論一下UMLUML用例圖,UML建模工具有很多值得學(xué)習(xí)的地方,你對(duì)UMLUML用例圖是否熟悉,這里就和大家分享一下,相信通過(guò)本文的學(xué)習(xí)你對(duì)UMLUML用例圖的概念一定會(huì)有深刻的理解。
UML用例圖
在實(shí)際工作中,大部分程序員很少接觸到需求分析,即使有需求分析,也是草草了事,沒(méi)有用正規(guī)的方式來(lái)表達(dá),所以一般程序員使用UML用例圖的機(jī)會(huì)是不多的。但是卻又常常在各種媒體上看見(jiàn)UML用例圖,于是對(duì)一種常常出現(xiàn),自己又不太熟悉的技術(shù),會(huì)產(chǎn)生恐懼。如果說(shuō)對(duì)MDA或者CORBA這樣的技術(shù)產(chǎn)生恐懼還是值得的話,對(duì)UML用例圖產(chǎn)生恐懼是非常不值的。因?yàn)镸DA和CORBA這樣的技術(shù)也許要花上半年的時(shí)間才能夠初步了解,而克服UML用例圖恐懼癥,則只要不到一天的時(shí)間。
UML用例圖初感
UML是一組圖示符號(hào)的標(biāo)準(zhǔn)。所謂圖示符號(hào),就是一組定義好的圖示,它們可以表達(dá)定義好的各種意思。用UML進(jìn)行軟件建模,就是用規(guī)定好的符號(hào)畫圖,這些圖表達(dá)了開(kāi)發(fā)人員腦中的軟件系統(tǒng)。用UML進(jìn)行軟件建模,其難度并不比我們小時(shí)候上的美術(shù)課更難。在美術(shù)課上,一個(gè)圓形加上四根線條表示太陽(yáng),一個(gè)三角形加上一個(gè)矩形表示房子;同理,在UML的用例圖中,一個(gè)橢圓表示用例,一個(gè)小人表示參與者。我并不認(rèn)為它們之間有質(zhì)的區(qū)別,想到我對(duì)這種小學(xué)生畫圖課恐懼了幾年,不由得感到羞愧。
用例圖是UML的九個(gè)圖中較為重要和常用的一種圖。常常用于軟件開(kāi)發(fā)的需求分析階段,也能用于軟件的系統(tǒng)測(cè)試階段。簡(jiǎn)單的來(lái)說(shuō),用例圖是描述系統(tǒng)的外部視圖。
在開(kāi)始設(shè)計(jì)一個(gè)軟件系統(tǒng)時(shí)(更廣義的情況下,可以用來(lái)設(shè)計(jì)任何系統(tǒng)),需要一種手段來(lái)發(fā)現(xiàn)系統(tǒng)的功能,用例圖雖然是圖示,但是這些圖示隱含了一種啟發(fā)系統(tǒng)功能的手段。其實(shí)所有的UML圖都只包含圖示和標(biāo)準(zhǔn),并不包含方法,但是它們往往隱含了某種方法。UML和軟件開(kāi)發(fā)方法的關(guān)系,很類似于漢字和語(yǔ)文的關(guān)系。
用例圖包含了三種基本的概念:用例、角色和系統(tǒng)。它們可以組合起來(lái)表達(dá)系統(tǒng)的外部視圖。而且這種表達(dá)方式是如此直觀和簡(jiǎn)單。
第一張UML用例圖
畫用例圖是一件很簡(jiǎn)單的事情,而且感覺(jué)還很舒適,因?yàn)橛美龍D簡(jiǎn)潔、直觀。雖然用例圖不能像HelloWorld一樣運(yùn)行,也不能生成代碼,不過(guò)畫一張清晰的用例圖還是很有成就感的。
我使用的工具是Eclipse+EclipseUML插件,功能不如Rose,但是是開(kāi)源而且免費(fèi)的(EclipseUML有free版也有企業(yè)版),而且效果也不錯(cuò)。第一張用例圖如下:
色(客戶和保險(xiǎn)銷售員)以及三個(gè)用例(簽訂保險(xiǎn)單、銷售統(tǒng)計(jì)資料、客戶數(shù)據(jù)資料),另外還有四個(gè)連接線以及一個(gè)注釋。如果在紙上或者合適的工具中,畫這樣一張用例大概只需要五分鐘吧。不過(guò)僅僅畫出來(lái)是沒(méi)有意義的,需要弄清楚其背后真正的含義才行。
理解UML用例圖
可以這樣簡(jiǎn)單的理解用例圖中的一些概念,系統(tǒng)(System)指的是軟件系統(tǒng),它可以包含一些用例,并界定系統(tǒng)的邊界,邊界之內(nèi)的屬于系統(tǒng)的功能和行為,邊界之外的則不是系統(tǒng)所關(guān)心的內(nèi)容。系統(tǒng)規(guī)定了一個(gè)具有某些功能的黑盒子,在系統(tǒng)之外看到的僅僅是這個(gè)系統(tǒng)的功能,而不能看到系統(tǒng)的內(nèi)部細(xì)節(jié)。這一點(diǎn)也是用例圖經(jīng)常被用來(lái)做系統(tǒng)測(cè)試的原因。當(dāng)然這些測(cè)試一般是黑盒測(cè)試。
◆角色(Actor)是與系統(tǒng)中的用例交互的一些實(shí)體,在實(shí)際情況中,角色可以是人,也可以是其他系統(tǒng)或者硬件設(shè)備。在畫用例圖的過(guò)程中,角色往往是第一個(gè)被確定的,因?yàn)橄到y(tǒng)或者用例在開(kāi)始時(shí)是模糊的,但是參與系統(tǒng)的角色是最容易明晰的。有了角色之后,根據(jù)角色與系統(tǒng)的交互,以及角色要求的功能,可以進(jìn)一步確定系統(tǒng)和用例。
◆用例(Usecase)指的是系統(tǒng)的功能,它是系統(tǒng)某個(gè)功能的所有執(zhí)行動(dòng)作的集合。在UML圖示中它是一個(gè)橢圓,但是具體分析用例的時(shí)候需要給出這個(gè)用例的所有執(zhí)行動(dòng)作的步驟。例如上圖中的“簽訂保險(xiǎn)單”用例,就可以分為幾個(gè)步驟:第一,客戶發(fā)出保險(xiǎn)單請(qǐng)求;第二,系統(tǒng)給出保險(xiǎn)單樣式表;第三,用戶填寫保險(xiǎn)單樣式表;第四,系統(tǒng)檢查用戶提交的保險(xiǎn)單格式是否規(guī)范;第五,如果不規(guī)范則返回第二步,如果規(guī)范則給保險(xiǎn)單銷售員發(fā)出消息;第六,保險(xiǎn)單銷售員填寫保險(xiǎn)單;第七,保險(xiǎn)單銷售員將填寫好的保險(xiǎn)單加入數(shù)據(jù)庫(kù),并將客戶資料輸入客戶數(shù)據(jù)庫(kù)。當(dāng)然,以上步驟僅僅是我想象的,我還從來(lái)沒(méi)有見(jiàn)過(guò)什么“保險(xiǎn)單”,這次過(guò)了一把癮。
◆連接(Assocation)是角色與用例的連接,表達(dá)此角色可以初始化此用例。
◆注釋(Note)可以添加到任何地方,對(duì)用例圖的不同部分加以說(shuō)明。
【編輯推薦】