軟件工程課件第四章_第1頁
軟件工程課件第四章_第2頁
軟件工程課件第四章_第3頁
軟件工程課件第四章_第4頁
軟件工程課件第四章_第5頁
已閱讀5頁,還剩60頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、2021-11-10信息科學與技術學院1第四章第四章 總體設計總體設計軟件工程軟件工程(software engineering)2021-11-10信息科學與技術學院2總體設計總體設計 需求分析解決需求分析解決“系統必須做什么系統必須做什么(what)”(what)”的問題,軟件的問題,軟件設計解決設計解決“怎樣做怎樣做(how)”(how)”,即從技術角度考慮如何實現用戶,即從技術角度考慮如何實現用戶需求。需求。需求解決需求解決“做正確的事做正確的事”,設計解決,設計解決“正確地做事正確地做事”。 軟件設計是把軟件需求變換成軟件表示的過程。最初這軟件設計是把軟件需求變換成軟件表示的過程。最

2、初這種表示只是描述出軟件的總框架,然后進一步細化,在此框種表示只是描述出軟件的總框架,然后進一步細化,在此框架中填入細節,把它加工成在程序細節上非常接近于源程序架中填入細節,把它加工成在程序細節上非常接近于源程序的表示。因此軟件設計分兩步進行:的表示。因此軟件設計分兩步進行: 1 1、將系統劃分成相互聯系的邏輯單元、將系統劃分成相互聯系的邏輯單元-總體上應該怎樣總體上應該怎樣做做-總體設計、概要設計、初步設計總體設計、概要設計、初步設計。 2 2、邏輯單元實現的設計、邏輯單元實現的設計-具體應該怎樣做具體應該怎樣做-詳細設計。詳細設計。2021-11-10信息科學與技術學院3總體的設計過程總體

3、的設計過程一、系統體系結構設計一、系統體系結構設計 設想供選擇的方案設想供選擇的方案 選取合理的方案選取合理的方案 推薦最佳方案推薦最佳方案 二、軟件結構設計二、軟件結構設計 功能分解功能分解 設計軟件結構設計軟件結構 三、數據庫設計三、數據庫設計 四、制定測試計劃四、制定測試計劃 五、書寫文檔五、書寫文檔六、審核和復審六、審核和復審2021-11-10信息科學與技術學院4軟件結構設計軟件結構設計1 1、功能分解、功能分解進行功能分解的目的,不是從應用角度,而是從進行功能分解的目的,不是從應用角度,而是從實現角度,針對的是少數功能。這些功能不是不明確,實現角度,針對的是少數功能。這些功能不是不

4、明確,而是功能實現起來較復雜,將其分解成比較簡單的功而是功能實現起來較復雜,將其分解成比較簡單的功能,使每個功能的實現變得明顯易懂。能,使每個功能的實現變得明顯易懂。該步驟將導致數據流圖的進一步細化。該步驟將導致數據流圖的進一步細化。2021-11-10信息科學與技術學院5軟件結構設計軟件結構設計2 2、 設計軟件結構設計軟件結構軟件結構:以模塊為單位的層次結構。即:軟件結構:以模塊為單位的層次結構。即:上層模塊調用它的下層模塊以實現程序的完整功能;上層模塊調用它的下層模塊以實現程序的完整功能;每個下層模塊再調用更下層模塊完成程序的一個子功能;每個下層模塊再調用更下層模塊完成程序的一個子功能;

5、最下層的模塊完成最具體的功能。最下層的模塊完成最具體的功能。 方法:根據數據流圖的層次關系導出軟件結構。方法:根據數據流圖的層次關系導出軟件結構。任務:任務: 劃分程序模塊劃分程序模塊 確定模塊間的邏輯關系及接口參數確定模塊間的邏輯關系及接口參數如果數據流圖設計得好,數據流圖和軟件結構具有極如果數據流圖設計得好,數據流圖和軟件結構具有極強的對應關系。強的對應關系。2021-11-10信息科學與技術學院6數據結構設計數據結構設計 1 1、文件系統的數據結構設計、文件系統的數據結構設計 確定輸入、輸出文件的詳細的數據結構。確定輸入、輸出文件的詳細的數據結構。 確定算法所需的邏輯數據結構及其操作規則

6、。確定算法所需的邏輯數據結構及其操作規則。 確定邏輯數據結構所涉及的程序模塊確定邏輯數據結構所涉及的程序模塊2 2、數據庫設計、數據庫設計 如果目標系統以數據庫為基礎,則要進行數據庫設計。如果目標系統以數據庫為基礎,則要進行數據庫設計。 總體設計階段的數據庫設計包括:總體設計階段的數據庫設計包括: 數據庫管理系統的選擇數據庫管理系統的選擇 模式設計模式設計:確定有那些基本表組成和每個表的結構。:確定有那些基本表組成和每個表的結構。 子模式設計:具體應用所能看到的數據庫內容。子模式設計:具體應用所能看到的數據庫內容。 物理模式設計:確定數據的存儲結構和存取路徑(存物理模式設計:確定數據的存儲結構

7、和存取路徑(存儲方式,建立索引)。儲方式,建立索引)。 數據庫完整性和安全性設計。數據庫完整性和安全性設計。 2021-11-10信息科學與技術學院7制定測試計劃制定測試計劃確定對各模塊和系統聯調的測試方案。確定對各模塊和系統聯調的測試方案。 在軟件開發的早期階段考慮測試問題,在軟件開發的早期階段考慮測試問題,能促使軟件設計人員在設計時注意提高能促使軟件設計人員在設計時注意提高軟件的可測試性軟件的可測試性 。2021-11-10信息科學與技術學院8書寫文檔書寫文檔 1.1.系統說明:概要設計說明書系統說明:概要設計說明書 2.2.用戶手冊用戶手冊 3.3.測試計劃測試計劃 4.4.詳細的實現計

