軟件工程05總體設(shè)計(jì)_第1頁(yè)
軟件工程05總體設(shè)計(jì)_第2頁(yè)
軟件工程05總體設(shè)計(jì)_第3頁(yè)
軟件工程05總體設(shè)計(jì)_第4頁(yè)
軟件工程05總體設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩109頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、軟件工程 Email:1可行性研究需求分析概要設(shè)計(jì)詳細(xì)設(shè)計(jì)實(shí) 現(xiàn)集成測(cè)試確認(rèn)測(cè)試使用與維護(hù)退役軟件定義軟件開(kāi)發(fā)軟件使用與維護(hù)軟件生命周期軟件開(kāi)發(fā)的三個(gè)關(guān)聯(lián)步驟每個(gè)步驟都按某種方式進(jìn)行信息變換,最后得到有效的計(jì)算機(jī)軟件分析模型和設(shè)計(jì)模型的轉(zhuǎn)換將分析模型轉(zhuǎn)換為軟件設(shè)計(jì)軟件設(shè)計(jì)是后續(xù)開(kāi)發(fā)步驟及軟件維護(hù)工作基礎(chǔ)如果沒(méi)有設(shè)計(jì),只能建立一個(gè)不穩(wěn)定的系統(tǒng)結(jié)構(gòu)軟件設(shè)計(jì)的任務(wù)從工程管理的角度來(lái)看,軟件設(shè)計(jì)分兩步完成軟件設(shè)計(jì)的任務(wù)從工程管理的角度來(lái)看,軟件設(shè)計(jì)分兩步完成總體設(shè)計(jì)(概要設(shè)計(jì)),將軟件需求轉(zhuǎn)化為數(shù)據(jù)結(jié)構(gòu)和軟件的系統(tǒng)結(jié)構(gòu)。詳細(xì)設(shè)計(jì),即過(guò)程設(shè)計(jì)。通過(guò)對(duì)結(jié)構(gòu)表示進(jìn)行細(xì)化,得到軟件詳細(xì)的數(shù)據(jù)結(jié)構(gòu)和算法。課程內(nèi)

2、容提綱第3章:“總體設(shè)計(jì)”總體設(shè)計(jì)過(guò)程軟件設(shè)計(jì)原理軟件設(shè)計(jì)中的啟發(fā)規(guī)則描繪軟件結(jié)構(gòu)的圖形工具面向數(shù)據(jù)流的設(shè)計(jì)方法總體設(shè)計(jì)過(guò)程總體設(shè)計(jì)(概要設(shè)計(jì)或初步設(shè)計(jì))劃分出組成系統(tǒng)的物理元素程序、文件、數(shù)據(jù)庫(kù)、人工過(guò)程和文檔等并不涉及物理元素內(nèi)部設(shè)計(jì)總體設(shè)計(jì)階段的一項(xiàng)任務(wù)是設(shè)計(jì)軟件結(jié)構(gòu)確定系統(tǒng)中每個(gè)程序是由哪些模塊組成的以及這些模塊相互間的關(guān)系總體設(shè)計(jì)過(guò)程總體設(shè)計(jì)過(guò)程總體設(shè)計(jì)過(guò)程一般分為兩個(gè)階段系統(tǒng)設(shè)計(jì)階段:確定系統(tǒng)的具體實(shí)現(xiàn)方案結(jié)構(gòu)設(shè)計(jì)階段:確定軟件的結(jié)構(gòu)總體設(shè)計(jì)過(guò)程總體設(shè)計(jì)的步驟1 設(shè)想供選擇的方案提出各種可能的實(shí)現(xiàn)方案以需求分析階段的數(shù)據(jù)流圖為出發(fā)點(diǎn),畫(huà)自動(dòng)化邊界,形成不同的實(shí)現(xiàn)系統(tǒng)方案設(shè)想把數(shù)據(jù)流

3、圖中的處理分組的各種可能方法,拋棄在技術(shù)上行不通的分組方法余下的分組方法代表可能的實(shí)現(xiàn)策略,并且可以啟示供選擇的物理系統(tǒng)總體設(shè)計(jì)過(guò)程總體設(shè)計(jì)的步驟2 選取合理方案從前一步得到的一系列供選擇的方案中選取若干個(gè)合理的方案通常至少選取低成本、中等成本和高成本的三種方案在此基礎(chǔ)上分析員對(duì)每種方案準(zhǔn)備四份文檔:系統(tǒng)流程圖組成系統(tǒng)的物理元素清單成本/效益分析實(shí)現(xiàn)這個(gè)系統(tǒng)的進(jìn)度計(jì)劃總體設(shè)計(jì)過(guò)程總體設(shè)計(jì)的步驟3 推薦最佳方案綜合分析對(duì)比各種合理方案的利弊,從中選出一種自己認(rèn)為是最理想的方案推薦用戶(hù)和技術(shù)專(zhuān)家應(yīng)認(rèn)真審查所推薦的最佳系統(tǒng)如果該系統(tǒng)確實(shí)符合用戶(hù)的需要,并且是在現(xiàn)有條件下完全能夠?qū)崿F(xiàn)的,則應(yīng)該提請(qǐng)使用

4、部門(mén)負(fù)責(zé)人進(jìn)一步審批在使用部門(mén)的負(fù)責(zé)人也接受了分析員所推薦的方案之后,將進(jìn)入總體設(shè)計(jì)過(guò)程的下一個(gè)重要階段結(jié)構(gòu)設(shè)計(jì) 總體設(shè)計(jì)過(guò)程總體設(shè)計(jì)的步驟4 功能分解目標(biāo)系統(tǒng)的實(shí)現(xiàn)一般要分兩步進(jìn)行:首先是進(jìn)行結(jié)構(gòu)設(shè)計(jì),確定系統(tǒng)是由哪些模塊組成的,以及這些模塊之間的關(guān)系 確定軟件體系結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)其次是過(guò)程設(shè)計(jì),確定每個(gè)模塊的處理過(guò)程確定詳細(xì)的數(shù)據(jù)結(jié)構(gòu)、算法 結(jié)構(gòu)設(shè)計(jì)是總體設(shè)計(jì)階段的任務(wù),而過(guò)程設(shè)計(jì)是詳細(xì)設(shè)計(jì)階段的任務(wù)??傮w設(shè)計(jì)過(guò)程總體設(shè)計(jì)的步驟4 功能分解為確定軟件結(jié)構(gòu)首先需要從實(shí)現(xiàn)角度把復(fù)雜的功能進(jìn)一步分解用算法描述仔細(xì)分析數(shù)據(jù)流圖中的每個(gè)處理,如果一個(gè)處理的功能過(guò)分復(fù)雜,必須把它的功能適當(dāng)?shù)胤纸獬梢幌盗?/p>

