UML語(yǔ)言的建模圖書(shū)館_第1頁(yè)
UML語(yǔ)言的建模圖書(shū)館_第2頁(yè)
UML語(yǔ)言的建模圖書(shū)館_第3頁(yè)
UML語(yǔ)言的建模圖書(shū)館_第4頁(yè)
UML語(yǔ)言的建模圖書(shū)館_第5頁(yè)
已閱讀5頁(yè),還剩17頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、UML語(yǔ)言的建模1. UML語(yǔ)言概述1.1 面向?qū)ο竺嫦驅(qū)ο笫且环N認(rèn)識(shí)客觀世界的世界觀,這種世界觀將客觀世界看成是有許多不同種類(lèi)的對(duì)象構(gòu)成的,每個(gè)對(duì)象有自己的內(nèi)部狀態(tài)和運(yùn)動(dòng)規(guī)律,不同對(duì)象之間的相互聯(lián)系、相互作用就構(gòu)成了完整的客觀世界。面向?qū)ο笫菑慕Y(jié)構(gòu)組織的角度去模擬客觀世界的一種方法,這種方法的基本著眼點(diǎn)是構(gòu)成客觀世界的那些成分-對(duì)象。對(duì)象是現(xiàn)實(shí)世界中個(gè)體或事物的抽象表示,是其屬性和相關(guān)操作的封裝。屬性表示對(duì)象的性質(zhì),屬性值規(guī)定了對(duì)象所有可能的狀態(tài)。對(duì)象的操作是指該對(duì)象可以展現(xiàn)的外部服務(wù)。類(lèi)是某些對(duì)象的共同特性的表示,它描述了這些對(duì)象內(nèi)部是如何構(gòu)造的。相同類(lèi)的對(duì)象在它們的操作和它們的信息結(jié)構(gòu)兩

2、個(gè)方面都有相同的定義。在面向?qū)ο笙到y(tǒng)中,每個(gè)對(duì)象都屬于一個(gè)類(lèi)。面向?qū)ο蠹夹g(shù)具有以下的基本特征:抽象性、封裝性、繼承性、多態(tài)性。面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言也多種多樣:20世紀(jì)60年代,出現(xiàn)了最早的面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言Simula67語(yǔ)言,具有了類(lèi)和對(duì)象的概念,被公認(rèn)為是面向?qū)ο笳Z(yǔ)言的鼻祖。隨后又推出了純面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言,如美國(guó)Xerox Palo Alto研究中心推出的Smalltalk,它完整地體現(xiàn)并進(jìn)一步豐富了面向?qū)ο蟮母拍?。進(jìn)而出現(xiàn)了混合型面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言,如 C+,這類(lèi)語(yǔ)言一般是在其他語(yǔ)言的基礎(chǔ)上開(kāi)發(fā)出來(lái)的。還有與人工智能語(yǔ)言結(jié)合形成的面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言,如LOOPS、Flavors

3、和CLOS。以及適合網(wǎng)絡(luò)應(yīng)用的面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言,如 Java語(yǔ)言等。1.2 UML語(yǔ)言 UML (Unified Modeling Language)又稱(chēng)統(tǒng)一建模語(yǔ)言或標(biāo)準(zhǔn)建模語(yǔ)言,是一種面向?qū)ο蟮慕UZ(yǔ)言,它是運(yùn)用統(tǒng)一的、標(biāo)準(zhǔn)化的標(biāo)記和定義實(shí)現(xiàn)對(duì)軟件系統(tǒng)進(jìn)行面向?qū)ο蟮拿枋龊徒!?UML是OOA和OOD的常用工具。使用UML來(lái)構(gòu)建軟件的面向?qū)ο蟮能浖こ痰倪^(guò)程,就是一個(gè)對(duì)系統(tǒng)進(jìn)行不斷精化的建模的過(guò)程。這些模型包括用例模型、分析模型、設(shè)計(jì)模型,然后,我們需要使用具體的計(jì)算機(jī)語(yǔ)言來(lái)建立系統(tǒng)的實(shí)現(xiàn)模型。當(dāng)然,在整個(gè)軟件工程中,我們還需要建立系統(tǒng)的測(cè)試模型,以保證軟件產(chǎn)品的質(zhì)量。使用面向?qū)ο蟮墓?/p>