8、劃詳細的實現計劃 5.5.數據庫設計結果數據庫設計結果 2021-11-10信息科學與技術學院9審核和復審審核和復審 最后應該對總體設計的結果進最后應該對總體設計的結果進行嚴格的技術審查,通過之后再由行嚴格的技術審查,通過之后再由使用部門從管理角度進行復審。使用部門從管理角度進行復審。2021-11-10信息科學與技術學院10軟件設計原理軟件設計原理主要內容w抽象抽象w模塊化模塊化w信息隱蔽(和局部化)信息隱蔽(和局部化) w模塊獨立模塊獨立 2021-11-10信息科學與技術學院11抽抽 象象 在現實世界中,一定事物、狀態或過程之間在現實世界中,一定事物、狀態或過程之間總存在著某些相似的方面

9、(共性總存在著某些相似的方面(共性) )。把這些相似。把這些相似的方面集中和概括起來,暫時忽略它們之間的差的方面集中和概括起來,暫時忽略它們之間的差異,這就是抽象。抽出事物的本質特征而暫不考異,這就是抽象。抽出事物的本質特征而暫不考慮它們的細節。慮它們的細節。 解決復雜問題的唯一有效的方法就是運用抽解決復雜問題的唯一有效的方法就是運用抽象的思維方式,首先用一些高級的抽象概念構造象的思維方式,首先用一些高級的抽象概念構造和理解它;這些高級概念又可以用一些較低級的和理解它;這些高級概念又可以用一些較低級的概念構造和理解,如此進行下去,直到最低層次概念構造和理解,如此進行下去,直到最低層次的具體元素

10、。的具體元素。2021-11-10信息科學與技術學院12前一頁抽抽 象象 抽象的具體表現為:自頂向下、逐步求精。抽象的具體表現為:自頂向下、逐步求精。 軟件工程過程的每一步都是對軟件解法的抽象軟件工程過程的每一步都是對軟件解法的抽象層次的一次求精。層次的一次求精。 軟件開發的三種抽象形式:軟件開發的三種抽象形式: 1 1、過程抽象:對過程的任務采用逐步求精的解、過程抽象:對過程的任務采用逐步求精的解法;法; 2 2、數據抽象:通過層次結構來描述數據對象。、數據抽象:通過層次結構來描述數據對象。 3 3、控制抽象:描述程序控制機制而無須規定內、控制抽象:描述程序控制機制而無須規定內部細節。部細節

11、。 模塊化就是一種程序設計的抽象機制。模塊化就是一種程序設計的抽象機制。2021-11-10信息科學與技術學院13模塊化模塊化 模塊:一組有序操作的總稱,它可以單獨的名字存在,模塊:一組有序操作的總稱,它可以單獨的名字存在,單獨編譯,可以通過名字來訪問。一個函數、一個過程就單獨編譯,可以通過名字來訪問。一個函數、一個過程就是一個模塊。是一個模塊。 模塊基本屬性模塊基本屬性: (1 1)功能:模塊做什么;)功能:模塊做什么; (2 2)邏輯:描述模塊內部怎么做;)邏輯:描述模塊內部怎么做; (3 3)狀態:模塊使用時的環境和條件。)狀態:模塊使用時的環境和條件。 模塊的外部屬性:模塊的外部屬性:

12、 模塊名模塊名 功能功能 參數參數( (輸入參數和輸出參數輸入參數和輸出參數) )。 模塊的內部特性:完成模塊功能的代碼和局部數據。模塊的內部特性:完成模塊功能的代碼和局部數據。2021-11-10信息科學與技術學院14模塊化模塊化 模塊化:以模塊作為程序設計的基本單位,把程序劃模塊化:以模塊作為程序設計的基本單位,把程序劃分成若干個模塊,每個模塊完成一個子功能,把這些模塊集分成若干個模塊,每個模塊完成一個子功能,把這些模塊集總起來,并通過模塊間的調用關系把它們組成一個完整的整總起來,并通過模塊間的調用關系把它們組成一個完整的整體,完成指定的功能。體,完成指定的功能。 采用模塊化的依據:采用模

