第11章-軟件工程2課件_第1頁
第11章-軟件工程2課件_第2頁
第11章-軟件工程2課件_第3頁
第11章-軟件工程2課件_第4頁
第11章-軟件工程2課件_第5頁
已閱讀5頁,還剩43頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第11章

面向?qū)ο笤O(shè)計

11.5設(shè)計問題域子系統(tǒng)11.6人機交互子系統(tǒng)設(shè)計11.7任務(wù)管理子系統(tǒng)設(shè)計11.8數(shù)據(jù)管理子系統(tǒng)設(shè)計11.9設(shè)計類中的服務(wù)11.10設(shè)計關(guān)聯(lián)11.11設(shè)計優(yōu)化11.5設(shè)計問題域子系統(tǒng)

1.調(diào)整需求2.重用已有的類3.把問題域類組合在一起4.增添一般化類以建立協(xié)議采用面向?qū)ο蠓椒〞r,分析設(shè)計之間沒有明顯的分界線。分析與設(shè)計差別:分析工作與具體實現(xiàn)無關(guān),設(shè)計工作則受具體實現(xiàn)環(huán)境的約束。11.5設(shè)計問題域子系統(tǒng)

5.調(diào)整繼承層次(1)使用多重繼承機制圖11.4窄菱形模式

圖11.5闊菱形模式11.5設(shè)計問題域子系統(tǒng)

5.調(diào)整繼承層次(2)使用單繼承機制

把多重繼承簡化為單一層次的單繼承11.5設(shè)計問題域子系統(tǒng)

6.ATM系統(tǒng)實例圖11.7ATM系統(tǒng)問題域子系統(tǒng)的結(jié)構(gòu)11.6設(shè)計人機交互子系統(tǒng)1.分類用戶2.描述用戶3.設(shè)計命令層次4.設(shè)計人機交互類11.8

數(shù)據(jù)管理部分的設(shè)計

數(shù)據(jù)管理部分提供了數(shù)據(jù)在數(shù)據(jù)管系統(tǒng)中存儲和檢索對象的基本結(jié)構(gòu),它分離了數(shù)據(jù)管理方案的影響(不管該方案是普通文件、關(guān)系型數(shù)據(jù)庫、面向?qū)ο髷?shù)據(jù)庫或其它方式.)11.8設(shè)計數(shù)據(jù)管理子系統(tǒng)

11.8.1選擇數(shù)據(jù)存儲管理模式

1.文件管理系統(tǒng)2.關(guān)系數(shù)據(jù)庫管理系統(tǒng)(1)提供最基本的數(shù)據(jù)管理功能中斷恢復、并發(fā)、事務(wù)支持、等(2)標準接口和語言O(shè)DBC,JDBC,SQL(3)存儲和使用分離減少程序?qū)?shù)據(jù)依賴3.面向?qū)ο髷?shù)據(jù)庫管理系統(tǒng)

11.8設(shè)計數(shù)據(jù)管理子系統(tǒng)

11.8.2設(shè)計數(shù)據(jù)管理子系統(tǒng)設(shè)計數(shù)據(jù)格式(1)文件系統(tǒng)第一范式

XML(2)關(guān)系數(shù)據(jù)庫管理系統(tǒng)第三范式(3)面向?qū)ο髷?shù)據(jù)庫管理系統(tǒng)11.8設(shè)計數(shù)據(jù)管理子系統(tǒng)

11.8.2設(shè)計數(shù)據(jù)管理子系統(tǒng)2.設(shè)計相應(yīng)的服務(wù)

對象存儲的服務(wù)的兩種方法:(1)每個對象自己保存自己

(2)由數(shù)據(jù)管理子系統(tǒng)負責存儲對象11.9設(shè)計類中的服務(wù)

11.9.2確定類中應(yīng)有的服務(wù)用例驅(qū)動細化靜態(tài)模型和動態(tài)模型找動作、事件、消息,劃分到類11.9.2設(shè)計實現(xiàn)服務(wù)的方法1.設(shè)計實現(xiàn)服務(wù)的算法2.選擇數(shù)據(jù)結(jié)構(gòu)3.定義內(nèi)部類和內(nèi)部操作