4、具來(lái)構(gòu)建系統(tǒng),就應(yīng)該使用面向?qū)ο蟮能浖こ谭椒?。然我,我們?jīng)常會(huì)發(fā)現(xiàn),在實(shí)際的開(kāi)發(fā)過(guò)程中,很多開(kāi)發(fā)人員雖然能夠理解UML的所有圖形,卻仍然不能得心應(yīng)手的使用UML來(lái)構(gòu)建整個(gè)項(xiàng)目,其很大的原因,是仍然在使用原有的軟件工程方法,而不清楚如何使用UML來(lái)建立系統(tǒng)的這些模型,不清楚分析和設(shè)計(jì)的區(qū)別,以及他們之間的轉(zhuǎn)化。應(yīng)用軟件系統(tǒng),就其本質(zhì)來(lái)說(shuō),是使用計(jì)算機(jī)對(duì)現(xiàn)實(shí)世界進(jìn)行的數(shù)字化模擬。應(yīng)用軟件的制造過(guò)程,按照UML的方法,就是建立這一系列模型的過(guò)程。本文將就一個(gè)圖書(shū)館系統(tǒng),說(shuō)明如何使用UML來(lái)對(duì)系統(tǒng)進(jìn)行這一系列的建模。2. UML語(yǔ)言的建模關(guān)于這個(gè)圖書(shū)館系統(tǒng),基本的需求比較簡(jiǎn)單,就是允許學(xué)生可以在圖書(shū)

5、館借閱和歸還圖書(shū),另外,也可以通過(guò)網(wǎng)絡(luò)或者圖書(shū)館的終端來(lái)查閱和預(yù)訂書(shū)。當(dāng)然,圖書(shū)館管理員也可以對(duì)圖書(shū)進(jìn)行管理。為了簡(jiǎn)化系統(tǒng),我們沒(méi)有把圖書(shū)館中的人員作細(xì)分。2.1 用例模型系統(tǒng)需求的獲取用例模型定義系統(tǒng)做什么,是用來(lái)獲取系統(tǒng)需求的有效手段。用例模型由“角色”和“用例”組成。我們?cè)跇?gòu)建一個(gè)用例的時(shí)候,通常要做的第一件事情是識(shí)別角色,或者說(shuō),參與者。然后我們需要識(shí)別系統(tǒng)為參與者提供的服務(wù),或者說(shuō),參與者的行為,也就是用例。最后,我們確定角色和用例之間的關(guān)系。在這個(gè)圖書(shū)館系統(tǒng)中,我們可以識(shí)別出的角色有學(xué)生和圖書(shū)管理員。整個(gè)用例模型包含的用例有:借書(shū)、還書(shū)、查閱圖書(shū)、預(yù)訂圖書(shū),以及圖書(shū)維護(hù)。用例模型可

6、以用用例圖表示如下:確定有效用例的關(guān)鍵是,檢查用例是否包含了一個(gè)完整的功能。用例不能定的過(guò)細(xì),不能把一個(gè)完整的功能的一個(gè)部分作為一個(gè)用例,也不能在一個(gè)用例中包含過(guò)多的功能。例如,用戶(hù)的登錄。學(xué)生在預(yù)定圖書(shū)的時(shí)候,可能會(huì)需要首先登錄系統(tǒng),這是系統(tǒng)的一個(gè)功能。但是,這個(gè)功能只是預(yù)定圖書(shū)這個(gè)完整的功能中的一個(gè)步驟,或者說(shuō)一個(gè)子功能,就不適于做成一個(gè)用例。另一方面,借書(shū)和還書(shū),都是相對(duì)完整的功能,如果把這兩個(gè)用例合并成一個(gè)類(lèi)似于“處理圖書(shū)”的用例,顯然是不能明確的表達(dá)用例需要表達(dá)的含義的。2.2 描述用例需要了解的是,使用UML進(jìn)行系統(tǒng)建模,并非只是意味著畫(huà)UML圖形,對(duì)UML圖的文檔說(shuō)明是同樣重要的