13、塊化的依據: 容易被理解。容易被理解。 使問題復雜度降低,容易被實現。使問題復雜度降低,容易被實現。2021-11-10信息科學與技術學院15采用模塊化的依據采用模塊化的依據 容易被理解。容易被理解。 使問題復雜度降低,容易被實現。使問題復雜度降低,容易被實現。 設函數設函數c(x)定義問題定義問題x的復雜程度,函數的復雜程度,函數e(x)確定解決問題確定解決問題x需要的工作量(時間),對于兩個問題需要的工作量(時間),對于兩個問題p1和和p2,如果,如果 c(p1) c(p2) 則:則: e(p1) e(p2) 規律:規律: c(p1p2) c(p1) + c(p2) 必有:必有: e(p1

14、p2) e(p1)+ e(p2) 2021-11-10信息科學與技術學院16模塊化與軟件成本模塊化與軟件成本2021-11-10信息科學與技術學院17模塊化結論模塊化結論 1 1、采用模塊化,是使軟件設計從、采用模塊化,是使軟件設計從難到易的基本方法。難到易的基本方法。 2 2、模塊分解應適度。模塊規模太、模塊分解應適度。模塊規模太小,完成每個模塊的工作量很小,但小,完成每個模塊的工作量很小,但設計和調試模塊間的接口工作量隨之設計和調試模塊間的接口工作量隨之增加。增加。2021-11-10信息科學與技術學院18信息的隱蔽和局部化信息的隱蔽和局部化信息隱蔽:模塊內部的信息(處理過程和數據),應對

15、信息隱蔽:模塊內部的信息(處理過程和數據),應對不需要了解這些信息的模塊隱蔽起來,使它們不能訪問。不需要了解這些信息的模塊隱蔽起來,使它們不能訪問。信息隱蔽是模塊設計的基本原則。意味著在進行模塊劃信息隱蔽是模塊設計的基本原則。意味著在進行模塊劃分時,應保證模塊的獨立性,使組成程序的模塊之間只需交分時,應保證模塊的獨立性,使組成程序的模塊之間只需交換完成軟件功能所必需的信息。換完成軟件功能所必需的信息。將信息隱蔽作為模塊化設計標準,為軟件測試和維護對將信息隱蔽作為模塊化設計標準,為軟件測試和維護對模塊的修改帶來了極大的方便,使得修改時無意引入的錯誤模塊的修改帶來了極大的方便,使得修改時無意引入的

16、錯誤不會被擴散到被修改模塊以外的其它位置。不會被擴散到被修改模塊以外的其它位置。局部化:指關系密切的軟件元素物理地彼此靠近。局部局部化:指關系密切的軟件元素物理地彼此靠近。局部化是實現信息隱蔽的重要方法。如模塊內使用的局部數據元化是實現信息隱蔽的重要方法。如模塊內使用的局部數據元素,當模塊被調用執行時發揮作用,退出后便失去意義。素,當模塊被調用執行時發揮作用,退出后便失去意義。2021-11-10信息科學與技術學院19模塊獨立模塊獨立 模塊獨立模塊獨立(independence)(independence)的概念是模塊化、抽象、信息的概念是模塊化、抽象、信息隱蔽和局部化概念的直接結果。開發具有

17、獨立功能且與其他隱蔽和局部化概念的直接結果。開發具有獨立功能且與其他模塊之間沒有過多的相互作用的模塊,就可以做到模塊獨立模塊之間沒有過多的相互作用的模塊,就可以做到模塊獨立 。 第一,有效的模塊化(即具有獨立的模塊)的軟件比較容第一,有效的模塊化(即具有獨立的模塊)的軟件比較容易開發出來。易開發出來。 第二,獨立的模塊比較容易測試和維護。第二,獨立的模塊比較容易測試和維護。模塊的獨立程度的模塊的獨立程度的度量度量標準標準: : 內聚內聚: :衡量一個模塊內部各個元素彼此結合的緊密程度;衡量一個模塊內部各個元素彼此結合的緊密程度; 耦合耦合: :衡量不同模塊彼此間互相依賴(連接)的緊密程度。衡量

18、不同模塊彼此間互相依賴(連接)的緊密程度。2021-11-10信息科學與技術學院20模塊獨立模塊獨立 耦合耦合 耦合是對一個軟件結構內不同模塊之間互聯程度的度量。耦合是對一個軟件結構內不同模塊之間互聯程度的度量。耦合強弱取決于模塊之間接口的復雜程度,調用模塊的方式,耦合強弱取決于模塊之間接口的復雜程度,調用模塊的方式,以及通過接口的數據。實際上,耦合是接口數據對模塊獨立以及通過接口的數據。實際上,耦合是接口數據對模塊獨立性的影響。性的影響。 如果兩個模塊中的每一個都能獨立地工作而不需要另一如果兩個模塊中的每一個都能獨立地工作而不需要另一個模塊地存在,那么它們彼此完全獨立,這意味著模塊間無個模塊