11.10設(shè)計關(guān)聯(lián)1.關(guān)聯(lián)的遍歷:單向/雙向2.實現(xiàn)單向關(guān)聯(lián)

圖11.8用指針實現(xiàn)單向關(guān)聯(lián)(a)關(guān)聯(lián)(b)實現(xiàn)11.10設(shè)計關(guān)聯(lián)3.實現(xiàn)雙向關(guān)聯(lián)

圖11.8用指針實現(xiàn)雙向關(guān)聯(lián)(a)關(guān)聯(lián)(b)實現(xiàn)11.10設(shè)計關(guān)聯(lián)4.關(guān)聯(lián)對象的實現(xiàn)

圖11.10用對象實現(xiàn)關(guān)聯(lián)11.11設(shè)計優(yōu)化11.11.1確定優(yōu)先級

圖11.10用對象實現(xiàn)關(guān)聯(lián)11.11設(shè)計優(yōu)化11.11.2提高效率的幾項技術(shù)

1.增加冗余關(guān)聯(lián)以提高訪問效率

圖11.11公司、雇員及技能之間的關(guān)聯(lián)鏈哈希(HASH)表,索引注意這樣做的影響:查詢快了,增加、刪除等慢了11.11設(shè)計優(yōu)化11.11.2提高效率的幾項技術(shù)

2.調(diào)整查詢次序

3.保留派生屬性

計算列

11.11設(shè)計優(yōu)化11.11.3調(diào)整繼承關(guān)系

1.抽象與具體2.為提高繼承程度而修改類定義

(1)不能違背領(lǐng)域知識和常識(2)應(yīng)該確?,F(xiàn)有類的協(xié)議(接口)不變

(a)先創(chuàng)建一些具體類(b)歸納出抽象類(c)進一步具體化(d)再次歸納11.11設(shè)計優(yōu)化11.11.3調(diào)整繼承關(guān)系

3.利用委托實現(xiàn)行為共享

繼承與委托的選擇圖11.14用表實現(xiàn)棧的兩種方法子類是不是繼承了父類的所有行為建議多用委托封裝11.12小結(jié)習題111.面向?qū)ο笤O(shè)計應(yīng)該遵循哪些準則?簡述每條準則的內(nèi)容,并說明遵循這條準則的必要性。3.為什么說類構(gòu)件是目前比較理想的可重用軟構(gòu)件?它有哪些重用方式?4.試用面向?qū)ο蠓椒ǎO(shè)計本書第2章中給出的定貨系統(tǒng)的例子。6.試用面向?qū)ο蠓椒ǎO(shè)計本書習題2第3題中描述的機票預(yù)訂系統(tǒng)。物理體系結(jié)構(gòu)建模系統(tǒng)的體系結(jié)構(gòu)用來描述系統(tǒng)各部分的結(jié)構(gòu)、接口以及它們用于通信的機制。物理體系結(jié)構(gòu)涉及系統(tǒng)的詳細描述,它顯示了硬件的結(jié)構(gòu),包括不同的結(jié)點和這些結(jié)點之間如何連接,它還圖示了代碼模塊的物理結(jié)構(gòu)和依賴關(guān)系,并展示了對進程、程序、構(gòu)件等軟件在運行時的物理分配。物理體系結(jié)構(gòu)應(yīng)回答以下問題:(1)類和對象物理上位于哪個程序或進程?(2)程序和進程在哪臺計算機上執(zhí)行?(3)系統(tǒng)中有哪些計算機和其它硬件設(shè)備?它們?nèi)绾蜗嗷ミB接?(4)不同的代碼文件之間有什么依賴關(guān)系?如果一個指定的文件被改變,那么哪些其它文件要重新編譯?

UML中物理體系結(jié)構(gòu)用構(gòu)件圖、內(nèi)部結(jié)構(gòu)圖和部署圖來描述。構(gòu)件圖

