圖書館信息系統(tǒng)UML實例
單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級,*,國防科技大學(xué)計算機(jī)學(xué)院,*,圖書館信息系統(tǒng),UML,實例,2024/11/27,1,國防科技大學(xué)計算機(jī)學(xué)院,圖書館信息系統(tǒng),UML,實例,本章將通過一個實例來說明在一個應(yīng)用中如何使用UML通過前面的討論首先在,分析模型中用用例和域分析來描述應(yīng)用然后將分析模型擴(kuò)展成設(shè)計模型描述技術(shù)上,的解決方案最后用Java語言編程具體實現(xiàn)可以運行的應(yīng)用有一點需要說明的,是本章中討論的例子并不包括所有的模型和圖,本章討論的案例是一個圖書館信息系統(tǒng)主要處理書和雜志的借閱和保存雖然它算不上是一個大的應(yīng)用但可以對它作許多擴(kuò)展.,2024/11/27,2,國防科技大學(xué)計算機(jī)學(xué)院,1.,理解需求場景描述,下面是一份典型的文本需求說明它是圖書館應(yīng)用程序的需求說明是為系統(tǒng)的終端用戶或客戶而寫的,它是圖書館的支持系統(tǒng),圖書館將書和雜志借給讀者,讀者和書雜志一樣必須在系統(tǒng)中注冊,圖書館負(fù)責(zé)購買圖書,對于流行的書一般要多買幾本,如果舊書或雜志過期了或很破爛則可以從圖書館中刪除,圖書館管理員是圖書館的雇員,負(fù)責(zé)與客戶,(,借書者,),打交道,他們的工作要得到系統(tǒng)的支持。,2024/11/27,3,國防科技大學(xué)計算機(jī)學(xué)院,1.1,理解需求一場景描述,借書者可以預(yù)訂目前借不到的書或雜志,一旦預(yù)訂的書被返還給圖書館或圖書館新購買書到達(dá),就立即通知預(yù)訂者,圖書館可以方便地產(chǎn)生更新和刪除系統(tǒng)中與書目借書者借書,(loan),和預(yù)訂的有關(guān)信息,系統(tǒng)能夠在所有流行的技術(shù)環(huán)境下運行,(UNIX,Windows,OS/2,等等,),,還應(yīng)該有一,個非常好的圖形用戶界面,(GUI),系統(tǒng)應(yīng)該具有很好的可擴(kuò)展性,2024/11/27,4,國防科技大學(xué)計算機(jī)學(xué)院,2.,分析,分析就是描述系統(tǒng)的需求通過定義系統(tǒng)中的關(guān)鍵域類來建立模型分析的,根本目的是在開發(fā)者和提出需求的人(用戶/客戶)之間建立一種理解和溝通的機(jī)制,因此典型情下分析是開發(fā)人員同用戶或客戶一起來完成的。,分析不受技術(shù)方案或細(xì)節(jié)的限制,在分析階段,開發(fā)人員不應(yīng)該考慮代碼或程序的問題,它是邁向真正理解需求和所要設(shè)計的系統(tǒng)的第一步。,2024/11/27,5,國防科技大學(xué)計算機(jī)學(xué)院,1.,用例視圖描述圖書館系統(tǒng)的功能,分析的第一步是定義用例,即描述圖書館系統(tǒng)的功能,確定系統(tǒng)的功能需求。用例分析主要涉及閱讀和分析規(guī)格說明和系統(tǒng)的潛在用戶討論,圖書館中的角色為圖書管理員和借書者,圖書管理員是系統(tǒng)的用戶,而借書者是客戶,雖然偶爾圖書館管理員或另一個圖書館也可能是一個借書者。借書者的目的不是直接同系統(tǒng)交互,借書者的功能由圖書管理員來實現(xiàn)。,2024/11/27,6,國防科技大學(xué)計算機(jī)學(xué)院,圖書館信息系統(tǒng)中的用例如下所示,借出書目,(Lend Item),返回書目,(Return Item),預(yù)訂,(Make Reservation),刪除預(yù)訂,(Remove Reservation),增加標(biāo)題,(Add Title),更新或刪除標(biāo)題,(Update or Remove Title),增加書目,(Add Item),刪除書目,(Remove Item),增加借書者,(Add Borrower),更新或刪除借者書,(Update or Remove Borrower),2024/11/27,7,國防科技大學(xué)計算機(jī)學(xué)院,標(biāo)題,(Title),和書目,(Item),上述用例中出現(xiàn)的兩個概念標(biāo)題(Title)和書目(Item),因為在一個圖書館中一個流行的標(biāo)題可能有好幾本,因此系統(tǒng)必須將標(biāo)題(可能是書名或書的作者)同其它的書目(代表一個指定標(biāo)題的物理副本)區(qū)分開來,從圖書館借的是書目在圖書館擁有一本書的副本(書目)之前加一個標(biāo)題到系統(tǒng)中是可能的,這樣做的目的是讓借書者可以預(yù),訂。,2024/11/27,8,國防科技大學(xué)計算機(jī)學(xué)院,圖書館信息系統(tǒng)的分析可以用UML的用例圖來描述如圖所示,每個用例以文本的方式(可稱為用例場景)來描述,描述的內(nèi)容包括用例以及用例與角色交互的更詳細(xì)的信息文本的內(nèi)容,是通過與用戶/客戶討論后確定的。,2024/11/27,9,國防科技大學(xué)計算機(jī)學(xué)院,用例借出書目的描述如下,2024/11/27,10,國防科技大學(xué)計算機(jī)學(xué)院,用例“借出書目”的場景描述,-,事件流,1如果借書者沒有預(yù)訂,a.標(biāo)記標(biāo)題,b.標(biāo)記可用的該標(biāo)題下的書目,c.標(biāo)記借書者,d.圖書館借出標(biāo)記的書目,e.增加一條新的借書記錄,2024/11/27,11,國防科技大學(xué)計算機(jī)學(xué)院,用例“借出書目”的場景描述,-,事件流,2如果借書者已經(jīng)預(yù)訂,a.標(biāo)記借書者,b.標(biāo)記標(biāo)題,c.標(biāo)記可用的該標(biāo)題下的書目,d.圖書館借出標(biāo)記的書目,e.增加一條新的借書記錄,f.刪除預(yù)訂記錄,2024/11/27,12,國防科技大學(xué)計算機(jī)學(xué)院,讀者可以照此法描述其它的用例。在整個系統(tǒng)開發(fā)過程中,用例描述系統(tǒng)的功能需求,在分析階段利用它們來檢查某一域類是否已定義,在設(shè)計階段可以用來證實技術(shù)方案是否能夠處理要求的功能,可以在序列圖中可視化用例。,2024/11/27,13,國防科技大學(xué)計算機(jī)學(xué)院,2.,領(lǐng)域分析,-,類圖的建立,分析是將系統(tǒng)中的領(lǐng)域和關(guān)鍵類條理化,為了進(jìn)行領(lǐng)域分析,需要閱讀規(guī)格說明和用例,了解系統(tǒng)要處理的概念(類),或?qū)⒂脩纛I(lǐng)域?qū)<医M織在一起開一個討論會,設(shè)法確定所有必須處理的概念以及概念間的關(guān)系。,圖書館信息系統(tǒng)中的域類主要有讀者,標(biāo)題,書的標(biāo)題,雜志標(biāo)題,書目,預(yù)訂和借書。,2024/11/27,14,國防科技大學(xué)計算機(jī)學(xué)院,2.,領(lǐng)域分析,-,類圖的建立,有一點要強(qiáng)調(diào)的是在本階段域類還是處于草圖狀態(tài),定義的操作和屬性不是最后的版本,只是在現(xiàn)階段看來這些操作和屬性是比較合適的,一些操作是在序列圖的草圖中而不是在用例中定義的。,2024/11/27,15,國防科技大學(xué)計算機(jī)學(xué)院,Item,(書目)類的定義,2024/11/27,16,國防科技大學(xué)計算機(jī)學(xué)院,Title,(主題)類的定義,2024/11/27,17,國防科技大學(xué)計算機(jī)學(xué)院,Item與Title的關(guān)系,2024/11/27,18,國防科技大學(xué)計算機(jī)學(xué)院,Title(主題)的繼承類,2024/11/27,19,國防科技大學(xué)計算機(jī)學(xué)院,2024/11/27,20,國防科技大學(xué)計算機(jī)學(xué)院,設(shè)計階段和最后的UML模型是將設(shè)計階段的模型進(jìn)行擴(kuò)展和細(xì)化,主要考慮所有的技術(shù)問題和限制。設(shè)計的目的是產(chǎn)生一個可用的解決方案,并且能夠比較容易地將方案轉(zhuǎn)換成程序代碼。在分析階段定義的類被進(jìn)一步細(xì)化,定義新的類來處理技術(shù)方面的問題,如數(shù)據(jù)庫用戶接口通信設(shè)備等等。,2024/11/27,21,國防科技大學(xué)計算機(jī)學(xué)院,描述域類的動態(tài)行為,為了描述域類的動態(tài)行為,任何動態(tài)UML圖都可以使用序列圖、協(xié)作圖或活動圖。例如,序列圖的基礎(chǔ)是用例,在序列圖中說明域類如何協(xié)作來操作系統(tǒng)中的用例,很自然地,當(dāng)建立這些序列圖時將會發(fā)現(xiàn)新的操作,并將它們加到類中。,2024/11/27,22,國防科技大學(xué)計算機(jī)學(xué)院,用例借出書目的序列圖,(,沒有預(yù)訂的情況,),2024/11/27,23,國防科技大學(xué)計算機(jī)學(xué)院,用戶接口的設(shè)計,當(dāng)用序列圖建模時很顯然需要窗口或?qū)υ挻?,作為到角色的接口。在下圖中借出書目的窗口是存在的,在分析時意識到需要窗口來標(biāo)識基本的接口就可以了,借出、預(yù)訂和返還書目都需要窗口。維護(hù)窗口也是必要的。,詳細(xì)的用戶接口是設(shè)計階段的一部分,在分析階段為了將域類同窗口類分開,將窗口類組裝成一個GUI包(稱為GUI包)將域類組裝成業(yè)務(wù)包(Business Package)。,2024/11/27,24,國防科技大學(xué)計算機(jī)學(xué)院,Loan的新增操作,2024/11/27,25,國防科技大學(xué)計算機(jī)學(xué)院,某些類用UML狀態(tài)圖來顯示類的對象的不同的狀態(tài)以及改變狀態(tài)的事件,有狀態(tài)圖的類有書目和標(biāo)題,標(biāo)題類的狀態(tài)圖如圖所示。,2024/11/27,26,國防科技大學(xué)計算機(jī)學(xué)院,標(biāo)題類的狀態(tài)圖,2024/11/27,27,國防科技大學(xué)計算機(jī)學(xué)院,3.架構(gòu)設(shè)計,一個設(shè)計良好的架構(gòu)是系統(tǒng)可擴(kuò)展和可改變的基礎(chǔ)。包關(guān)心的是某一指定功能域或技術(shù)域的處理。將應(yīng)用邏輯,(,域類,),和技術(shù)邏輯分開是很關(guān)鍵的,從而使得任何一個改變不至于對其它部分有太多的影響。在定義架構(gòu)時需要描述的關(guān)鍵事情是標(biāo)識和建立包間相關(guān)性規(guī)則,使得包間不存在雙方相關(guān)性,(,避免包緊耦合在一起,),。,2024/11/27,28,國防科技大學(xué)計算機(jī)學(xué)院,包或子系統(tǒng)的設(shè)計,本例中的包或子系統(tǒng)或?qū)佑腥缦聨讉€:,用戶接口包(User Interface Package),通過用戶接口類用戶可以瀏覽系統(tǒng)中的數(shù)據(jù),輸入新的數(shù)據(jù)這些用戶接口類都是基于Java的AWT包。Java的AWT包是Java中用來寫用戶接口應(yīng)用的標(biāo)準(zhǔn)庫。該包同包含存儲數(shù)據(jù)的類的業(yè)務(wù)包協(xié)作來完成任務(wù)用戶接口包調(diào)用業(yè)務(wù)包中的操作來檢索和插入數(shù)據(jù)。,2024/11/27,29,國防科技大學(xué)計算機(jī)學(xué)院,業(yè)務(wù)對象包,業(yè)務(wù)對象包(Business Object Package),業(yè)務(wù)對象包包含分析模型中的域類如,Borrower Information,Title,Item,Loan,等等,這些類的所有細(xì)節(jié)都已有明確定義,所以類中的操作都已定義好了并支持加入持續(xù)性屬性。業(yè)務(wù)對象包同數(shù)據(jù)包協(xié)作完成任務(wù),因為所有的業(yè)務(wù)對象類必須從數(shù)據(jù)包中的持續(xù)性類(Persistent class)中繼承下來。,2024/11/27,30,國防科技大學(xué)計算機(jī)學(xué)院,數(shù)據(jù)庫包,數(shù)據(jù)庫包(Database Package):數(shù)據(jù)庫包提供服務(wù)給業(yè)務(wù)對象包中的類,所以可以永久地保存它們在當(dāng)前版本中,持續(xù)性類將它的子類的對象存放在文件系統(tǒng)中的文件。,2024/11/27,31,國防科技大學(xué)計算機(jī)學(xué)院,應(yīng)用包,應(yīng)用包(Utility Package):應(yīng)用包提供服務(wù)給系統(tǒng)中其它種類的包。,2024/11/27,32,國防科技大學(xué)計算機(jī)學(xué)院,包及包間相關(guān)性的類圖,2024/11/27,33,國防科技大學(xué)計算機(jī)學(xué)院,用戶接口設(shè)計,在設(shè)計階段進(jìn)行的一項特殊活動是產(chǎn)生用戶接口,定義用戶接口的“外觀和感覺”,這項活動是在分析階段初始化且與其它活動分開來做,但同其它的工作同步進(jìn)行。,2024/11/27,34,國防科技大學(xué)計算機(jī)學(xué)院,用戶接口設(shè)計,基于用例的圖書館應(yīng)用中的用戶接口被分成四部分,每一部分在主窗口菜單中有一個獨立的菜單包,如下所示:,功能(Functions):系統(tǒng)中的基本功能窗口,也就是說借書、還書和預(yù)訂。,信息(Information):瀏覽系統(tǒng)中的信息窗口有關(guān)標(biāo)題和借閱者的信息,維護(hù)(Maintenance):維護(hù)系統(tǒng)的窗口也就是說增加、更新、刪除標(biāo)題、借閱者和書目。,2024/11/27,35,國防科技大學(xué)計算機(jī)學(xué)院,增加標(biāo)題(Add Title)用例的序列圖,2024/11/27,36,國防科技大學(xué)計算機(jī)學(xué)院,4.,構(gòu)造或?qū)崿F(xiàn)階段,構(gòu)造或?qū)崿F(xiàn)階段是指編程實現(xiàn)類.在系統(tǒng)需求中,要求系統(tǒng)可以運行在許多不同的處理器和操作系統(tǒng)上,所以選擇Java來實現(xiàn)系統(tǒng).Java很容易將邏輯類映射到代碼組件,因為這種映射是類和,Java代碼文件之間的一對一的映射(和一對一地映射到一個可執(zhí)行的.class文件)Java也要求文件名應(yīng)該同它包含的類的類名一樣.,2024/11/27,37,國防科技大學(xué)計算機(jī)學(xué)院,組件圖,下圖說明設(shè)計模型中的組件圖包含(在本例中)一個從邏輯的類到組件的簡單映射。每個組件包含一條到邏輯類的描述的鏈接使得可以方便地在邏輯視圖與組件視圖間切換(即使在本例中使用的僅僅是文件名)。組件間相關(guān)性不在組件圖中表示(除了業(yè)務(wù)對象包)因為相關(guān)性可以從邏輯類圖中得到。,2024/11/27,38,國防科技大學(xué)計算機(jī)學(xué)院,2024/11/27,39,國防科技大學(xué)計算機(jī)學(xué)院,對于編碼從下列設(shè)計模型中的圖獲得規(guī)格說明,類說明,(Class Specifications),每一個類的規(guī)格說明詳細(xì)顯示必須有的屬性和操作,類圖,(C