19、地存在,那么它們彼此完全獨立,這意味著模塊間無任何連接,耦合程度最低任何連接,耦合程度最低。但一個軟件系統中的模塊之間是但一個軟件系統中的模塊之間是彼此協同工作的,不可能所有模塊間沒有連結。彼此協同工作的,不可能所有模塊間沒有連結。2021-11-10信息科學與技術學院21模塊獨立模塊獨立 耦合耦合 數據耦合數據耦合 :如果兩個模塊彼此間通過參數交:如果兩個模塊彼此間通過參數交換信息,而且交換的信息僅僅是數據,那么這種換信息,而且交換的信息僅僅是數據,那么這種耦合稱為數據耦合。耦合稱為數據耦合。 控制耦合控制耦合:如果傳遞的信息中有控制信息,則:如果傳遞的信息中有控制信息,則這種耦合稱為控制耦

20、合。這種耦合稱為控制耦合。 數據耦合是數據耦合是低耦合低耦合。系統必須存在這種耦合,。系統必須存在這種耦合,因為只有當某些模塊的輸出數據作為另一些模塊因為只有當某些模塊的輸出數據作為另一些模塊的輸入數據時,系統才能完成有價值的功能。的輸入數據時,系統才能完成有價值的功能。 2021-11-10信息科學與技術學院22模塊獨立模塊獨立 耦合耦合 公共環境耦合公共環境耦合:當兩個或多個模塊通過一個公:當兩個或多個模塊通過一個公共數據環境(全程變量、數據文件等)相互作用時,共數據環境(全程變量、數據文件等)相互作用時,它們之間的耦合稱為公共環境耦合。它們之間的耦合稱為公共環境耦合。 內容耦合內容耦合:

21、一個模塊直接引用另一個模塊內部:一個模塊直接引用另一個模塊內部的內容。例如:一個模塊直接訪問另一個模塊的內的內容。例如:一個模塊直接訪問另一個模塊的內部數據;一個模塊不通過正常入口轉到另一個模塊部數據;一個模塊不通過正常入口轉到另一個模塊的內部;兩個模塊有一部分代碼重疊。最高程度的的內部;兩個模塊有一部分代碼重疊。最高程度的耦合是內容耦合。耦合是內容耦合。 原則原則:盡量使用數據耦合,少用控制耦合,限盡量使用數據耦合,少用控制耦合,限制公共環境耦合的范圍,完全不用內容耦合制公共環境耦合的范圍,完全不用內容耦合 。 2021-11-10信息科學與技術學院23前一頁模塊獨立模塊獨立 內聚內聚 內聚

22、是一個模塊內各個元素彼此結合的緊內聚是一個模塊內各個元素彼此結合的緊密程度的度量。內聚是信息隱蔽功能的自然擴密程度的度量。內聚是信息隱蔽功能的自然擴展,是模塊內部功能獨立性的表現,理想內聚展,是模塊內部功能獨立性的表現,理想內聚的模塊只做一件事情。的模塊只做一件事情。 按程度分類按程度分類:低內聚低內聚 中內聚中內聚 高內聚高內聚。 2021-11-10信息科學與技術學院24模塊獨立模塊獨立 內聚內聚 偶然內聚偶然內聚:模塊中元素之間沒有實質的聯系。:模塊中元素之間沒有實質的聯系。模塊內的語句難以定義其功能,它是把多個模塊模塊內的語句難以定義其功能,它是把多個模塊共同的語句抽出來組成一個模塊共

23、同的語句抽出來組成一個模塊 邏輯內聚邏輯內聚:模塊完成的任務邏輯相關(如產:模塊完成的任務邏輯相關(如產生各種類型的全部輸出)。不同功能混在一起,生各種類型的全部輸出)。不同功能混在一起,合用部分程序代碼,局部修改會影響全局,導致合用部分程序代碼,局部修改會影響全局,導致修改困難。修改困難。 時間內聚時間內聚:模塊包含的任務必須在同一時間:模塊包含的任務必須在同一時間內執行。內執行。2021-11-10信息科學與技術學院25模塊獨立模塊獨立 內聚內聚 過程內聚過程內聚:模塊內的處理元素是相關的,模塊內的處理元素是相關的,并且需要按特定順序執行。并且需要按特定順序執行。 通信內聚通信內聚: 模塊

24、中所有元素都使用同一模塊中所有元素都使用同一個輸入數據或產生同一個輸出數據。個輸入數據或產生同一個輸出數據。 順序內聚順序內聚: 一個模塊中多個處理元素均一個模塊中多個處理元素均與同一功能相關,且必須順序執行(一個處與同一功能相關,且必須順序執行(一個處理單元的輸出是另一個處理單元的輸入)。理單元的輸出是另一個處理單元的輸入)。 功能內聚功能內聚: 模塊中所有處理元素屬于一模塊中所有處理元素屬于一個整體,共同完成同一功能。個整體,共同完成同一功能。 2021-11-10信息科學與技術學院26模塊獨立模塊獨立 內聚內聚 低內聚:偶然內聚、邏輯內聚和時間內聚低內聚:偶然內聚、邏輯內聚和時間內聚 中