5、比較簡(jiǎn)單的功能應(yīng)該使每個(gè)功能對(duì)大多數(shù)程序員而言都是明顯易懂的總體設(shè)計(jì)過(guò)程總體設(shè)計(jì)的步驟5 設(shè)計(jì)軟件結(jié)構(gòu)模塊確定以后,每個(gè)模塊的功能也就隨之確定把這些模塊自頂向下組成一種良好的層次調(diào)用關(guān)系,就完成了軟件結(jié)構(gòu)設(shè)計(jì)的任務(wù)如果數(shù)據(jù)流圖已經(jīng)細(xì)化到適當(dāng)?shù)膶哟?,那么我們便可以從?shù)據(jù)流圖映射成軟件結(jié)構(gòu)圖總體設(shè)計(jì)過(guò)程總體設(shè)計(jì)的步驟6 設(shè)計(jì)數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)的設(shè)計(jì)一般包括如下幾步:模式設(shè)計(jì):確定數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu),常見(jiàn)的數(shù)據(jù)庫(kù)形式有關(guān)系、層次或網(wǎng)狀等子模式設(shè)計(jì):為系統(tǒng)中各用戶(hù)設(shè)計(jì)出各自的數(shù)據(jù)視圖存儲(chǔ)模式設(shè)計(jì):確定數(shù)據(jù)庫(kù)的空間需求、存儲(chǔ)格式、索引組成等總體設(shè)計(jì)過(guò)程總體設(shè)計(jì)的步驟7 制定測(cè)試計(jì)劃在軟件開(kāi)發(fā)的早期階段考慮測(cè)試問(wèn)

6、題使軟件設(shè)計(jì)人員在設(shè)計(jì)時(shí)注意軟件的可測(cè)試性總體設(shè)計(jì)過(guò)程總體設(shè)計(jì)的步驟8 書(shū)寫(xiě)文檔系統(tǒng)說(shuō)明系統(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)系總體設(shè)計(jì)過(guò)程總體設(shè)計(jì)的步驟8 書(shū)寫(xiě)文檔用戶(hù)手冊(cè)測(cè)試計(jì)劃測(cè)試策略、測(cè)試方案、預(yù)期的測(cè)試結(jié)果、測(cè)試進(jìn)度計(jì)劃等詳細(xì)的實(shí)現(xiàn)計(jì)劃數(shù)據(jù)庫(kù)設(shè)計(jì)結(jié)果數(shù)據(jù)庫(kù)系統(tǒng)的選擇、模式、子模式、存儲(chǔ)模式的設(shè)計(jì)結(jié)果等總體設(shè)計(jì)過(guò)程總體設(shè)計(jì)的步驟9 復(fù)審對(duì)總體設(shè)計(jì)的結(jié)果進(jìn)行嚴(yán)格的技術(shù)審查在技術(shù)審查通過(guò)之后再由使用部門(mén)的

7、負(fù)責(zé)人從管理角度進(jìn)行復(fù)審課程內(nèi)容提綱第3章:“總體設(shè)計(jì)”總體設(shè)計(jì)過(guò)程軟件設(shè)計(jì)原理軟件設(shè)計(jì)中的啟發(fā)規(guī)則描繪軟件結(jié)構(gòu)的圖形工具面向數(shù)據(jù)流的設(shè)計(jì)方法軟件設(shè)計(jì)原理1. 抽象抽象:人們?cè)趯?shí)踐中認(rèn)識(shí)到,在現(xiàn)實(shí)世界中一定事物、狀態(tài)或過(guò)程之間總存在著某些相似的方面(共性)。把這些相似的方面集中和概括起來(lái),暫時(shí)忽略它們之間的差異,這就是抽象。抽象就是:抽出本質(zhì),忽略細(xì)節(jié),分層理解軟件設(shè)計(jì)原理舉例說(shuō)明:軟件工程各階段的抽象在可行性研究階段,軟件作為系統(tǒng)的一個(gè)完整部件;在需求分析階段,軟件解法是使用在問(wèn)題環(huán)境內(nèi)熟悉的方式描述;進(jìn)入總體設(shè)計(jì)向詳細(xì)設(shè)計(jì)過(guò)渡階段,抽象的程度將隨之減少;最后當(dāng)源程序被寫(xiě)出后,抽象則達(dá)到最低

8、層軟件設(shè)計(jì)原理2. 模塊化模塊:是由邊界元素限定的相鄰程序元素(例如,數(shù)據(jù)說(shuō)明,可執(zhí)行的語(yǔ)句)的序列,而且有一個(gè)總體標(biāo)識(shí)符代表它。PASCAL或 Ada 這樣的塊結(jié)構(gòu)語(yǔ)言中的BeginEnd對(duì)C、C+和Java語(yǔ)言中的 . 對(duì)過(guò)程、函數(shù)、子程序和宏等面向?qū)ο蠓椒▽W(xué)中的對(duì)象(見(jiàn)第9章)是模塊,對(duì)象內(nèi)的方法(或稱(chēng)為服務(wù))也是模塊軟件設(shè)計(jì)原理模塊化:就是把程序劃分成獨(dú)立命名且可獨(dú)立訪問(wèn)的模塊,每個(gè)模塊完成一個(gè)子功能,把這些模塊集成起來(lái)構(gòu)成一個(gè)整體,可以完成指定的功能滿(mǎn)足用戶(hù)的需求。模塊化的數(shù)學(xué)依據(jù)C(x) 定義問(wèn)題x的復(fù)雜程度,E(x)確定解決問(wèn)題x需要的工作量(時(shí)間),對(duì)于兩個(gè)問(wèn)題P1和P2有如果

