軟件工程導(dǎo)論第五第五章演示_第1頁
軟件工程導(dǎo)論第五第五章演示_第2頁
軟件工程導(dǎo)論第五第五章演示_第3頁
軟件工程導(dǎo)論第五第五章演示_第4頁
軟件工程導(dǎo)論第五第五章演示_第5頁
已閱讀5頁,還剩50頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

(優(yōu)選)軟件工程導(dǎo)論第五版第五章當(dāng)前第1頁\共有55頁\編于星期一\15點第5章:總體設(shè)計5.1設(shè)計過程1.設(shè)想供選擇的方案2.選擇合理的方案對每個合理的方案要提供:

A.系統(tǒng)流程圖

B.組成系統(tǒng)的物理元素清單

C.成本/效益分析

D.實現(xiàn)這個系統(tǒng)的進(jìn)度計劃當(dāng)前第2頁\共有55頁\編于星期一\15點3.推薦最佳方案4.功能分解5.設(shè)計軟件結(jié)構(gòu)6.數(shù)據(jù)庫設(shè)計A.模式設(shè)計B.子模式設(shè)計C.完整性和安全性設(shè)計D.優(yōu)化當(dāng)前第3頁\共有55頁\編于星期一\15點7.制定測試計劃8.書寫文檔

A.系統(tǒng)說明

B.用戶手冊

C.測試計劃

D.詳細(xì)的實現(xiàn)計劃

E.?dāng)?shù)據(jù)庫設(shè)計結(jié)果9.審查和復(fù)審當(dāng)前第4頁\共有55頁\編于星期一\15點5.2設(shè)計原理如果一個大型程序僅由一個模塊組成,很難被人理解。設(shè)函數(shù)C(x)定義問題x的復(fù)雜程度,函數(shù)E(x)定義解決問題x需要的工作量(時間)。對于兩個問題P1和P2,如果:

C(P1)>C(P2)

那么E(P1)>E(P2)根據(jù)解決問題的經(jīng)驗,有一個規(guī)律是:

C(P1+P2)>C(P1)+C(P2)于是有E(P1+P2)>E(P1)+E(P2)5.2.1模塊化當(dāng)前第5頁\共有55頁\編于星期一\15點模塊數(shù)目接口成本成本/模塊軟件總成本M最小成本區(qū)成本圖5.1模塊化與軟件成本當(dāng)前第6頁\共有55頁\編于星期一\15點5.2.2抽象

5.2.3逐步求精模塊的獨(dú)立性很重要,因為:1)有效的模塊化的軟件比較容易開發(fā)出來;2)獨(dú)立的模塊比較容易測試和維護(hù)。5.2.4信息隱蔽和局部化5.2.5模塊獨(dú)立當(dāng)前第7頁\共有55頁\編于星期一\15點一、耦合

耦合:指軟件結(jié)構(gòu)內(nèi)不同模塊彼此之間相互依賴(連接)的緊密程度。模塊獨(dú)立程度可以由兩個定性標(biāo)準(zhǔn)度量:耦合與內(nèi)聚。當(dāng)前第8頁\共有55頁\編于星期一\15點模塊的偶合分四類:1)數(shù)據(jù)耦合兩個模塊之間只是通過參數(shù)交換信息,而且交換的信息僅僅是數(shù)據(jù)。數(shù)據(jù)耦合是最低程度的耦合。AB數(shù)據(jù)(1)數(shù)據(jù)耦合當(dāng)前第9頁\共有55頁\編于星期一\15點2)控制耦合兩個模塊之間所交換的信息包含控制信息??刂岂詈鲜侵械瘸潭鹊鸟詈?。圖中模塊A的內(nèi)部處理程序判斷是執(zhí)行C還是執(zhí)行D,要取決于模塊B傳來的信息狀態(tài)(Status)。BACD(2)控制耦合astatus當(dāng)前第10頁\共有55頁\編于星期一\15點3)公用耦合兩個或多個模塊通過一個公共區(qū)相互作用時的耦合。公共區(qū)可以是:全程數(shù)據(jù)區(qū)、共享通信區(qū)、內(nèi)存公共覆蓋區(qū)、任何介質(zhì)上的文件、物理設(shè)備等。軟件結(jié)構(gòu)中存在大量的公用耦合時會給診斷錯誤帶來困難。

