版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、n教學(xué)目標(biāo)教學(xué)目標(biāo) 掌握概要設(shè)計(jì)過程、設(shè)計(jì)原理、模塊化方法及掌握概要設(shè)計(jì)過程、設(shè)計(jì)原理、模塊化方法及模塊獨(dú)立性原則、軟件結(jié)構(gòu)的確定。模塊獨(dú)立性原則、軟件結(jié)構(gòu)的確定。n教學(xué)重點(diǎn)教學(xué)重點(diǎn) 模塊獨(dú)立性原則。模塊獨(dú)立性原則。n教學(xué)難點(diǎn)教學(xué)難點(diǎn) 軟件結(jié)構(gòu)的確定。軟件結(jié)構(gòu)的確定。第第4章章 軟件設(shè)計(jì)軟件設(shè)計(jì)4.1總體設(shè)計(jì)總體設(shè)計(jì)4.1總體設(shè)計(jì)總體設(shè)計(jì)n4.1.1 設(shè)計(jì)過程設(shè)計(jì)過程n4.1.2 設(shè)計(jì)原理設(shè)計(jì)原理n4.1.3 啟發(fā)規(guī)則啟發(fā)規(guī)則n4.1.4 描繪軟件結(jié)構(gòu)的圖形工具描繪軟件結(jié)構(gòu)的圖形工具n4.1.5 面向數(shù)據(jù)流的設(shè)計(jì)方法面向數(shù)據(jù)流的設(shè)計(jì)方法n4.1.6 小結(jié)小結(jié)總體設(shè)計(jì)總體設(shè)計(jì)(概要設(shè)計(jì)或初步設(shè)計(jì)
2、)的基本目的(概要設(shè)計(jì)或初步設(shè)計(jì))的基本目的就是回答就是回答“概括地說,系統(tǒng)應(yīng)該如何實(shí)現(xiàn)概括地說,系統(tǒng)應(yīng)該如何實(shí)現(xiàn)?” ?” 工作工作內(nèi)容:將劃分出組成系統(tǒng)的物理元素內(nèi)容:將劃分出組成系統(tǒng)的物理元素程序、文件、數(shù)據(jù)庫、人工過程和文檔程序、文件、數(shù)據(jù)庫、人工過程和文檔等黑盒子等黑盒子級級“產(chǎn)品產(chǎn)品”。黑盒子里的具體內(nèi)容將在以后仔細(xì)。黑盒子里的具體內(nèi)容將在以后仔細(xì)設(shè)計(jì)。設(shè)計(jì)。總體設(shè)計(jì)階段的另一項(xiàng)重要任務(wù)是設(shè)計(jì)軟件的總體設(shè)計(jì)階段的另一項(xiàng)重要任務(wù)是設(shè)計(jì)軟件的結(jié)構(gòu)結(jié)構(gòu)模塊組成,以及這些模塊相互間的關(guān)系。模塊組成,以及這些模塊相互間的關(guān)系。首先根據(jù)需求分析階段得到的數(shù)據(jù)流圖首先根據(jù)需求分析階段得到的數(shù)據(jù)流
3、圖尋找尋找實(shí)現(xiàn)目標(biāo)系統(tǒng)的各種不同的方案,為每個(gè)合理的實(shí)現(xiàn)目標(biāo)系統(tǒng)的各種不同的方案,為每個(gè)合理的方案準(zhǔn)備一份系統(tǒng)流程圖,列出組成系統(tǒng)的所有方案準(zhǔn)備一份系統(tǒng)流程圖,列出組成系統(tǒng)的所有物理元素,進(jìn)行成本物理元素,進(jìn)行成本/ /效益分析,并且制定實(shí)現(xiàn)效益分析,并且制定實(shí)現(xiàn)這個(gè)方案的進(jìn)度計(jì)劃。這個(gè)方案的進(jìn)度計(jì)劃。選出一個(gè)最佳方案向用戶推薦。選出一個(gè)最佳方案向用戶推薦。總體設(shè)計(jì)必要性(詳細(xì)設(shè)計(jì)之前):站在全局總體設(shè)計(jì)必要性(詳細(xì)設(shè)計(jì)之前):站在全局高度上,花較少成本,從較抽象的層次上分析對高度上,花較少成本,從較抽象的層次上分析對比多種可能的系統(tǒng)實(shí)現(xiàn)方案和軟件結(jié)構(gòu),從中選比多種可能的系統(tǒng)實(shí)現(xiàn)方案和軟件結(jié)構(gòu)
4、,從中選出最佳方案和最合理的軟件結(jié)構(gòu),降低成本、提出最佳方案和最合理的軟件結(jié)構(gòu),降低成本、提高質(zhì)量。高質(zhì)量。4.1.1 設(shè)計(jì)過程設(shè)計(jì)過程系統(tǒng)設(shè)計(jì)階段:確定系統(tǒng)的具體實(shí)現(xiàn)方案;系統(tǒng)設(shè)計(jì)階段:確定系統(tǒng)的具體實(shí)現(xiàn)方案;結(jié)構(gòu)設(shè)計(jì)階段:確定軟件結(jié)構(gòu)。結(jié)構(gòu)設(shè)計(jì)階段:確定軟件結(jié)構(gòu)。典型的總體設(shè)計(jì)過程包括下述典型的總體設(shè)計(jì)過程包括下述9個(gè)步驟:個(gè)步驟:1. 設(shè)想供選擇的方案設(shè)想供選擇的方案考慮各種可能的實(shí)現(xiàn)方案從中選出最佳??紤]各種可能的實(shí)現(xiàn)方案從中選出最佳。根據(jù)系統(tǒng)的邏輯模型,分析比較不同的物理實(shí)根據(jù)系統(tǒng)的邏輯模型,分析比較不同的物理實(shí)現(xiàn)方案,選出最佳方案,提高系統(tǒng)的性現(xiàn)方案,選出最佳方案,提高系統(tǒng)的性/價(jià)
5、比。價(jià)比。由需求分析的數(shù)據(jù)流圖作為出發(fā)點(diǎn),把數(shù)據(jù)流由需求分析的數(shù)據(jù)流圖作為出發(fā)點(diǎn),把數(shù)據(jù)流圖中的圖中的處理分組處理分組的各種可能的方法,拋棄在技術(shù)的各種可能的方法,拋棄在技術(shù)上行不通的分組方法,提供可供選擇的物理系統(tǒng)上行不通的分組方法,提供可供選擇的物理系統(tǒng)。4.1.1 設(shè)計(jì)過程設(shè)計(jì)過程2. 選取合理的方案選取合理的方案選取低成本、中等成本和高成本的三種方案,選取低成本、中等成本和高成本的三種方案,對每個(gè)合理的方案分析員都應(yīng)該準(zhǔn)備下列對每個(gè)合理的方案分析員都應(yīng)該準(zhǔn)備下列4 4份資份資料:料:(1) (1) 系統(tǒng)流程圖;系統(tǒng)流程圖;(2) (2) 組成系統(tǒng)的物理元素清單;組成系統(tǒng)的物理元素清單;
6、(3) (3) 成本成本/ /效益分析;效益分析;(4) (4) 實(shí)現(xiàn)這個(gè)系統(tǒng)的進(jìn)度計(jì)劃。實(shí)現(xiàn)這個(gè)系統(tǒng)的進(jìn)度計(jì)劃。4.1.1 設(shè)計(jì)過程設(shè)計(jì)過程3. 推薦最佳方案推薦最佳方案推薦一個(gè)最佳的方案,并且為推薦的方案制定推薦一個(gè)最佳的方案,并且為推薦的方案制定詳細(xì)的實(shí)現(xiàn)計(jì)劃。詳細(xì)的實(shí)現(xiàn)計(jì)劃。提請使用部門負(fù)責(zé)人進(jìn)一步審批之后,將進(jìn)入提請使用部門負(fù)責(zé)人進(jìn)一步審批之后,將進(jìn)入總體設(shè)計(jì)過程的下一個(gè)重要階段總體設(shè)計(jì)過程的下一個(gè)重要階段結(jié)構(gòu)設(shè)計(jì)。結(jié)構(gòu)設(shè)計(jì)。4.1.1 設(shè)計(jì)過程設(shè)計(jì)過程4. 功能分解功能分解程序和文件程序和文件( (或數(shù)據(jù)庫或數(shù)據(jù)庫) )是組成系統(tǒng)的主要元素,是組成系統(tǒng)的主要元素,需要設(shè)計(jì)決定。需要
7、設(shè)計(jì)決定。對程序的設(shè)計(jì)通常分為兩個(gè)階段完成:結(jié)構(gòu)設(shè)對程序的設(shè)計(jì)通常分為兩個(gè)階段完成:結(jié)構(gòu)設(shè)計(jì)和過程設(shè)計(jì)。計(jì)和過程設(shè)計(jì)。結(jié)構(gòu)設(shè)計(jì)確定程序由哪些模塊組成,以及這些結(jié)構(gòu)設(shè)計(jì)確定程序由哪些模塊組成,以及這些模塊之間的關(guān)系(總體設(shè)計(jì));模塊之間的關(guān)系(總體設(shè)計(jì));過程設(shè)計(jì)確定每個(gè)模塊的處理過程(詳細(xì)設(shè)過程設(shè)計(jì)確定每個(gè)模塊的處理過程(詳細(xì)設(shè)計(jì))。計(jì))。4.1.1 設(shè)計(jì)過程設(shè)計(jì)過程為確定軟件結(jié)構(gòu),首先需要從實(shí)現(xiàn)角度把復(fù)雜為確定軟件結(jié)構(gòu),首先需要從實(shí)現(xiàn)角度把復(fù)雜的功能進(jìn)一步分解。的功能進(jìn)一步分解。經(jīng)過分解之后應(yīng)該使每個(gè)功能對大多數(shù)程序員經(jīng)過分解之后應(yīng)該使每個(gè)功能對大多數(shù)程序員而言都是明顯易懂的。而言都是明顯易
8、懂的。功能分解導(dǎo)致數(shù)據(jù)流圖的進(jìn)一步細(xì)化,同時(shí)還功能分解導(dǎo)致數(shù)據(jù)流圖的進(jìn)一步細(xì)化,同時(shí)還應(yīng)該用應(yīng)該用ipoipo圖或其他適當(dāng)?shù)墓ぞ吆喴枋黾?xì)化后圖或其他適當(dāng)?shù)墓ぞ吆喴枋黾?xì)化后每個(gè)處理的算法。每個(gè)處理的算法。4. 功能分解功能分解通常程序中的一個(gè)模塊完成一個(gè)適當(dāng)?shù)淖庸δ?,通常程序中的一個(gè)模塊完成一個(gè)適當(dāng)?shù)淖庸δ?,將模塊組織成良好的層次系統(tǒng),頂層模塊調(diào)用下將模塊組織成良好的層次系統(tǒng),頂層模塊調(diào)用下層模塊以實(shí)現(xiàn)程序的完整功能層模塊以實(shí)現(xiàn)程序的完整功能軟件結(jié)構(gòu)軟件結(jié)構(gòu)( (即由模塊組成的層次系統(tǒng)即由模塊組成的層次系統(tǒng)) )可以用層可以用層次圖或結(jié)構(gòu)圖來描繪。次圖或結(jié)構(gòu)圖來描繪。若數(shù)據(jù)流圖細(xì)化到適當(dāng)?shù)膶?/p>
9、次,則可以直接從若數(shù)據(jù)流圖細(xì)化到適當(dāng)?shù)膶哟危瑒t可以直接從數(shù)據(jù)流圖映射出軟件結(jié)構(gòu)。數(shù)據(jù)流圖映射出軟件結(jié)構(gòu)。5. 設(shè)計(jì)軟件結(jié)構(gòu)設(shè)計(jì)軟件結(jié)構(gòu)對于需要使用數(shù)據(jù)庫的應(yīng)用系統(tǒng),軟件工程師對于需要使用數(shù)據(jù)庫的應(yīng)用系統(tǒng),軟件工程師應(yīng)該在需求分析階段所確定的系統(tǒng)數(shù)據(jù)需求的基應(yīng)該在需求分析階段所確定的系統(tǒng)數(shù)據(jù)需求的基礎(chǔ)上,進(jìn)一步設(shè)計(jì)數(shù)據(jù)庫。礎(chǔ)上,進(jìn)一步設(shè)計(jì)數(shù)據(jù)庫。在數(shù)據(jù)庫課中已經(jīng)詳細(xì)講述了設(shè)計(jì)數(shù)據(jù)庫的方在數(shù)據(jù)庫課中已經(jīng)詳細(xì)講述了設(shè)計(jì)數(shù)據(jù)庫的方法,本書不再贅述。法,本書不再贅述。6. 設(shè)計(jì)數(shù)據(jù)庫設(shè)計(jì)數(shù)據(jù)庫在軟件開發(fā)的早期階段考慮測試問題,能促使在軟件開發(fā)的早期階段考慮測試問題,能促使軟件設(shè)計(jì)人員在設(shè)計(jì)時(shí)注意提高軟件
10、的可測試性。軟件設(shè)計(jì)人員在設(shè)計(jì)時(shí)注意提高軟件的可測試性。本書第本書第5 5章將仔細(xì)討論軟件測試的目的和設(shè)計(jì)章將仔細(xì)討論軟件測試的目的和設(shè)計(jì)測試方案的各種技術(shù)方法。測試方案的各種技術(shù)方法。7. 制定測試計(jì)劃制定測試計(jì)劃完成的文檔通常有下述幾種:完成的文檔通常有下述幾種:(1) (1) 用系統(tǒng)流程圖描繪的系統(tǒng)構(gòu)成方案,組成用系統(tǒng)流程圖描繪的系統(tǒng)構(gòu)成方案,組成系統(tǒng)的物理元素清單,成本系統(tǒng)的物理元素清單,成本/ /效益分析;對最佳效益分析;對最佳方案的概括描述,精化的數(shù)據(jù)流圖,用層次圖或方案的概括描述,精化的數(shù)據(jù)流圖,用層次圖或結(jié)構(gòu)圖描繪的軟件結(jié)構(gòu),用結(jié)構(gòu)圖描繪的軟件結(jié)構(gòu),用ipoipo圖或其他工具圖
11、或其他工具( (例例如,如,pdlpdl語言語言) )簡要描述的各個(gè)模塊的算法,模塊簡要描述的各個(gè)模塊的算法,模塊間的接口關(guān)系,以及需求、功能和模塊三者之間間的接口關(guān)系,以及需求、功能和模塊三者之間的交叉參照關(guān)系等等。的交叉參照關(guān)系等等。(2) (2) 用戶手冊根據(jù)總體設(shè)計(jì)階段的結(jié)果,修改用戶手冊根據(jù)總體設(shè)計(jì)階段的結(jié)果,修改更正在需求分析階段產(chǎn)生的初步的用戶手冊。更正在需求分析階段產(chǎn)生的初步的用戶手冊。8. 書寫文檔書寫文檔(3) (3) 測試計(jì)劃包括測試策略,測試方案,預(yù)期測試計(jì)劃包括測試策略,測試方案,預(yù)期的測試結(jié)果,測試進(jìn)度計(jì)劃等等。的測試結(jié)果,測試進(jìn)度計(jì)劃等等。(4) (4) 詳細(xì)的實(shí)
12、現(xiàn)計(jì)劃詳細(xì)的實(shí)現(xiàn)計(jì)劃(5) (5) 數(shù)據(jù)庫設(shè)計(jì)結(jié)果數(shù)據(jù)庫設(shè)計(jì)結(jié)果8. 書寫文檔書寫文檔9. 審查和復(fù)審審查和復(fù)審最后應(yīng)該對總體設(shè)計(jì)的結(jié)果進(jìn)行嚴(yán)格的技術(shù)審最后應(yīng)該對總體設(shè)計(jì)的結(jié)果進(jìn)行嚴(yán)格的技術(shù)審查,在技術(shù)審查通過之后再由使用部門的負(fù)責(zé)人查,在技術(shù)審查通過之后再由使用部門的負(fù)責(zé)人從管理角度進(jìn)行復(fù)審。從管理角度進(jìn)行復(fù)審。 軟件軟件 設(shè)計(jì)設(shè)計(jì)功能與性功能與性能需求能需求編碼編碼 軟件軟件 測試測試程序模塊程序模塊已測試已測試軟件軟件系統(tǒng)結(jié)構(gòu)系統(tǒng)結(jié)構(gòu)設(shè)計(jì)設(shè)計(jì)過程設(shè)計(jì)過程設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)信息域信息域需求需求開發(fā)階段信息流開發(fā)階段信息流總體總體設(shè)計(jì)設(shè)計(jì)需求需求 說明書說明書復(fù)審復(fù)審 軟件結(jié)構(gòu)軟件
13、結(jié)構(gòu)修修 改改詳細(xì)詳細(xì)設(shè)計(jì)設(shè)計(jì)可接受可接受模塊描述模塊描述復(fù)審復(fù)審 修修 改改 設(shè)計(jì)設(shè)計(jì)說明書說明書軟件設(shè)計(jì)工作流程軟件設(shè)計(jì)工作流程4.1.2 設(shè)計(jì)原理設(shè)計(jì)原理4.1.2 模塊化模塊化“模塊模塊”,又稱,又稱“構(gòu)件構(gòu)件” ” 。過程、函數(shù)、子程序和宏等,都可作為模塊;過程、函數(shù)、子程序和宏等,都可作為模塊;面向?qū)ο蠓椒▽W(xué)中的對象是模塊,對象內(nèi)的方法面向?qū)ο蠓椒▽W(xué)中的對象是模塊,對象內(nèi)的方法(或稱為服務(wù))也是模塊。模塊是構(gòu)成程序的基(或稱為服務(wù))也是模塊。模塊是構(gòu)成程序的基本構(gòu)件。本構(gòu)件。模塊化就是把程序劃分成獨(dú)立命名且可獨(dú)立訪模塊化就是把程序劃分成獨(dú)立命名且可獨(dú)立訪問的模塊,每個(gè)模塊完成一個(gè)子
14、功能,把這些模問的模塊,每個(gè)模塊完成一個(gè)子功能,把這些模塊集成起來構(gòu)成一個(gè)整體,可以完成指定的功能塊集成起來構(gòu)成一個(gè)整體,可以完成指定的功能滿足用戶的需求。滿足用戶的需求。模塊化是為了使一個(gè)復(fù)雜的大型程序能被人的智模塊化是為了使一個(gè)復(fù)雜的大型程序能被人的智力所管理,化繁為簡、化難為易、化整為零。力所管理,化繁為簡、化難為易、化整為零。設(shè)函數(shù)設(shè)函數(shù)c(x)c(x)定義問題定義問題x x的復(fù)雜程度,函數(shù)的復(fù)雜程度,函數(shù)e(x)e(x)確定確定解決問題解決問題x x需要的工作量需要的工作量( (時(shí)間時(shí)間) )。對于兩個(gè)問題。對于兩個(gè)問題p1p1和和p2p2,如果,如果c(p1)c(p2)c(p1)c
15、(p2),顯然,顯然e(p1)e(p2)e(p1)e(p2)。c(p1+p2)c(p1)+c(p2)c(p1+p2)c(p1)+c(p2)e(p1+p2)e(p1)+e(p2)e(p1+p2)e(p1)+e(p2)這就是模塊化的根據(jù)。這就是模塊化的根據(jù)。4.1.2.1 模塊化模塊化abcdefghijklm 軟件結(jié)構(gòu)圖軟件結(jié)構(gòu)圖4.1.2.1 模塊化模塊化模塊化和軟件成本模塊化和軟件成本抽象就是抽出事物的本質(zhì)特性而暫時(shí)不考慮它抽象就是抽出事物的本質(zhì)特性而暫時(shí)不考慮它們的細(xì)節(jié)。們的細(xì)節(jié)。處理復(fù)雜系統(tǒng)的有效的方法是用層次的方式構(gòu)處理復(fù)雜系統(tǒng)的有效的方法是用層次的方式構(gòu)造和分析它。一個(gè)復(fù)雜的動(dòng)態(tài)系統(tǒng)
16、首先可以用一造和分析它。一個(gè)復(fù)雜的動(dòng)態(tài)系統(tǒng)首先可以用一些高級的抽象概念構(gòu)造和理解,這些高級概念又些高級的抽象概念構(gòu)造和理解,這些高級概念又可以用一些較低級的概念構(gòu)造和理解,如此進(jìn)行可以用一些較低級的概念構(gòu)造和理解,如此進(jìn)行下去,直至最低層次的具體元素。下去,直至最低層次的具體元素。4.1.2.2 抽象抽象任何問題的模塊化時(shí),可提出許多抽象的層次。任何問題的模塊化時(shí),可提出許多抽象的層次。在抽象的最高層次使用問題環(huán)境的語言,以概在抽象的最高層次使用問題環(huán)境的語言,以概括的方式敘述問題的解法;括的方式敘述問題的解法;在較低抽象層次采用更過程化的方法,把面向在較低抽象層次采用更過程化的方法,把面向問
17、題的術(shù)語和面向?qū)崿F(xiàn)的術(shù)語結(jié)合起來敘述問題問題的術(shù)語和面向?qū)崿F(xiàn)的術(shù)語結(jié)合起來敘述問題的解法;的解法;最后在最低的抽象層次用可直接實(shí)現(xiàn)的方式敘最后在最低的抽象層次用可直接實(shí)現(xiàn)的方式敘述問題的解法。述問題的解法。4.1.2.2 抽象抽象軟件工程過程的每一步都是對軟件解法的抽象軟件工程過程的每一步都是對軟件解法的抽象層次的一次精化。層次的一次精化。在可行性研究階段,軟件作為系統(tǒng)的一個(gè)完整在可行性研究階段,軟件作為系統(tǒng)的一個(gè)完整部件;部件;在需求分析期間,軟件解法是使用在問題環(huán)境在需求分析期間,軟件解法是使用在問題環(huán)境內(nèi)熟悉的方式描述的;內(nèi)熟悉的方式描述的;當(dāng)由總體設(shè)計(jì)向詳細(xì)設(shè)計(jì)過渡時(shí),抽象的程度當(dāng)由總
18、體設(shè)計(jì)向詳細(xì)設(shè)計(jì)過渡時(shí),抽象的程度也就隨之減少了;也就隨之減少了;最后,當(dāng)源程序?qū)懗鰜硪院螅簿瓦_(dá)到了抽象最后,當(dāng)源程序?qū)懗鰜硪院?,也就達(dá)到了抽象的最低層。的最低層。4.1.2.2 抽象抽象逐步求精和模塊化的概念,與抽象是緊密相關(guān)逐步求精和模塊化的概念,與抽象是緊密相關(guān)的。的。軟件結(jié)構(gòu)頂層的模塊,控制了系統(tǒng)的主要功能軟件結(jié)構(gòu)頂層的模塊,控制了系統(tǒng)的主要功能并且影響全局;并且影響全局;在軟件結(jié)構(gòu)底層的模塊,完成對數(shù)據(jù)的一個(gè)具在軟件結(jié)構(gòu)底層的模塊,完成對數(shù)據(jù)的一個(gè)具體處理,用自頂向下由抽象到具體的方式分配控體處理,用自頂向下由抽象到具體的方式分配控制,簡化了軟件的設(shè)計(jì)和實(shí)現(xiàn),提高了軟件的可制,簡化
19、了軟件的設(shè)計(jì)和實(shí)現(xiàn),提高了軟件的可理解性和可測試性,并且使軟件更容易維護(hù)。理解性和可測試性,并且使軟件更容易維護(hù)。4.1.2.2 抽象抽象逐步求精是人類解決復(fù)雜問題時(shí)采用的基本方逐步求精是人類解決復(fù)雜問題時(shí)采用的基本方法,逐步求精可定義為:法,逐步求精可定義為:“為了能集中精力解決為了能集中精力解決主要問題而盡量推遲對問題細(xì)節(jié)的考慮。主要問題而盡量推遲對問題細(xì)節(jié)的考慮?!敝鸩角缶匀绱酥匾且?yàn)槿祟惖恼J(rèn)知逐步求精之所以如此重要,是因?yàn)槿祟惖恼J(rèn)知過程遵守過程遵守millermiller法則:一個(gè)人在任何時(shí)候都只能法則:一個(gè)人在任何時(shí)候都只能把注意力集中在(把注意力集中在(7 72 2)個(gè)知
20、識塊上。)個(gè)知識塊上。millermiller法則是人類智力的基本局限,我們不可法則是人類智力的基本局限,我們不可能戰(zhàn)勝自己的自然本性,只能接受這個(gè)事實(shí),承能戰(zhàn)勝自己的自然本性,只能接受這個(gè)事實(shí),承認(rèn)自身的局限性,并在這個(gè)前提下盡我們的最大認(rèn)自身的局限性,并在這個(gè)前提下盡我們的最大努力工作。努力工作。4.1.2.3 逐步求精逐步求精逐步求精最初是由逐步求精最初是由niklaus wirthniklaus wirth提出的一種提出的一種自頂向下的設(shè)計(jì)策略,自頂向下的設(shè)計(jì)策略, wirthwirth曾說:曾說:“我們對付復(fù)雜問題的最重要的辦法是抽象,我們對付復(fù)雜問題的最重要的辦法是抽象,因此,對一
21、個(gè)復(fù)雜的問題不應(yīng)該立刻用計(jì)算機(jī)指因此,對一個(gè)復(fù)雜的問題不應(yīng)該立刻用計(jì)算機(jī)指令、數(shù)字和邏輯符號來表示,而應(yīng)該用較自然的令、數(shù)字和邏輯符號來表示,而應(yīng)該用較自然的抽象語句來表示,從而得出抽象程序。抽象程序抽象語句來表示,從而得出抽象程序。抽象程序?qū)Τ橄蟮臄?shù)據(jù)進(jìn)行某些特定的運(yùn)算并用某些合適對抽象的數(shù)據(jù)進(jìn)行某些特定的運(yùn)算并用某些合適的記號(可能是自然語言)來表示。對抽象程序的記號(可能是自然語言)來表示。對抽象程序做進(jìn)一步的分解,并進(jìn)入下一個(gè)抽象層次,這樣做進(jìn)一步的分解,并進(jìn)入下一個(gè)抽象層次,這樣的精細(xì)化過程一直進(jìn)行下去,直到程序能被計(jì)算的精細(xì)化過程一直進(jìn)行下去,直到程序能被計(jì)算機(jī)接受為止。這時(shí)的程序
22、可能是用某種高級語言機(jī)接受為止。這時(shí)的程序可能是用某種高級語言或機(jī)器指令書寫的?;驒C(jī)器指令書寫的。”4.1.2.3 逐步求精逐步求精求精要求設(shè)計(jì)者細(xì)化原始陳述,隨著每個(gè)后續(xù)求精要求設(shè)計(jì)者細(xì)化原始陳述,隨著每個(gè)后續(xù)求精(即細(xì)化)步驟的完成而提供越來越多的細(xì)求精(即細(xì)化)步驟的完成而提供越來越多的細(xì)節(jié)。節(jié)。抽象與求精是一對互補(bǔ)的概念。抽象與求精是一對互補(bǔ)的概念。抽象使得設(shè)計(jì)者能夠說明過程和數(shù)據(jù),同時(shí)卻抽象使得設(shè)計(jì)者能夠說明過程和數(shù)據(jù),同時(shí)卻忽略低層細(xì)節(jié)。忽略低層細(xì)節(jié)。求精則幫助設(shè)計(jì)者在設(shè)計(jì)過程中逐步揭示出低求精則幫助設(shè)計(jì)者在設(shè)計(jì)過程中逐步揭示出低層細(xì)節(jié)。層細(xì)節(jié)。這兩個(gè)概念都有助于設(shè)計(jì)者在設(shè)計(jì)演化過
23、程中這兩個(gè)概念都有助于設(shè)計(jì)者在設(shè)計(jì)演化過程中創(chuàng)造出完整的設(shè)計(jì)模型。創(chuàng)造出完整的設(shè)計(jì)模型。4.1.2.3 逐步求精逐步求精數(shù) 據(jù) 設(shè) 計(jì)體系結(jié)構(gòu)設(shè)計(jì)接口設(shè)計(jì)過程設(shè)計(jì)如何得到最好的一組模塊?如何得到最好的一組模塊?信息隱藏原理指出:設(shè)計(jì)一個(gè)模塊信息隱藏原理指出:設(shè)計(jì)一個(gè)模塊, ,使得包含使得包含的信息的信息( (過程和數(shù)據(jù)過程和數(shù)據(jù)) ) 對于不需要這些信息的模對于不需要這些信息的模塊來說,是不能訪問的。塊來說,是不能訪問的。局部化是指把一些關(guān)系密切的軟件元素,物理局部化是指把一些關(guān)系密切的軟件元素,物理地放得彼此靠近。地放得彼此靠近。在模塊中使用局部數(shù)據(jù)元素是局部化的一個(gè)例在模塊中使用局部數(shù)據(jù)元
24、素是局部化的一個(gè)例子。局部化有助于實(shí)現(xiàn)信息隱藏。子。局部化有助于實(shí)現(xiàn)信息隱藏。4.1.2.4 信息隱藏和局部化信息隱藏和局部化模塊獨(dú)立是模塊化、抽象、信息隱藏和局部化模塊獨(dú)立是模塊化、抽象、信息隱藏和局部化概念的直接結(jié)果。概念的直接結(jié)果。希望這樣設(shè)計(jì)軟件結(jié)構(gòu),使得每個(gè)模塊完成一希望這樣設(shè)計(jì)軟件結(jié)構(gòu),使得每個(gè)模塊完成一個(gè)相對獨(dú)立的特定子功能,并且和其他模塊之間個(gè)相對獨(dú)立的特定子功能,并且和其他模塊之間的關(guān)系很簡單。的關(guān)系很簡單。模塊獨(dú)立的兩條理由模塊獨(dú)立的兩條理由:第一,有效的模塊化第一,有效的模塊化( (即具有獨(dú)立的模塊即具有獨(dú)立的模塊) )的軟的軟件比較容易開發(fā)。件比較容易開發(fā)。因?yàn)楣δ芎唵?/p>
25、而且接口可簡化,當(dāng)許多人分工因?yàn)楣δ芎唵味医涌诳珊喕?,?dāng)許多人分工合作時(shí)這個(gè)優(yōu)點(diǎn)尤其重要。合作時(shí)這個(gè)優(yōu)點(diǎn)尤其重要。第二,獨(dú)立的模塊比較容易測試和維護(hù)。第二,獨(dú)立的模塊比較容易測試和維護(hù)。4.1.2.5 模塊獨(dú)立模塊獨(dú)立模塊獨(dú)立是設(shè)計(jì)的關(guān)鍵,而設(shè)計(jì)又是決定軟件模塊獨(dú)立是設(shè)計(jì)的關(guān)鍵,而設(shè)計(jì)又是決定軟件質(zhì)量的關(guān)鍵環(huán)節(jié)。質(zhì)量的關(guān)鍵環(huán)節(jié)。模塊的獨(dú)立程度可以由兩個(gè)定性標(biāo)準(zhǔn)度量,分模塊的獨(dú)立程度可以由兩個(gè)定性標(biāo)準(zhǔn)度量,分別稱為別稱為內(nèi)聚和耦合內(nèi)聚和耦合。耦合用于衡量不同模塊彼此間互相依賴耦合用于衡量不同模塊彼此間互相依賴( (連接連接) )的緊密程度;的緊密程度;內(nèi)聚衡量一個(gè)模塊內(nèi)部各個(gè)元素彼此結(jié)合的緊內(nèi)
26、聚衡量一個(gè)模塊內(nèi)部各個(gè)元素彼此結(jié)合的緊密程度。密程度。模塊獨(dú)立要求:模塊獨(dú)立要求:高內(nèi)聚、低耦合高內(nèi)聚、低耦合;4.1.2.5 模塊獨(dú)立模塊獨(dú)立1. 耦合耦合耦合是對一個(gè)軟件結(jié)構(gòu)內(nèi)不同模塊之間互連程耦合是對一個(gè)軟件結(jié)構(gòu)內(nèi)不同模塊之間互連程度的度量。度的度量。耦合強(qiáng)弱取決于模塊間接口的復(fù)雜程度,進(jìn)入耦合強(qiáng)弱取決于模塊間接口的復(fù)雜程度,進(jìn)入或訪問一個(gè)模塊的點(diǎn),以及通過接口的數(shù)據(jù)?;蛟L問一個(gè)模塊的點(diǎn),以及通過接口的數(shù)據(jù)。模塊間的耦合程度強(qiáng)烈影響系統(tǒng)的可理解性、模塊間的耦合程度強(qiáng)烈影響系統(tǒng)的可理解性、可測試性、可靠性和可維護(hù)性??蓽y試性、可靠性和可維護(hù)性。在軟件設(shè)計(jì)中應(yīng)該追求盡可能松散耦合的系統(tǒng)。在軟
27、件設(shè)計(jì)中應(yīng)該追求盡可能松散耦合的系統(tǒng)。4.1.2.5 模塊獨(dú)立模塊獨(dú)立模塊分解的一個(gè)目標(biāo)是使塊間聯(lián)系盡可能小,模塊分解的一個(gè)目標(biāo)是使塊間聯(lián)系盡可能小,塊間聯(lián)系的大小可從三個(gè)方面衡量:塊間聯(lián)系的大小可從三個(gè)方面衡量:4.1.2.5 模塊獨(dú)立模塊獨(dú)立 塊間聯(lián)系方式有塊間聯(lián)系方式有“直接引用直接引用”或或“用過程語句調(diào)用用過程語句調(diào)用”。塊間傳送的共用信息(參數(shù))塊間傳送的共用信息(參數(shù))類型,可為類型,可為“數(shù)據(jù)型數(shù)據(jù)型”、“控制型控制型”或或“混合型混合型”(數(shù)據(jù)(數(shù)據(jù)/ /控制型)??刂菩停K間傳送的共用信息的數(shù)量塊間傳送的共用信息的數(shù)量。數(shù)據(jù)數(shù)據(jù)方式方式作用作用少少多多數(shù)據(jù)數(shù)據(jù)控制控制混合
28、混合直接直接調(diào)用調(diào)用過程過程調(diào)用調(diào)用內(nèi)容耦合內(nèi)容耦合公共耦合公共耦合控制耦合控制耦合復(fù)合耦合復(fù)合耦合數(shù)據(jù)耦合數(shù)據(jù)耦合耦合性的幾種類型耦合性的幾種類型耦合性耦合性內(nèi)容耦合內(nèi)容耦合公共耦合公共耦合控制耦合控制耦合復(fù)合耦合復(fù)合耦合數(shù)據(jù)耦合數(shù)據(jù)耦合(1 1)內(nèi)容耦合)內(nèi)容耦合(content coupling)一個(gè)模塊直接訪問另一模塊的內(nèi)部數(shù)據(jù)。一個(gè)模塊直接訪問另一模塊的內(nèi)部數(shù)據(jù)。一個(gè)模塊不通過正常入口轉(zhuǎn)到另一模塊的內(nèi)部。一個(gè)模塊不通過正常入口轉(zhuǎn)到另一模塊的內(nèi)部。一個(gè)模塊有多個(gè)入口。一個(gè)模塊有多個(gè)入口。兩個(gè)模塊有部分代碼重迭。兩個(gè)模塊有部分代碼重迭。ab進(jìn)入另一模塊內(nèi)進(jìn)入另一模塊內(nèi)ab部分代碼重迭部分
29、代碼重迭entry1 .entry2 . 多重入口多重入口耦合性的幾種類型耦合性的幾種類型耦合性耦合性內(nèi)容耦合內(nèi)容耦合公共耦合公共耦合控制耦合控制耦合復(fù)合耦合復(fù)合耦合數(shù)據(jù)耦合數(shù)據(jù)耦合(2 2)公共耦合(公共耦合(common coupling)若干模塊訪問一個(gè)公共的數(shù)若干模塊訪問一個(gè)公共的數(shù)據(jù)環(huán)境,則它們之間的耦合稱據(jù)環(huán)境,則它們之間的耦合稱為公共耦合。公共環(huán)境可為全為公共耦合。公共環(huán)境可為全局?jǐn)?shù)據(jù)結(jié)構(gòu)、共享的通信區(qū)、局?jǐn)?shù)據(jù)結(jié)構(gòu)、共享的通信區(qū)、內(nèi)存的公共覆蓋區(qū)等。顯然,內(nèi)存的公共覆蓋區(qū)等。顯然,公共數(shù)據(jù)區(qū)的變化,將影響所公共數(shù)據(jù)區(qū)的變化,將影響所有公共耦合模塊,嚴(yán)重影響模有公共耦合模塊,嚴(yán)重影
30、響模塊的可靠性和可適應(yīng)性,降低塊的可靠性和可適應(yīng)性,降低軟件的可讀性。軟件的可讀性。耦合性的幾種類型耦合性的幾種類型耦合性耦合性內(nèi)容耦合內(nèi)容耦合公共耦合公共耦合控制耦合控制耦合復(fù)合耦合復(fù)合耦合數(shù)據(jù)耦合數(shù)據(jù)耦合(3 3)控制耦合(控制耦合(control coupling)一個(gè)模塊傳遞給另一模塊的信一個(gè)模塊傳遞給另一模塊的信息是用于控制該模塊內(nèi)部邏輯的息是用于控制該模塊內(nèi)部邏輯的控制信號??刂菩盘枴o@然,對被控制模塊的任何修顯然,對被控制模塊的任何修改,都會影響控制模塊。改,都會影響控制模塊。耦合性的幾種類型耦合性的幾種類型耦合性耦合性內(nèi)容耦合內(nèi)容耦合公共耦合公共耦合控制耦合控制耦合復(fù)合耦合復(fù)合
31、耦合數(shù)據(jù)耦合數(shù)據(jù)耦合(4 4)復(fù)合耦合(復(fù)合耦合(data coupling) 一個(gè)模塊傳送給另一個(gè)模塊的參數(shù)是一個(gè)一個(gè)模塊傳送給另一個(gè)模塊的參數(shù)是一個(gè)復(fù)合的數(shù)據(jù)結(jié)構(gòu),例如,包含幾個(gè)數(shù)據(jù)單項(xiàng)的復(fù)合的數(shù)據(jù)結(jié)構(gòu),例如,包含幾個(gè)數(shù)據(jù)單項(xiàng)的記錄。記錄。耦合性的幾種類型耦合性的幾種類型耦合性耦合性內(nèi)容耦合內(nèi)容耦合公共耦合公共耦合控制耦合控制耦合復(fù)合耦合復(fù)合耦合數(shù)據(jù)耦合數(shù)據(jù)耦合(5 5)數(shù)據(jù)耦合(數(shù)據(jù)耦合(data coupling)若兩個(gè)模塊間通過參數(shù)交換信息,而且若兩個(gè)模塊間通過參數(shù)交換信息,而且交換的信息僅僅是數(shù)據(jù)。數(shù)據(jù)耦合是松散的交換的信息僅僅是數(shù)據(jù)。數(shù)據(jù)耦合是松散的耦合,模塊之間的獨(dú)立性比較強(qiáng)。
32、耦合,模塊之間的獨(dú)立性比較強(qiáng)。耦合性的幾種類型耦合性的幾種類型耦合性耦合性2. 內(nèi)聚內(nèi)聚內(nèi)聚標(biāo)志一個(gè)模塊內(nèi)各個(gè)元素彼此結(jié)合的緊密內(nèi)聚標(biāo)志一個(gè)模塊內(nèi)各個(gè)元素彼此結(jié)合的緊密程度,它是信息隱藏和局部化概念的自然擴(kuò)展。程度,它是信息隱藏和局部化概念的自然擴(kuò)展。理想內(nèi)聚的模塊只做一件事情。理想內(nèi)聚的模塊只做一件事情。設(shè)計(jì)時(shí)應(yīng)該力求做到高內(nèi)聚,通常中等程度的設(shè)計(jì)時(shí)應(yīng)該力求做到高內(nèi)聚,通常中等程度的內(nèi)聚也是可以采用的,而且效果和高內(nèi)聚相差不內(nèi)聚也是可以采用的,而且效果和高內(nèi)聚相差不多;但是,低內(nèi)聚很壞,不要使用。多;但是,低內(nèi)聚很壞,不要使用。內(nèi)聚性愈強(qiáng)內(nèi)聚性愈強(qiáng), ,模塊獨(dú)立性愈好。模塊獨(dú)立性愈好。4.1
33、.2.5 模塊獨(dú)立模塊獨(dú)立2. 內(nèi)聚內(nèi)聚5.2.5 模塊獨(dú)立模塊獨(dú)立偶然型偶然型邏輯型邏輯型瞬時(shí)型瞬時(shí)型通信型通信型順序型順序型功能型功能型內(nèi)聚性內(nèi)聚性偶然型偶然型邏輯型邏輯型瞬時(shí)型瞬時(shí)型通信型通信型順序型順序型功能型功能型內(nèi)聚性內(nèi)聚性偶然內(nèi)聚:偶然內(nèi)聚: 模塊內(nèi)部各部件之間沒有任何關(guān)系,僅僅模塊內(nèi)部各部件之間沒有任何關(guān)系,僅僅為了滿足模塊尺寸要求而將一些程序合入一為了滿足模塊尺寸要求而將一些程序合入一可模塊,出現(xiàn)錯(cuò)誤時(shí),難以確定位置;可模塊,出現(xiàn)錯(cuò)誤時(shí),難以確定位置;12偶然型偶然型邏輯型邏輯型瞬時(shí)型瞬時(shí)型通信型通信型順序型順序型功能型功能型內(nèi)聚性內(nèi)聚性邏輯內(nèi)聚:邏輯內(nèi)聚: 這種模塊把幾種相
34、關(guān)的功這種模塊把幾種相關(guān)的功能組合在一起,每次調(diào)用時(shí)能組合在一起,每次調(diào)用時(shí),由傳送給模塊的判斷參數(shù),由傳送給模塊的判斷參數(shù)來確定該模塊應(yīng)執(zhí)行那種功來確定該模塊應(yīng)執(zhí)行那種功能。能。偶然型偶然型邏輯型邏輯型瞬時(shí)型瞬時(shí)型通信型通信型順序型順序型功能型功能型內(nèi)聚性內(nèi)聚性瞬時(shí)內(nèi)聚:瞬時(shí)內(nèi)聚: 模塊包含的任務(wù)必須在同一段時(shí)間內(nèi)執(zhí)行,模塊包含的任務(wù)必須在同一段時(shí)間內(nèi)執(zhí)行,由于不使用選擇參數(shù),邏輯簡單,但結(jié)合了許由于不使用選擇參數(shù),邏輯簡單,但結(jié)合了許多無關(guān)任務(wù),錯(cuò)誤難以定位。多無關(guān)任務(wù),錯(cuò)誤難以定位。 例如:各種初始化。例如:各種初始化。偶然型偶然型邏輯型邏輯型瞬時(shí)型瞬時(shí)型通信型通信型順序型順序型功能型功
35、能型內(nèi)聚性內(nèi)聚性通信內(nèi)聚:通信內(nèi)聚: 模塊中所有的部件都模塊中所有的部件都訪問同一組數(shù)據(jù),幾個(gè)訪問同一組數(shù)據(jù),幾個(gè)部件之間有數(shù)據(jù)關(guān)系而部件之間有數(shù)據(jù)關(guān)系而無控制關(guān)系。無控制關(guān)系。 優(yōu)點(diǎn):可通過參數(shù)選優(yōu)點(diǎn):可通過參數(shù)選擇不同的作用,是一種擇不同的作用,是一種較理想的內(nèi)聚。較理想的內(nèi)聚。12偶然型偶然型邏輯型邏輯型瞬時(shí)型瞬時(shí)型通信型通信型順序型順序型功能型功能型內(nèi)聚性內(nèi)聚性順序內(nèi)聚:順序內(nèi)聚: 模塊完成多個(gè)功能,模塊完成多個(gè)功能,各個(gè)功能都在同一數(shù)據(jù)各個(gè)功能都在同一數(shù)據(jù)結(jié)構(gòu)上操作,每項(xiàng)功能結(jié)構(gòu)上操作,每項(xiàng)功能有唯一的入口點(diǎn)。有唯一的入口點(diǎn)。 較好的內(nèi)聚。較好的內(nèi)聚。21偶然型偶然型邏輯型邏輯型瞬時(shí)
36、型瞬時(shí)型通信型通信型順序型順序型功能型功能型內(nèi)聚性內(nèi)聚性功能內(nèi)聚:功能內(nèi)聚: 模塊內(nèi)所有部件處理模塊內(nèi)所有部件處理同一組數(shù)據(jù),共同完成同一組數(shù)據(jù),共同完成單一的功能,是最理想單一的功能,是最理想的內(nèi)聚之一。的內(nèi)聚之一。1按照他們的觀點(diǎn),如果給上述七種內(nèi)聚的優(yōu)劣按照他們的觀點(diǎn),如果給上述七種內(nèi)聚的優(yōu)劣評分,將得到如下結(jié)果:評分,將得到如下結(jié)果:功能內(nèi)聚功能內(nèi)聚10分分時(shí)間內(nèi)聚時(shí)間內(nèi)聚3分分順序內(nèi)聚順序內(nèi)聚9分分邏輯內(nèi)聚邏輯內(nèi)聚1分分通信內(nèi)聚通信內(nèi)聚7分分偶然內(nèi)聚偶然內(nèi)聚0分分過程內(nèi)聚過程內(nèi)聚5分分4.1.2.5 模塊獨(dú)立模塊獨(dú)立4.1.3 啟發(fā)規(guī)則啟發(fā)規(guī)則在長期的軟件開發(fā)實(shí)踐中,總結(jié)經(jīng)驗(yàn)在長期的
37、軟件開發(fā)實(shí)踐中,總結(jié)經(jīng)驗(yàn), ,得出了一得出了一些啟發(fā)式規(guī)則。些啟發(fā)式規(guī)則。沒有基本原理和概念那樣普遍適用,在改進(jìn)軟沒有基本原理和概念那樣普遍適用,在改進(jìn)軟件設(shè)計(jì),提高軟件質(zhì)量有積極意義。件設(shè)計(jì),提高軟件質(zhì)量有積極意義。下面介紹幾條啟發(fā)式規(guī)則。下面介紹幾條啟發(fā)式規(guī)則。設(shè)計(jì)出軟件的初步結(jié)構(gòu)以后,應(yīng)該審查分析這設(shè)計(jì)出軟件的初步結(jié)構(gòu)以后,應(yīng)該審查分析這個(gè)結(jié)構(gòu),通過模塊分解或合并,力求降低耦合提個(gè)結(jié)構(gòu),通過模塊分解或合并,力求降低耦合提高內(nèi)聚。高內(nèi)聚。例如,多個(gè)模塊公有的一個(gè)子功能可以獨(dú)立成例如,多個(gè)模塊公有的一個(gè)子功能可以獨(dú)立成一個(gè)模塊,由這些模塊調(diào)用;有時(shí)可以通過分解一個(gè)模塊,由這些模塊調(diào)用;有時(shí)可
38、以通過分解或合并模塊以減少控制信息的傳遞及對全程數(shù)據(jù)或合并模塊以減少控制信息的傳遞及對全程數(shù)據(jù)的引用,并且降低接口的復(fù)雜程度。的引用,并且降低接口的復(fù)雜程度。1. 改進(jìn)軟件結(jié)構(gòu)提高模塊獨(dú)立性改進(jìn)軟件結(jié)構(gòu)提高模塊獨(dú)立性經(jīng)驗(yàn)表明,一個(gè)模塊的規(guī)模不應(yīng)過大,最好能經(jīng)驗(yàn)表明,一個(gè)模塊的規(guī)模不應(yīng)過大,最好能寫在一頁紙內(nèi)寫在一頁紙內(nèi)( (通常不超過通常不超過6060行語句行語句) )。有人從心。有人從心理學(xué)角度研究得知,當(dāng)一個(gè)模塊包含的語句數(shù)超理學(xué)角度研究得知,當(dāng)一個(gè)模塊包含的語句數(shù)超過過3030以后,模塊的可理解程度迅速下降。以后,模塊的可理解程度迅速下降。過小的模塊開銷大于有效操作,而且模塊數(shù)目過小的模
39、塊開銷大于有效操作,而且模塊數(shù)目過多將使系統(tǒng)接口復(fù)雜。過多將使系統(tǒng)接口復(fù)雜。2. 模塊規(guī)模應(yīng)該適中模塊規(guī)模應(yīng)該適中3. 深度、寬度、扇出和扇入都應(yīng)適當(dāng)深度、寬度、扇出和扇入都應(yīng)適當(dāng)頂層頂層1層層2層層abcdefghijklmn深度深度扇入為扇入為2扇出為扇出為3扇入為扇入為33層層4層層寬度寬度寬度寬度寬度寬度 軟件結(jié)構(gòu)示意圖軟件結(jié)構(gòu)示意圖:深度:深度:表示軟件結(jié)構(gòu)中表示軟件結(jié)構(gòu)中從頂層模塊到最底層模塊從頂層模塊到最底層模塊的層數(shù)。的層數(shù)。寬度寬度:表示控制的總分:表示控制的總分布。布。扇出數(shù):扇出數(shù):指一個(gè)模塊直指一個(gè)模塊直接控制下屬的模塊個(gè)數(shù)。接控制下屬的模塊個(gè)數(shù)。扇入數(shù):扇入數(shù):指一個(gè)
40、模塊的指一個(gè)模塊的直接上屬模塊個(gè)數(shù)。直接上屬模塊個(gè)數(shù)。一個(gè)好的軟件結(jié)構(gòu)的形態(tài)準(zhǔn)則是:頂部寬度小,中部寬一個(gè)好的軟件結(jié)構(gòu)的形態(tài)準(zhǔn)則是:頂部寬度小,中部寬度大,底部寬度次之;在結(jié)構(gòu)頂部有較高的扇出數(shù),在底部度大,底部寬度次之;在結(jié)構(gòu)頂部有較高的扇出數(shù),在底部有較高的扇入數(shù)。有較高的扇入數(shù)。軟件的層次結(jié)構(gòu)軟件的層次結(jié)構(gòu)模塊的作用域定義為受該模塊內(nèi)一個(gè)判定影響模塊的作用域定義為受該模塊內(nèi)一個(gè)判定影響的所有模塊的集合。的所有模塊的集合。模塊的控制域是這個(gè)模塊本身以及所有直接或模塊的控制域是這個(gè)模塊本身以及所有直接或間接從屬于它的模塊的集合。間接從屬于它的模塊的集合。如圖所示,模塊如圖所示,模塊a a的控
41、制域是的控制域是a a、b b、c c、d d、e e、f f等模塊的集合,它的控制域應(yīng)在其中。等模塊的集合,它的控制域應(yīng)在其中。4. 模塊的作用域應(yīng)該在控制域之內(nèi)模塊的作用域應(yīng)該在控制域之內(nèi)模塊接口復(fù)雜是軟件發(fā)生錯(cuò)誤的一個(gè)主要原因。模塊接口復(fù)雜是軟件發(fā)生錯(cuò)誤的一個(gè)主要原因。接口復(fù)雜或不一致接口復(fù)雜或不一致( (即看起來傳遞的數(shù)據(jù)之間沒即看起來傳遞的數(shù)據(jù)之間沒有聯(lián)系有聯(lián)系) ),是緊耦合或低內(nèi)聚的征兆,應(yīng)該重新分,是緊耦合或低內(nèi)聚的征兆,應(yīng)該重新分析這個(gè)模塊的獨(dú)立性。析這個(gè)模塊的獨(dú)立性。5. 力爭降低模塊接口的復(fù)雜程度力爭降低模塊接口的復(fù)雜程度這條啟發(fā)式規(guī)則警告不要使模塊間出現(xiàn)內(nèi)容耦這條啟發(fā)式
42、規(guī)則警告不要使模塊間出現(xiàn)內(nèi)容耦合。合。6. 設(shè)計(jì)單入口單出口的模塊設(shè)計(jì)單入口單出口的模塊7. 模塊功能應(yīng)該可以預(yù)測模塊功能應(yīng)該可以預(yù)測如果模塊輸入的數(shù)據(jù)相同,就產(chǎn)生同樣的輸出,如果模塊輸入的數(shù)據(jù)相同,就產(chǎn)生同樣的輸出,這個(gè)模塊的功能就是可以預(yù)測的。這個(gè)模塊的功能就是可以預(yù)測的。同時(shí)要控制模塊的功能過分局限,使用范圍過同時(shí)要控制模塊的功能過分局限,使用范圍過分狹窄。分狹窄。7. 模塊功能應(yīng)該可以預(yù)測模塊功能應(yīng)該可以預(yù)測模塊的功能應(yīng)該能夠預(yù)測,但也要防止模塊功模塊的功能應(yīng)該能夠預(yù)測,但也要防止模塊功能過分局限。能過分局限。如果一個(gè)模塊可以當(dāng)做一個(gè)黑盒子,也就是說,如果一個(gè)模塊可以當(dāng)做一個(gè)黑盒子,也
43、就是說,只要輸入的數(shù)據(jù)相同就產(chǎn)生同樣的輸出,這個(gè)模只要輸入的數(shù)據(jù)相同就產(chǎn)生同樣的輸出,這個(gè)模塊的功能就是可以預(yù)測的。帶有內(nèi)部塊的功能就是可以預(yù)測的。帶有內(nèi)部“存儲器存儲器”的模塊的功能可能是不可預(yù)測的,因?yàn)樗妮敵龅哪K的功能可能是不可預(yù)測的,因?yàn)樗妮敵隹赡苋Q于內(nèi)部存儲器可能取決于內(nèi)部存儲器( (例如某個(gè)標(biāo)記例如某個(gè)標(biāo)記) )的狀態(tài)。的狀態(tài)。由于內(nèi)部存儲器對于上級模塊而言是不可見的,由于內(nèi)部存儲器對于上級模塊而言是不可見的,所以這樣的模塊既不易理解又難于測試和維護(hù)。所以這樣的模塊既不易理解又難于測試和維護(hù)。4.1.4.1 層次圖和層次圖和hipo圖圖層次圖用來描繪軟件的層次結(jié)構(gòu)。層次圖用來
44、描繪軟件的層次結(jié)構(gòu)。4.1.4 描繪軟件結(jié)構(gòu)的圖形工具描繪軟件結(jié)構(gòu)的圖形工具層次圖中的一個(gè)矩形框代表一個(gè)模塊,方框?qū)哟螆D中的一個(gè)矩形框代表一個(gè)模塊,方框間的連線表示調(diào)用關(guān)系而不像層次方框圖那樣間的連線表示調(diào)用關(guān)系而不像層次方框圖那樣表示組成關(guān)系。表示組成關(guān)系。正文加工系統(tǒng)的層次圖正文加工系統(tǒng)的層次圖 hipohipo圖是圖是“層次圖加輸入層次圖加輸入/ /處理處理/ /輸出圖輸出圖”的英的英文縮寫。為了能使文縮寫。為了能使hipohipo圖具有可追蹤性,在圖具有可追蹤性,在h h圖圖( (層次圖層次圖) )里除了最頂層的方框之外,每個(gè)方框都里除了最頂層的方框之外,每個(gè)方框都加了編號。加了編號。
45、結(jié)構(gòu)圖也是描繪軟件結(jié)構(gòu)的圖形工具。結(jié)構(gòu)圖也是描繪軟件結(jié)構(gòu)的圖形工具。一個(gè)方框代表一個(gè)模塊,框內(nèi)注明模塊的名字一個(gè)方框代表一個(gè)模塊,框內(nèi)注明模塊的名字或主要功能;方框之間的箭頭或主要功能;方框之間的箭頭( (或直線或直線) )表示模塊表示模塊的調(diào)用關(guān)系。的調(diào)用關(guān)系。4.1.4.2 結(jié)構(gòu)圖結(jié)構(gòu)圖尾部是尾部是空心圓表空心圓表示傳遞的示傳遞的是數(shù)據(jù),是數(shù)據(jù),實(shí)心圓表實(shí)心圓表示傳遞的示傳遞的是控制信是控制信息。息。4.1.4.2 結(jié)構(gòu)圖結(jié)構(gòu)圖有一些附加的符號有一些附加的符號,可以表示模塊的選擇調(diào)可以表示模塊的選擇調(diào)用或循環(huán)調(diào)用。用或循環(huán)調(diào)用。如左如左圖表示當(dāng)模塊圖表示當(dāng)模塊m m中某個(gè)判定為真時(shí)調(diào)用模中
46、某個(gè)判定為真時(shí)調(diào)用模塊塊a a,為假時(shí)調(diào)用模塊,為假時(shí)調(diào)用模塊b b。如右如右圖表示模塊圖表示模塊m m循環(huán)循環(huán)調(diào)用模塊調(diào)用模塊a a、b b和和c c。4.1.5 面向數(shù)據(jù)流的設(shè)計(jì)方法面向數(shù)據(jù)流的設(shè)計(jì)方法面向數(shù)據(jù)流的設(shè)計(jì)方法的目標(biāo)是給出設(shè)計(jì)軟件面向數(shù)據(jù)流的設(shè)計(jì)方法的目標(biāo)是給出設(shè)計(jì)軟件結(jié)構(gòu)的一個(gè)系統(tǒng)化的途徑。結(jié)構(gòu)的一個(gè)系統(tǒng)化的途徑。因?yàn)槿魏诬浖到y(tǒng)都可以用數(shù)據(jù)流圖表示,所因?yàn)槿魏诬浖到y(tǒng)都可以用數(shù)據(jù)流圖表示,所以面向數(shù)據(jù)流的設(shè)計(jì)方法理論上可以設(shè)計(jì)任何軟以面向數(shù)據(jù)流的設(shè)計(jì)方法理論上可以設(shè)計(jì)任何軟件的結(jié)構(gòu)。件的結(jié)構(gòu)。通常所說的結(jié)構(gòu)化設(shè)計(jì)方法通常所說的結(jié)構(gòu)化設(shè)計(jì)方法( (簡稱簡稱sdsd方法方法)
47、),也,也就是基于數(shù)據(jù)流的設(shè)計(jì)方法。就是基于數(shù)據(jù)流的設(shè)計(jì)方法。面向數(shù)據(jù)流的設(shè)計(jì)方法把信息流映射成軟件結(jié)面向數(shù)據(jù)流的設(shè)計(jì)方法把信息流映射成軟件結(jié)構(gòu),信息流的類型決定了映射的方法。信息流有構(gòu),信息流的類型決定了映射的方法。信息流有下述兩種類型。下述兩種類型。1. 變換流變換流4.1.4.1 概念概念2. 事務(wù)流事務(wù)流如圖所示,數(shù)據(jù)流是如圖所示,數(shù)據(jù)流是“以事務(wù)為中心的以事務(wù)為中心的”,即,即數(shù)據(jù)沿輸入通路到達(dá)一個(gè)處理數(shù)據(jù)沿輸入通路到達(dá)一個(gè)處理t t,根據(jù)輸入數(shù)據(jù)的,根據(jù)輸入數(shù)據(jù)的類型選出一個(gè)來執(zhí)行。這類數(shù)據(jù)流應(yīng)該劃為一類類型選出一個(gè)來執(zhí)行。這類數(shù)據(jù)流應(yīng)該劃為一類特殊的數(shù)據(jù)流,稱為事務(wù)流。特殊的數(shù)據(jù)
48、流,稱為事務(wù)流。4.1.4.1 概念概念如圖處理如圖處理t t稱為事務(wù)中心,它完成下述任務(wù):稱為事務(wù)中心,它完成下述任務(wù):(1) (1) 接收輸入數(shù)據(jù)接收輸入數(shù)據(jù)( (輸入數(shù)據(jù)又稱為事務(wù)輸入數(shù)據(jù)又稱為事務(wù)) );(2) (2) 分析每個(gè)事務(wù)以確定它的類型;分析每個(gè)事務(wù)以確定它的類型;(3) (3) 根據(jù)事務(wù)類型選取一條活動(dòng)通路。根據(jù)事務(wù)類型選取一條活動(dòng)通路。4.1.4.1 概念概念變換分析把具有變換流特點(diǎn)的數(shù)據(jù)流圖按預(yù)先變換分析把具有變換流特點(diǎn)的數(shù)據(jù)流圖按預(yù)先確定的模式映射成軟件結(jié)構(gòu)。確定的模式映射成軟件結(jié)構(gòu)。4.1.5.2 變換分析變換分析中心變換型中心變換型(transform cente
49、r(transform center) 其特點(diǎn)是:其特點(diǎn)是:dfddfd圖可以明顯分為圖可以明顯分為“輸入輸入- -處理處理- -輸出輸出”三三部分。部分。檢查檢查順序順序(物理輸入)(物理輸入)檢查檢查合理性合理性擴(kuò)充擴(kuò)充代碼代碼核對核對檢查和檢查和修改修改壓縮壓縮代碼代碼檢查檢查(邏輯輸入(邏輯輸入)(邏輯輸出(邏輯輸出)輸輸 入入主加工主加工輸輸 出出卡卡 片片 舊文件舊文件(物理輸出)(物理輸出)新文件新文件分類分類報(bào)名報(bào)名付款付款注銷注銷查詢查詢復(fù)審復(fù)審事務(wù)處理型事務(wù)處理型(transaction)(transaction) 這類數(shù)據(jù)流圖可看成是對一個(gè)數(shù)據(jù)經(jīng)過某種加工后,這類數(shù)據(jù)流圖
50、可看成是對一個(gè)數(shù)據(jù)經(jīng)過某種加工后,按加工的結(jié)果選擇一個(gè)輸出數(shù)據(jù)流繼續(xù)執(zhí)行的處理。按加工的結(jié)果選擇一個(gè)輸出數(shù)據(jù)流繼續(xù)執(zhí)行的處理。4.1.5.2 變換分析變換分析bcadeqprwuvabcedrpuwv變換中心傳入部分傳出部分第一級分解的方法c,ec,e u,wu,w通過變換分析技術(shù),將中心變換型的通過變換分析技術(shù),將中心變換型的dfddfd圖轉(zhuǎn)換圖轉(zhuǎn)換而得的而得的scsc圖,稱為變換型系統(tǒng)結(jié)構(gòu)圖。圖,稱為變換型系統(tǒng)結(jié)構(gòu)圖。通過事務(wù)分析技術(shù),將事務(wù)處理型的通過事務(wù)分析技術(shù),將事務(wù)處理型的dfddfd圖轉(zhuǎn)換圖轉(zhuǎn)換為的為的scsc圖,稱為事務(wù)型的系統(tǒng)結(jié)構(gòu)圖。圖,稱為事務(wù)型的系統(tǒng)結(jié)構(gòu)圖。 主加工主加工
51、 描述了系統(tǒng)的主要功能、特征。其特點(diǎn)是:描述了系統(tǒng)的主要功能、特征。其特點(diǎn)是:輸入輸入/ /輸出數(shù)據(jù)流較多,往往主加工不止一個(gè)。輸出數(shù)據(jù)流較多,往往主加工不止一個(gè)。 邏輯輸入邏輯輸入/ /輸出輸出 是指輸入是指輸入/ /輸出主加工的數(shù)據(jù)流。輸出主加工的數(shù)據(jù)流。 輸入流輸入流 是把物理輸入轉(zhuǎn)換為邏輯輸入的數(shù)據(jù)流。是把物理輸入轉(zhuǎn)換為邏輯輸入的數(shù)據(jù)流。 輸出流輸出流 是將邏輯輸出轉(zhuǎn)換為物理輸出的數(shù)據(jù)流。是將邏輯輸出轉(zhuǎn)換為物理輸出的數(shù)據(jù)流。fdc中心中心加工加工2號號加工加工3號號加工加工1號號加工加工4號號加工加工abe 輸輸 入入流流轉(zhuǎn)換流轉(zhuǎn)換流輸輸 出出 流流 輸輸 入入流流轉(zhuǎn)換流轉(zhuǎn)換流輸輸 出
52、出 流流 進(jìn)行一級分解進(jìn)行一級分解, ,設(shè)計(jì)上層模塊設(shè)計(jì)上層模塊 為每個(gè)輸入設(shè)計(jì)一個(gè)輸入模塊,為每個(gè)輸出設(shè)計(jì)一個(gè)輸出為每個(gè)輸入設(shè)計(jì)一個(gè)輸入模塊,為每個(gè)輸出設(shè)計(jì)一個(gè)輸出模塊,同時(shí)為每個(gè)主加工設(shè)計(jì)一個(gè)處理模塊。模塊,同時(shí)為每個(gè)主加工設(shè)計(jì)一個(gè)處理模塊。mcictcoccddcictco 變換分析技術(shù)變換分析技術(shù)ddcc 這一步的工作是自頂向下,逐步細(xì)化,為第一層的每一個(gè)這一步的工作是自頂向下,逐步細(xì)化,為第一層的每一個(gè)輸入模塊、輸出模塊、處理模塊設(shè)計(jì)它們的從屬模塊,設(shè)計(jì)輸入模塊、輸出模塊、處理模塊設(shè)計(jì)它們的從屬模塊,設(shè)計(jì)下層模塊的順序一般從設(shè)計(jì)輸入模塊的下層開始。下層模塊的順序一般從設(shè)計(jì)輸入模塊的下
53、層開始。mcictco處理c取b轉(zhuǎn)換b轉(zhuǎn)換d送eccdddccdbbeedc中心中心加工加工2號號加工加工3號號加工加工1號號加工加工4號號加工加工ab e 輸輸 入入流流轉(zhuǎn)換流轉(zhuǎn)換流輸輸 出出 流流轉(zhuǎn)換流轉(zhuǎn)換流取a轉(zhuǎn)換a轉(zhuǎn)換e送faabffe 變換分析技術(shù)變換分析技術(shù)f確定流界:確定流界:首先從數(shù)據(jù)流圖中找出事務(wù)流、事務(wù)首先從數(shù)據(jù)流圖中找出事務(wù)流、事務(wù)處理中心和事務(wù)路徑。處理中心和事務(wù)路徑。進(jìn)行一級分析,設(shè)計(jì)上層模塊:進(jìn)行一級分析,設(shè)計(jì)上層模塊:對事務(wù)中心應(yīng)設(shè)對事務(wù)中心應(yīng)設(shè)計(jì)計(jì)“事物控制事物控制”模塊;對事物流應(yīng)設(shè)計(jì)模塊;對事物流應(yīng)設(shè)計(jì)“接受事物接受事物”模塊;對事務(wù)路徑,應(yīng)設(shè)計(jì)模塊;對事務(wù)
54、路徑,應(yīng)設(shè)計(jì)“發(fā)送控制發(fā)送控制”模塊。模塊。進(jìn)行二級分解,設(shè)計(jì)中下層模塊:進(jìn)行二級分解,設(shè)計(jì)中下層模塊:接受分支,用接受分支,用類似于轉(zhuǎn)換處理型數(shù)據(jù)流圖中對輸入數(shù)據(jù)流的方法類似于轉(zhuǎn)換處理型數(shù)據(jù)流圖中對輸入數(shù)據(jù)流的方法設(shè)計(jì)中下層。對于發(fā)送分支,在發(fā)送控制模塊下為設(shè)計(jì)中下層。對于發(fā)送分支,在發(fā)送控制模塊下為每條事務(wù)路徑設(shè)計(jì)一個(gè)事務(wù)處理模塊,這一層稱為每條事務(wù)路徑設(shè)計(jì)一個(gè)事務(wù)處理模塊,這一層稱為事務(wù)層。事務(wù)層。4.1.5.3 事務(wù)分析技術(shù)事務(wù)分析技術(shù)對對 應(yīng)應(yīng) 模模 塊塊 圖圖原原 始始 的的 數(shù)數(shù) 據(jù)據(jù) 流流 圖圖i ip1p1p2p2p3p3事物流事物流事務(wù)中心事務(wù)中心事務(wù)處理事務(wù)處理事務(wù)控制事務(wù)控制接受事務(wù)接受事務(wù)發(fā)送事務(wù)發(fā)送事務(wù)p1p2p3 事務(wù)分析技術(shù)事務(wù)分析技術(shù)4.1.5.3 事務(wù)分析技術(shù)事務(wù)分析技術(shù)我們已經(jīng)開始進(jìn)入我們已經(jī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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 家具購銷合同案例
- 圖書出版合作協(xié)議書格式
- 汽車抵押借款合同協(xié)議書示例
- 個(gè)人合伙協(xié)議書格式
- 2024智能化工程維修合同
- 房地產(chǎn)抵押合同常見條款
- 教師臨時(shí)雇傭合同
- 2023年高考地理重點(diǎn)難點(diǎn)考點(diǎn)通練-環(huán)境安全與國家安全(原卷版)
- 工廠合作伙伴意向書
- 各類協(xié)議書的法律效力
- 小學(xué)道德與法治 五年級上冊 傳統(tǒng)美德源遠(yuǎn)流長 天下興亡 匹夫有責(zé)的愛國情懷 教學(xué)設(shè)計(jì)
- 國開作業(yè)《公共部門人力資源管理》形考任務(wù)4:撰寫課程學(xué)習(xí)總結(jié)(第1-9章權(quán)重25%)參考882
- 暈厥護(hù)理查房(與“暈厥”相關(guān)共28張)課件
- 某蔬菜大棚鋼結(jié)構(gòu)施工組織設(shè)計(jì)
- 全國護(hù)士延續(xù)注冊體檢表-(正式)
- 礦山三違識別表
- 危房封條格式
- 智慧校園項(xiàng)目—數(shù)據(jù)大腦等平臺建設(shè)方案
- 300mw汽輪機(jī)畢業(yè)設(shè)計(jì)論文
- 2022年甘肅省二級消防工程師《消防技術(shù)綜合能力》考試題庫及答案(含真題)
- 物資核銷細(xì)則
評論
0/150
提交評論