7、。學(xué)習(xí)UML,不僅僅要學(xué)習(xí)UML圖形,相應(yīng)的文檔描述方法也同樣要學(xué)習(xí),也同樣重要。在描述用例時(shí),我們可以用文字來(lái)描述,也可以用其他圖形來(lái)描述,例如,順序圖或者活動(dòng)圖等等。下面給出了一個(gè)RUP中推薦的描述用例的完整的結(jié)構(gòu):w 名稱(chēng)。名稱(chēng)無(wú)疑應(yīng)該表明用戶(hù)的意圖或用例的用途,如“研究班招生”。 w 標(biāo)識(shí)符 可選。唯一標(biāo)識(shí)符,如 "UC1701",在項(xiàng)目的其他元素(如類(lèi)模型)中可用它來(lái)引用這個(gè)用例。 w 說(shuō)明。概述用例的幾句話。 w 參與者 可選。與此用例相關(guān)的參與者列表。盡管這則信息包含在用例本身中,但在沒(méi)有用例圖時(shí),它有助于增加對(duì)該用例的理解。 w 狀態(tài) 可選。指示用例的狀態(tài),

8、通常為以下幾種之一:進(jìn)行中、等待審查、通過(guò)審查或未通過(guò)審查。 w 頻率。參與者訪問(wèn)此用例的頻率。這是一個(gè)自由式問(wèn)題,如用戶(hù)每次錄訪問(wèn)一次或每月一次。 w 前置條件。一個(gè)條件列表,如果其中包含條件,則這些條件必須在訪問(wèn)用例之前得到滿(mǎn)足。 w 后置條件。一個(gè)條件列表,如果其中包含條件,則這些條件將在用例成功完成以后得到滿(mǎn)足。 w 被擴(kuò)展的用例 可選。此用例所擴(kuò)展的用例(如果存在)。擴(kuò)展關(guān)聯(lián)是一種廣義關(guān)系,其中擴(kuò)展用例接續(xù)基用例的行為。這是通過(guò)擴(kuò)展用例向基用例的操作序列中插入附加的操作序列來(lái)實(shí)現(xiàn)的。這總是使用帶有 <<extend>> 的用例關(guān)聯(lián)來(lái)建模的。 w 被包含的用例

9、可選。此用例所包含用例的列表。包含關(guān)聯(lián)是一種廣義關(guān)系,它表明對(duì)處于另一個(gè)用例之中的用例所描述的行為的包含關(guān)系。這總是使用帶有 <<include>> 的用例關(guān)聯(lián)來(lái)建模的。也稱(chēng)為使用或具有 (has-a) 關(guān)系。 w 假設(shè) 可選。對(duì)編寫(xiě)此用例時(shí)所創(chuàng)建的域的任何重要假設(shè)。您應(yīng)該在一定的時(shí)候檢驗(yàn)這些假設(shè),或者將它們變?yōu)闆Q策的一部分,或者將它們添加到操作的基本流程或可選流程中。 w 基本操作流程。參與者在用例中所遵循的主邏輯路徑。因?yàn)樗枋隽水?dāng)各項(xiàng)工作都正常進(jìn)行時(shí)用例的工作方式,所以通常稱(chēng)其為適當(dāng)路徑 (happy path) 或主路徑 (main path) 。 w 可選操作

10、流程。用例中很少使用的邏輯路徑,那些在變更工作方式、出現(xiàn)異常或發(fā)生錯(cuò)誤的情況下所遵循的路徑。 w 修改歷史記錄 可選。關(guān)于用例的修改時(shí)間、修改原因和修改人的詳細(xì)信息。 w 問(wèn)題 可選。如果存在,則為與此用例的開(kāi)發(fā)相關(guān)的問(wèn)題或操作項(xiàng)目的列表。 w 決策。關(guān)鍵決策的列表,這些決策通常由您的 SME 作出,并屬于用例的內(nèi)容。將這些決策記錄下來(lái)對(duì)于維護(hù)團(tuán)體記憶庫(kù) (group memory) 是相當(dāng)重要的。下面,我們對(duì)借書(shū)這個(gè)用例來(lái)做描述:名稱(chēng):借書(shū)”。 說(shuō)明:學(xué)生在圖書(shū)館挑選好需要的圖書(shū)后,通過(guò)圖書(shū)管理員把書(shū)借回去。 參與者:學(xué)生,圖書(shū)管理員頻率:每天可能會(huì)有很多次。最繁忙的情況是,借書(shū)的人非常多,