9、C(P1)C(P2)顯然 E(P1)E(P2)當(dāng) C(P1+P2)C(P1)+C(P2)則 E(P1+P2)E(P1)+E(P2) 軟件設(shè)計(jì)原理E(P1+P2+Pn)E(P1)+E(P2)+ +E(Pn) 以上揭示了把一個(gè)復(fù)雜問(wèn)題分成許多容易解決的小問(wèn)題,原來(lái)問(wèn)題將容易解決每個(gè)程序都相應(yīng)地有一個(gè)最適當(dāng)?shù)哪K數(shù)目M,使得系統(tǒng)的開(kāi)發(fā)成本最小。M成本/模塊接口成本軟件總成本成本模塊數(shù)最小成本區(qū)軟件設(shè)計(jì)原理3. 逐步求精逐步求精:為了能集中精力解決主要問(wèn)題而盡量推遲對(duì)問(wèn)題細(xì)節(jié)的考慮。其作用就在于它能幫助軟件工程師把精力集中在與當(dāng)前開(kāi)發(fā)階段最相關(guān)的那些方面上忽略那些對(duì)整體解決方案來(lái)說(shuō)雖然是必要的,然而目

10、前還不需要考慮的細(xì)節(jié),這些細(xì)節(jié)將留到以后再考慮。軟件設(shè)計(jì)原理3. 逐步求精Miller法則:一個(gè)人在任何時(shí)候都只能把注意力集中在(72)個(gè)知識(shí)塊上Miller法則是人類(lèi)智力的基本局限,我們不可能戰(zhàn)勝自己的自然本性,只能接受這個(gè)事實(shí),承認(rèn)自身的局限性,并在這個(gè)前提下盡我們的最大努力工作軟件設(shè)計(jì)原理3. 逐步求精抽象與求精是一對(duì)互補(bǔ)的概念抽象使得設(shè)計(jì)者能夠說(shuō)明過(guò)程和數(shù)據(jù),同時(shí)卻忽略低層細(xì)節(jié);可以把抽象看作是一種通過(guò)忽略多余的細(xì)節(jié)同時(shí)強(qiáng)調(diào)有關(guān)的細(xì)節(jié),而實(shí)現(xiàn)逐步求精的方法求精則幫助設(shè)計(jì)者在設(shè)計(jì)過(guò)程中逐步揭示出低層細(xì)節(jié)這兩個(gè)概念都有助于設(shè)計(jì)者在設(shè)計(jì)演化過(guò)程中創(chuàng)造出完整的設(shè)計(jì)模型軟件設(shè)計(jì)原理4. 信息隱蔽

11、和局部化信息隱蔽原理應(yīng)該這樣設(shè)計(jì)和確定模塊,使得一個(gè)模塊內(nèi)包含的信息(過(guò)程或數(shù)據(jù))對(duì)于不需要這些信息的模塊來(lái)說(shuō),是不能訪問(wèn)的局部化是把一些關(guān)系密切的軟件元素物理地放得彼此靠近。顯然, 局部化有助于實(shí)現(xiàn)信息隱藏軟件設(shè)計(jì)原理5. 模塊獨(dú)立性模塊獨(dú)立性的概念是模塊化、抽象化、信息隱蔽概念的一個(gè)直接產(chǎn)物強(qiáng)調(diào)模塊的獨(dú)立性,有兩個(gè)重要原因:模塊化程度較高的軟件容易編制獨(dú)立的模塊比較容易維護(hù)和測(cè)試模塊獨(dú)立是好設(shè)計(jì)的關(guān)鍵,而設(shè)計(jì)又是決定軟件質(zhì)量的關(guān)鍵環(huán)節(jié)軟件設(shè)計(jì)原理5. 模塊獨(dú)立性模塊的獨(dú)立程度可以由兩個(gè)定性標(biāo)準(zhǔn)度量,這兩個(gè)標(biāo)準(zhǔn)分別稱(chēng)為內(nèi)聚和耦合 耦合(Coupling) & 內(nèi)聚(Cohesion)軟件設(shè)計(jì)

12、原理5.1 耦合耦合:是對(duì)一個(gè)軟件結(jié)構(gòu)內(nèi)不同模塊之間互連程度的度量耦合強(qiáng)弱取決于模塊間接口復(fù)雜程度,進(jìn)入或訪問(wèn)一個(gè)模塊的點(diǎn),以及通過(guò)接口的數(shù)據(jù)模塊間的耦合程度強(qiáng)烈影響系統(tǒng)的可理解性、可測(cè)試性、可靠性和可維護(hù)性軟件設(shè)計(jì)原理Great deal of dependenceIndependent 高耦合中等耦合無(wú)耦合 耦合表示一個(gè)軟件結(jié)構(gòu)內(nèi)各個(gè)模塊之間的互連程度,應(yīng)盡量選用松散耦合的系統(tǒng)軟件設(shè)計(jì)原理例1:A訪問(wèn)C的內(nèi)部數(shù)據(jù)或不通過(guò)正常入口而轉(zhuǎn)入C的內(nèi)部ABCDA:goto C1C:C1: 獨(dú)立性由弱到強(qiáng)(耦合程度由強(qiáng)到弱)排列為: 內(nèi)容耦合: 一個(gè)模塊直接影響另一個(gè)模塊,調(diào)用或操縱其他模塊的數(shù)據(jù)軟件