構(gòu)件圖顯示構(gòu)件類型的定義、內(nèi)部結(jié)構(gòu)和依賴。構(gòu)件是系統(tǒng)設(shè)計的模塊化部分,它給出一組外部的接口,而隱藏了它的實現(xiàn)。在系統(tǒng)中滿足相同接口的構(gòu)件可以自由地替換。構(gòu)件的接口有二種:供應(yīng)接口(providedinterface):供應(yīng)接口聲明該構(gòu)件為其它請求者提供某種服務(wù)請求接口(requiredinterface):請求接口聲明該構(gòu)件請求其它供應(yīng)者為其提供某種服務(wù),以完成其功能需求。構(gòu)件及其接口信用卡代理應(yīng)用收費管理營業(yè)員訪問顧客訪問請求接口供應(yīng)接口構(gòu)件的內(nèi)部結(jié)構(gòu)用內(nèi)部結(jié)構(gòu)圖定義應(yīng)用收費管理信用卡代理構(gòu)件的內(nèi)部結(jié)構(gòu)圖信用卡代理狀況購買預(yù)購銷售團體銷售:售票員:營業(yè)員界面:銷售亭界面:管理員界面:票:信用卡收費個體銷售收費顧客訪問營業(yè)員訪問構(gòu)件圖顯示了系統(tǒng)中的構(gòu)件(來自應(yīng)用的軟件單元)及其依賴關(guān)系信用卡代理顧客訪問營業(yè)員訪問管理應(yīng)用收費:信用卡收費收費應(yīng)用收費:營業(yè)員界面團體銷售個體預(yù)訂銷售營業(yè)員訪問銷售構(gòu)件圖:票:管理員界面購買狀況狀況管理:售票員:銷售亭界面團體銷售個體銷售預(yù)訂銷售顧客訪問預(yù)訂銷售收費購買個體銷售部署圖部署圖展示了運行時處理結(jié)點和在結(jié)點上生存的制品的配置。部署圖描述了處理器、設(shè)備和軟件構(gòu)件運行時的體系結(jié)構(gòu)。在這個體系結(jié)構(gòu)上可以看到某個結(jié)點上在執(zhí)行哪個構(gòu)件,在構(gòu)件中實現(xiàn)了哪些邏輯元素(類、對象、協(xié)作等),最終可以從這些元素追蹤到系統(tǒng)的需求分析(用況圖)。部署圖的基本元素有結(jié)點、連接、構(gòu)件、對象、依賴等?!禗ecNet》《TCP/IP》《TCP/IP》ClientA:CompaqProPCApplicationServer;SiliconGraphicsO2DatabaseServer:VAXClientB:CompaqProPC結(jié)點之間的通信連接《artifact》Transaction.jar《database》accountDBServer:BankserverClient:ATMKiosk《artifact》ATM-GUI.jarTransaction《manifest》update部署圖面向?qū)ο笤O(shè)計實例:簡化的C++類庫管理系統(tǒng)需求描述:管理用C++語言定義的類用戶能夠方便地向類庫中添加新類,并建立新類與庫中原有類的關(guān)系用戶能夠通過類名從庫中查詢出指定的類用戶能夠查看或修改與指定類有關(guān)的信息用戶能夠從類中刪除指定的類用戶能夠在瀏覽窗中方便、快速地瀏覽當前類的父類和子類具有“聯(lián)想”瀏覽功能用戶能查看或修改某個類的指定的成員函數(shù)的源代碼本系統(tǒng)是一個簡化的多用戶系統(tǒng),每個用戶都可以建立自己的類庫,不同類庫之間互不干擾對于用戶誤操作或錯誤的輸入,能提示并繼續(xù)穩(wěn)定運行系統(tǒng)易學,用戶界面應(yīng)是GUI的OOA階段建立的類庫管理系統(tǒng)對象模型類庫庫名類條目列表插入類條目刪除類條目……1+0,n1類條目類名父類列表……設(shè)置類名添加父類……成員函數(shù)函數(shù)名訪問權(quán)虛基類標志……父類名字訪問權(quán)虛基類標志數(shù)據(jù)成員數(shù)據(jù)名訪問權(quán)數(shù)據(jù)類型0,n20,n30,m用戶擁有面向?qū)ο笤O(shè)計(簡化的C++類庫管理系統(tǒng))設(shè)計類庫結(jié)構(gòu)兩種可把類條目組織成類庫得數(shù)據(jù)結(jié)構(gòu):二叉樹鏈表:容易表示多重繼承設(shè)計問題域子系統(tǒng)—對對象模型做補充和細化類條目(ClassEntry)類庫(ClassEntryLink)父類(ClassBase)、成員函數(shù)(ClassFun)和數(shù)據(jù)成員(ClassData)類條目緩沖區(qū)(ClassEntryBuffer)類條目類名父類列表成員函數(shù)列表數(shù)據(jù)成員列表類條目類名父類鏈表頭指針成員函數(shù)鏈表頭指針數(shù)據(jù)成員鏈表頭指針注釋指向下一類條目指針新增數(shù)據(jù)成員新增操作設(shè)置類名添加父類刪除父類更改父類添加成員函數(shù)刪除成員函數(shù)更改成員函數(shù)添加數(shù)據(jù)成員刪除數(shù)據(jù)成員更改數(shù)據(jù)成員查找并取出指定父類信息查找并取出指定成員函數(shù)信息查找并取出指定數(shù)據(jù)成員信息設(shè)置類名添加父類刪除父類更改父類添加成員函數(shù)刪除成員函數(shù)更改成員函數(shù)添加數(shù)據(jù)成員刪除數(shù)據(jù)成員更改數(shù)據(jù)成員具體化類庫庫名類條目列表插入類條目刪除類條目存儲類庫讀出類庫具體化為類庫庫名類鏈頭指針插入類條目刪除類條目把內(nèi)存中類鏈表寫到文件讀文件并在內(nèi)存建立鏈表按類名查找類條目并把內(nèi)容復制到指定地點新增操作具體化父類名字訪問權(quán)虛基類標志新增數(shù)據(jù)成員父類名字訪問權(quán)虛基類標志指向下一個父類的指針成員函數(shù)函數(shù)名訪問權(quán)虛基類標志返回值類型參數(shù)代碼新增數(shù)據(jù)成員成員函數(shù)函數(shù)名訪問權(quán)虛基類標志返回值類型參數(shù)代碼指向下一個成員函數(shù)的指針數(shù)據(jù)成員數(shù)據(jù)名訪問權(quán)數(shù)據(jù)類型新增數(shù)據(jù)成員數(shù)據(jù)成員數(shù)據(jù)名訪問權(quán)數(shù)據(jù)類型指向下一個數(shù)據(jù)成員的指針類庫(ClassEntryLink)示意圖下一個ClassEntryClassEntryLinkClassEntry……ClassBaseClassDataClassFun下一個ClassBase……下一個ClassFun……下一個ClassData……類條目緩沖區(qū)(ClassEntryBuffer)為便于處理當前類,額外設(shè)置類條目緩沖區(qū),它是從ClassEntry類派生出來的類,除繼承ClassEntry中的數(shù)據(jù)成員和成員函數(shù)外,主要增加用于域窗口或類鏈交換數(shù)據(jù)的成員函數(shù)ClassEntryClassEntryBuffer面向?qū)ο笤O(shè)計(簡化的C++類庫管理系統(tǒng))設(shè)計人機交互子系統(tǒng)窗口登錄窗口(用戶輸入賬號、確認/放棄)主窗口(創(chuàng)建/瀏覽/存儲/退出)創(chuàng)建窗口(輸入新類名/選擇已有類名,三個分組框分別管理父類、成員函數(shù)和數(shù)據(jù)成員,每組框有:添加/編輯/刪除)選擇瀏覽方式窗口(按類名瀏覽/按類關(guān)系瀏覽)類名瀏覽窗口類關(guān)系瀏覽窗口重用:基于VC開發(fā)環(huán)境,盡可能重用MFC中類設(shè)計其它類ClassBaseC

溫馨提示

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

評論

0/150

提交評論