當(dāng)前第11頁\共有55頁\編于星期一\15點圖中存在公用耦合,假設(shè)模塊A、C、E都存取全程數(shù)據(jù)區(qū)(如公用一個磁盤文件)中的一個數(shù)據(jù)項。如果A模塊讀取該項數(shù)據(jù),然后調(diào)用C模塊對該項重新計算,并進(jìn)行數(shù)據(jù)更新。ABCDE全程數(shù)據(jù)區(qū)(3)公用耦合當(dāng)前第12頁\共有55頁\編于星期一\15點如果此時C模塊錯誤地更新了該項數(shù)據(jù),在往下的處理中模塊E讀該數(shù)據(jù)項時出現(xiàn)錯誤。表面上看,問題由模塊E產(chǎn)生,實際上由模塊C引起。ABCDE全程數(shù)據(jù)區(qū)(3)公用耦合當(dāng)前第13頁\共有55頁\編于星期一\15點4)內(nèi)容耦合

一個模塊與另一個模塊的內(nèi)容直接發(fā)生聯(lián)系。內(nèi)容耦合對維護(hù)會帶來嚴(yán)重的困難。

模塊A…LAB:MOVE1…模塊B…GOTOLAB…內(nèi)容耦合(4)內(nèi)容耦合程序中如果一個模塊直接把程序轉(zhuǎn)移到另一個模塊中,或一個模塊使用另一個模塊內(nèi)部的數(shù)據(jù),都會產(chǎn)生內(nèi)容耦合。內(nèi)容耦合是最高程度的耦合,應(yīng)該避免采用。當(dāng)前第14頁\共有55頁\編于星期一\15點軟件設(shè)計應(yīng)追求盡可能松散耦合,避免強(qiáng)耦合,這樣模塊間的聯(lián)系就越小,模塊的獨(dú)立性就越強(qiáng),對模塊的測試、維護(hù)就越容易。因此建議:盡量使用數(shù)據(jù)耦合,少用控制耦合,限制公用耦合,完全不用內(nèi)容偶合。

當(dāng)前第15頁\共有55頁\編于星期一\15點二、內(nèi)聚

內(nèi)聚:一個模塊內(nèi)部各個元素彼此結(jié)合的緊密程度。它是衡量一個模塊內(nèi)部組成部分間整體統(tǒng)一性的度量。常見的內(nèi)聚有七類。當(dāng)前第16頁\共有55頁\編于星期一\15點1)功能內(nèi)聚(FunctionalCohesion)如果一個模塊內(nèi)所有處理元素完成一個,而且僅完成一個功能,則稱為功能內(nèi)聚。功能內(nèi)聚是最高程度的內(nèi)聚。但在軟件結(jié)構(gòu)中,并不是每個模塊都能設(shè)計成一個功能內(nèi)聚模塊。當(dāng)前第17頁\共有55頁\編于星期一\15點2)順序內(nèi)聚(SequentialCohesion)如果一個模塊內(nèi)處理元素和同一個功能密切相關(guān),而且這些處理元素必須順序執(zhí)行,則稱為順序內(nèi)聚。

當(dāng)前第18頁\共有55頁\編于星期一\15點如圖,一個求一元二次方程根的模塊由三個處理元素組成,該模塊中存在順序內(nèi)聚。通常,順序內(nèi)聚中一個處理元素的輸出是另一個處理元素的輸入。

求一元二次方程根模塊1.輸入方程系數(shù)2.求解3.打印方程的解順序內(nèi)聚示例當(dāng)前第19頁\共有55頁\編于星期一\15點3)通信內(nèi)聚(CommunicationalCohesion)如果一個模塊中所有處理元素都使用同一個輸入數(shù)據(jù)和(或)產(chǎn)生同一個輸出數(shù)據(jù),稱為通信內(nèi)聚。