13、設(shè)計(jì)原理例2:部分代碼重疊(?,F(xiàn)在匯編程序中)B A例3:一個(gè)模塊有多個(gè)入口(功能)A:entry 1:entry 2:軟件設(shè)計(jì)原理如果發(fā)生下列情形,模塊間就發(fā)生了內(nèi)容耦合(1) 一個(gè)模塊直接訪問(wèn)另一個(gè)模塊的內(nèi)部數(shù)據(jù)(2) 一個(gè)模塊不通過(guò)正常入口轉(zhuǎn)到另一模塊內(nèi)部(3) 兩個(gè)模塊有一部分程序代碼重迭(只可能出現(xiàn)在匯編語(yǔ)言中)(4) 一個(gè)模塊有多個(gè)入口軟件設(shè)計(jì)原理 公共耦合:幾個(gè)模塊共享一個(gè)數(shù)據(jù)區(qū)域Global : V1 V2A:A1=V1+V2B:V1=B1Global : V1 V2A:V1+B:V2=B1+V1缺陷: 公共部分的改動(dòng)將影響所有調(diào)用它的模塊; 公共部分的數(shù)據(jù)存取無(wú)法控制; 復(fù)雜

14、程度隨耦合模塊的個(gè)數(shù)增加而增加。軟件設(shè)計(jì)原理 特征耦合:把整個(gè)數(shù)據(jù)結(jié)構(gòu)作為參數(shù)傳遞而被調(diào)用模塊只使用其中一部分?jǐn)?shù)據(jù)元素時(shí)就出現(xiàn)了特征耦合。 控制耦合:一個(gè)模塊通過(guò)傳遞控制信息來(lái)控制另一個(gè)模塊ABFlagF2F1FnFlag接口單一,但影響被控模塊的內(nèi)部邏輯軟件設(shè)計(jì)原理 數(shù)據(jù)耦合: 只有數(shù)據(jù)在模塊之間進(jìn)行交換,只通過(guò)參數(shù)傳遞基本類(lèi)型的數(shù)據(jù)標(biāo)記耦合與數(shù)據(jù)耦合形式相同,區(qū)別在于調(diào)用時(shí)傳遞的參數(shù)是否為基本數(shù)據(jù)類(lèi)型 標(biāo)記耦合: 模塊間通過(guò)參數(shù)表傳遞記錄信息,這個(gè)記錄是某一數(shù)據(jù)結(jié)構(gòu)的子結(jié)構(gòu),而不是簡(jiǎn)單變量 非直接耦合: 兩個(gè)模塊之間沒(méi)有直接關(guān)系,它們之間的聯(lián)系完全是通過(guò)主模塊的控制和調(diào)用來(lái)實(shí)現(xiàn)的非直接耦合

15、的模塊獨(dú)立性最強(qiáng)軟件設(shè)計(jì)原理關(guān)于“耦合”的使用原則盡量使用數(shù)據(jù)耦合少用控制耦合和特征耦合限制公共環(huán)境耦合的范圍完全不用內(nèi)容耦合軟件設(shè)計(jì)原理5.2 內(nèi)聚內(nèi)聚:標(biāo)志著一個(gè)模塊內(nèi)各個(gè)元素彼此結(jié)合的緊密程度內(nèi)聚和耦合都是進(jìn)行模塊化設(shè)計(jì)的有力工具實(shí)踐表明內(nèi)聚更重要,應(yīng)該把更多注意力集中到提高模塊的內(nèi)聚程度上軟件設(shè)計(jì)原理5.2 內(nèi)聚內(nèi)聚有七種,由弱到強(qiáng)分別為 偶然內(nèi)聚-邏輯內(nèi)聚-時(shí)間內(nèi)聚-過(guò)程內(nèi)聚-通信內(nèi)聚-順序內(nèi)聚-功能內(nèi)聚軟件設(shè)計(jì)原理5.2 內(nèi)聚偶然內(nèi)聚(低內(nèi)聚)如果一個(gè)模塊完成一組任務(wù),這些任務(wù)彼此間即使有關(guān)系,關(guān)系也是很松散的,就叫做偶然內(nèi)聚有時(shí)在寫(xiě)完一個(gè)程序之后,發(fā)現(xiàn)一組語(yǔ)句在兩處或多處出現(xiàn),于

16、是把這些語(yǔ)句作為一個(gè)模塊以節(jié)省內(nèi)存,這樣就出現(xiàn)了偶然內(nèi)聚的模塊。 軟件設(shè)計(jì)原理5.2 內(nèi)聚邏輯內(nèi)聚(低內(nèi)聚)如果一個(gè)模塊完成的任務(wù)在邏輯上屬于相同或相似的一類(lèi),由參數(shù)決定模塊執(zhí)行的功能,則稱(chēng)為邏輯內(nèi)聚例如,一個(gè)模塊產(chǎn)生各種類(lèi)型的全部輸出A:Read inputsfrom diskfrom tapefrom 軟件設(shè)計(jì)原理5.2 內(nèi)聚時(shí)間內(nèi)聚 (低內(nèi)聚)如果一個(gè)模塊包含的任務(wù)必須在同一段時(shí)間內(nèi)執(zhí)行,就叫時(shí)間內(nèi)聚 例如,模塊完成各種初始化工作或當(dāng)一個(gè)模塊處理意外故障時(shí),這個(gè)模塊必須在中斷處理的同時(shí)完成關(guān)閉文件、報(bào)警和保留現(xiàn)場(chǎng)等任務(wù),這就構(gòu)成了時(shí)間內(nèi)聚。軟件設(shè)計(jì)原理5.2 內(nèi)聚過(guò)程內(nèi)聚 (中內(nèi)聚)如果