11、按照現(xiàn)在的速度,大約每分鐘完成一個(gè)人的結(jié)束工作。 前置條件:無(wú)后置條件:修改所借出的圖書(shū)的剩余數(shù)量。假設(shè):借書(shū)者總是從圖書(shū)館找到書(shū),然后才能拿書(shū)辦理借書(shū)手續(xù),因此,總是有足夠的書(shū)可以出借。 基本操作流程:借書(shū)成功。1) 學(xué)生將所借圖書(shū)和借書(shū)證交給圖書(shū)管理員2) 圖書(shū)管理員將學(xué)生借書(shū)證號(hào)碼和所借圖書(shū)輸入系統(tǒng)3) 系統(tǒng)校對(duì)借書(shū)信息,比對(duì)該學(xué)生以往借書(shū)情況和當(dāng)前借 書(shū)情況,如果不存在不允許借書(shū)的情況,則記錄借書(shū)交易的信息,并且修改相應(yīng)的館藏圖書(shū)的數(shù)量信息。4) 如果該學(xué)生已經(jīng)預(yù)訂了這本圖書(shū),則撤銷(xiāo)該預(yù)定。5) 報(bào)告交易成功。可選操作流程:所借圖書(shū)超出最大借書(shū)數(shù)量。1) 學(xué)生將所借圖書(shū)和借書(shū)證交給圖書(shū)

12、管理員2) 圖書(shū)管理員將學(xué)生借書(shū)證號(hào)碼和所借圖書(shū)輸入系統(tǒng)3) 系統(tǒng)校對(duì)借書(shū)信息,比對(duì)該學(xué)生以往借書(shū)情況和當(dāng)前借書(shū)情況,發(fā)現(xiàn)已超出最大借書(shū)數(shù)量,則停止當(dāng)前交易,并且提示用戶(hù)錯(cuò)誤原因。4) 圖書(shū)管理員可以應(yīng)學(xué)生的意見(jiàn),減少借書(shū)數(shù)量,并重新提交系統(tǒng)。流程活動(dòng)圖:見(jiàn)圖一。圖一:借書(shū)活動(dòng)圖問(wèn)題:暫無(wú)。 決策:略。上面,我們就這個(gè)用例做了一個(gè)比較詳細(xì)的描述。按部就班,我們就可以逐步把整個(gè)系統(tǒng)的用例模型完成。2.3 靜態(tài)模型的建立進(jìn)行分析建模的第一步,通常是識(shí)別對(duì)象,然后提取出類(lèi)??紤]著名的MVC模式,我們需要識(shí)別實(shí)體、控制和邊界三種對(duì)象。按照MVC模式來(lái)為識(shí)別對(duì)象做指導(dǎo),是非常好的做法。對(duì)象識(shí)別的結(jié)果,就

13、是我們所需要的靜態(tài)模型,通常表現(xiàn)為類(lèi)圖。我們首先識(shí)別出實(shí)體對(duì)象,這些對(duì)象通常來(lái)說(shuō)是比較明顯的,例如系統(tǒng)中的角色,系統(tǒng)需要處理的資料,如本系統(tǒng)中需要處理的圖書(shū)資料等;有些實(shí)體對(duì)象需要稍微分析一下才能得到,例如,在本系統(tǒng)中,為了記錄圖書(shū)借還的信息,我們可能需要一個(gè)對(duì)象來(lái)專(zhuān)門(mén)記錄這一信息。這些對(duì)象就是所謂的Modal(實(shí)體類(lèi))。然后我們需要識(shí)別為了完成系統(tǒng)業(yè)務(wù)邏輯而需要的業(yè)務(wù)邏輯對(duì)象,以及同用戶(hù)進(jìn)行交互的界面類(lèi),在MVC模式中,他們分別對(duì)應(yīng)于Control(控制類(lèi))和View(邊界類(lèi))。在分析階段,這些對(duì)象通常都按照比較自然的方式來(lái)組織,例如,為了完成一個(gè)業(yè)務(wù)功能,我們通常需要一個(gè)控制類(lèi)和一個(gè)邊界類(lèi)

