第五章模塊化設(shè)計_第1頁
第五章模塊化設(shè)計_第2頁
第五章模塊化設(shè)計_第3頁
第五章模塊化設(shè)計_第4頁
第五章模塊化設(shè)計_第5頁
已閱讀5頁,還剩55頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第五章軟件設(shè)計概述§5.1軟件設(shè)計的目標(biāo)和任務(wù)§5.2軟件設(shè)計基本概念§5.3模塊化設(shè)計1§5.1軟件設(shè)計的任務(wù)軟件需求:解決“做什么”

軟件設(shè)計:解決“怎么做”

2軟件設(shè)計的任務(wù)

問題結(jié)構(gòu)(軟件需求)軟件結(jié)構(gòu);

從軟件需求規(guī)格說明書出發(fā),形成軟件的具體設(shè)計方案。映射31.軟件的總體結(jié)構(gòu)主要回答的問題軟件的組成部分軟件的層次關(guān)系模塊的內(nèi)部處理邏輯模塊之間的界面42.軟件設(shè)計方法結(jié)構(gòu)化設(shè)計方法(SD)面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法(JSD方法)面向?qū)ο蟮脑O(shè)計方法(OOD)53.軟件設(shè)計分為兩個階段:(1)概要設(shè)計(總體設(shè)計)

確定軟件的結(jié)構(gòu)以及各組成成分(子系統(tǒng)或模塊)

之間的相互關(guān)系。(2)詳細(xì)設(shè)計確定模塊內(nèi)部的算法和數(shù)據(jù)結(jié)構(gòu),產(chǎn)生描述各模塊程序過程的詳細(xì)文檔。6§5.2軟件設(shè)計的基本概念1.模塊化2.抽象與細(xì)化3.信息隱蔽4.軟件復(fù)用71.模塊化模塊化:把程序劃分成若干個模塊,每個模塊完成一個子功能,把這些模塊集總起來組成一個整體,可以完成指定的功能,滿足問題的功能。模塊:一個擁有明確定義的輸入、輸出和特性的程序?qū)嶓w。8模塊模塊是具有一定功能的可以用名詞調(diào)用的程序語句集合,如:獨(dú)立的匯編程序Pascal過程9概要設(shè)計的基本概念將系統(tǒng)劃分成模塊決定每個模塊的功能決定模塊的調(diào)用關(guān)系決定模塊的界面,即模塊間傳遞的數(shù)據(jù)10

2.抽象(Abstraction)與細(xì)化抽象:解決問題時只考慮與問題有關(guān)的方面,不考慮與問題無關(guān)的方面。即抽出事物的本質(zhì)特性而不考慮細(xì)節(jié)。

11抽象(Abstraction)抽象原則應(yīng)用舉例WindowsNT一體化的I/O系統(tǒng)設(shè)計文件管理網(wǎng)絡(luò)管理設(shè)備管理高速緩沖存儲器OS對虛擬文件的字節(jié)流,虛擬文件可為任何設(shè)備和實(shí)體抽象12細(xì)化:即分解。在逐步細(xì)化中,特別強(qiáng)調(diào)這種分解的“逐步”性質(zhì),即每一部分僅較其前一部增加“少量”的細(xì)節(jié)。這樣,在相鄰兩部之間就只有微小的變化,不難驗(yàn)證它們的內(nèi)容是否等效。133.信息隱蔽(InformationHiding)信息隱蔽的含義:有效的模塊化可以通過定義一組獨(dú)立模塊來實(shí)現(xiàn),這些模塊相互之間只交流軟件功能必需的信息。換句話說:模塊所包含的信息,不允許其它不需要這些信息的模塊訪問,獨(dú)立的模塊間僅僅交換為完成系統(tǒng)功能而必須交換的信息。信息隱蔽:對模塊內(nèi)部信息訪問的約束信息隱蔽的基本原則:功能獨(dú)立,高內(nèi)聚且低耦合14§5.3模塊化設(shè)計1.分解2.模塊獨(dú)立性內(nèi)聚耦合自頂向下與自底向上設(shè)計15模塊化(Modularity)模塊化是好的軟件設(shè)計的一個基本準(zhǔn)則高層模塊從整體上把握問題,隱蔽細(xì)節(jié)

復(fù)雜問題較小問題

分解可減小解題所需的總的工作分解16C(p1)>C(p2)則E(p1)>E(p2)其中:p1和p2是兩個問題C(x)是由x問題決定的復(fù)雜性E(x)是解決x問題所需要的工作量C(p1+p2)>C(p1)+C(p2)E(p1+p2)>E(p1)+E(p2)試驗(yàn)發(fā)現(xiàn)模塊劃分得越小成本越低,但是集成成本卻隨著模塊劃分得越小成本越高。如何確定模塊化分的最小成本區(qū),并保證模塊的最佳性能,是設(shè)計活動中的主要任務(wù)之一。1.分解"各個擊破"理論17模塊數(shù)與開發(fā)工作量的關(guān)系成本或工作量模塊數(shù)量軟件總成本集成成本成本/模塊M最小成本區(qū)域182.模塊的獨(dú)立性模塊獨(dú)立性的概念模塊完成獨(dú)立的功能符合信息隱蔽和信息局部化原則模塊間關(guān)連和依賴程度盡量小19模塊獨(dú)立性的度量