當(dāng)前第20頁\共有55頁\編于星期一\15點如圖,模塊A的處理單元將根據(jù)同一個數(shù)據(jù)文件FILE的數(shù)據(jù)產(chǎn)生不同的表格,因此它存在通信內(nèi)聚。通信內(nèi)聚有時也稱為數(shù)據(jù)內(nèi)聚。A從文件FILE中讀出數(shù)據(jù)1.由數(shù)據(jù)產(chǎn)生報表A2.由數(shù)據(jù)產(chǎn)生報表B通信內(nèi)聚示例當(dāng)前第21頁\共有55頁\編于星期一\15點4)過程內(nèi)聚(ProceduralCohesion)如果一個模塊內(nèi)的處理元素是相關(guān)的,而且必須以特定的次序執(zhí)行,稱為過程內(nèi)聚。過程內(nèi)聚與順序內(nèi)聚的區(qū)別是:順序內(nèi)聚中是數(shù)據(jù)流從一個處理單元流到另一個處理單元,而過程內(nèi)聚是控制流從一個動作流向另一個動作。

當(dāng)前第22頁\共有55頁\編于星期一\15點5)時間內(nèi)聚(TemporalCohesion)如果一個模塊包含的任務(wù)必須在同一段時間內(nèi)執(zhí)行,稱為時間內(nèi)聚。也稱為瞬時內(nèi)聚。當(dāng)前第23頁\共有55頁\編于星期一\15點例如,完成各種初始化工作的模塊,或者處理故障的模塊都存在時間內(nèi)聚。如圖,在“緊急故障處理模塊”中,“關(guān)閉文件”、“報警”、“保留現(xiàn)場”等任務(wù)都必須無中斷地同時處理。緊急故障處理模塊1.關(guān)閉文件2.報警3.保留現(xiàn)場時間內(nèi)聚示例當(dāng)前第24頁\共有55頁\編于星期一\15點6)邏輯內(nèi)聚(LogicalCohesion)如果模塊完成的任務(wù)在邏輯上屬于相同或相似的一類,稱為邏輯內(nèi)聚。當(dāng)前第25頁\共有55頁\編于星期一\15點如圖,A、B、C模塊合并成ABC模塊之后,ABC模塊就是邏輯內(nèi)聚模塊。XYZABCXYZABC合并邏輯內(nèi)聚示例當(dāng)前第26頁\共有55頁\編于星期一\15點對邏輯內(nèi)聚模塊的調(diào)用,常常需要有一個功能開關(guān),由上層調(diào)用模塊向它發(fā)出一個控制信號,在多個關(guān)聯(lián)性功能中選擇執(zhí)行某一個功能。這種內(nèi)聚較差,增加了模塊之間的聯(lián)系,不易修改。當(dāng)前第27頁\共有55頁\編于星期一\15點7)偶然內(nèi)聚(CoincidentalCohesion)如果一個模塊由完成若干毫無關(guān)系的功能處理元素偶然組合在一起的,就叫偶然內(nèi)聚。當(dāng)前第28頁\共有55頁\編于星期一\15點偶然內(nèi)聚是最差的一種內(nèi)聚。常犯這種錯誤的一種情況是:有時在寫完程序后,發(fā)現(xiàn)一組語句在多處出現(xiàn),于是為了節(jié)省空間而將這些語句作為一個模塊設(shè)計,就出現(xiàn)偶然內(nèi)聚。當(dāng)前第29頁\共有55頁\編于星期一\15點如圖,模塊A、B、C出現(xiàn)公共代碼段W,于是將W獨(dú)立成一個模塊,而W中這些語句并沒有任何聯(lián)系。如果在測試中發(fā)現(xiàn)模塊A不需要做“X=Y+Z”,而應(yīng)該做“X=Y*Z”,此時對W的維護(hù)就很困難了。ABCW模塊X=Y+ZGETCARDIFI=5THENE=0…偶然內(nèi)聚示例當(dāng)前第30頁\共有55頁\編于星期一\15點軟件設(shè)計中應(yīng)該:力求做到高內(nèi)聚,盡量少用中內(nèi)聚,不用低內(nèi)聚。