25、內聚:過程內聚、通信內聚中內聚:過程內聚、通信內聚 高內聚:順序內聚、功能內聚高內聚:順序內聚、功能內聚對內聚的參考評價:對內聚的參考評價: 功能內聚功能內聚 1010分分 時間內聚時間內聚 3 3分分 順序內聚順序內聚 9 9分分 邏輯內聚邏輯內聚 1 1分分 通信內聚通信內聚 7 7分分 偶然內聚偶然內聚 0 0分分 過程內聚過程內聚 5 5分分 在軟件軟件中,盡可能構造高內聚的模塊,辨在軟件軟件中,盡可能構造高內聚的模塊,辨認和避免低內聚的模塊,最好不用偶然內聚。認和避免低內聚的模塊,最好不用偶然內聚。2021-11-10信息科學與技術學院27啟發式規則啟發式規則前一頁主要內容w改進軟件

26、結構提高模塊獨立性改進軟件結構提高模塊獨立性w模塊規模應該適中模塊規模應該適中 w深度、寬度、扇出和扇入應適當深度、寬度、扇出和扇入應適當 w模塊的作用域應在控制域之內模塊的作用域應在控制域之內 w盡量降低模塊接口的復雜程度盡量降低模塊接口的復雜程度 w設計單入口出口的模塊設計單入口出口的模塊 w模塊功能應該可以預測模塊功能應該可以預測 2021-11-10信息科學與技術學院28改進軟件結構提高模塊獨立性改進軟件結構提高模塊獨立性 模塊獨立性主要體現在低耦合、高內聚??赡K獨立性主要體現在低耦合、高內聚??梢酝ㄟ^分解或合并來提高模塊獨立性。以通過分解或合并來提高模塊獨立性。 分解:把幾個模塊中

27、相同部分(相同的子功分解:把幾個模塊中相同部分(相同的子功能)分解出來建立一個新的模塊。能)分解出來建立一個新的模塊。 合并:把幾個模塊合并成一個模塊,減少對合并:把幾個模塊合并成一個模塊,減少對控制信息的傳遞,以及對全程數據的引用,降低控制信息的傳遞,以及對全程數據的引用,降低接口的復雜程度,降低塊間耦合度。接口的復雜程度,降低塊間耦合度。2021-11-10信息科學與技術學院29模塊規模應該適中模塊規模應該適中 在保證模塊功能獨立性的前提下,盡可能使模在保證模塊功能獨立性的前提下,盡可能使模塊中的語句數少。塊中的語句數少。 5050100100行。行。 美國空軍部:美國空軍部:5 5500

28、500行行 目的:可理解性、可讀性好。目的:可理解性、可讀性好。 為了保證模塊獨立性,少數模塊可以大一些。為了保證模塊獨立性,少數模塊可以大一些。 模塊過小,系統開銷大于有效操作。模塊過小,系統開銷大于有效操作。 對大模塊的分解不應降低獨立性。對大模塊的分解不應降低獨立性。 面向對象技術,模塊的大小無實際意義。面向對象技術,模塊的大小無實際意義。2021-11-10信息科學與技術學院30深度、寬度、扇出和扇入應適當深度、寬度、扇出和扇入應適當 深度:軟件層次結構的層數。深度:軟件層次結構的層數。 寬度:軟件結構內同一層次上模塊總數的最大值。寬度:軟件結構內同一層次上模塊總數的最大值。 扇入:一

29、個模塊被調用的上級模塊數量。扇入越大,表扇入:一個模塊被調用的上級模塊數量。扇入越大,表示共享該模塊的上級模塊越多。示共享該模塊的上級模塊越多。 扇出:一個模塊直接控制(調用)的模塊個數。扇出影扇出:一個模塊直接控制(調用)的模塊個數。扇出影響寬度。響寬度。 扇出過大意味著模塊過分復雜,需要控制和協調過多的扇出過大意味著模塊過分復雜,需要控制和協調過多的下級模塊。下級模塊。 一個好的系統的平均扇出通常是一個好的系統的平均扇出通常是34(上限是(上限是59) (72原理原理心理學原理)心理學原理) 一個好的軟件結構通常頂層扇出較大,中層扇出較低,一個好的軟件結構通常頂層扇出較大,中層扇出較低,底

30、層模塊高扇入。軟件結構的形狀呈橢圓外形底層模塊高扇入。軟件結構的形狀呈橢圓外形.2021-11-10信息科學與技術學院31模塊的作用域應在控制域之內模塊的作用域應在控制域之內 控制范圍:指包含模塊本身的所有下屬模塊??刂品秶褐赴K本身的所有下屬模塊。 作用域:模塊內一個條件判斷可能引起的的被執行模塊。作用域:模塊內一個條件判斷可能引起的的被執行模塊。 設計得好的系統,模塊的作用域應在模塊的控制范圍內。設計得好的系統,模塊的作用域應在模塊的控制范圍內。例例: a的控制范圍為:的控制范圍為:a、b、c、d、e、f 若若a的作用域也是的作用域也是a、b、c、d、e 、 f,則是合理的。,則是合