模塊獨(dú)立性取決于模塊的內(nèi)部和外部特征。SD方法提出的定性的度量標(biāo)準(zhǔn):模塊自身的內(nèi)聚性模塊之間的耦合性

202.模塊獨(dú)立性的度量之一:內(nèi)聚性一個模塊內(nèi)部各成分之間相互關(guān)聯(lián)的強(qiáng)度設(shè)計目標(biāo):高內(nèi)聚(一模塊的所有成分都直接參與并且對于完成同一功能來說都是最基本的)21模塊的內(nèi)聚性類型:低巧合內(nèi)聚內(nèi)邏輯內(nèi)聚聚時間內(nèi)聚性過程內(nèi)聚通信內(nèi)聚信息內(nèi)聚高功能內(nèi)聚模塊獨(dú)立性弱(功能分散)強(qiáng)(功能單一)22(1)巧合內(nèi)聚(偶然內(nèi)聚)

模塊內(nèi)各部分間無聯(lián)系A(chǔ)BCMMOVEOTORREADFILEFMOVESTOT模塊M中的三個語句沒有任何聯(lián)系缺點(diǎn):可理解性差,可修改性差。例:23(2)邏輯內(nèi)聚把幾種相關(guān)功能(邏輯上相似的功能)組合在一模塊內(nèi),每次調(diào)用由傳給模塊的參數(shù)確定執(zhí)行哪種功能。24邏輯內(nèi)聚模塊ABCEFGABCEFGA1B1C1EFG模塊內(nèi)部邏輯E、F、G邏輯功能相似,組成新模塊EFG公用代碼段公用代碼段缺點(diǎn):增強(qiáng)了耦合程度(控制耦合)不易修改,效率低。25(3)時間內(nèi)聚模塊完成的功能必須在同一時間內(nèi)執(zhí)行,這些功能只因時間因素關(guān)聯(lián)在一起。例如:初始化系統(tǒng)模塊、系統(tǒng)結(jié)束模塊、緊急故障處理模塊等。26(4)過程內(nèi)聚模塊內(nèi)各處理成分相關(guān),且必須以特定次序執(zhí)行。27過程內(nèi)聚模塊讀入成績單讀入并審查成績單審查成績單統(tǒng)計成績打印成績統(tǒng)計并打印成績28(5)通信內(nèi)聚模塊內(nèi)各部分使用相同的輸入數(shù)據(jù),或產(chǎn)生相同的輸出結(jié)果。29通信內(nèi)聚模塊例產(chǎn)生工資報表計算平均工資職工工資記錄職工工資報表平均工資產(chǎn)生職工工資報表并計算平均工資模塊30(6)信息內(nèi)聚信息內(nèi)聚指模塊完成多個功能,各個功能都在同一數(shù)據(jù)結(jié)構(gòu)上操作,每個功能有唯一入口。如對同一個數(shù)據(jù)庫的“查找—添加—刪除—修改”模塊。31(7)功能內(nèi)聚模塊僅包括為完成某個功能所必須的所有成分。(模塊所有成分共同完成一個功能,缺一不可)內(nèi)聚性最強(qiáng)32功能內(nèi)聚模塊建立方程組系數(shù)矩陣高斯消去法回代高斯消去法解題流程33模塊獨(dú)立性的度量之二:

耦合性是模塊間相互依賴程度的度量,耦合的強(qiáng)弱取決于模塊間接口的復(fù)雜程度,進(jìn)入或訪問一個模塊的點(diǎn),以及通過接口的數(shù)據(jù)。

耦合性越高,模塊獨(dú)立性越弱34耦合強(qiáng)度依賴的因素:一模塊對另一模塊的引用一模塊向另一模塊傳遞的數(shù)據(jù)量一模塊施加到另一模塊的控制的數(shù)量模塊間接口的復(fù)雜程度35模塊間耦合的類型:低非直接耦合耦數(shù)據(jù)耦合合標(biāo)志耦合性控制耦合外部耦合公共耦合

高內(nèi)容耦合模塊獨(dú)立性弱(低耦合)強(qiáng)(中耦合)(較強(qiáng)耦合)(強(qiáng)耦合)36(1)非直接耦合