當(dāng)前第31頁\共有55頁\編于星期一\15點5.3啟發(fā)式規(guī)則1.改進(jìn)軟件結(jié)構(gòu)提高模塊獨(dú)立性2.模塊規(guī)模應(yīng)該適中3.深度、寬度、扇出和扇入都應(yīng)適當(dāng)

深度:軟件結(jié)構(gòu)中控制的層數(shù);

寬度:軟件結(jié)構(gòu)內(nèi)同一個層次上的模塊總數(shù)的最大值;

扇出:一個模塊直接控制(調(diào)用)其它模塊的數(shù)目;

扇入:一個模塊被其它模塊調(diào)用的數(shù)目。

正文加工系統(tǒng)輸入輸出編輯加標(biāo)題存儲檢索編目錄格式化添加刪除插入修改合并列表當(dāng)前第32頁\共有55頁\編于星期一\15點對扇出、扇入過大的改進(jìn):

(a)對扇入過大的改進(jìn)(b)對扇出過大的改進(jìn)當(dāng)前第33頁\共有55頁\編于星期一\15點4.模塊的作用域應(yīng)該在控制域之內(nèi)

MAGBCEDF圖5.2模塊的作用域和控制域作用域:受該模塊內(nèi)一個判定影響的所有模塊的集合。控制域:模塊本身以及所有從屬于它的模塊的集合。當(dāng)前第34頁\共有55頁\編于星期一\15點如:QUAD-ROOT(TBL,X)求一元二次方程的根的模塊,其中TBL,X都為數(shù)組,分別代表方程的系數(shù)和方程的根。應(yīng)該使接口更簡單,如:

QUAD-ROOT(A,B,C,ROOT1,ROOT2)

A、B、C是方程的系數(shù),ROOT1,ROOT2是方程的根。5.力爭降低模塊接口的復(fù)雜度當(dāng)前第35頁\共有55頁\編于星期一\15點6.設(shè)計單入口、單出口的模塊7.模塊功能應(yīng)該可以預(yù)測當(dāng)前第36頁\共有55頁\編于星期一\15點5.4圖形工具5.4.1層次圖和HIPO圖

正文加工系統(tǒng)輸入輸出編輯加標(biāo)題存儲檢索編目錄格式化添加刪除插入修改合并列表圖5.3正文加工系統(tǒng)的層次圖當(dāng)前第37頁\共有55頁\編于星期一\15點正文加工系統(tǒng)輸入1.0輸出2.0編輯3.0加標(biāo)題4.0存儲5.0檢索6.0編目錄7.0格式化8.0添加3.1刪除3.2插入3.3修改3.4合并3.5列表3.6圖5.4帶編號的層次圖(H圖)HIPO圖是:“層次圖+輸入/處理/輸出圖”當(dāng)前第38頁\共有55頁\編于星期一\15點5.4.2結(jié)構(gòu)圖產(chǎn)生最佳解得到好輸入計算最佳解輸出結(jié)果讀輸入編輯輸入結(jié)果格式化顯示結(jié)果圖4.5結(jié)構(gòu)圖的例子—產(chǎn)生最佳解的一般結(jié)構(gòu)當(dāng)前第39頁\共有55頁\編于星期一\15點MAB圖5.6判定為真時調(diào)用A,為假時調(diào)用BMABC圖5.7模塊M循環(huán)調(diào)用模塊A、B、C當(dāng)前第40頁\共有55頁\編于星期一\15點5.5面向數(shù)據(jù)流的設(shè)計方法面向數(shù)據(jù)流設(shè)計(DataFlow-OrientedDesign,DFOD)是與數(shù)據(jù)流分析(DFA)對應(yīng)的結(jié)構(gòu)化軟件設(shè)計技術(shù)。面向數(shù)據(jù)流的設(shè)計將得到以數(shù)據(jù)流圖為基礎(chǔ)的軟件模塊結(jié)構(gòu)圖。