31、理的。 若若a的判斷要影響到的判斷要影響到g的執行過程,則應調整軟件結構。的執行過程,則應調整軟件結構。magbcdef2021-11-10信息科學與技術學院32盡量降低模塊接口的復雜程度盡量降低模塊接口的復雜程度 模塊接口設計原則:易理解,傳遞信息簡單且與模塊模塊接口設計原則:易理解,傳遞信息簡單且與模塊功能一致。功能一致。 例:求一元二次方程的根:例:求一元二次方程的根: quad_root(tal,x); tal-系數數組;系數數組; x-根數組根數組 quad_root(a,b,c,root1,root2); 接口復雜或不一致,是緊耦合或低內聚的征兆。接口復雜或不一致,是緊耦合或低內聚

32、的征兆。 盡可能不用全局變量是降低接口復雜性的一個方面。盡可能不用全局變量是降低接口復雜性的一個方面。2021-11-10信息科學與技術學院33設計單入口出口的模塊設計單入口出口的模塊前一頁 對模塊的執行,通過模塊調用語句對模塊的執行,通過模塊調用語句進入模塊,模塊執行完后應返回到模塊進入模塊,模塊執行完后應返回到模塊調用語句的下一個語句位置。調用語句的下一個語句位置。2021-11-10信息科學與技術學院34模塊功能應該可以預測模塊功能應該可以預測 模塊作為一個黑箱,只要輸入數據相同就產模塊作為一個黑箱,只要輸入數據相同就產生同樣的輸出,這個模塊的功能就是可預測的。生同樣的輸出,這個模塊的功

33、能就是可預測的。 帶有內部帶有內部“存儲器存儲器”(如某個標志狀態)的模(如某個標志狀態)的模塊的功能是不可預測的,因為它的輸出不僅取決塊的功能是不可預測的,因為它的輸出不僅取決于輸入,而且還取決于內部于輸入,而且還取決于內部“存儲器存儲器”的狀態。的狀態。這樣的模塊難理解、難測試、難維護。全程變量這樣的模塊難理解、難測試、難維護。全程變量使用不當或數組初始化不當會導致這種情況。使用不當或數組初始化不當會導致這種情況。 以面向對象的類為模塊,不能保證輸入數據以面向對象的類為模塊,不能保證輸入數據相同就能產生相同的輸出。相同就能產生相同的輸出。2021-11-10信息科學與技術學院35圖形工具圖

34、形工具-層次圖和層次圖和hipo圖圖 層次圖層次圖:描述軟件的層次結構(:描述軟件的層次結構(h圖)。圖)。 層次圖中每個矩形框代表一個模塊,矩形框之間的層次圖中每個矩形框代表一個模塊,矩形框之間的連線表示模塊調用關系。連線表示模塊調用關系。 層次圖適合用來描繪軟件的層次結構。層次圖適合用來描繪軟件的層次結構。 hipo圖圖:層次圖:層次圖+ipo圖圖 對對h圖的每個方框,都有一張圖的每個方框,都有一張ipo圖與之對應,來描圖與之對應,來描述方框所代表的模塊的處理過程。并且對每個述方框所代表的模塊的處理過程。并且對每個ipo圖都對圖都對應應h圖中方框相同的標記和編號,便于追蹤。圖中方框相同的標

35、記和編號,便于追蹤。2021-11-10信息科學與技術學院36前一頁圖形工具層次圖和層次圖和hipo圖圖2021-11-10信息科學與技術學院37前一頁圖形工具圖形工具-結構圖結構圖 yourdon提出的結構圖是進行軟件結構提出的結構圖是進行軟件結構設計的另一個有力工具。在結構圖中,通常設計的另一個有力工具。在結構圖中,通常還用帶注釋的箭頭表示模塊調用過程中來回還用帶注釋的箭頭表示模塊調用過程中來回傳遞的信息。如果希望進一步標明傳遞的信傳遞的信息。如果希望進一步標明傳遞的信息是數據還是控制信息,則可以利用注釋箭息是數據還是控制信息,則可以利用注釋箭頭尾部的形狀來區分:頭尾部的形狀來區分: 尾部

36、是尾部是空心圓空心圓,表示傳遞的是表示傳遞的是數據數據 尾部是尾部是實心圓實心圓,表示傳遞的是表示傳遞的是控制信息控制信息2021-11-10信息科學與技術學院38前一頁圖形工具圖形工具-結構圖結構圖2021-11-10信息科學與技術學院39前一頁圖形工具概述圖形工具概述 層次圖和結構圖并不嚴格表示調用次層次圖和結構圖并不嚴格表示調用次序,只表明一個模塊調用哪些模塊,至于序,只表明一個模塊調用哪些模塊,至于模塊是否還有其它成分則完全沒有表示。模塊是否還有其它成分則完全沒有表示。 通常用層次圖作為描述軟件結構的文通常用層次圖作為描述軟件結構的文檔。結構圖作為文檔很不適合。但用檔。結構圖作為文檔很

