




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第四章總體設(shè)計(jì)第四章總體設(shè)計(jì)1目的和任務(wù):掌握總體設(shè)計(jì)的目的及任務(wù)、分析過(guò)程和方法,能夠區(qū)分不同類型的數(shù)據(jù)流并完成軟件結(jié)構(gòu)的設(shè)計(jì)。(共10學(xué)時(shí))重點(diǎn):1、模塊化、抽象、信息隱蔽和局部化、模塊獨(dú)立的概念;2、2、啟發(fā)式原則;3、3、面向數(shù)據(jù)流的兩種分析方法;4、能夠根據(jù)需求分析獲得的數(shù)據(jù)流圖進(jìn)行軟件結(jié)構(gòu)的設(shè)計(jì);
教學(xué)內(nèi)容:總體設(shè)計(jì)的任務(wù)總體設(shè)計(jì)的基本目的:是回答“概括地說(shuō),系統(tǒng)應(yīng)該如何實(shí)現(xiàn)?”;因此總體設(shè)計(jì)又成為概要設(shè)計(jì)或初步設(shè)計(jì)。重要的工作:設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu):通過(guò)本階段的設(shè)計(jì)工作面將劃分出組成系統(tǒng)的物理元素----程序、文件、數(shù)據(jù)庫(kù)、人工過(guò)程和文檔等,但是每個(gè)物理元素仍然處于黑盒子級(jí),這些黑盒子里的具體內(nèi)容將在詳細(xì)設(shè)計(jì)中設(shè)計(jì)。設(shè)計(jì)軟件結(jié)構(gòu):是設(shè)計(jì)軟件的結(jié)構(gòu),也就是要確定系統(tǒng)中每個(gè)程序是由哪些模塊組成,以及這些模塊相互間的關(guān)系。目的和任務(wù):掌握總體設(shè)計(jì)的目的及任務(wù)、分析過(guò)程和方法,能夠區(qū)2總體設(shè)計(jì)的必要性:可以站在全局高度上,花較少的成本,從抽象的層次上分析對(duì)比多種可能的系統(tǒng)實(shí)現(xiàn)方案和軟件結(jié)構(gòu),從中選出最佳方案和最合理的軟件結(jié)構(gòu),從而用較低成本開發(fā)出較高質(zhì)量的軟件系統(tǒng)。4.1總體設(shè)計(jì)的過(guò)程總體設(shè)計(jì)過(guò)程通常由兩個(gè)主要階段組成:系統(tǒng)設(shè)計(jì):確定系統(tǒng)的具體實(shí)現(xiàn)方案;結(jié)構(gòu)設(shè)計(jì):確定軟件結(jié)構(gòu)典型的過(guò)程如下:一、設(shè)想供選擇的方案總體設(shè)計(jì)的必要性:可以站在全局高度上,花較少的成本,從抽象的3從數(shù)據(jù)流圖出發(fā),劃分不同的自動(dòng)化邊界,處理分組的各種可能,拋棄技術(shù)上行不通的分組方法,設(shè)想出供選擇實(shí)現(xiàn)的物理實(shí)現(xiàn)方案,但不評(píng)價(jià)這些方案。二、選取合理的方案一般來(lái)說(shuō),從上一步得到的一系列供選擇的方案中選取若干個(gè)合理的方案,通常至少選取低成本、中等趁本和高成本的三種方案。在判斷哪些方案合理時(shí)應(yīng)該考慮在問(wèn)題定義和可行性研究階段確定的工程規(guī)模和目標(biāo),有時(shí)可能還需要進(jìn)一步征求用戶的意見(jiàn)。對(duì)每個(gè)合理的方案分析員都應(yīng)該準(zhǔn)備下列四份資料:(1)系統(tǒng)流程圖從數(shù)據(jù)流圖出發(fā),劃分不同的自動(dòng)化邊界,處理分組的各種可能,拋4(2)組成系統(tǒng)的物理元素清單;(3)成本/效益分析;(4)實(shí)現(xiàn)這個(gè)系統(tǒng)的進(jìn)度計(jì)劃;三、推薦最佳方案分析員應(yīng)該綜合分析對(duì)比各種合理方案的利弊,推薦出一個(gè)最佳的方案,并為推薦的方案指定詳細(xì)的實(shí)現(xiàn)計(jì)劃。四、功能分解為確定軟件結(jié)構(gòu),首先需要從實(shí)現(xiàn)角度把復(fù)雜的功能進(jìn)一步分解。分析員結(jié)合算法描述仔細(xì)分析數(shù)據(jù)流圖中的每個(gè)處理,如果一個(gè)處理的功能過(guò)分復(fù)雜,必須把它的功能適當(dāng)?shù)胤纸獬梢幌盗斜容^簡(jiǎn)單的功能。一般(2)組成系統(tǒng)的物理元素清單;5來(lái)說(shuō),經(jīng)過(guò)分解之后應(yīng)該使每個(gè)功能對(duì)大多數(shù)程序員而言都是明顯易懂的。功能分解導(dǎo)致數(shù)據(jù)流圖的進(jìn)一步細(xì)化,同時(shí)還應(yīng)該用IPO圖或其它適當(dāng)?shù)墓ぞ吆?jiǎn)要描述細(xì)化后每個(gè)處理的算法。五、設(shè)計(jì)軟件結(jié)構(gòu)通常程序中的一個(gè)模塊完成一個(gè)適當(dāng)?shù)淖庸δ埽瑧?yīng)該把模塊組織成良好的層次系統(tǒng),頂層模塊調(diào)用它的下層模塊以實(shí)現(xiàn)程序的完整功能,每個(gè)下層模塊再調(diào)用更下層的模塊,從而完成程序的一個(gè)子功能,最下層的模塊完成最具體的功能。軟件結(jié)構(gòu)可以使用層次圖或結(jié)構(gòu)圖來(lái)描述。來(lái)說(shuō),經(jīng)過(guò)分解之后應(yīng)該使每個(gè)功能對(duì)大多數(shù)程序員而言都是明顯易6如果數(shù)據(jù)流圖已經(jīng)細(xì)化到適當(dāng)?shù)膶哟?,則可以直接從數(shù)據(jù)流圖映射出軟件結(jié)構(gòu)。六、數(shù)據(jù)庫(kù)設(shè)計(jì)對(duì)需要數(shù)據(jù)庫(kù)的應(yīng)用領(lǐng)域,分析員應(yīng)該在需求分析階段對(duì)系統(tǒng)數(shù)據(jù)要求所做的分析的基礎(chǔ)上進(jìn)一步設(shè)計(jì)數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)設(shè)計(jì)通常包含以下四個(gè)步驟:1、模式設(shè)計(jì):目的是確定物理數(shù)據(jù)庫(kù)結(jié)構(gòu)。第三范式形式的實(shí)體及關(guān)系數(shù)據(jù)模型是模式設(shè)計(jì)過(guò)程的輸入,模式設(shè)計(jì)的主要問(wèn)題是處理具體的數(shù)據(jù)庫(kù)管理系統(tǒng)的結(jié)構(gòu)約束。2、子模式設(shè)計(jì):用戶使用的數(shù)據(jù)視圖如果數(shù)據(jù)流圖已經(jīng)細(xì)化到適當(dāng)?shù)膶哟?,則可以直接從數(shù)據(jù)流圖映射出73、完整和安全性設(shè)計(jì)4、優(yōu)化:主要目的是改進(jìn)模式和子模式以優(yōu)化數(shù)據(jù)的存取。七、制定測(cè)試計(jì)劃在軟件開發(fā)的早期階段考慮測(cè)試問(wèn)題,能促使軟件設(shè)計(jì)人員在設(shè)計(jì)時(shí)注意提高軟件的可測(cè)試性。八、書寫文檔1、系統(tǒng)說(shuō)明:主要內(nèi)容包含:用系統(tǒng)流程圖描述的系統(tǒng)構(gòu)成方案,組成系統(tǒng)的物理元素清單,成本/效益分析;對(duì)最佳方案的概括描述,精化的數(shù)據(jù)流圖,用層次圖或結(jié)構(gòu)圖描繪的軟件結(jié)構(gòu),用IPO圖或其它工具簡(jiǎn)要描述的各個(gè)模塊的酸法,模塊間的借口關(guān)系以及需求、功能和模塊三者之間的交叉參照關(guān)系等。3、完整和安全性設(shè)計(jì)82、用戶手冊(cè)根據(jù)總體設(shè)計(jì)階段的結(jié)果,修正更改在需求分析階段產(chǎn)生的初步的用戶手冊(cè)。3、測(cè)試計(jì)劃包括測(cè)試策略,測(cè)試方案,預(yù)期的測(cè)試結(jié)果,測(cè)試進(jìn)度計(jì)劃等。4、詳細(xì)的實(shí)現(xiàn)計(jì)劃5、數(shù)據(jù)庫(kù)設(shè)計(jì)結(jié)果九、審查和復(fù)審2、用戶手冊(cè)94.2軟件設(shè)計(jì)的概念和原理4.2.1模塊化1、模塊的概念模塊是數(shù)據(jù)說(shuō)明、可執(zhí)行語(yǔ)句等程序?qū)ο蟮募?,它是單?dú)命名的而且可通過(guò)名字來(lái)訪問(wèn)。如過(guò)程、函數(shù)、子程序、宏等都可以作為模塊。2、模塊化的概念模塊化就是把程序劃分成若干個(gè)模塊,每個(gè)模塊完成一個(gè)子功能,把這些模塊集總起來(lái)組成一個(gè)整體,可以完成指定的功能滿足問(wèn)題的要求。4.2軟件設(shè)計(jì)的概念和原理10模塊化的根據(jù):把復(fù)雜的問(wèn)題分解成許多容易解決的小問(wèn)題,原來(lái)的問(wèn)題也就容易解決。原因:(論證)設(shè)函數(shù)C(x)定義問(wèn)題x的復(fù)雜程度,函數(shù)E(x)確定解決問(wèn)題x需要的工作量(時(shí)間)。對(duì)于兩個(gè)問(wèn)題P1和P2,如果C(P1)>C(P2)
顯然:E(p1)>E(P2)根據(jù)人類解決一般問(wèn)題的經(jīng)驗(yàn),一個(gè)規(guī)律是:C(P1+P2)>C(P1)+C(P2)(復(fù)雜度)即是說(shuō),如果一個(gè)問(wèn)題由P1和P2兩個(gè)問(wèn)題組合而成,那么它的復(fù)雜程度大于分別考慮每個(gè)問(wèn)題時(shí)的復(fù)雜程度之和。模塊化的根據(jù):把復(fù)雜的問(wèn)題分解成許多容易解決的小問(wèn)題,原來(lái)的11總上所述,得E(P1+P2)>E(P1)+E(P2)因此這個(gè)不等式導(dǎo)致“各個(gè)擊破”的結(jié)論。根據(jù)以上結(jié)論,是否可以將模塊無(wú)限地劃分下去,軟件開發(fā)工作是否就小得忽略不記?否,原因是當(dāng)模塊數(shù)量多了,但設(shè)計(jì)模塊間接口所需要的工作兩增加,因此開發(fā)工作兩由這兩個(gè)因素決定。4.2.2抽象抽象:抽出事物的本質(zhì)特性而暫時(shí)不考慮它們的細(xì)節(jié)。在任何問(wèn)題的模塊化解法時(shí),可以提出許多抽象的層次,在抽象的最高層次使用問(wèn)題環(huán)境的語(yǔ)言,以概括的方式敘述問(wèn)題的解法;在較低抽象層次采用更過(guò)程化的方法,把面向問(wèn)題的術(shù)語(yǔ)和面向?qū)崿F(xiàn)的術(shù)語(yǔ)結(jié)合起來(lái)總上所述,得E(P1+P2)>E(P1)+E(P2)12敘述問(wèn)題的解法;最后,在最低的抽象層次用可以直接實(shí)現(xiàn)的方式敘述問(wèn)題的解法。軟件工程就是采用的這種方法,采用自頂向下由抽象到具體逐步求精的方法。4.2.3信息隱蔽和局部化信息隱蔽原理:在設(shè)計(jì)和確定模塊時(shí),應(yīng)使得一個(gè)模塊內(nèi)包含的信息(過(guò)程和數(shù)據(jù))對(duì)于不需要這些信息的模塊來(lái)說(shuō),是不能訪問(wèn)的。局部化:是指把一些關(guān)系密切的軟件元素物理地放得彼此靠近。如在模塊中使用局部數(shù)據(jù)元素。敘述問(wèn)題的解法;最后,在最低的抽象層次用可以直接實(shí)現(xiàn)的方式敘134.2.4模塊獨(dú)立模塊獨(dú)立是模塊化、抽象、信息隱蔽和局部化概念的直接結(jié)果。開發(fā)具有獨(dú)立功能而且和其他模塊之間沒(méi)有過(guò)多的相互作用的模塊,就可以作到模塊獨(dú)立。換句話說(shuō),希望這樣設(shè)計(jì)軟件結(jié)構(gòu),使得每個(gè)模塊完成相對(duì)獨(dú)立的特定子功能,并且和其他模塊之間的關(guān)系很簡(jiǎn)單。為什么模塊獨(dú)立很重要?(1)有效的模塊化的軟件比較容易開發(fā)出來(lái);(2)獨(dú)立的模塊比較容易測(cè)試和維護(hù);4.2.4模塊獨(dú)立14模塊獨(dú)立程度的度量標(biāo)準(zhǔn):耦合:衡量不同模塊彼此之間的相互依賴(連接)的緊密程度;內(nèi)聚:衡量一個(gè)模塊內(nèi)部各個(gè)元素彼此結(jié)合的緊密程度。一、耦合耦合是對(duì)一個(gè)軟件結(jié)構(gòu)內(nèi)不同模塊之間連接程度的度量。耦合強(qiáng)弱取決于模塊間接口的復(fù)雜程度,進(jìn)入或訪問(wèn)一個(gè)模塊的點(diǎn),以及通過(guò)借口的數(shù)據(jù)。在軟件設(shè)計(jì)中對(duì)模塊耦合的要求:在軟件設(shè)計(jì)中應(yīng)該追求盡可能松散耦合的系統(tǒng)。原因是:模塊獨(dú)立程度的度量標(biāo)準(zhǔn):15(1)在這樣的系統(tǒng)中可以研究、測(cè)試或維護(hù)任何一個(gè)模塊,而不需要對(duì)系統(tǒng)的其他模塊有很多的了解;(2)模塊間的聯(lián)系簡(jiǎn)單,發(fā)生在一處的錯(cuò)誤傳播到整個(gè)系統(tǒng)的可能性小。因此,模塊減的耦合程度強(qiáng)烈影響系統(tǒng)的可理解性、可測(cè)試性、可靠性和可維護(hù)性。怎樣具體區(qū)分模塊見(jiàn)耦合程度的強(qiáng)弱?1、數(shù)據(jù)耦合:如果兩個(gè)模塊彼此間通過(guò)參數(shù)交換信息,而且交換的信息僅僅是數(shù)據(jù);是低耦合,系統(tǒng)中至少必須存在著重耦合,因?yàn)橹挥挟?dāng)某些模塊的輸出數(shù)據(jù)作為另一個(gè)模塊的輸入數(shù)據(jù)時(shí),系統(tǒng)才能完成有價(jià)值的功能。一般來(lái)說(shuō),一個(gè)系統(tǒng)內(nèi)可以只包含數(shù)據(jù)耦合。(1)在這樣的系統(tǒng)中可以研究、測(cè)試或維護(hù)任何一個(gè)模塊,而不需162、控制耦合:如果兩個(gè)模塊傳遞的信息中有控制信息;屬于中等程度的耦合,它增加了系統(tǒng)復(fù)雜程度,控制耦合往往是多余的,在把模塊適當(dāng)分解之后通常可以用數(shù)據(jù)耦合代替它。3、公共環(huán)境耦合:當(dāng)兩個(gè)或多個(gè)模塊通過(guò)一個(gè)公共數(shù)據(jù)環(huán)境相互作用時(shí);公共環(huán)境耦合可以是全程變量、共享的通信區(qū)、內(nèi)存的公共覆蓋區(qū)、任何存儲(chǔ)介質(zhì)上的文件、物理設(shè)備等。該耦合的復(fù)雜程度隨耦合的模塊個(gè)數(shù)而變化,當(dāng)耦合的模塊個(gè)數(shù)增加時(shí)復(fù)雜程度顯然增加。如果只有兩個(gè)模塊有公共環(huán)境耦合,則有下面兩種可能:2、控制耦合:如果兩個(gè)模塊傳遞的信息中有控制信息;屬于中等程17(1)一個(gè)模塊往公共環(huán)境送數(shù)據(jù),另一個(gè)模塊從公共環(huán)境中取數(shù)據(jù)。這是數(shù)據(jù)耦合的一種形式,是比較松散的一種耦合。(2)兩個(gè)模塊都既往公共環(huán)境中送數(shù)據(jù)又從里面取數(shù)據(jù),著重耦合比較緊密,介于數(shù)據(jù)耦合和控制耦合之間。如果兩個(gè)模塊共享的數(shù)據(jù)很多,都通過(guò)參數(shù)傳遞可能不方便,這時(shí)可以利用公共環(huán)境耦合。4、內(nèi)容耦合:如果出現(xiàn)下列情況之一,則兩個(gè)模塊間屬于內(nèi)容耦合:(1)一個(gè)模塊訪問(wèn)另一個(gè)模塊的內(nèi)部數(shù)據(jù);(2)一個(gè)模塊不通過(guò)正常入口而轉(zhuǎn)到另一個(gè)模塊的內(nèi)部;(1)一個(gè)模塊往公共環(huán)境送數(shù)據(jù),另一個(gè)模塊從公共環(huán)境中取數(shù)據(jù)18(3)兩個(gè)模塊有一部分程序代碼重疊(一般來(lái)說(shuō)在匯編語(yǔ)言中出現(xiàn));(4)一個(gè)模塊有多個(gè)入口(即一個(gè)模塊有集中功能);應(yīng)該避免使用內(nèi)容耦合,事實(shí)上很多高級(jí)程序設(shè)計(jì)語(yǔ)言已經(jīng)設(shè)計(jì)成不允許在程序中出現(xiàn)任何形式的內(nèi)容耦合??傊厚詈鲜怯绊戃浖?fù)雜程度的一個(gè)重要因素。應(yīng)該采取下述設(shè)計(jì)原則:盡量使用數(shù)據(jù)耦合,少用控制耦合,限制公共環(huán)境耦合的范圍,完全不用內(nèi)容耦合。(3)兩個(gè)模塊有一部分程序代碼重疊(一般來(lái)說(shuō)在匯編語(yǔ)言中出現(xiàn)19二、內(nèi)聚內(nèi)聚標(biāo)志一個(gè)模塊內(nèi)各元素彼此結(jié)合的緊密程度,它是信息隱蔽和局部化概念的自然擴(kuò)展.簡(jiǎn)單地說(shuō),理想內(nèi)聚的模塊只做一件事.設(shè)計(jì)時(shí)應(yīng)該力求作到高內(nèi)聚,通常中等程度的內(nèi)聚也是可以采用的,而且效果和高內(nèi)聚差不多;但是,低內(nèi)聚很壞,不要使用.內(nèi)聚和耦合是密切相關(guān)的,模塊內(nèi)的高內(nèi)聚往往意味著模塊間的松耦合。內(nèi)聚和耦合都是進(jìn)行模塊化設(shè)計(jì)的有利工具,但是實(shí)踐表明內(nèi)聚更重要,應(yīng)該把更多的精力放在內(nèi)聚上。二、內(nèi)聚20內(nèi)聚的種類:1、低內(nèi)聚:(1)偶然內(nèi)聚:如果一個(gè)模塊完成一組任務(wù),這些任務(wù)彼此間即使有關(guān)系,關(guān)系也是很松散的。有時(shí)在寫完一個(gè)程序之后,發(fā)現(xiàn)一組語(yǔ)句在兩處或多處出現(xiàn),于是把這些語(yǔ)句作為一個(gè)模塊以節(jié)省內(nèi)存,這樣就出現(xiàn)了偶然內(nèi)聚的模塊。(2)邏輯內(nèi)聚:如果一個(gè)模塊完成的任務(wù)在邏輯上屬于相同或相似的一類(如:一個(gè)模塊產(chǎn)生各種類型的全部輸出)。(3)時(shí)間內(nèi)聚:如果一個(gè)模塊包含的任務(wù)必須在同一段時(shí)間內(nèi)執(zhí)行(如,模塊完成各種初始化工作)。內(nèi)聚的種類:21三種內(nèi)聚的比較:(1)在偶然內(nèi)聚的模塊中,各種元素之間沒(méi)有實(shí)質(zhì)性聯(lián)系,很可能在一種應(yīng)用場(chǎng)合需要修改這個(gè)模塊,在另一種場(chǎng)合又不允許著重修改,從而陷入困境。事實(shí)上,偶然內(nèi)聚的模塊出現(xiàn)修改錯(cuò)誤的概率比其他類型的模塊高得多;(2)在邏輯內(nèi)聚的模塊中,不同功能混在一起,合用部分程序代碼,即使局部功能的修改有時(shí)也會(huì)影響全局。因此著類模塊的修改也比較困難;(3)時(shí)間關(guān)系在一定程度上反映了程序的某些實(shí)質(zhì),所以時(shí)間內(nèi)聚比邏輯內(nèi)聚好一些。三種內(nèi)聚的比較:222、中內(nèi)聚:(1)過(guò)程內(nèi)聚:如果一個(gè)模塊內(nèi)的處理元素是相關(guān)的,而且必須以特定次序執(zhí)行。使用程序流程圖作為工具設(shè)計(jì)軟件時(shí),常常通過(guò)研究流程圖確定模塊的劃分,這樣得到的往往是過(guò)程內(nèi)聚的模塊。(2)通信內(nèi)聚:如果模塊中所有元素都使用同一個(gè)輸入數(shù)據(jù)和(或)產(chǎn)生同一個(gè)輸出數(shù)據(jù)。3、高內(nèi)聚(1)順序內(nèi)聚:如果一個(gè)模塊內(nèi)的處理元素和同一個(gè)功能密切相關(guān),而且這些處理必須順序執(zhí)行(通常一個(gè)處理元素的輸出數(shù)據(jù)作為下一個(gè)處理元素的輸入數(shù)據(jù))。根據(jù)數(shù)據(jù)流程圖劃分模塊時(shí),通常得到順序內(nèi)聚的模塊,著重模塊彼此間的連接比較簡(jiǎn)單。2、中內(nèi)聚:23(2)功能內(nèi)聚:如果模塊內(nèi)所有處理元素屬于一個(gè)整體,完成一個(gè)單一的功能,功能內(nèi)聚是最高程度的內(nèi)聚。耦合和內(nèi)聚的概念是Constantine,Yourdon,Myers和Stevens等人提出來(lái)的。按照他們的觀點(diǎn),如果給上述七種內(nèi)聚的優(yōu)劣評(píng)分,將得到如下結(jié)果:功能內(nèi)聚10分時(shí)間內(nèi)聚3分順序內(nèi)聚9分邏輯內(nèi)聚1分通信內(nèi)聚7分偶然內(nèi)聚0分過(guò)程內(nèi)聚5分在設(shè)計(jì)時(shí),沒(méi)有必要精確確定內(nèi)聚的級(jí)別。重要的是設(shè)計(jì)時(shí)力爭(zhēng)作到高內(nèi)聚,并且能夠辨認(rèn)出低內(nèi)聚的模塊,(2)功能內(nèi)聚:如果模塊內(nèi)所有處理元素屬于一個(gè)整體,完成一個(gè)24有能力通過(guò)修改設(shè)計(jì)提高模塊的內(nèi)聚程度降低模塊間的耦合程度,從而獲得較高的模塊獨(dú)立性。4.3啟發(fā)式規(guī)則在長(zhǎng)期開發(fā)計(jì)算機(jī)軟件的長(zhǎng)期實(shí)踐中積累了豐富的經(jīng)驗(yàn),總結(jié)出了一些啟發(fā)式規(guī)則。一、改進(jìn)軟件結(jié)構(gòu)提高模塊獨(dú)立性設(shè)計(jì)出軟件的初步結(jié)構(gòu)之后,應(yīng)該審查分析這個(gè)結(jié)構(gòu),通過(guò)模塊分解或合并,力求降低耦合提高內(nèi)聚。二、模塊規(guī)模應(yīng)該適中經(jīng)驗(yàn)表明,一個(gè)模塊的規(guī)模不應(yīng)該過(guò)大,最好寫在一頁(yè)紙內(nèi)(通常不超過(guò)60行語(yǔ)句);有人從心理角度研究有能力通過(guò)修改設(shè)計(jì)提高模塊的內(nèi)聚程度降低模塊間的耦合程度,從25得知,當(dāng)一個(gè)模塊包含的語(yǔ)句超過(guò)30以后,模塊的可理解程度迅速降低。;過(guò)小的模塊開銷大于有效操作,而且模塊樹木過(guò)多將使系統(tǒng)接口復(fù)雜。因此,過(guò)小的模塊有時(shí)不值得單獨(dú)存在,特別是只有一個(gè)模塊調(diào)用它時(shí),通??梢园阉喜⒌缴弦患?jí)模塊中而不單獨(dú)存在。三、深度、寬度、扇出和扇入都應(yīng)適當(dāng)深度:表示軟件結(jié)構(gòu)中控制的層數(shù),它往往能初略地標(biāo)志一個(gè)系統(tǒng)的大小和復(fù)雜程度。寬度:是軟件結(jié)構(gòu)內(nèi)同一個(gè)層次上的模塊總數(shù)的最大值,一般來(lái)說(shuō),寬度越大系統(tǒng)復(fù)雜度越大。得知,當(dāng)一個(gè)模塊包含的語(yǔ)句超過(guò)30以后,模塊的可理解程度迅速26扇出:一個(gè)模塊直接控制(調(diào)用)的模塊數(shù)目;經(jīng)驗(yàn)表明,一個(gè)設(shè)計(jì)得好的典型系統(tǒng)的平均扇出通常是3或4(扇出的上限是5-9)。扇入:表示有多少個(gè)上級(jí)模塊直接調(diào)用它,扇入越大則共享該模塊的上級(jí)模塊樹木越多。四、模塊的作用域應(yīng)該在控制域內(nèi)模塊的作用域定義為該模塊內(nèi)一個(gè)判定影響的所有模塊的集合;模塊的控制域是這個(gè)模塊本身以及所有直接或間接從屬于它的模塊的集合。五、力爭(zhēng)降低模塊接口的復(fù)雜度扇出:一個(gè)模塊直接控制(調(diào)用)的模塊數(shù)目;經(jīng)驗(yàn)表明,一個(gè)設(shè)計(jì)27六、設(shè)計(jì)單入口和單出口的模塊七、模塊功能應(yīng)該可以預(yù)測(cè)4.4圖形工具一、層次圖和HIPO圖1、層次圖層次圖在前面用來(lái)描述了軟件的數(shù)據(jù)結(jié)構(gòu),而本節(jié)使用它來(lái)描述系統(tǒng)的模塊的調(diào)用圖,一個(gè)矩形表示一個(gè)模塊,矩形間的連線表示模塊的調(diào)用關(guān)系。2、HIPO圖是層次圖加輸入/處理/輸出圖的英文簡(jiǎn)寫。在模塊的調(diào)用的同時(shí)還加上編號(hào),以增加可追蹤性。六、設(shè)計(jì)單入口和單出口的模塊28二、結(jié)構(gòu)圖結(jié)構(gòu)圖和層次圖一樣,用來(lái)表示軟件結(jié)構(gòu)設(shè)計(jì)的工具,一個(gè)矩形表示一個(gè)模塊,箭頭表示模塊的調(diào)用關(guān)系,但在結(jié)構(gòu)圖中,在箭頭上加注釋,表明模塊間傳誦的信息,一般來(lái)說(shuō),傳送的信息有兩種類型:數(shù)據(jù)或控制信息。這樣表示的模塊調(diào)用圖更加清晰一些。二、結(jié)構(gòu)圖294.5面向數(shù)據(jù)流的設(shè)計(jì)方法面向數(shù)據(jù)流的設(shè)計(jì)方法的目標(biāo)是給出設(shè)計(jì)軟件結(jié)構(gòu)的一個(gè)系統(tǒng)化的途徑??梢詫?shù)據(jù)流圖映射成為軟件結(jié)構(gòu),任何系統(tǒng)都可以采用數(shù)據(jù)流圖來(lái)表示,所以面向數(shù)據(jù)流的設(shè)計(jì)方法,理論上可以設(shè)計(jì)任何軟件的結(jié)構(gòu)。而通常用的SA(結(jié)構(gòu)化設(shè)計(jì)方法),就是基于數(shù)據(jù)流的設(shè)計(jì)方法。一、概念根據(jù)數(shù)據(jù)流圖中的信息流類型,決定了有兩種不同的映射方法。4.5面向數(shù)據(jù)流的設(shè)計(jì)方法30信息流的分類:變換流和事務(wù)流1、變換流:在基本系統(tǒng)模型(即頂級(jí)數(shù)據(jù)流圖)中,信息通常以“外部世界”所具有的形式進(jìn)入系統(tǒng),經(jīng)過(guò)處理后又以這種形式離開系統(tǒng)。輸入信息沿傳入路徑進(jìn)入系統(tǒng),同時(shí)由外部形式變換為內(nèi)部形式,經(jīng)系統(tǒng)變換中心加工、處理,作為輸出信息流沿傳出路徑離開系統(tǒng),并還原為外部形式。如果數(shù)據(jù)流圖所描述的信息流具有上述特征,則稱為變換流。如下圖:信息流的分類:變換流和事務(wù)流31輸入流輸出流變換流時(shí)間信息流----變換流輸入流輸出流變換流時(shí)間信息流----變換流322、事務(wù)流基本系統(tǒng)模型意味著變換流,因此原則上所有的信息流都可以歸結(jié)為這一類。但是,如果數(shù)據(jù)流有一個(gè)明顯的事務(wù)處理中心,也就是說(shuō)數(shù)據(jù)沿著輸入通路到達(dá)一個(gè)處理T,這個(gè)處理根據(jù)輸入數(shù)據(jù)的類型在若干個(gè)動(dòng)作序列中選出一個(gè)來(lái)執(zhí)行,這種類型的數(shù)據(jù)流被劃分到一種特殊的數(shù)據(jù)流,稱為事務(wù)流。在該類型的數(shù)據(jù)流圖中,處理T為處理中心,它完成的任務(wù)是:2、事務(wù)流33(1)接收輸入數(shù)據(jù)(輸入數(shù)據(jù)又稱為事務(wù))(2)分析每個(gè)事務(wù)以確定它的類型;(3)根據(jù)事務(wù)類型選取一條活動(dòng)路徑。事務(wù)流圖如下:(1)接收輸入數(shù)據(jù)(輸入數(shù)據(jù)又稱為事務(wù))34總體設(shè)計(jì)課件35二、將數(shù)據(jù)流圖轉(zhuǎn)換為軟件結(jié)構(gòu)的步驟:SD方法能方便地將數(shù)據(jù)流圖轉(zhuǎn)換為軟件結(jié)構(gòu),其步驟為:(1)確定信息流的類型;(2)劃定流界;(3)將數(shù)據(jù)流圖映射為程序結(jié)構(gòu);(4)提取層次控制結(jié)構(gòu);(5)通過(guò)設(shè)計(jì)復(fù)審和使用啟發(fā)式策略進(jìn)一步精化所得的結(jié)果。注意:在大型系統(tǒng)中變換流和事務(wù)流常常是交叉使用。三、面向數(shù)據(jù)流的設(shè)計(jì)過(guò)程二、將數(shù)據(jù)流圖轉(zhuǎn)換為軟件結(jié)構(gòu)的步驟:36總體設(shè)計(jì)課件37三、變換分析步驟:1、復(fù)審基本系統(tǒng)模型基本信息模型指頂級(jí)DFD和所有由外部提供的信息;2、復(fù)審和精化DFD3、確定DFD的特性,判定它為變換流還是數(shù)據(jù)流一般來(lái)說(shuō),系統(tǒng)內(nèi)部的信息流總可以用變換流表示,倘若具有明顯的事務(wù)特性,還應(yīng)該針對(duì)事務(wù)流的映射方法。因此,設(shè)計(jì)人員首先要判定DFD中占主導(dǎo)地位的信息流并確定其特性,然后孤立具有變換特性或事務(wù)特性的支流,這些支流將用于精化由主導(dǎo)數(shù)據(jù)流推出的程序結(jié)構(gòu)。三、變換分析38如例子,傳感器檢測(cè)子系統(tǒng),數(shù)據(jù)沿一個(gè)傳入路徑進(jìn)來(lái),沿三個(gè)傳出路徑離開,無(wú)明顯的事務(wù)中心,因此為變換流。如圖44、劃定輸入流和輸出流的邊界,孤立變換中心輸入、輸出流邊界的劃分可能因人而異,不同的設(shè)計(jì)人員可能把邊界沿著數(shù)據(jù)通道向前推進(jìn)或后退一個(gè)處理,不對(duì)軟件結(jié)構(gòu)影響不大。如圖45、執(zhí)行一級(jí)分解一級(jí)分解的目標(biāo)是到處具有三個(gè)層次的程序結(jié)構(gòu),頂層為主控模塊;低層模塊執(zhí)行輸入、計(jì)算和輸出功能;中層模塊控制、協(xié)調(diào)低層的工作。如例子,傳感器檢測(cè)子系統(tǒng),數(shù)據(jù)沿一個(gè)傳入路徑進(jìn)來(lái),沿三個(gè)傳出39如圖的一級(jí)分解的上兩層模塊,即主控模塊和下面幾個(gè)中層控制模塊:(1)輸入流控制模塊,接受所有輸入數(shù)據(jù);(2)變換流控制模塊,對(duì)內(nèi)部形式數(shù)據(jù)進(jìn)行加工、處理;(3)輸出流控制模塊,產(chǎn)生輸出數(shù)據(jù)。一級(jí)分解的總原則:在完成控制功能并保持低耦合度、高內(nèi)聚度的前提下盡可能減少模塊數(shù)。如圖的一級(jí)分解的上兩層模塊,即主控模塊和下面幾個(gè)中層控制模塊40總體設(shè)計(jì)課件416、執(zhí)行二級(jí)分解二級(jí)分解的任務(wù)是把數(shù)據(jù)流圖中每個(gè)處理框映射成程序結(jié)構(gòu)中一個(gè)適當(dāng)?shù)哪K,二級(jí)分解過(guò)程是從變換中心的邊界開始沿輸入、輸出通道向外移動(dòng),把遇到的每個(gè)處理框映射為程序結(jié)構(gòu)中的一個(gè)模塊。DFD的處理框與程序結(jié)構(gòu)模塊一一對(duì)應(yīng),但按照軟件設(shè)計(jì)原則進(jìn)行設(shè)計(jì)時(shí)可能需要把幾個(gè)處理框合為一個(gè)模塊,或者把一個(gè)處理框變?yōu)閹讉€(gè)模塊。總之,應(yīng)根據(jù)“良好”設(shè)計(jì)的標(biāo)準(zhǔn),進(jìn)行二級(jí)分解。二級(jí)分解示意圖見(jiàn)下:6、執(zhí)行二級(jí)分解42總體設(shè)計(jì)課件437、采用啟發(fā)式設(shè)計(jì)策略,精化所得程序結(jié)構(gòu)雛形,改良軟件質(zhì)量對(duì)于程序結(jié)構(gòu)的雛形,以“模塊獨(dú)立”為指導(dǎo)思想,對(duì)模塊或合或分,旨在追求高內(nèi)聚、低耦合,易實(shí)現(xiàn)、易測(cè)試、易維護(hù)的軟件結(jié)構(gòu)。以保安系統(tǒng)為例。7、采用啟發(fā)式設(shè)計(jì)策
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 美業(yè)加盟合同范本
- 四年級(jí)數(shù)學(xué)(四則混合運(yùn)算帶括號(hào))計(jì)算題專項(xiàng)練習(xí)與答案匯編
- 第3節(jié) 植物的生殖方式教學(xué)設(shè)計(jì)-2024-2025學(xué)年北師大版生物八年級(jí)上冊(cè)
- 第24章《探究四點(diǎn)共圓的條件》教學(xué)設(shè)計(jì)2024-2025學(xué)年人教版數(shù)學(xué)九年級(jí)上冊(cè)
- 不動(dòng)產(chǎn)經(jīng)營(yíng)租賃合同范例
- XXX鎮(zhèn)2025年人居環(huán)境整治工作總結(jié)x
- 傳媒工資采購(gòu)合同范例
- 刨花購(gòu)銷合同范本
- 辦公區(qū)房屋租賃合同范例
- 九年級(jí)語(yǔ)文下冊(cè) 第三單元《課外古詩(shī)詞四首》教學(xué)實(shí)錄 新人教版
- 學(xué)習(xí)-化工單元第十四講萃取
- 貝利嬰幼兒發(fā)展量表
- 血液透常見(jiàn)并發(fā)癥及處理課件
- 全國(guó)中小學(xué)幼兒園教職工安全素養(yǎng)培訓(xùn)課程試題
- 長(zhǎng)輸管道工程施工組織設(shè)計(jì)
- 說(shuō)課比賽一等獎(jiǎng)《醫(yī)用化學(xué)》說(shuō)課課件
- 靜設(shè)備安裝課件(PPT 91頁(yè))
- 英格索蘭空壓機(jī)知識(shí)
- 2022年度高等學(xué)??茖W(xué)研究?jī)?yōu)秀成果獎(jiǎng)(科學(xué)技術(shù))提名工作手冊(cè)
- 完整版地下人防工程施工方案
- (完整word版)格拉布斯(Grubbs)臨界值表
評(píng)論
0/150
提交評(píng)論