14、,控制類(lèi)執(zhí)行業(yè)務(wù)邏輯,邊界類(lèi)同客戶(hù)進(jìn)行交互。當(dāng)然,這不是絕對(duì)的,在進(jìn)行進(jìn)一步深入的分析后,這些類(lèi)可能會(huì)被分解和合并。一口不能把所有的飯都吃掉,系統(tǒng)分析也是這樣。我們需要一個(gè)一個(gè)用例的來(lái)進(jìn)行分析。現(xiàn)在,我們首先來(lái)分析借書(shū)這個(gè)用例。在這個(gè)用例中,我們首先可以識(shí)別出一些直接的對(duì)象,包括圖書(shū)管理員(BookAdmin)、學(xué)生(Student)、圖書(shū)(Book),然后,稍作分析,我們會(huì)發(fā)現(xiàn)我們需要一個(gè)實(shí)體對(duì)象來(lái)記錄圖書(shū)的借還信息(BorrowInfo)。最后,我們發(fā)現(xiàn),在借書(shū)的過(guò)程中,我們會(huì)使用到預(yù)定圖書(shū)的信息(SubscribrInfo)。到這一步,我們基本完成了實(shí)體對(duì)象的識(shí)別。然后,我們發(fā)現(xiàn)我們需要

15、一個(gè)借書(shū)的控制類(lèi)(Borrow)來(lái)執(zhí)行借書(shū)的動(dòng)作,以及一個(gè)用戶(hù)界面(BorrowInterface)來(lái)接受用戶(hù)的輸入。這樣,初步的模型我們就可以建立了。 圖二:借書(shū)類(lèi)圖在分析模型中,我們也需要識(shí)別出類(lèi)的一些屬性和方法。同樣的,為了避免過(guò)早的陷入細(xì)節(jié)中,以及適應(yīng)將來(lái)在設(shè)計(jì)時(shí)類(lèi)的變化,在分析模型中,我們一般只把一些主要的屬性和方法標(biāo)識(shí)出來(lái)。例如,對(duì)于Student類(lèi),我們只需要Name和CardNo(借書(shū)證號(hào))屬性,對(duì)于Book,我們只需要BooKID、AllCount(書(shū)的總數(shù))、CurrentCount(當(dāng)前數(shù)量)等屬性?,F(xiàn)在,我們?yōu)槲覀兊念?lèi)圖添加上述屬性,就可以得到下面的結(jié)果:圖三:借書(shū)類(lèi)圖

16、不過(guò),把這些屬性都標(biāo)上后,圖形就比較難布置。因?yàn)槲恼掳婷娴膯?wèn)題,在以后的文字中,除非必要,一般會(huì)把屬性都隱藏起來(lái),這樣,看起來(lái)會(huì)整潔一些。依樣畫(huà)葫蘆,我們把還書(shū)、查閱圖書(shū)、預(yù)定圖書(shū)、管理圖書(shū)這些用例一并分析后,我們就能夠得到整個(gè)系統(tǒng)的靜態(tài)分析模型。當(dāng)然,我們隨后需要對(duì)這個(gè)初步的模型作進(jìn)一步的整理和分析,類(lèi)圖會(huì)發(fā)生變化,各個(gè)類(lèi)之間會(huì)產(chǎn)生一些聯(lián)系。我們也可能會(huì)使用一些分析模式,來(lái)進(jìn)一步優(yōu)化我們的分析結(jié)果。2.4 動(dòng)態(tài)模型的建立在面向?qū)ο蟮南到y(tǒng)中,業(yè)務(wù)流程表現(xiàn)為對(duì)象之間的交互。我們有了上面分析的得到的對(duì)象后,就可以來(lái)描述他們是怎么進(jìn)行交互和協(xié)作的了。在UML中,我們可以使用順序圖、活動(dòng)圖或者狀態(tài)圖來(lái)