當(dāng)前第41頁\共有55頁\編于星期一\15點數(shù)據(jù)流可以分為兩種類型:

1)變換型數(shù)據(jù)流

2)事務(wù)型數(shù)據(jù)流

5.5.1變換流與事務(wù)流當(dāng)前第42頁\共有55頁\編于星期一\15點一、變換流

具有較明確的輸入、變換(或稱主加工)和輸出界面的數(shù)據(jù)流圖稱為變換型數(shù)據(jù)流圖。如圖所示,該變換中心可以理解為數(shù)據(jù)的加工和處理程序。

讀入原始數(shù)據(jù)校驗原始數(shù)據(jù)計算最優(yōu)結(jié)果編輯打印最優(yōu)結(jié)果輸入變換中心輸出當(dāng)前第43頁\共有55頁\編于星期一\15點事務(wù)型數(shù)據(jù)流圖中存在一個事務(wù)中心(也就是數(shù)據(jù)處理、加工中心),它將輸入分離成若干個發(fā)散的數(shù)據(jù)流,形成許多活動路徑,并根據(jù)輸入值選擇其中一條路徑。要求類別處理分房處理調(diào)房處理退房處理住房要求事務(wù)中心活動路徑二、事務(wù)流當(dāng)前第44頁\共有55頁\編于星期一\15點通常,一個實際系統(tǒng)的數(shù)據(jù)流圖是變換型和事務(wù)型兩種類型的混合體。如圖所示,中間的子塊屬事務(wù)型數(shù)據(jù)流,如果把中間子塊視為一個處理整體的話,整個程序?qū)僮儞Q型程序。

A(事務(wù)型,A為事務(wù)中心)變換中心輸入輸出混合型數(shù)據(jù)流圖當(dāng)前第45頁\共有55頁\編于星期一\15點面向數(shù)據(jù)流設(shè)計軟件結(jié)構(gòu)的基本步驟有七步:1)復(fù)審并精化數(shù)據(jù)流圖;2)確定數(shù)據(jù)處理流圖的類型;3)確定變換中心或事務(wù)中心;5.5.2面向數(shù)據(jù)流設(shè)計的步驟當(dāng)前第46頁\共有55頁\編于星期一\15點4)將數(shù)據(jù)流圖映射成軟件模塊結(jié)構(gòu)圖,設(shè)計出該數(shù)據(jù)流圖對應(yīng)的第一層模塊結(jié)構(gòu);5)基于數(shù)據(jù)流圖逐步分解,設(shè)計下層模塊;6)運(yùn)用模塊設(shè)計和優(yōu)化準(zhǔn)則優(yōu)化軟件結(jié)構(gòu);7)描述模塊的接口。當(dāng)前第47頁\共有55頁\編于星期一\15點復(fù)查、精化數(shù)據(jù)流圖類型找出事務(wù)中心找出變換中心映射成事務(wù)結(jié)構(gòu)映射成變換結(jié)構(gòu)優(yōu)化軟件模塊結(jié)構(gòu)導(dǎo)出模塊結(jié)構(gòu)復(fù)查不滿意變換事務(wù)變換設(shè)計事務(wù)設(shè)計面向數(shù)據(jù)流的設(shè)計步驟當(dāng)前第48頁\共有55頁\編于星期一\15點

變換設(shè)計就是從變換型數(shù)據(jù)流圖映射出軟件模塊結(jié)構(gòu)的過程,也稱以變換為中心的設(shè)計。

5.5.3變換設(shè)計當(dāng)前第49頁\共有55頁\編于星期一\15點變換設(shè)計的基本方

溫馨提示

  • 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

提交評論