37、不適合。但用hipo圖道出結構圖的過程可以作為檢查圖道出結構圖的過程可以作為檢查設計正確性和評價模塊獨立性的好方法。設計正確性和評價模塊獨立性的好方法。2021-11-10信息科學與技術學院40面向數據流的設計方法面向數據流的設計方法 基本思想:根據軟件需求分析的數據流圖,基本思想:根據軟件需求分析的數據流圖,將其轉換成軟件系統的結構。將其轉換成軟件系統的結構。 面向數據流的設計方法定義了一些面向數據流的設計方法定義了一些“映射映射”,利用這些映射可以把數據流圖變換成軟件結構。利用這些映射可以把數據流圖變換成軟件結構。 通常所說的結構化設計方法(簡稱通常所說的結構化設計方法(簡稱sd方法),方

38、法),也就是基于數據流的設計方法。也就是基于數據流的設計方法。 數據流的類型決定了映射的方法。數據流的類型決定了映射的方法。2021-11-10信息科學與技術學院41面向數據流的設計方法面向數據流的設計方法主要內容w概念概念 w變換流分析設計變換流分析設計 w事物流分析設計事物流分析設計w混合流分析設計混合流分析設計 w設計優化設計優化 2021-11-10信息科學與技術學院42概念概念交換流交換流 數據流圖呈線性變換特征,而且可以抽象數據流圖呈線性變換特征,而且可以抽象成三部分:成三部分:i-p-o。 信息沿輸入通路進入系統,同時由外部形信息沿輸入通路進入系統,同時由外部形式變換成內部形式,

39、進入系統的信息通過變換式變換成內部形式,進入系統的信息通過變換中心,經加工處理以后再沿輸出通路變換成外中心,經加工處理以后再沿輸出通路變換成外部形式離開軟件系統。當數據流圖具有這些特部形式離開軟件系統。當數據流圖具有這些特征時,這種信息流就叫作變換流征時,這種信息流就叫作變換流 。 計算、分析型軟件的數據流圖通常具有這計算、分析型軟件的數據流圖通常具有這種形式。種形式。2021-11-10信息科學與技術學院43變換流圖變換流圖2021-11-10信息科學與技術學院44概念概念-事務流事務流 數據流圖呈輻射型,根據輸入數據的性質選數據流圖呈輻射型,根據輸入數據的性質選擇加工路徑。擇加工路徑。 若

40、處理沿輸入通道達到一個處理若處理沿輸入通道達到一個處理t,處理,處理t根根據輸入數據的類型在若干動作序列中選擇一個來據輸入數據的類型在若干動作序列中選擇一個來執行。這類特殊的數據流稱為事務流。處理執行。這類特殊的數據流稱為事務流。處理t稱為稱為處理中心。處理中心的任務:處理中心。處理中心的任務: (1)接收輸入數據(輸入數據又稱為事務);)接收輸入數據(輸入數據又稱為事務); (2)分析每個事務以確定它的類型;)分析每個事務以確定它的類型; (3)根據事務類型選取一條活動通道。)根據事務類型選取一條活動通道。2021-11-10信息科學與技術學院45概念概念-事務流事務流2021-11-10信

41、息科學與技術學院46設計過程設計過程2021-11-10信息科學與技術學院47變換流分析設計變換流分析設計 把具有變換流特點的數據流圖按預先確把具有變換流特點的數據流圖按預先確定的模式映射成軟件結構定的模式映射成軟件結構 。 (1)找出變換的中心;)找出變換的中心; (2)設計軟件結構的頂層和第二層;)設計軟件結構的頂層和第二層; (3)設計中下層模塊。)設計中下層模塊。 2021-11-10信息科學與技術學院48變換流分析設計變換流分析設計例子例子 考慮具有考慮具有“智能智能”的汽車數字儀表板的設計的汽車數字儀表板的設計 功能描述:功能描述: (1 1)通過模數轉換實現傳感器與微機的接口)通

42、過模數轉換實現傳感器與微機的接口 (2 2)在發光二極管面板上顯示數據)在發光二極管面板上顯示數據 (3 3)指示每小時英里數)指示每小時英里數(mph)(mph) (4 4)指示行駛的里程)指示行駛的里程 (5 5)指示每加侖油行駛的英里數()指示每加侖油行駛的英里數(mpgmpg) (6 6)指示加速或減速)指示加速或減速 (7 7)超速警告,超過)超速警告,超過5555英里英里/ /小時,發出超速警告鈴聲。小時,發出超速警告鈴聲。2021-11-10信息科學與技術學院49數字儀表板數據流圖數字儀表板數據流圖2021-11-10信息科學與技術學院50變換流分析設計步驟變換流分析設計步驟第一

43、步:確定數據流圖的類型第一步:確定數據流圖的類型 一個數據流圖中可能含有變換流的成分,又含有事務一個數據流圖中可能含有變換流的成分,又含有事務流的成分,應根據數據流圖中占優勢的屬性,來確定數據流的成分,應根據數據流圖中占優勢的屬性,來確定數據流的全局特性。流的全局特性。第二步:確定輸入流和輸出流的邊界,孤立變換中心第二步:確定輸入流和輸出流的邊界,孤立變換中心 確定輸出流邊界:一般具有顯示、打印、產生控制等。確定輸出流邊界:一般具有顯示、打印、產生控制等。 確定輸入流邊界:一般作為有效輸入應是完成相應功能確定輸入流邊界:一般作為有效輸入應是完成相應功能有關的數據形式。這樣在輸入原始數據后,還要