17、建模這些動(dòng)態(tài)的過(guò)程。同樣的,我們首先來(lái)看借書(shū)這個(gè)用例。在借書(shū)這個(gè)用例中,有兩個(gè)事件流:借書(shū)成功(正常事件流)和所借圖書(shū)超出最大借書(shū)數(shù)量(非正常事件流)。我們首先來(lái)做“借書(shū)成功”這個(gè)事件流,下面是這個(gè)事件流的順序圖:分析過(guò)程中,消息的傳遞同后面的設(shè)計(jì)模型和實(shí)現(xiàn)模型相比,可能會(huì)有區(qū)別,也不太嚴(yán)密,例如,Borrow的過(guò)程中,記錄BorrowInfo的動(dòng)作,到最后,可能不會(huì)是BorrowInfo這個(gè)實(shí)體類(lèi)自己來(lái)記錄(往往會(huì)有一個(gè)實(shí)體訪問(wèn)類(lèi)來(lái)完成這個(gè)功能,如JDO中的PersistanceManager,這取決于你采用的具體的技術(shù)框架),但是,在這里,我們可以這樣來(lái)傳遞消息,表示需要記錄這個(gè)信息。同樣

18、的,我們也可以為“所借圖書(shū)超出最大借書(shū)數(shù)量”來(lái)作他的順序圖,這個(gè)圖相對(duì)簡(jiǎn)單一些:同樣的,我們也可以為其他用例的其他事件流創(chuàng)建動(dòng)態(tài)模型,在這里就不一一畫(huà)出來(lái)了。動(dòng)態(tài)模型和靜態(tài)模型的建立是一個(gè)交互的過(guò)程。在建立動(dòng)態(tài)模型的過(guò)程中,我們會(huì)發(fā)現(xiàn)一些新的類(lèi),也會(huì)為已有的類(lèi)找到一些新的屬性和方法,這樣,我們會(huì)需要去修改我們的類(lèi)圖。反之亦然。當(dāng)分析模型完成后,我們就對(duì)系統(tǒng)需要完成的功能有了一個(gè)比較完整和清晰的認(rèn)識(shí),下面,就可以開(kāi)始我們的設(shè)計(jì)工作了。2.5 系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)方案設(shè)計(jì)是對(duì)系統(tǒng)的詳細(xì)描述。我們需要在這里提供詳細(xì)的解決方案。設(shè)計(jì)同分析所使用的工具一樣,也需要建立靜態(tài)和動(dòng)態(tài)的模型,也同樣使用類(lèi)圖、順序圖、協(xié)

19、作圖、活動(dòng)圖、狀態(tài)圖等來(lái)表示。在正式進(jìn)行設(shè)計(jì)之前,我們還有一些工作需要完成,那就是選擇我們的技術(shù)方案,這會(huì)影響到我們?cè)O(shè)計(jì)。2.6 技術(shù)選擇設(shè)計(jì)前的工作設(shè)計(jì)是為實(shí)現(xiàn)服務(wù)的,實(shí)現(xiàn)時(shí)準(zhǔn)備采用的技術(shù)會(huì)影響設(shè)計(jì)方案的采用。以下這些技術(shù)問(wèn)題是需要考慮的:u 準(zhǔn)備使用什么樣的客戶(hù)端?u 準(zhǔn)備采用什么編程語(yǔ)言?u 準(zhǔn)備采用什么框架技術(shù)?u 如果是分布式系統(tǒng),那么,準(zhǔn)備采用什么通信機(jī)制?在這個(gè)圖書(shū)館系統(tǒng)中,我們發(fā)現(xiàn),對(duì)于借書(shū)和還書(shū)來(lái)說(shuō),總是在圖書(shū)館內(nèi)部發(fā)生,并且客戶(hù)端的數(shù)量是有限的數(shù)個(gè),其使用的頻率比較高,效率和使用的方便性是需要注重考慮的,而客戶(hù)端軟件的維護(hù)工作量相對(duì)比較少,可以不用考慮太多,因此我們準(zhǔn)備采用