兩個模塊沒有直接關(guān)系(???和模快2),模塊獨(dú)立性最強(qiáng)。模塊1模塊2模塊3模塊437(2)數(shù)據(jù)耦合一模塊調(diào)用另一模塊時,被調(diào)用模塊的輸入、輸出都是簡單的數(shù)據(jù),屬松散耦合。38數(shù)據(jù)耦合舉例開發(fā)票計算水費(fèi)單價數(shù)量金額39數(shù)據(jù)耦合舉例計算水電費(fèi)計算水費(fèi)計算電費(fèi)用水量用電量水費(fèi)電費(fèi)40(3)標(biāo)記耦合(特征耦合)如兩個模塊通過傳遞數(shù)據(jù)結(jié)構(gòu)(不是簡單數(shù)據(jù),而是記錄、數(shù)組等)加以聯(lián)系,或都與一個數(shù)據(jù)結(jié)構(gòu)有關(guān)系,則稱這兩個模塊間存在標(biāo)記偶合。41標(biāo)記耦合舉例計算水電費(fèi)計算水費(fèi)計算電費(fèi)住戶情況水費(fèi)電費(fèi)住戶情況“住戶情況”是一個數(shù)據(jù)結(jié)構(gòu),圖中模塊都與此數(shù)據(jù)結(jié)構(gòu)有關(guān)?!坝嬎闼M(fèi)”和“計算電費(fèi)”本無關(guān),由于引用了此數(shù)據(jù)結(jié)構(gòu)產(chǎn)生依賴關(guān)系,它們之間也是標(biāo)記偶合。42將標(biāo)記耦合修改為數(shù)據(jù)耦合舉例計算水電費(fèi)計算水費(fèi)計算電費(fèi)本月用水量本月用電量水費(fèi)電費(fèi)43(4)控制耦合一模塊通過開關(guān)量、標(biāo)志、名字等控制信息,明顯地控制另一模塊的功能。44控制耦合舉例A計算平均分或最高分B平均/最高成績45控制耦合舉例讀入分?jǐn)?shù)輸出結(jié)果計算平均分計算最高分平均/最高?調(diào)用邏輯性模塊

B時,須先傳遞控制信號(平均分/最高分),以選擇所需的操作。控制模塊必須知道被控模塊的內(nèi)部邏輯,增強(qiáng)了相互依賴。B46控制耦合增加了理解和編程的復(fù)雜性,調(diào)用模塊必須知道被調(diào)模塊的內(nèi)部邏輯,增加了相互依賴。去除模塊間控制耦合的方法:(1)將被調(diào)用模塊內(nèi)的判定上移到調(diào)用模塊中進(jìn)行;(2)被調(diào)用模塊分解成若干單一功能模塊。47改控制耦合為數(shù)據(jù)耦合舉例A計算平均分B1平均成績最高成績計算最高分B248(5)外部耦合一組模塊均與同一外部環(huán)境關(guān)聯(lián)(例如,I/O模塊與特定的設(shè)備、格式和通信協(xié)議相關(guān)聯(lián)),它們之間便存在外部耦合。外部偶合必不可少,但這種模塊數(shù)目應(yīng)盡量少。49(6)公共耦合(公共數(shù)據(jù)區(qū)耦合)一組模塊引用同一個公用數(shù)據(jù)區(qū)(也稱全局?jǐn)?shù)據(jù)區(qū)、公共數(shù)據(jù)環(huán)境)。公共數(shù)據(jù)區(qū)指:全局?jǐn)?shù)據(jù)結(jié)構(gòu)共享通訊區(qū)內(nèi)存公共覆蓋區(qū)等50公共耦合舉例Acommon公共數(shù)據(jù)區(qū)松散的公共耦合BAcommon公共數(shù)據(jù)區(qū)緊密的公共耦合B51公共耦合舉例A公共數(shù)據(jù)區(qū)CB模塊A、B、C間存在錯綜復(fù)雜的聯(lián)系52公共耦合舉例所有的公共耦合關(guān)系A(chǔ)EBCD6個模塊共享一個公共數(shù)據(jù)區(qū)F53(1)軟件可理解性降低

(模塊間存在錯綜復(fù)雜的連系)(2)軟件可維護(hù)性差

(修改變量名或?qū)傩岳щy)(3)軟件可靠性差(公共數(shù)據(jù)區(qū)及全程變量無保護(hù)措施)慎用公共數(shù)據(jù)區(qū)和全程變量!!!公共耦合存在的問題:54(7)內(nèi)容耦合一模塊直接訪問另一模塊的內(nèi)部信息(程序代碼或數(shù)據(jù))。最不好內(nèi)容耦合形式

!!!55發(fā)生內(nèi)容耦合的情形:(1)一模塊直接訪問另一模塊的內(nèi)部數(shù)據(jù)(2)一模塊不通過正常入口轉(zhuǎn)到另一模塊內(nèi)(3)兩模塊有一部分代碼重疊(4)一模塊有多個入口56模塊化設(shè)計的原則和目標(biāo)耦合是影響軟件復(fù)雜程度和設(shè)計質(zhì)量的重要因素目標(biāo):建立模塊間耦合度盡可能松散的系統(tǒng)。57如何降低模塊間耦合度?(1)如模塊必須存在耦合,選擇適當(dāng)?shù)鸟詈项愋驮瓌t:盡量使用數(shù)據(jù)耦合少用控制耦合限制公共耦合的范圍

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論