44、做一些簡有關的數據形式。這樣在輸入原始數據后,還要做一些簡單處理,轉換成實際需要的內部形式。單處理,轉換成實際需要的內部形式。 上例中,完成功能所需要的輸入數據形式是:轉速增量、上例中,完成功能所需要的輸入數據形式是:轉速增量、轉速(轉轉速(轉/ /分)、燃料消耗速度。實際獲得的信號是:車分)、燃料消耗速度。實際獲得的信號是:車輪旋轉的瞬時值,燃料消耗速率瞬時值。輪旋轉的瞬時值,燃料消耗速率瞬時值。2021-11-10信息科學與技術學院51確定輸入流和輸出流的邊界確定輸入流和輸出流的邊界2021-11-10信息科學與技術學院52變換流分析設計步驟變換流分析設計步驟第三步:完成第三步:完成“第一

45、級分解第一級分解” 把軟件的功能劃分成邏輯上相互獨立的幾個子功能。把軟件的功能劃分成邏輯上相互獨立的幾個子功能。 所謂分解,就是分配控制的過程。所謂分解,就是分配控制的過程。 第一級分解:即確定最頂層模塊控制第二層哪些模塊。第一級分解:即確定最頂層模塊控制第二層哪些模塊。 對于變換流,可以明顯地分為輸入、中心變換和輸出三對于變換流,可以明顯地分為輸入、中心變換和輸出三部分,其數據流圖通常被映射成一種特殊的軟件結構:部分,其數據流圖通常被映射成一種特殊的軟件結構: 三叉控制結構三叉控制結構 數據輸入控制模塊:協調對所有輸入數據的接收。數據輸入控制模塊:協調對所有輸入數據的接收。 中心變換控制模塊

46、:協調對數據的各種加工處理。中心變換控制模塊:協調對數據的各種加工處理。 數據輸出控制模塊:協調對輸出數據的產生和輸出。數據輸出控制模塊:協調對輸出數據的產生和輸出。準則:盡量使第一級控制的模塊數目取最小值。準則:盡量使第一級控制的模塊數目取最小值。2021-11-10信息科學與技術學院532021-11-10信息科學與技術學院54變換流分析設計步驟變換流分析設計步驟n第四步:完成第四步:完成“第二級分解第二級分解” 把數據流圖中的每個處理映射成軟件結構中的一個適當把數據流圖中的每個處理映射成軟件結構中的一個適當模塊模塊-完成流圖中的處理與模塊的映射關系。方法:完成流圖中的處理與模塊的映射關系

47、。方法: 1 1、從變換中心的邊界開始,沿著輸入通路向外移動,把、從變換中心的邊界開始,沿著輸入通路向外移動,把輸入通路中的每個處理映射成軟件結構中輸入數據控制模塊輸入通路中的每個處理映射成軟件結構中輸入數據控制模塊控制下的低層模塊。一般數據流圖中的控制下的低層模塊。一般數據流圖中的前一個處理總是后一前一個處理總是后一個處理的下層模塊個處理的下層模塊。 2 2、沿著輸出通路向外移動,把輸出通路中的每個處理映、沿著輸出通路向外移動,把輸出通路中的每個處理映射成軟件結構中輸出數據控制模塊控制下的低層模塊。一般射成軟件結構中輸出數據控制模塊控制下的低層模塊。一般數據流圖中的數據流圖中的后一個處理總是

48、前一個處理的下層模塊后一個處理總是前一個處理的下層模塊。 3 3、把變換中心內的每個處理映射成中心變換控制模塊下、把變換中心內的每個處理映射成中心變換控制模塊下的低層模塊。一般處于的低層模塊。一般處于同一張流圖上的變換在變換框的下層同一張流圖上的變換在變換框的下層處于同一層次上處于同一層次上,按照處理的邏輯順序從左到右排列。,按照處理的邏輯順序從左到右排列。 若變換不處于同一線上,而處于同一抽象層上,其模塊若變換不處于同一線上,而處于同一抽象層上,其模塊也應處于同一層次上。也應處于同一層次上。2021-11-10信息科學與技術學院55前一頁完成第二級的分解完成第二級的分解2021-11-10信息科學與技術學院56前一頁未經精化的結構圖未經精化的結構圖2021-11-10信息科學與技術學院57變換流分析設計步驟變換流分析設計步驟n第五步:對第四步得到的結果進一步精化第五步:對第四步得到的結果進一步精化 依據:設計度量:內聚、偶合、信息隱蔽依據:設計度量:內聚、偶合、信息隱蔽 啟發式規則啟發式規則 通過合并與分解,得到一個易于實現、易于測試和易于維通過合并與分解,得到一個易于實現、易于測試和易于維護的軟件結構。例:護的軟件結構。例: 1、把、

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論