20、傳統(tǒng)的Windows Form的客戶(hù)端。但是,對(duì)于圖書(shū)的查閱以及預(yù)定來(lái)說(shuō),我們希望在整個(gè)校園網(wǎng)內(nèi)提供這個(gè)功能,使得學(xué)生無(wú)論在什么地方都能夠使用這個(gè)功能,所以,我們會(huì)考慮采用Web瀏覽器的客戶(hù)端,這樣會(huì)方便系統(tǒng)的部署。也就是說(shuō),我們的系統(tǒng)需要同時(shí)支持兩種不的客戶(hù),顯然,采用N層系統(tǒng)結(jié)構(gòu),把系統(tǒng)邏輯集中在應(yīng)用服務(wù)器上是一個(gè)比較好的方案。最后,為了系統(tǒng)的安全,我們希望把Web服務(wù)器和應(yīng)用服務(wù)器分開(kāi)。這樣,我們的系統(tǒng)的架構(gòu)的拓?fù)鋱D就基本上如下所示:這是一個(gè)典型的分布式系統(tǒng),在考慮了各種平臺(tái)和技術(shù)之后,我們決定采用EJB技術(shù)來(lái)構(gòu)建這個(gè)系統(tǒng),他已經(jīng)為我們提供了構(gòu)建應(yīng)用系統(tǒng)所需要的優(yōu)秀的技術(shù)框架,同時(shí),我希

21、望在客戶(hù)端和應(yīng)用服務(wù)器的調(diào)用中,采用Web Service的方式。2.7 設(shè)計(jì)包或子系統(tǒng)首先我們需要來(lái)對(duì)系統(tǒng)進(jìn)行一個(gè)劃分。因?yàn)槲覀兊南到y(tǒng)是一個(gè)N層的分布式系統(tǒng),包含了應(yīng)用服務(wù)器和客戶(hù)端,而客戶(hù)端又包含了Windows Form客戶(hù)端和Web客戶(hù)端,所以,我們首先把系統(tǒng)分成3個(gè)包:應(yīng)用服務(wù)器、Winform客戶(hù)和Web客戶(hù):因?yàn)槲覀兊南到y(tǒng)包含了5個(gè)用例,每個(gè)用例都是一個(gè)完整的子系統(tǒng),因此,我們可以在上述3個(gè)包的下面,又各自劃分成5個(gè)子包。2.8 設(shè)計(jì)應(yīng)用服務(wù)器下面,我們首先來(lái)設(shè)計(jì)應(yīng)用服務(wù)器部分。我們還是從借書(shū)這個(gè)用例開(kāi)始設(shè)計(jì)。從分析模型中,我們知道,需要一個(gè)控制類(lèi)來(lái)完成借書(shū)的業(yè)務(wù)邏輯,在這里,我們?cè)O(shè)計(jì)一個(gè)BorrowLogic類(lèi)來(lái)完成這個(gè)功能,這個(gè)類(lèi)被設(shè)計(jì)成SessionBean;同時(shí),因?yàn)槲覀冃枰蚩蛻?hù)端提供服務(wù),而我們又不希望直接把業(yè)務(wù)邏輯暴露給客戶(hù)端,所以,設(shè)計(jì)BorrowServer這個(gè)Web Service來(lái)向客戶(hù)端提供服務(wù)。這樣,實(shí)際上,在分析模型中的Borrow類(lèi),在這里,被映射成了BorrowLogic和BorrowServer兩個(gè)類(lèi)。同樣的,我們需要Book類(lèi)來(lái)記錄圖書(shū)的信息,Student來(lái)標(biāo)識(shí)學(xué)生,我們也需要BorrowInfo和SubscribeInfo類(lèi)來(lái)分別記錄借書(shū)和圖書(shū)預(yù)定的情況。這樣,建立設(shè)計(jì)模型中的靜態(tài)模型所需要的類(lèi)基本上已經(jīng)齊全了。當(dāng)然,到最

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論