17、一個(gè)模塊內(nèi)的處理元素是相關(guān)的而且以特定次序執(zhí)行,則稱(chēng)為過(guò)程內(nèi)聚。 使用程序流程圖作為工具設(shè)計(jì)軟件時(shí),常常通過(guò)研究流程圖確定模塊的劃分,這樣得到的往往是過(guò)程內(nèi)聚的模塊 enter datacheck datamanipulate data軟件設(shè)計(jì)原理5.2 內(nèi)聚通信內(nèi)聚 (中內(nèi)聚)如果模塊中所有元素都使用同一個(gè)輸入數(shù)據(jù)和(或)產(chǎn)生同一個(gè)輸出數(shù)據(jù),則稱(chēng)為通信內(nèi)聚。 例如,一個(gè)模塊的功能是從輸入的文件中讀出數(shù)據(jù),然后由這些數(shù)據(jù)產(chǎn)生報(bào)表,同時(shí)也由這些數(shù)據(jù)產(chǎn)生單項(xiàng)報(bào)表。 例如:從同一磁帶上讀取不相干的數(shù)據(jù) 可能破壞獨(dú)立性軟件設(shè)計(jì)原理軟件設(shè)計(jì)原理5.2 內(nèi)聚順序內(nèi)聚 (高內(nèi)聚)如果一個(gè)模塊內(nèi)的處理元素和同

18、一個(gè)功能密切相關(guān),而且這些處理必須順序執(zhí)行(通常一個(gè)處理元素的輸出數(shù)據(jù)作為下一個(gè)處理元素的輸人數(shù)據(jù)),則稱(chēng)為順序內(nèi)聚。 例如,一個(gè)解非線性方程組的模塊,它的功能依次為:輸入常數(shù)項(xiàng)系數(shù),求解,輸出方程組的解。軟件設(shè)計(jì)原理5.2 內(nèi)聚順序內(nèi)聚 (高內(nèi)聚)軟件設(shè)計(jì)原理5.2 內(nèi)聚功能內(nèi)聚 (高內(nèi)聚)如果模塊內(nèi)所有處理元素屬于一個(gè)整體,完成一個(gè)單一的功能,則稱(chēng)為功能內(nèi)聚。 例如,一個(gè)模塊只完成矩陣加法運(yùn)算或只打印輸出一種特定的表格功能。軟件設(shè)計(jì)原理七種內(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分 對(duì)于一個(gè)模塊

19、而言,模塊自身的內(nèi)聚越強(qiáng),模塊間的耦合就越小,模塊所具有的獨(dú)立性就越好??梢哉f(shuō)高內(nèi)聚低耦合是我們進(jìn)行軟件設(shè)計(jì)的一貫原則軟件設(shè)計(jì)原理 耦合、內(nèi)聚與模塊獨(dú)立性的關(guān)系:課程內(nèi)容提綱第3章:“總體設(shè)計(jì)”總體設(shè)計(jì)過(guò)程軟件設(shè)計(jì)原理軟件設(shè)計(jì)中的啟發(fā)規(guī)則描繪軟件結(jié)構(gòu)的圖形工具面向數(shù)據(jù)流的設(shè)計(jì)方法軟件設(shè)計(jì)中的啟發(fā)規(guī)則結(jié)構(gòu)設(shè)計(jì)原則軟件設(shè)計(jì)中的啟發(fā)規(guī)則結(jié)構(gòu)設(shè)計(jì)原則總結(jié)經(jīng)驗(yàn)“啟發(fā)式規(guī)則”找到改進(jìn)軟件設(shè)計(jì),提高軟件質(zhì)量的途徑1. 提高模塊獨(dú)立性爭(zhēng)取低耦合、高內(nèi)聚(增加內(nèi)聚 減少耦合)2. 模塊規(guī)模適中過(guò)大不易理解;太小則接口開(kāi)銷(xiāo)過(guò)大注意分解后不應(yīng)降低模塊的獨(dú)立性軟件設(shè)計(jì)中的啟發(fā)規(guī)則3. 選擇適當(dāng)?shù)纳疃?、寬度、扇出和扇?/p>

20、 軟件設(shè)計(jì)中的啟發(fā)規(guī)則3. 選擇適當(dāng)?shù)纳疃?、寬度、扇出和扇?深度 = 分層的層數(shù)過(guò)大表示分工過(guò)細(xì)寬度 = 同一層上模塊數(shù)的最大值過(guò)大表示系統(tǒng)復(fù)雜度大軟件設(shè)計(jì)中的啟發(fā)規(guī)則 扇出 = 一個(gè)模塊直接調(diào)用控制的模塊數(shù)。 3 fan-out 9AA的扇出AA的扇入 扇入 = 直接調(diào)用該模塊的模塊數(shù)在不破壞獨(dú)立性的前提下,fan-in 大的比較好。軟件設(shè)計(jì)中的啟發(fā)規(guī)則3. 選擇適當(dāng)?shù)纳疃?、寬度、扇出和扇入深度:表示軟件結(jié)構(gòu)中控制的層數(shù)深度能粗略地標(biāo)志一個(gè)系統(tǒng)的大小和復(fù)雜程度,深度和程序長(zhǎng)度之間有粗略的對(duì)應(yīng)關(guān)系寬度:表示軟件結(jié)構(gòu)中控制的總跨度寬度是同一個(gè)層次上的模塊總數(shù)的最大值,寬度越大系統(tǒng)越復(fù)雜;對(duì)寬度

21、影響最大的因素是模塊的扇出扇出:表示一個(gè)模塊直接控制(調(diào)用)的模塊數(shù)目扇出為3-4,上限扇出為5-9扇入:表示有多少個(gè)上級(jí)模塊直接調(diào)用該模塊扇入越大則共享該模塊的上級(jí)模塊數(shù)目越多。 軟件結(jié)構(gòu)一般要求頂層扇出比較高,中層扇出較少,底層模塊有高扇入 軟件設(shè)計(jì)中的啟發(fā)規(guī)則4. 模塊的作用域應(yīng)在其控制域之內(nèi)模塊的作用域受模塊判定條件影響的所有模塊集合模塊的控制域模塊本身以及所有直接從屬模塊的集合4. 作用域在控制域內(nèi) 控制域MACBM的控制域?yàn)?M,A,B,C 作用域:M中的一個(gè)判定所影響的模塊。例如:A: if then goto B1 B: B1: 作用域在控制域內(nèi)A: if then goto

