用UML設(shè)計(jì)Java應(yīng)用程序之需求分析
本節(jié)向大家介紹一下如何用UML設(shè)計(jì)Java應(yīng)用程序, 這里就以圖書館借閱和預(yù)定圖書和雜志的應(yīng)用程序?yàn)槔虼蠹抑v解,主要有需求分析和域分析等內(nèi)容,相信本節(jié)的學(xué)習(xí)一定會(huì)讓你對(duì)UML設(shè)計(jì)有新的理解。
用UML設(shè)計(jì)Java應(yīng)用程序
本文的案例學(xué)習(xí)提供了一個(gè)例子,說明如何將UML用在現(xiàn)實(shí)中。一個(gè)處理圖書館借閱和預(yù)定圖書和雜志的應(yīng)用程序,可以大到足夠檢驗(yàn)UML解決現(xiàn)實(shí)問題能力的程度。但是如果太大的話,則不適合在雜志上發(fā)表。
在分析模型中,用用例和域分析描述了應(yīng)用程序。我們進(jìn)一步把它擴(kuò)展成設(shè)計(jì)模型。在設(shè)計(jì)模型中,我們描述了典型的技術(shù)解決方案細(xì)節(jié)。***,我們編寫了一段Java代碼(代碼連同完整的分析和設(shè)計(jì)模型放在網(wǎng)上,以一種包括評(píng)估版在內(nèi)的RationalRose能夠識(shí)別的格式在線提供。)
必須注意,這里只是一個(gè)可行的解決方案??赡軙?huì)有許多其他的解決方案。沒有絕對(duì)正確的方案。當(dāng)然,有的方案更好一些,但只有不斷的實(shí)踐和努力的工作才能掌握相應(yīng)的技能。
1.需求(Requirements)
典型地,由系統(tǒng)最終用戶的代表寫出文本形式的需求規(guī)范文檔。UML設(shè)計(jì)中對(duì)于該圖書館應(yīng)用程序來說,需求規(guī)范文檔應(yīng)該類似于這樣:
1.這是一個(gè)圖書館支持系統(tǒng);
2.圖書館將圖書和雜志借給借書者。借書者已經(jīng)預(yù)先注冊(cè),圖書和雜志也預(yù)先注冊(cè);
3.圖書館負(fù)責(zé)新書的購(gòu)買。每一本圖書都購(gòu)進(jìn)多本書。當(dāng)舊書超期或破舊不堪時(shí),從圖書館中去掉。
4.圖書管理員是圖書館的員工。他們的工作就是和讀者打交道并在軟件系統(tǒng)的支持下工作。
5.借閱人可以預(yù)定當(dāng)前沒有的圖書和雜志。這樣,當(dāng)他所預(yù)定的圖書和雜志歸還回來或購(gòu)進(jìn)時(shí),就通知預(yù)定人。當(dāng)預(yù)定了某書的借書者借閱了該書后,預(yù)定就取消。或者通過顯式的取消過程強(qiáng)行取消預(yù)定。
6.圖書館能夠容易地建立、修改和刪除標(biāo)題、借書者、借閱信息和預(yù)定信息。
7.系統(tǒng)能夠運(yùn)行在所有流行的技術(shù)環(huán)境中,包括Unix,Windows和OS/2,并應(yīng)有一個(gè)現(xiàn)代的圖形用戶界面(GUI)。
8.系統(tǒng)容易擴(kuò)展新功能。
系統(tǒng)的***版不必考慮預(yù)定的圖書到達(dá)后通知預(yù)定人的功能,也不必檢查借書過期的情況。
2.分析(Analysis)
系統(tǒng)分析的目的是捕獲和描述所有的系統(tǒng)需求,并且建立一個(gè)模型來定義系統(tǒng)中主要的域類。通過系統(tǒng)分析達(dá)到開發(fā)者和需求者的理解和溝通。因此,分析一般都是分析員和用戶協(xié)作的產(chǎn)物。在這個(gè)階段,程序開發(fā)者不應(yīng)該考慮代碼或程序的問題;它只是理解需求和實(shí)現(xiàn)系統(tǒng)的***步。
2.1需求分析(RequirementsAnalysis)
UML設(shè)計(jì)中需求分析的***步是確定系統(tǒng)能夠做什么?誰來使用這個(gè)系統(tǒng)?這些分別叫角色(actors)和用例(usecases)。用例描述了系統(tǒng)提供什么樣的功能。通過閱讀和分析文檔,以及和潛在的用戶討論系統(tǒng)來分析用例。#p#
圖書館的角色定為圖書管理員和借書人。圖書管理員是軟件系統(tǒng)的用戶;而借書者則是來借閱或預(yù)定圖書雜志的客戶。偶爾,圖書管理員或圖書館的其他工作人員也可能是一個(gè)借書者。借書者不直接和系統(tǒng)交互,借書人的功能由圖書管理員代為執(zhí)行。
圖書館系統(tǒng)中的用例有:
1.借書
2.還書
3.預(yù)定
4.取消預(yù)定
5.增加標(biāo)題
6.修改或刪除標(biāo)題
7.增加書目
8.刪除書目
9.增加借書者
10.修改或刪除借書者
由于一本書通常有多個(gè)備份,因此系統(tǒng)必須將書的標(biāo)題和書目的概念區(qū)分開。
UML設(shè)計(jì)中圖書館系統(tǒng)分析的結(jié)果寫在UML用例圖中。每一個(gè)用例都附帶有文本文檔,描述用例和客戶交互的細(xì)節(jié)。文本是通過與客戶討論得到的。用例“借書”描述如下:
1.如果借閱者沒有預(yù)定:
◆確定標(biāo)題
◆確定該標(biāo)題下有效的書目
◆確定借書者
◆圖書館將書借出
◆登記一個(gè)新的借閱
2.如果借閱者有預(yù)定:
◆確定借書人
◆確定標(biāo)題
◆確定該標(biāo)題下有效的書目
◆圖書館將相應(yīng)的書目借出
◆登記一個(gè)新的借閱
◆取消預(yù)定
除了定義系統(tǒng)的功能需求之外,在分析過程中用例用于檢查是否有相應(yīng)的域類已經(jīng)被定義,然后他們可以被用在設(shè)計(jì)階段,確保解決方案可以有效地處理系統(tǒng)功能??梢栽陧樞驁D中可視化實(shí)現(xiàn)細(xì)節(jié)。
圖1:角色和用例。分析中的***步就是指出系統(tǒng)能被用來做什么,誰將去使用它。它們分別就是用例和角色。所有的用例必須始于角色,而且有些用例也結(jié)束于角色。角色是位于你所工作的系統(tǒng)外部的人或其他系統(tǒng)。一臺(tái)打印機(jī)或一個(gè)數(shù)據(jù)庫(kù)都可能是一個(gè)角色。本系統(tǒng)有兩個(gè)角色:借閱者和圖書管理員。通過與用戶或客戶的討論,可以將每一個(gè)用例用文字進(jìn)行說明。
2.2域分析(DomainAnalysis)
UML設(shè)計(jì)時(shí)系統(tǒng)分析也詳細(xì)地列出了域(系統(tǒng)中的關(guān)鍵類)。為了導(dǎo)出一個(gè)域分析,可以閱讀規(guī)范文檔(specifications)和用例,查找哪一些概念應(yīng)該被系統(tǒng)處理。或者組織一個(gè)集體討論,在用戶及領(lǐng)域?qū)<夜餐膮⑴c下指出系統(tǒng)中必須處理的關(guān)鍵概念,以及它們之間的關(guān)系。
圖書館系統(tǒng)中的域類如下:borrowerinformation(如此命名是為了與用例圖中的角色borrower區(qū)分開來),title,booktitle,magazinetitle,item,reservation和loan。這些類以及它們之間的關(guān)系記錄在類圖文檔中,如圖2所示。域類定義為Businessobject版型,Businessobject版型是一個(gè)用戶自定義的版型,指定該類的對(duì)象是關(guān)鍵域的一部分,并且應(yīng)該在系統(tǒng)中持久存儲(chǔ)。
其中有些類有UML狀態(tài)圖,用來顯示這些類的對(duì)象可能具有的不同狀態(tài),以及觸發(fā)他們的狀態(tài)發(fā)生改變的事件。該例子中有狀態(tài)圖的類是item和title類。
用例lenditem(借閱者沒有預(yù)定的情況)的順序圖顯示在圖3中。所有用例的順序圖都可從在線模型中查到。
圖2:域類結(jié)構(gòu)。域分析詳細(xì)說明了系統(tǒng)中的關(guān)鍵類。對(duì)每一個(gè)對(duì)象而言,如果它調(diào)用了其他對(duì)象的方法,那么在他們之間就用一條直線連結(jié)起來,以顯示他們之間的關(guān)系。每一個(gè)代表類的四邊形被分成了三部分,最頂層包括類的名稱,中間一層是類的屬性,***層是類的方法。類之間的直線是關(guān)聯(lián),用來指出一個(gè)對(duì)象調(diào)用另一個(gè)對(duì)象的方法。如果再仔細(xì)看,將會(huì)發(fā)現(xiàn)在Loan和Item之間的關(guān)聯(lián)關(guān)系中靠近Loan的一端有“0..1”,這代表關(guān)聯(lián)的重?cái)?shù)。重?cái)?shù)“0..1表示Item可以感知0個(gè)到1個(gè)loan。其他可能出現(xiàn)的重?cái)?shù)還有:“0..*”表示0或多;“1”表示就是1;“0”表示就是0,“1..*”表示1或多。
當(dāng)對(duì)順序圖建模時(shí),必須提供窗體和對(duì)話框作為人機(jī)交互的界面。在本分析當(dāng)中,只要知道借書、預(yù)定和還書需要窗體就可以了。在此,詳細(xì)的界面不必考慮。
為了把系統(tǒng)中的窗體類和域類分開,所有的窗體類組織在一起放在GUIPackage包中。域類組織在一起放在BusinessPackage包中。
圖3:Lenditem場(chǎng)景的順序圖。UML設(shè)計(jì)中場(chǎng)景是從頭到尾實(shí)現(xiàn)一個(gè)用例的一次特定的過程。場(chǎng)景總是始于角色,而角色是屬于系統(tǒng)外部的。場(chǎng)景描繪了從所有角色的觀點(diǎn)出發(fā),完成一次系統(tǒng)動(dòng)作的完整過程。UML在用順序圖來圖示場(chǎng)景。本用例圖顯示了在借閱者沒有預(yù)定圖書的情況下的Lend用例。橫在圖的頂部的是參與交互的對(duì)象。自上而下表示時(shí)間的流逝。首先,圖書管理員嘗試去查找標(biāo)題。標(biāo)有“LendingWindow”的是用戶界面,在分析階段作為一個(gè)粗略的對(duì)象。橫在順序圖中的每一個(gè)箭頭都是一次方法的調(diào)用,箭頭的首端是調(diào)用的對(duì)象,箭頭的末端是被調(diào)用的對(duì)象。
【編輯推薦】
- UML設(shè)計(jì)的九種圖例及其區(qū)別
- UML設(shè)計(jì)中五大視圖解析
- 實(shí)例講解UML對(duì)象圖使用
- 軟件設(shè)計(jì)過程中面向?qū)ο骍ML技術(shù)如何使用
- 使用UML設(shè)計(jì)數(shù)據(jù)庫(kù)應(yīng)用