版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第第4 4章軟件設(shè)計(jì)基礎(chǔ)章軟件設(shè)計(jì)基礎(chǔ) 軟件設(shè)計(jì)軟件設(shè)計(jì) 第一部分:軟件設(shè)計(jì)過程和原理 第第4章軟件設(shè)計(jì)基礎(chǔ)章軟件設(shè)計(jì)基礎(chǔ) 本章重點(diǎn)本章重點(diǎn) 設(shè)計(jì)的目標(biāo)、任務(wù)原則 設(shè)計(jì)過程(過程、技術(shù)、方法和工具) 設(shè)計(jì)的產(chǎn)品 設(shè)計(jì)的評審 第第4章軟件設(shè)計(jì)基礎(chǔ)章軟件設(shè)計(jì)基礎(chǔ) 1 軟件設(shè)計(jì)軟件設(shè)計(jì) l軟件設(shè)計(jì)是把軟件需求規(guī)格說明轉(zhuǎn) 為軟件過程性的表示,它決定了將 要如何構(gòu)造軟件。 解決“怎么做”的問題 第第4章軟件設(shè)計(jì)基礎(chǔ)章軟件設(shè)計(jì)基礎(chǔ) 軟件設(shè)計(jì)的目標(biāo) 將需求分析模型轉(zhuǎn)換為軟件設(shè)計(jì)模型 數(shù)據(jù)詞典 數(shù) 據(jù) 流 圖 實(shí)實(shí) 體 關(guān) 系 圖 狀態(tài)轉(zhuǎn)換圖 加 工 控 制 規(guī) 規(guī) 格 格 說 說 明 明 數(shù) 據(jù) 對 象 描
2、 述 過程設(shè)計(jì) 接口設(shè)計(jì) 體系結(jié)構(gòu)設(shè)計(jì) 數(shù)據(jù)設(shè)計(jì) 第第4章軟件設(shè)計(jì)基礎(chǔ)章軟件設(shè)計(jì)基礎(chǔ) 軟件設(shè)計(jì)過程 從工程管理的角度來看,軟件設(shè)計(jì)分兩步完成。 概要設(shè)計(jì),將軟件需求轉(zhuǎn)化為數(shù)據(jù)結(jié)構(gòu)和軟件的系統(tǒng) 結(jié)構(gòu)。 詳細(xì)設(shè)計(jì),即過程設(shè)計(jì)。通過對結(jié)構(gòu)表示進(jìn)行細(xì)化, 得到軟件的詳細(xì)的數(shù)據(jù)結(jié)構(gòu)和算法 第第4章軟件設(shè)計(jì)基礎(chǔ)章軟件設(shè)計(jì)基礎(chǔ) 設(shè)計(jì)過程的一般模型 需求描述需求描述 體系結(jié)構(gòu)設(shè)計(jì)體系結(jié)構(gòu)設(shè)計(jì)抽象描述抽象描述接口設(shè)計(jì)接口設(shè)計(jì)組件設(shè)計(jì)組件設(shè)計(jì) 數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu) 設(shè)計(jì)設(shè)計(jì) 系統(tǒng)體系結(jié)構(gòu)系統(tǒng)體系結(jié)構(gòu)軟件描述軟件描述接口描述接口描述組件描述組件描述 數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu) 描述描述 算法描述算法描述 算法設(shè)計(jì)算法設(shè)計(jì) 第第4
3、章軟件設(shè)計(jì)基礎(chǔ)章軟件設(shè)計(jì)基礎(chǔ) 2.設(shè)計(jì)原理設(shè)計(jì)原理 設(shè)計(jì)依賴的三種方法 抽象、分解和投影 設(shè)計(jì)一個系統(tǒng)有許多方法,具體的設(shè)計(jì)方法 取決于下列因素: 系統(tǒng)所要求的結(jié)構(gòu)或數(shù)據(jù) 設(shè)計(jì)者自已的愛好和習(xí)慣 每一種設(shè)計(jì)方法都應(yīng)采用某種分解方法: 自頂向下,逐層分解,不斷細(xì)化 從系統(tǒng)關(guān)鍵元素的頂層圖開始,逐步建立較低層 次元素 第第4章軟件設(shè)計(jì)基礎(chǔ)章軟件設(shè)計(jì)基礎(chǔ) 分解的層次 Top level First level of decomposition Second level of decomposition 第第4章軟件設(shè)計(jì)基礎(chǔ)章軟件設(shè)計(jì)基礎(chǔ) 設(shè)計(jì)的基本方法設(shè)計(jì)的基本方法 模塊分解(Modular dec
4、omposition) 將功能分配給模塊; 高層描述系統(tǒng)功能,低層描述模塊組織及相互聯(lián)系. 面向數(shù)據(jù)分解(Data-oriented decomposition) 基于外部數(shù)據(jù)結(jié)構(gòu); 高層描述總體數(shù)據(jù)結(jié)構(gòu),低層描述數(shù)據(jù)元素細(xì)節(jié)及其聯(lián)系. 面向事件分解(Event-oriented decomposition) 事件如何改變系統(tǒng)狀態(tài); 高層描述各種狀態(tài)列表,低層描述狀態(tài)轉(zhuǎn)換. 由外向內(nèi)設(shè)計(jì)(Outside-in design) 基于黑盒方法Black box; 高層列出全部用戶輸入,低層處理對輸入的響應(yīng). 面向?qū)ο笤O(shè)計(jì)(Object-oriented design) 確定對象的類及其交互關(guān)系;
5、高層描述每個對象的類型,低層描述對象屬性及動作. 第第4章軟件設(shè)計(jì)基礎(chǔ)章軟件設(shè)計(jì)基礎(chǔ) 面向構(gòu)件設(shè)計(jì) 識別可選的構(gòu)件 設(shè)計(jì)軟件架構(gòu)以容納這些構(gòu)件 基于體系架構(gòu)的設(shè)計(jì) 重點(diǎn)關(guān)注構(gòu)成系統(tǒng)的組件及組件連接方式,考 慮系統(tǒng)高層特性的實(shí)現(xiàn) 面向方面的(AOP)設(shè)計(jì) 使系統(tǒng)的功能需求、非功能需求、平臺特性等 諸多不同的關(guān)注點(diǎn)相互獨(dú)立,實(shí)現(xiàn)更好 的模塊 化,來構(gòu)建出易于理解、易于擴(kuò)展、高復(fù)用性、 高質(zhì)量的軟件系統(tǒng)。 第第4章軟件設(shè)計(jì)基礎(chǔ)章軟件設(shè)計(jì)基礎(chǔ) 2 理解設(shè)計(jì)要素理解設(shè)計(jì)要素 系統(tǒng)設(shè)計(jì)需要的組件系統(tǒng)設(shè)計(jì)需要的組件 第第4章軟件設(shè)計(jì)基礎(chǔ)章軟件設(shè)計(jì)基礎(chǔ) 設(shè)計(jì)考慮要素 網(wǎng)絡(luò)的設(shè)計(jì)與集成 應(yīng)用程序體系結(jié)構(gòu)的設(shè)計(jì)
6、用戶界面的設(shè)計(jì) 系統(tǒng)接口的設(shè)計(jì) 數(shù)據(jù)庫系統(tǒng)的設(shè)計(jì)與集成 細(xì)節(jié)設(shè)計(jì)原型系統(tǒng)的建立 系統(tǒng)控制的設(shè)計(jì)與集成 第第4章軟件設(shè)計(jì)基礎(chǔ)章軟件設(shè)計(jì)基礎(chǔ) 3 系統(tǒng)設(shè)計(jì)的目標(biāo)和任務(wù)系統(tǒng)設(shè)計(jì)的目標(biāo)和任務(wù) 在設(shè)計(jì)階段應(yīng)達(dá)到的目標(biāo)是: 提高可靠性;提高可維護(hù)性;提高效率。 衡量該目標(biāo)的準(zhǔn)則 設(shè)計(jì)實(shí)現(xiàn)所有包含在分析模型中的明示需求, 并且必須滿足客戶希望的所有潛在需求 軟件實(shí)體有明顯的層次結(jié)構(gòu),利于軟件元素間 控制。 軟件實(shí)體應(yīng)該是模塊化的,模塊具有獨(dú)立功能。 軟件實(shí)體與環(huán)境的界面清晰。 設(shè)計(jì)規(guī)格說明清晰、簡潔、完整和無二義性。 設(shè)計(jì)結(jié)果易于擴(kuò)充和適應(yīng)變化 第第4章軟件設(shè)計(jì)基礎(chǔ)章軟件設(shè)計(jì)基礎(chǔ) 軟件設(shè)計(jì)的任務(wù)軟件設(shè)計(jì)的任
7、務(wù) 規(guī)劃階段 設(shè)想供選擇的方案 選擇合理的方案 推薦最佳方案 設(shè)計(jì)階段 制定規(guī)范 軟件系統(tǒng)的結(jié)構(gòu)設(shè)計(jì) 處理方式設(shè)計(jì) 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì) 可靠性設(shè)計(jì) 編寫概要設(shè)計(jì)階段的文檔 制定測試計(jì)劃 概要設(shè)計(jì)評審 詳細(xì)設(shè)計(jì) 第第4章軟件設(shè)計(jì)基礎(chǔ)章軟件設(shè)計(jì)基礎(chǔ) 規(guī)劃階段的任務(wù)規(guī)劃階段的任務(wù) 1. 設(shè)想供選擇的方案 任務(wù): 分析中考慮各種可能的實(shí)現(xiàn)方案分析中考慮各種可能的實(shí)現(xiàn)方案,從中選擇最佳從中選擇最佳 方案方案. 設(shè)計(jì)的方法: 從從DFD出發(fā)出發(fā),設(shè)想把設(shè)想把DFD中的處理分解成各種不中的處理分解成各種不 同的實(shí)現(xiàn)方案同的實(shí)現(xiàn)方案; 拋棄技術(shù)上行不通的方案拋棄技術(shù)上行不通的方案. 第第4章軟件設(shè)計(jì)基礎(chǔ)章軟件設(shè)計(jì)基
8、礎(chǔ) 2. 選擇合理的方案 任務(wù): 從設(shè)想的可供選擇的方案中選擇若干個合理的方案從設(shè)想的可供選擇的方案中選擇若干個合理的方案; 選擇實(shí)現(xiàn)方案時,至少要選擇: 低成本方案低成本方案 中等成本方案中等成本方案 高成本方案高成本方案 對每個合理的方案,準(zhǔn)備下列資料: 系統(tǒng)流程圖系統(tǒng)流程圖 組成系統(tǒng)的物理元素清單組成系統(tǒng)的物理元素清單 成本成本/效益分析效益分析 實(shí)現(xiàn)該系統(tǒng)的進(jìn)度計(jì)劃實(shí)現(xiàn)該系統(tǒng)的進(jìn)度計(jì)劃 第第4章軟件設(shè)計(jì)基礎(chǔ)章軟件設(shè)計(jì)基礎(chǔ) 3. 推薦最佳方案 任務(wù): 綜合分析對比各種合理方案的利弊綜合分析對比各種合理方案的利弊,推薦一個最推薦一個最 佳方案佳方案; 為該方案制定詳細(xì)的實(shí)現(xiàn)計(jì)劃為該方案制定
9、詳細(xì)的實(shí)現(xiàn)計(jì)劃. 用戶和有關(guān)技術(shù)專家審查該方案: 是否確實(shí)符合用戶的需要是否確實(shí)符合用戶的需要? 是否能在現(xiàn)有的條件下實(shí)現(xiàn)是否能在現(xiàn)有的條件下實(shí)現(xiàn)? 投資人或使用部門負(fù)責(zé)人審批. 獲得批準(zhǔn)后獲得批準(zhǔn)后,進(jìn)行結(jié)構(gòu)設(shè)計(jì)進(jìn)行結(jié)構(gòu)設(shè)計(jì). 第第4章軟件設(shè)計(jì)基礎(chǔ)章軟件設(shè)計(jì)基礎(chǔ) 設(shè)計(jì)階段的任務(wù)設(shè)計(jì)階段的任務(wù)(cont.) 1 制定規(guī)范 確定設(shè)計(jì)的目標(biāo),及優(yōu)先順序。 確定合適的設(shè)計(jì)方法 規(guī)定設(shè)計(jì)文檔的編制標(biāo)準(zhǔn) 規(guī)定編碼的信息形式 接口規(guī)約,命名規(guī)則 閱讀和理解軟件需求說明書,確認(rèn)用戶要 求能否實(shí)現(xiàn),明確實(shí)現(xiàn)的條件,從而確定 設(shè)計(jì)的目標(biāo),以及它們的優(yōu)先順序 第第4章軟件設(shè)計(jì)基礎(chǔ)章軟件設(shè)計(jì)基礎(chǔ) 軟件設(shè)計(jì)的任務(wù)軟件
10、設(shè)計(jì)的任務(wù)(cont.) 2 軟件系統(tǒng)的結(jié)構(gòu)設(shè)計(jì) 體系結(jié)構(gòu)設(shè)計(jì) 組成系統(tǒng)的結(jié)構(gòu)元素和界面; 元素中協(xié)作的特定行為; 大的子系統(tǒng)中這些結(jié)構(gòu)和行為的復(fù)合 將系統(tǒng)按功能劃分成模塊的層次結(jié)構(gòu)。 確定每個模塊的功能 建立與已確定的軟件需求的對應(yīng)關(guān)系 確定模塊間的調(diào)用關(guān)系 確定模塊間的接口 評估模塊劃分的質(zhì)量 第第4章軟件設(shè)計(jì)基礎(chǔ)章軟件設(shè)計(jì)基礎(chǔ) 軟件設(shè)計(jì)的任務(wù)軟件設(shè)計(jì)的任務(wù)(cont.) 3 處理方式設(shè)計(jì) 確定為實(shí)現(xiàn)系統(tǒng)的功能需求所必需的算法 評估算法的性能 確定為滿足系統(tǒng)的性能需求所必需的算法和模 塊間的控制方式 周轉(zhuǎn)時間 響應(yīng)時間 吞吐量 精度 確定外部信號的接收發(fā)送形式 第第4章軟件設(shè)計(jì)基礎(chǔ)章軟件設(shè)
11、計(jì)基礎(chǔ) 軟件設(shè)計(jì)的任務(wù)軟件設(shè)計(jì)的任務(wù)(cont.) 4 數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì) 確定文件系統(tǒng)的結(jié)構(gòu)以及數(shù)據(jù)庫的模式、子模 式 確定輸入,輸出文件的數(shù)據(jù)結(jié)構(gòu) 確定算法所必需的邏輯數(shù)據(jù)結(jié)構(gòu)及其操作 確定對邏輯數(shù)據(jù)結(jié)構(gòu)所必需的程序模塊 限制和確定各個數(shù)據(jù)設(shè)計(jì)決策的影響范圍 確定其詳細(xì)的數(shù)據(jù)結(jié)構(gòu)和使用規(guī)則 數(shù)據(jù)的完整性、安全性、一致性、冗余性設(shè)計(jì) 第第4章軟件設(shè)計(jì)基礎(chǔ)章軟件設(shè)計(jì)基礎(chǔ) 軟件設(shè)計(jì)的任務(wù)軟件設(shè)計(jì)的任務(wù)(cont.) (5)可靠性設(shè)計(jì) 也叫質(zhì)量設(shè)計(jì) 軟件可靠性是在給定的時間內(nèi),程序按照規(guī)定 的條件成功運(yùn)行的概率。 容錯技術(shù)、 冗余技術(shù) 第第4章軟件設(shè)計(jì)基礎(chǔ)章軟件設(shè)計(jì)基礎(chǔ) 軟件設(shè)計(jì)的任務(wù)軟件設(shè)計(jì)的任務(wù)(c
12、ont.) 6編寫概要設(shè)計(jì)階段的文檔 設(shè)計(jì)說明 數(shù)據(jù)庫設(shè)計(jì)說明 接口說明 用戶手冊 制定初步的測試計(jì)劃 第第4章軟件設(shè)計(jì)基礎(chǔ)章軟件設(shè)計(jì)基礎(chǔ) 軟件設(shè)計(jì)的任務(wù)軟件設(shè)計(jì)的任務(wù)(cont.) 7 制定測試計(jì)劃 第第4章軟件設(shè)計(jì)基礎(chǔ)章軟件設(shè)計(jì)基礎(chǔ) 軟件設(shè)計(jì)的任務(wù)軟件設(shè)計(jì)的任務(wù)(cont.) 8 概要設(shè)計(jì)評審 可追溯性 接口 風(fēng)險(xiǎn) 實(shí)用性 可維護(hù)性 可測試性 技術(shù)清晰度 質(zhì)量保證 各種選擇方案 限制 文檔 第第4章軟件設(shè)計(jì)基礎(chǔ)章軟件設(shè)計(jì)基礎(chǔ) 9詳細(xì)設(shè)計(jì) 確定軟件各模塊的算法,以及內(nèi)部數(shù)據(jù)組織、描述算法 數(shù)據(jù)的組織和輸入設(shè)計(jì) 輸出信息設(shè)計(jì) 文件/數(shù)據(jù)庫設(shè)計(jì) 編碼設(shè)計(jì) 消息傳遞機(jī)制設(shè)計(jì) 接口設(shè)計(jì) 系統(tǒng)的安全保
13、密設(shè)計(jì) 系統(tǒng)的性能設(shè)計(jì) . 進(jìn)行詳細(xì)設(shè)計(jì)的評審 第第4章軟件設(shè)計(jì)基礎(chǔ)章軟件設(shè)計(jì)基礎(chǔ) 設(shè)計(jì)的指南 1 設(shè)計(jì)應(yīng)該展示一種層次化結(jié)構(gòu) 2 設(shè)計(jì)應(yīng)該模塊化,即邏輯地劃分成完成特定功能和子功能的構(gòu)件 3 設(shè)計(jì)應(yīng)該包括對數(shù)據(jù)、結(jié)構(gòu)、界面和部件的清楚表述 4 設(shè)計(jì)應(yīng)該導(dǎo)出適于實(shí)現(xiàn)目的和由公認(rèn)的數(shù)據(jù)模式導(dǎo)出的數(shù)據(jù)結(jié)構(gòu) 5 設(shè)計(jì)應(yīng)該導(dǎo)出具有獨(dú)立功能特征的模塊 6 設(shè)計(jì)應(yīng)該導(dǎo)出降低模塊和外部環(huán)境間連接復(fù)雜度的接口 7 設(shè)計(jì)應(yīng)該通過使用可重復(fù)的方法來得到,這些方法被來源于軟件 需求分析的信息所驅(qū)動 8 設(shè)計(jì)應(yīng)該可以持續(xù)改進(jìn) 第第4章軟件設(shè)計(jì)基礎(chǔ)章軟件設(shè)計(jì)基礎(chǔ) 5 軟件設(shè)計(jì)概念軟件設(shè)計(jì)概念 抽象 體系結(jié)構(gòu) 模式 模塊
14、化 信息隱藏 求精 重構(gòu) 第第4章軟件設(shè)計(jì)基礎(chǔ)章軟件設(shè)計(jì)基礎(chǔ) 軟件設(shè)計(jì)概念軟件設(shè)計(jì)概念-抽象抽象 抽象是人類處理復(fù)雜問題的基本方法之一 Grady Broach 抽象是抽出事務(wù)的本質(zhì)特性,暫時忽略細(xì)節(jié),分層理 解問題,自頂向下層層細(xì)化; 抽象有助于分層次認(rèn)識和分析問題,改善設(shè)計(jì)質(zhì)量。 抽象的級別: 每個模塊都具有某種級別的抽象. 每一層次的抽象都在一定程度上細(xì)化了上一層模 塊的內(nèi)容 頂層模塊描述系統(tǒng)最高層次功能的抽象 下層模塊描述上層模塊功能的更詳細(xì)的處理方法 最下層模塊描述某一具體功能的最詳細(xì)的處理方法 第第4章軟件設(shè)計(jì)基礎(chǔ)章軟件設(shè)計(jì)基礎(chǔ) 軟件設(shè)計(jì)概念軟件設(shè)計(jì)概念-抽象抽象(cont.) 抽
15、象的例子: 第一層抽象第一層抽象 第三層抽象第三層抽象 第二層抽象第二層抽象 電器設(shè)備 空氣傳感器 水傳感器 傳感器 各類具體傳感器各類具體傳感器 抽象為傳感器抽象為傳感器 抽象為電器設(shè)備抽象為電器設(shè)備 第第4章軟件設(shè)計(jì)基礎(chǔ)章軟件設(shè)計(jì)基礎(chǔ) 軟件設(shè)計(jì)概念軟件設(shè)計(jì)概念-體系結(jié)構(gòu)體系結(jié)構(gòu) 軟件設(shè)計(jì)的目標(biāo)之一是導(dǎo)出系統(tǒng)的體系結(jié)構(gòu) 透視圖。 體系結(jié)構(gòu)是軟件構(gòu)成的抽象表示,它反映了 軟件的整體結(jié)構(gòu)以及這種結(jié)構(gòu)為系統(tǒng)提供實(shí) 現(xiàn)及運(yùn)行上完整性表達(dá)的方式。 第第4章軟件設(shè)計(jì)基礎(chǔ)章軟件設(shè)計(jì)基礎(chǔ) 軟件設(shè)計(jì)概念軟件設(shè)計(jì)概念-模式模式 設(shè)計(jì)模式是一種軟件問題的解決方案。它 描述了在某個特定場景,針對特定設(shè)計(jì)問 題(系統(tǒng)
16、需求)的一種軟件實(shí)現(xiàn)結(jié)構(gòu)。 應(yīng)用成熟的模式可以降低項(xiàng)目開發(fā)的風(fēng)險(xiǎn)、 提高軟件開發(fā)的質(zhì)量。 第第4章軟件設(shè)計(jì)基礎(chǔ)章軟件設(shè)計(jì)基礎(chǔ) 軟件設(shè)計(jì)概念軟件設(shè)計(jì)概念-模塊化模塊化 “模塊”,又稱“構(gòu)件”,一般指用一個名 字可調(diào)用的一段程序。它一般具有如下三 個基本屬性: 功能 即指該模塊實(shí)現(xiàn)什么功能,做什么事 情。必須注意:模塊功能,應(yīng)是該模塊本身的 功能加上它所調(diào)用的所有子模塊的功能。 邏輯 即描述模塊內(nèi)部怎么做。 狀態(tài) 即該模塊使用時的環(huán)境和條件。 第第4章軟件設(shè)計(jì)基礎(chǔ)章軟件設(shè)計(jì)基礎(chǔ) 軟件設(shè)計(jì)概念軟件設(shè)計(jì)概念-模塊化模塊化(cont.) 模塊化 程序分成若干個模塊,且: 每一個模塊完成一個相對獨(dú)立的子功
17、能 每個模塊定義了輸入和輸出的功能。 若干個模塊集成,構(gòu)成一個整體,完成一個大功能。 模塊的例子: 面向過程設(shè)計(jì):子系統(tǒng),過程,函數(shù),子程序,宏 面向?qū)ο笤O(shè)計(jì):子系統(tǒng),包,對象,對象內(nèi)的方法 第第4章軟件設(shè)計(jì)基礎(chǔ)章軟件設(shè)計(jì)基礎(chǔ) 軟件設(shè)計(jì)概念軟件設(shè)計(jì)概念-模塊化模塊化(cont.) 軟件總成本 模塊化與軟件成本的關(guān)系 成本 模塊 數(shù)目 模塊成本 接口成本 最小成本區(qū) M 令:令:C C(X X)表示問題)表示問題 X X 的復(fù)雜度函數(shù);的復(fù)雜度函數(shù); E E(X X)解決問題)解決問題 X X 所需工作量的復(fù)所需工作量的復(fù) 雜度函數(shù);雜度函數(shù); 若:有問題若:有問題 P1P1,P2 P2 ; C
18、 C(P1P1) C C(P2P2);); 顯然:顯然:E E(P1P1) E E(P2P2) 由經(jīng)驗(yàn):由經(jīng)驗(yàn):C C(P1+P2P1+P2) C C(P1P1)+ C+ C(P2P2) 于是:于是:E E(P1+P2P1+P2) E E(P1P1)+ E+ E(P2P2) 將問題(將問題(P1+P2P1+P2)劃分為兩個問題)劃分為兩個問題P1P1和和P2P2 后,其工作量和復(fù)雜度都降低。后,其工作量和復(fù)雜度都降低。 并非模塊分得越小越好,因?yàn)槟K之間接口的復(fù)雜度和工作量增加。并非模塊分得越小越好,因?yàn)槟K之間接口的復(fù)雜度和工作量增加。 顯然,每個軟件系統(tǒng)都有一個最佳模塊數(shù)顯然,每個軟件系統(tǒng)
19、都有一個最佳模塊數(shù)M M。注意選擇分解的最佳模塊數(shù)。注意選擇分解的最佳模塊數(shù)。 右上圖描述了模塊化與軟件成本的關(guān)系。右上圖描述了模塊化與軟件成本的關(guān)系。 第第4章軟件設(shè)計(jì)基礎(chǔ)章軟件設(shè)計(jì)基礎(chǔ) 軟件設(shè)計(jì)概念軟件設(shè)計(jì)概念-信息隱藏信息隱藏 每個模塊對其他所有模塊都應(yīng)隱蔽自己的 設(shè)計(jì)決策。 設(shè)計(jì)模塊時使得一個模塊內(nèi)包含的信息(過程和數(shù)據(jù)) 對于不需要這些信息的模塊來說是不能訪問的. 信息隱蔽是模塊化和抽象的結(jié)果,隱藏了模 塊內(nèi)部的細(xì)節(jié),使其他模塊不能訪問該模塊 的內(nèi)部細(xì)節(jié)和過程。 信息隱藏提高了軟件的可維護(hù)性。 第第4章軟件設(shè)計(jì)基礎(chǔ)章軟件設(shè)計(jì)基礎(chǔ) 軟件設(shè)計(jì)概念軟件設(shè)計(jì)概念-求精求精 逐步求精(Step
20、wise refinement) 逐步求精是人類解決復(fù)雜問題時采用的基本方 法,也是許多軟件工程技術(shù)的基礎(chǔ). 抽象與逐步求精是一對互補(bǔ)的概念.模塊分解中 的上層是下層的抽象,下層是上層的求精過程 第第4章軟件設(shè)計(jì)基礎(chǔ)章軟件設(shè)計(jì)基礎(chǔ) 軟件設(shè)計(jì)概念軟件設(shè)計(jì)概念-重構(gòu)重構(gòu) 重構(gòu)是一種重新設(shè)計(jì)的技術(shù),可以優(yōu)化構(gòu) 件的設(shè)計(jì)(代碼)而無須改變系統(tǒng)的功能 或行為。 第第4章軟件設(shè)計(jì)基礎(chǔ)章軟件設(shè)計(jì)基礎(chǔ) 6 模塊獨(dú)立性模塊獨(dú)立性 模塊設(shè)計(jì)的關(guān)鍵: 每個模塊完成一個相對獨(dú)立的子功能,并且與其 它模塊間的接口簡單,即功能專一,模塊之間無 過多的相互作用的模塊。 模塊獨(dú)立的好處 有效的模塊化的軟件開發(fā)相對較容易 接口
21、簡單 便于多人合作開發(fā)(并行開發(fā)) 獨(dú)立的模塊容易測試和維護(hù) 測試和修改只是在一個模塊中 擴(kuò)充只是填加一些新模塊 第第4章軟件設(shè)計(jì)基礎(chǔ)章軟件設(shè)計(jì)基礎(chǔ) 6 模塊獨(dú)立性模塊獨(dú)立性(cont.) 模塊獨(dú)立性的度量標(biāo)準(zhǔn)是兩個定性準(zhǔn)則: 耦合性(Coupling):用于描述模塊之間聯(lián)系的緊密 程度。 內(nèi)聚性(Cohesion):用于描述模塊內(nèi)部聯(lián)系的緊密 程度。 第第4章軟件設(shè)計(jì)基礎(chǔ)章軟件設(shè)計(jì)基礎(chǔ) 耦合的概念:兩個模塊之間聯(lián)系的緊密程度. 高度耦合:模塊之間依賴性很強(qiáng)高度耦合:模塊之間依賴性很強(qiáng). 松散耦合:模塊之間雖然有聯(lián)系松散耦合:模塊之間雖然有聯(lián)系,但依賴程度較弱但依賴程度較弱. 無耦合:模塊間沒
22、有任何聯(lián)系無耦合:模塊間沒有任何聯(lián)系,互相完全獨(dú)立互相完全獨(dú)立. Great deal of dependence Independent Highly coupled Loosely coupled Uncoupled Goal: as loose as possible = as independent as possible 耦合耦合(Coupling) 第第4章軟件設(shè)計(jì)基礎(chǔ)章軟件設(shè)計(jì)基礎(chǔ) 決定耦合程度的幾種情況: 一個模塊對另一個模塊的訪問一個模塊對另一個模塊的訪問. 例:模塊A調(diào)用模塊B完成其功能. 模塊間傳遞的數(shù)據(jù)模塊間傳遞的數(shù)據(jù). 例:一個參數(shù)、一個數(shù)組、一個數(shù)據(jù)塊. 一個模塊給
23、另一個模塊傳遞控制信息一個模塊給另一個模塊傳遞控制信息. 例:模塊A將一個控制標(biāo)志傳送給模塊B. 該標(biāo)志的值通知模塊B調(diào)用哪個處理過程. A BB A array B A flag 耦合耦合(Coupling) 第第4章軟件設(shè)計(jì)基礎(chǔ)章軟件設(shè)計(jì)基礎(chǔ) 直接耦合與間接耦合: 不可能有一個系統(tǒng)是由完全無耦合的模塊組成的不可能有一個系統(tǒng)是由完全無耦合的模塊組成的. 理想的耦合: n模塊之間的耦合程度越低(松散)越好. n耦合度低:修改一個模塊時,改動涉及的模塊少,改動量小. n耦合度高:修改一個模塊時,改動涉及的模塊多,改動量大. A B A與與B是直接耦合是直接耦合 Z Y X X與與Z是間接耦合是間
24、接耦合 耦合耦合(Coupling) 第第4章軟件設(shè)計(jì)基礎(chǔ)章軟件設(shè)計(jì)基礎(chǔ) 耦合耦合(Coupling) 獨(dú)立性由弱到強(qiáng)排列為: 內(nèi)容耦合(Content Coupling): 公共耦合 (Common coupling): 控制耦合(Control coupling): 特征耦合(Stamp coupling ) 數(shù)據(jù)耦合(Data coupling): 第第4章軟件設(shè)計(jì)基礎(chǔ)章軟件設(shè)計(jì)基礎(chǔ) 例1:A訪問C的內(nèi)部 數(shù)據(jù)或不通過 正常入口而轉(zhuǎn) 入C的內(nèi)部。 AB CD A: goto C1 C: C1: 內(nèi)容耦合內(nèi)容耦合(Content Coupling): 一個模塊可能修改另一個模塊內(nèi)部的數(shù)據(jù)一
25、個模塊可能修改另一個模塊內(nèi)部的數(shù)據(jù). 耦合(Coupling) 第第4章軟件設(shè)計(jì)基礎(chǔ)章軟件設(shè)計(jì)基礎(chǔ) 例2:部分代 碼重疊(常出 現(xiàn)在匯編程序 中) B A 例例3:一個:一個 模塊有多個模塊有多個 入口(功能)入口(功能) A: entry 1: entry 2: The least desirable 耦合(Coupling) 第第4章軟件設(shè)計(jì)基礎(chǔ)章軟件設(shè)計(jì)基礎(chǔ) 公共耦合 (Common coupling): 通過一個公共數(shù)據(jù)存儲區(qū)來減少耦合程度. 模塊間仍然存在依賴關(guān)系,公共數(shù)據(jù)的修改可能對訪問該公共 數(shù)據(jù)存儲區(qū)的模塊都有影響. Global:V1,V2 A: A1=V1+V2 B: V1
26、=B1 Global:V1,V2 A: V1+ B: V2=B1+V1 耦合(Coupling) 第第4章軟件設(shè)計(jì)基礎(chǔ)章軟件設(shè)計(jì)基礎(chǔ) (3) 控制耦合(Control Coupling) 一個模塊對另一個模塊傳遞控制參數(shù),控制該模塊. 沒有第一個模塊的指示沒有第一個模塊的指示,受控模塊就不可能完成其功能。受控模塊就不可能完成其功能。 如果一個模塊依賴另一個模塊的返回值決定流向。如果一個模塊依賴另一個模塊的返回值決定流向。 控制耦合系統(tǒng)的優(yōu)點(diǎn): 每一個模塊只完成一個功能或只執(zhí)行一個過程每一個模塊只完成一個功能或只執(zhí)行一個過程. 模塊間傳遞的控制信息量最少模塊間傳遞的控制信息量最少,控制局部化控制
27、局部化. Component A Component B Control data 耦合耦合(Coupling) 第第4章軟件設(shè)計(jì)基礎(chǔ)章軟件設(shè)計(jì)基礎(chǔ) 控制耦合舉例控制耦合舉例 A A 計(jì)算平均分計(jì)算平均分 或最高分或最高分 B B 平均平均/ /最高最高 ( (控制信號控制信號) ) 成績成績 讀入分?jǐn)?shù)讀入分?jǐn)?shù) 輸出結(jié)果輸出結(jié)果 計(jì)算平均分計(jì)算平均分計(jì)算最高分計(jì)算最高分 平均平均/ /最高最高? ? B B 第第4章軟件設(shè)計(jì)基礎(chǔ)章軟件設(shè)計(jì)基礎(chǔ) (4)特征耦合(Stamp Coupling) 模塊之間傳遞信息是數(shù)據(jù)結(jié)構(gòu),但被調(diào)用的只需要 使用其中一部分?jǐn)?shù)據(jù)元素時,就出現(xiàn)了特征耦合。 將標(biāo)記耦合修
28、改為數(shù)據(jù)耦合 Component A Component B Data Structure 耦合耦合(Coupling) 第第4章軟件設(shè)計(jì)基礎(chǔ)章軟件設(shè)計(jì)基礎(chǔ) 特征耦合舉例 “住戶情況住戶情況”是一個數(shù)據(jù)結(jié)構(gòu)是一個數(shù)據(jù)結(jié)構(gòu), ,圖中模塊都與此圖中模塊都與此 數(shù)據(jù)結(jié)構(gòu)有關(guān)。數(shù)據(jù)結(jié)構(gòu)有關(guān)。 “計(jì)算水費(fèi)計(jì)算水費(fèi)”和和“計(jì)算電費(fèi)計(jì)算電費(fèi)”本無關(guān)本無關(guān), ,由于引用由于引用 了此數(shù)據(jù)結(jié)構(gòu)產(chǎn)生依賴關(guān)系了此數(shù)據(jù)結(jié)構(gòu)產(chǎn)生依賴關(guān)系, ,它們之間也是特征它們之間也是特征 偶合。偶合。 計(jì)算水電費(fèi)計(jì)算水電費(fèi) 計(jì)算水費(fèi)計(jì)算水費(fèi)計(jì)算電費(fèi)計(jì)算電費(fèi) 住戶情況住戶情況 水費(fèi)水費(fèi) 電費(fèi)電費(fèi) 住戶情況住戶情況 第第4章軟件設(shè)計(jì)基礎(chǔ)
29、章軟件設(shè)計(jì)基礎(chǔ) (5) 數(shù)據(jù)耦合(Data Coupling) 兩個模塊之間只傳遞數(shù)據(jù). 數(shù)據(jù)耦合最簡單數(shù)據(jù)耦合最簡單,耦合度最低耦合度最低. Component A Component B data 耦合耦合(Coupling) 計(jì)算顧客帳單計(jì)算顧客帳單 計(jì)算借還金額計(jì)算借還金額 借款數(shù)借款數(shù) 利息利息 時間時間 借借 金金 還還 額額 第第4章軟件設(shè)計(jì)基礎(chǔ)章軟件設(shè)計(jì)基礎(chǔ) 內(nèi)聚內(nèi)聚 (Cohesion) (Cohesion) 內(nèi)聚的概念:一個模塊內(nèi)部的各部分之間 的緊密程度. 內(nèi)聚程度越高,模塊內(nèi)部元素互相聯(lián)系就越緊密. 模塊設(shè)計(jì)的原則:盡可能提高內(nèi)聚. 如果一個模塊內(nèi)的所有元素都是為了完成
30、同一 任務(wù)而設(shè)計(jì)的,則該模塊的內(nèi)聚高. 內(nèi)聚的程度取決于概要設(shè)計(jì)的模塊分解方 法. 在進(jìn)行功能分解時,應(yīng)考慮到如何分解使一個模 塊只完成一個單一的功能,以提高模塊有內(nèi)聚. 第第4章軟件設(shè)計(jì)基礎(chǔ)章軟件設(shè)計(jì)基礎(chǔ) (1) 偶然內(nèi)聚(Coincidental Cohesion) 一個模塊完成幾個彼此無必須聯(lián)系的功能. 可理解性差,難以解釋該模塊的作用,可修改性差、 無法復(fù)用. Function D Function E Function CFunction B Function A Coincidental Parts unrelated B C D E D B A E C A 內(nèi)聚內(nèi)聚 (Cohes
31、ion) 第第4章軟件設(shè)計(jì)基礎(chǔ)章軟件設(shè)計(jì)基礎(chǔ) (2) 邏輯內(nèi)聚(Logical Cohesion) 將幾個在邏輯上具有似功能的功能段做成一 個模塊,通過傳送數(shù)據(jù)決定執(zhí)行哪個功能段. 修改困難,增大了與其他模塊的耦合度,浪費(fèi)內(nèi) 存,效率低. Function A” Function A Function A Logical Similar functions Function A Function A” Function A 內(nèi)聚內(nèi)聚 (Cohesion) 例如,一個函數(shù)同時實(shí)現(xiàn)了向文件輸出、打印機(jī)輸出、網(wǎng)絡(luò)輸出等,具體一次的輸出需要例如,一個函數(shù)同時實(shí)現(xiàn)了向文件輸出、打印機(jī)輸出、網(wǎng)絡(luò)輸出等,具
32、體一次的輸出需要 根據(jù)調(diào)用者的傳遞參數(shù)來決定。根據(jù)調(diào)用者的傳遞參數(shù)來決定。 第第4章軟件設(shè)計(jì)基礎(chǔ)章軟件設(shè)計(jì)基礎(chǔ) (3) 時間性內(nèi)聚(Temporal Cohesion) 幾個功能經(jīng)常在同一時間段內(nèi)完成. 例:將幾個模塊的初始化部分放在一個公共 模塊中執(zhí)行.該模塊的初值和文件要涉及到多 個模塊,加大了模塊間的耦合度. Time to +2x Time to + x Time to Temporal Related by time 時間內(nèi)聚和邏輯內(nèi)聚模塊都很難修改時間內(nèi)聚和邏輯內(nèi)聚模塊都很難修改 , ,因?yàn)檫@種模塊同時要完成幾個不同因?yàn)檫@種模塊同時要完成幾個不同 的功能的功能, ,當(dāng)修改其中一個功能
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度文化藝術(shù)界員工勞動合同范本2篇
- 二零二五年度大蒜種植基地與電商平臺物流配送合同3篇
- 二零二五年度房產(chǎn)中介保密協(xié)議示范文本9篇
- 二零二五年度房屋抵押貸款與資產(chǎn)證券化合同范本3篇
- 二零二五年度建筑安裝工程安全應(yīng)急預(yù)案編制合同3篇
- 二零二五年度房地產(chǎn)開發(fā)項(xiàng)目合作智慧城市建設(shè)合作協(xié)議范本3篇
- 縱向推書機(jī)構(gòu)課程設(shè)計(jì)
- 二零二五年度步行街商鋪?zhàn)赓U與綠色能源使用協(xié)議合同3篇
- 二零二五年度房地產(chǎn)銷售代理服務(wù)合同(含綠色環(huán)保建材)3篇
- 海南衛(wèi)生健康職業(yè)學(xué)院《拓展運(yùn)動課程設(shè)計(jì)》2023-2024學(xué)年第一學(xué)期期末試卷
- 米吳科學(xué)漫畫奇妙萬象篇
- 河南省鄭州市金水區(qū)2022-2023學(xué)年三年級上學(xué)期期末數(shù)學(xué)試卷
- XXX酒店開辦費(fèi)POB預(yù)算
- Z矩陣、Y矩陣、A矩陣、S矩陣、T矩陣定義、推導(dǎo)及轉(zhuǎn)換公式
- 中美歐規(guī)范樁基承載力計(jì)算設(shè)計(jì)對比
- 外科洗手操作考核評分表
- 復(fù)旦大學(xué)外國留學(xué)生入學(xué)申請表
- 長安汽車發(fā)動機(jī)水溫高故障案例分析處置
- 瞬時單位線法計(jì)算洪水
- 氣力輸灰安裝施工方案
- 抗精神疾病藥物與麻醉課件
評論
0/150
提交評論