22、M1 M: M1: goto C1 作用域超出了控制域上例(右圖)中A的作用超出了控制域。改進(jìn)方法之一,可以把A中的 if 移到M中;方法之二,可以把C移到A下面。軟件設(shè)計(jì)中的啟發(fā)規(guī)則4. 模塊的作用域應(yīng)在其控制域之內(nèi)上移判斷點(diǎn):使該判斷層次升高以擴(kuò)大它的控制范圍;下移受判斷影響的模塊:將受判斷影響的模塊下移到判斷所在模塊的控制范圍內(nèi) 軟件設(shè)計(jì)中的啟發(fā)規(guī)則5. 降低接口的復(fù)雜程度接口復(fù)雜可能表明模塊的獨(dú)立性差6. 單出單入,避免內(nèi)容耦合7. 模塊功能可預(yù)測(cè) 相同輸入必產(chǎn)生相同輸出反例:模塊中使用全局變量或靜態(tài)變量,則可能導(dǎo)致不可預(yù)測(cè)軟件模塊結(jié)構(gòu)的改進(jìn)模塊功能的完善化一個(gè)完整的模塊應(yīng)當(dāng)有以下幾部

23、分: 執(zhí)行規(guī)定的功能的部分; 出錯(cuò)處理的部分,當(dāng)模塊不能完成規(guī)定的功能時(shí),必須回送出錯(cuò)標(biāo)志,出現(xiàn)例外情況的原因 如果需要返回?cái)?shù)據(jù)給它的調(diào)用者,在完成數(shù)據(jù)加工或結(jié)束時(shí), 應(yīng)當(dāng)給它的調(diào)用者返回一個(gè)狀態(tài)碼。消除重復(fù)功能,改善軟件結(jié)構(gòu)完全相似在結(jié)構(gòu)上完全相似,可能只在數(shù)據(jù)類(lèi)型上不一,此時(shí)可以采取完全合并的方法局部相似找出其相同部分,分離出去,重新定義成一個(gè)獨(dú)立的下一層模塊還可以與它的上級(jí)模塊合并軟件模塊結(jié)構(gòu)的改進(jìn)消除重復(fù)功能,改善軟件結(jié)構(gòu)完全相似完全合并局部相似分離與上級(jí)合并軟件模塊結(jié)構(gòu)的改進(jìn)模塊的作用范圍應(yīng)在控制范圍之內(nèi)盡可能減少高扇出結(jié)構(gòu),隨深度增大扇入如果一個(gè)模塊的扇出數(shù)過(guò)大,就意味著該模塊過(guò)分

24、復(fù)雜,需要協(xié)調(diào)和控制過(guò)多的下屬模塊應(yīng)當(dāng)適當(dāng)增加中間層次的控制模塊軟件模塊結(jié)構(gòu)的改進(jìn)避免或減少使用病態(tài)聯(lián)接應(yīng)限制使用如下三種病態(tài)聯(lián)接1.直接病態(tài)聯(lián)接 即模塊A直接從模塊B內(nèi)部取出某些數(shù)據(jù),或者把某些數(shù)據(jù)直接送到模塊B內(nèi)部軟件模塊結(jié)構(gòu)的改進(jìn)避免或減少使用病態(tài)聯(lián)接應(yīng)限制使用如下三種病態(tài)聯(lián)接2.公共數(shù)據(jù)域病態(tài)聯(lián)接,模塊A和模塊B通過(guò)公共數(shù)據(jù)域,直接傳送或接受數(shù)據(jù),而不是通過(guò)它們的上級(jí)模塊這種方式將使得模塊間的耦合程度劇增,它不僅影響模塊和模塊,而且影響與公共數(shù)據(jù)域有關(guān)聯(lián)的所有模塊軟件模塊結(jié)構(gòu)的改進(jìn)避免或減少使用病態(tài)聯(lián)接應(yīng)限制使用如下三種病態(tài)聯(lián)接3.通信模塊聯(lián)接 即模塊A和模塊B通過(guò)通信模塊TABLEI

25、T傳送數(shù)據(jù)。從表面看這不是病態(tài)聯(lián)接,因?yàn)槟K和模塊B都未涉及通信模塊TABLEIT的內(nèi)部。然而,它們之間的通信(即數(shù)據(jù)傳送)沒(méi)有通過(guò)它們的上級(jí)模塊,從這個(gè)意義上講,這種聯(lián)接是病態(tài)的。軟件模塊結(jié)構(gòu)的改進(jìn)模塊的大小要適中模塊大小,可以用模塊中語(yǔ)句的數(shù)量來(lái)衡量模塊的大小應(yīng)限制在一定的范圍之內(nèi)一個(gè)模塊的語(yǔ)句超過(guò)30行以后,可理解性迅速下降通常規(guī)定其語(yǔ)句行數(shù)在50100左右,保持在一頁(yè)紙之內(nèi),最多不超過(guò)500行軟件模塊結(jié)構(gòu)的改進(jìn)設(shè)計(jì)功能可預(yù)測(cè)的模塊,但要避免過(guò)分受限制的模塊一個(gè)功能可預(yù)測(cè)的模塊,不論內(nèi)部處理細(xì)節(jié)如何,但對(duì)相同的輸入數(shù)據(jù),總能產(chǎn)生同樣的結(jié)果如果模塊內(nèi)部蘊(yùn)藏有一些特殊的鮮為人知的功能時(shí),這個(gè)

26、模塊就可能是不可預(yù)測(cè)的對(duì)于這種模塊,如果調(diào)用者不小心使用,其結(jié)果將不可預(yù)測(cè)軟件模塊結(jié)構(gòu)的改進(jìn)設(shè)計(jì)功能可預(yù)測(cè)的模塊,但要避免過(guò)分受限制的模塊 如果一個(gè)模塊的局部數(shù)據(jù)結(jié)構(gòu)的大小、控制流的選擇或者與外界(人、硬軟件) 的接口模式被限制死了,則很難適應(yīng)用戶(hù)新的要求或環(huán)境的變更 為了能夠適應(yīng)將來(lái)的變更,軟件模塊中局部數(shù)據(jù)結(jié)構(gòu)的大小應(yīng)當(dāng)是可控制的,控制流的選擇對(duì)于調(diào)用者來(lái)說(shuō),應(yīng)當(dāng)是可預(yù)測(cè)的。而與外界的接口應(yīng)當(dāng)是靈活的。軟件模塊結(jié)構(gòu)的改進(jìn)軟件應(yīng)滿(mǎn)足設(shè)計(jì)約束和可移植性為了使得軟件可以在某些特定的環(huán)境下能夠安裝和運(yùn)行,對(duì)軟件提出了一些設(shè)計(jì)約束和可移植的要求例如,設(shè)計(jì)約束有時(shí)要求一個(gè)程序段在存儲(chǔ)器中覆蓋自身。當(dāng)這

27、種情況出現(xiàn)時(shí),設(shè)計(jì)出來(lái)的軟件程序結(jié)構(gòu)不得不根據(jù)重復(fù)程度、訪問(wèn)頻率、調(diào)用間隔等等特性,重新加以組織。軟件模塊結(jié)構(gòu)的改進(jìn)設(shè)計(jì)的后處理為每一個(gè)模塊寫(xiě)一份處理說(shuō)明為每一個(gè)模塊提供一份接口說(shuō)明確定全局?jǐn)?shù)據(jù)結(jié)構(gòu)和局部數(shù)據(jù)結(jié)構(gòu)指出所有的設(shè)計(jì)約束和限制進(jìn)行概要設(shè)計(jì)的評(píng)審進(jìn)行設(shè)計(jì)的優(yōu)化(如果需要和可能的話)課程內(nèi)容提綱第3章:“總體設(shè)計(jì)”總體設(shè)計(jì)過(guò)程軟件設(shè)計(jì)原理軟件設(shè)計(jì)中的啟發(fā)規(guī)則描繪軟件結(jié)構(gòu)的圖形工具面向數(shù)據(jù)流的設(shè)計(jì)方法描繪軟件結(jié)構(gòu)的圖形工具總體設(shè)計(jì)階段常用的幾種圖形工具層次圖HIPO圖結(jié)構(gòu)圖(SC圖)描繪軟件結(jié)構(gòu)的圖形工具層次圖和HIPO圖層次圖:每個(gè)方框代表一個(gè)模塊,方框間的連線表示調(diào)用關(guān)系例如 正文加工

28、系統(tǒng)正文加工系統(tǒng)輸入輸出編輯加標(biāo)題存儲(chǔ)檢索列表編目錄格式化合并修改添加刪除插入描繪軟件結(jié)構(gòu)的圖形工具層次圖和HIPO圖HIPO圖:HIPO圖是美國(guó)IBM公司發(fā)明的“層次加輸入/處理/輸出”圖的英文縮寫(xiě)正文加工系統(tǒng)輸入1.0輸出2.0編輯3.0加標(biāo)題4.0存儲(chǔ)5.0檢索6.0列表3.6編目錄7.0格式化8.0合并3.5修改3.4添加3.1刪除3.2插入3.3描繪軟件結(jié)構(gòu)的圖形工具HIPO圖和H圖中每個(gè)方框相對(duì)應(yīng),應(yīng)該有一張IPO圖描繪這個(gè)方框代表的模塊的處理過(guò)程系統(tǒng):模塊:編號(hào):作者:日期:IPO圖被調(diào)用:輸 入:調(diào) 用:輸 出:處 理:局部數(shù)據(jù)元素:注 釋?zhuān)好枥L軟件結(jié)構(gòu)的圖形工具結(jié)構(gòu)圖SC圖Y

29、ourdon提出的結(jié)構(gòu)圖是進(jìn)行軟件結(jié)構(gòu)設(shè)計(jì)的一個(gè)有力工具結(jié)構(gòu)圖反映程序中模塊之間的層次調(diào)用關(guān)系和聯(lián)系它以特定的符號(hào)表示模塊、模塊間的調(diào)用關(guān)系和模塊間信息的傳遞描繪軟件結(jié)構(gòu)的圖形工具結(jié)構(gòu)圖SC圖模塊:模塊用矩形框表示,并用模塊的名字標(biāo)記它描繪軟件結(jié)構(gòu)的圖形工具結(jié)構(gòu)圖SC圖模塊的調(diào)用關(guān)系和接口:模塊之間用單向箭頭聯(lián)結(jié),箭頭從調(diào)用模塊指向被調(diào)用模塊描繪軟件結(jié)構(gòu)的圖形工具結(jié)構(gòu)圖SC圖模塊間的信息傳遞當(dāng)一個(gè)模塊調(diào)用另一個(gè)模塊時(shí),調(diào)用模塊把數(shù)據(jù)或控制信息傳送給被調(diào)用模塊,以使被調(diào)用模塊能夠運(yùn)行被調(diào)用模塊在執(zhí)行過(guò)程中又把它產(chǎn)生的數(shù)據(jù)或控制信息回送給調(diào)用模塊描繪軟件結(jié)構(gòu)的圖形工具結(jié)構(gòu)圖SC圖在模塊A的箭頭尾部

30、標(biāo)以一個(gè)菱形符號(hào),表示模塊A有條件地調(diào)用另一個(gè)模塊B。當(dāng)一個(gè)在調(diào)用箭頭尾部標(biāo)以一個(gè)弧形符號(hào),表示模塊A反復(fù)調(diào)用模塊C和模塊D描繪軟件結(jié)構(gòu)的圖形工具結(jié)構(gòu)圖SC圖產(chǎn)生最佳解計(jì)算最佳解得到好輸入輸出結(jié)果編輯輸入讀輸入顯示結(jié)果結(jié)果格式化編輯結(jié)果原始輸入原始輸入好輸入好輸入解解解格式化的解格式化的解描繪軟件結(jié)構(gòu)的圖形工具結(jié)構(gòu)圖SC圖通常用層次圖作為描繪軟件結(jié)構(gòu)的文檔利用IPO圖或數(shù)據(jù)字典中的信息得到模塊調(diào)用時(shí)傳遞的信息由層次圖導(dǎo)出結(jié)構(gòu)圖的過(guò)程 導(dǎo)出結(jié)構(gòu)圖可以作為檢查設(shè)計(jì)正確性和評(píng)價(jià)模塊獨(dú)立性的好方法課程內(nèi)容提綱第3章:“總體設(shè)計(jì)”總體設(shè)計(jì)過(guò)程軟件設(shè)計(jì)原理軟件設(shè)計(jì)中的啟發(fā)規(guī)則描繪軟件結(jié)構(gòu)的圖形工具面向數(shù)據(jù)

31、流的設(shè)計(jì)方法面向數(shù)據(jù)流的設(shè)計(jì)方法基本原理又稱(chēng)為 SD:Structural Design面向數(shù)據(jù)流的設(shè)計(jì)方法把信息流映射成軟件結(jié)構(gòu)。信息流的類(lèi)型決定了映射的方法信息流有下述兩種類(lèi)型變化流事務(wù)流面向數(shù)據(jù)流的設(shè)計(jì)方法基本原理變換流信息通常以“外部世界”的形式進(jìn)入軟件系統(tǒng),經(jīng)過(guò)處理以后再以“外部世界”的形式離開(kāi)系統(tǒng)信息時(shí)間輸入流輸出流變換流信息流面向數(shù)據(jù)流的設(shè)計(jì)方法基本原理事務(wù)流這種數(shù)據(jù)流是“以事務(wù)為中心的”數(shù)據(jù)沿輸入通路到達(dá)一個(gè)處理T,這個(gè)處理根據(jù)輸入數(shù)據(jù)的類(lèi)型在若干動(dòng)作序列中選出一個(gè)執(zhí)行(1)接收輸入數(shù)據(jù)(輸人數(shù)據(jù)又稱(chēng)為事務(wù));(2)分析每個(gè)事務(wù)以確定它的類(lèi)型;(3)根據(jù)事務(wù)類(lèi)型選取一條活動(dòng)通路

32、。面向數(shù)據(jù)流的設(shè)計(jì)方法基本原理事務(wù)流當(dāng)信息流具有明顯的“發(fā)射中心”時(shí),可歸結(jié)為事務(wù)流T事務(wù)事務(wù)中心.活動(dòng)通路面向數(shù)據(jù)流的設(shè)計(jì)方法軟件結(jié)構(gòu)的標(biāo)準(zhǔn)形式常見(jiàn)的軟件結(jié)構(gòu)標(biāo)準(zhǔn)型有兩種:變換型事務(wù)型(1)變換型結(jié)構(gòu)變換型結(jié)構(gòu)的數(shù)據(jù)流圖基本上呈線性形狀明顯地分為輸入、變換(加工)、輸出三部分輸入部分輸出部分變換部分輸入信息正確 信息結(jié) 果數(shù)據(jù)正確性檢查處理顯示面向數(shù)據(jù)流的設(shè)計(jì)方法(1)變換型結(jié)構(gòu)變換流:取得數(shù)據(jù)、變換數(shù)據(jù)、給出數(shù)據(jù)相應(yīng)于取得數(shù)據(jù)、變換數(shù)據(jù)、給出數(shù)據(jù),變換型系統(tǒng)結(jié)構(gòu)圖由輸入、中心變換和輸出等三部分組成面向數(shù)據(jù)流的設(shè)計(jì)方法面向數(shù)據(jù)流的設(shè)計(jì)方法軟件結(jié)構(gòu)的標(biāo)準(zhǔn)形式(2)事務(wù)型結(jié)構(gòu)系統(tǒng)的數(shù)據(jù)流圖常呈輻

33、射狀;一個(gè)加工(事務(wù)中心)將它的輸入分離成若干種發(fā)散的數(shù)據(jù)流,從而形成若干條活動(dòng)的路徑,然后根據(jù)輸入值選擇其中的一條路徑處理事務(wù)中心處理處理處理處理分類(lèi)事務(wù)2事務(wù)1事務(wù)n事務(wù)面向數(shù)據(jù)流的設(shè)計(jì)方法事務(wù)面向數(shù)據(jù)流的設(shè)計(jì)方法變換分析變換分析是一系列設(shè)計(jì)步驟的總稱(chēng)經(jīng)過(guò)這些步驟把具有變換流特點(diǎn)的數(shù)據(jù)流圖映射成軟件結(jié)構(gòu)設(shè)計(jì)步驟(1) 復(fù)查基本系統(tǒng)模型(2) 復(fù)查并精化數(shù)據(jù)流圖(3) 確定數(shù)據(jù)流圖具有變換特性還是事務(wù)特性(4) 確定輸入流和輸出流的邊界,從而孤立出變換中心面向數(shù)據(jù)流的設(shè)計(jì)方法變換分析變換分析設(shè)計(jì)步驟(5) 完成“第一級(jí)分解”,把數(shù)據(jù)流圖映射成系統(tǒng)模塊結(jié)構(gòu),即設(shè)計(jì)系統(tǒng)的上層模塊結(jié)構(gòu)(6) 完成“第二級(jí)分解”,基于數(shù)據(jù)流圖逐步分解高層模塊結(jié)構(gòu),設(shè)計(jì)出下層模塊(7) 使用設(shè)計(jì)度量和啟發(fā)式規(guī)則對(duì)第一次分割得到的軟件結(jié)構(gòu)進(jìn)一步精化面向數(shù)據(jù)流的設(shè)計(jì)方法變換分析應(yīng)用案例:開(kāi)發(fā)一個(gè)帶有微處理器的汽車(chē)數(shù)字儀表板控制系統(tǒng)功能描述1)通過(guò)模數(shù)轉(zhuǎn)換實(shí)現(xiàn)傳感器和微處理機(jī)的接口;2)在發(fā)光二極管在面板上顯示如下數(shù)據(jù):顯

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論