部分軟件設計與建模軟件設計.ppt

上傳人:za****8 文檔編號:15659250 上傳時間:2020-08-28 格式:PPT 頁數(shù):84 大小:1.22MB
收藏 版權申訴 舉報 下載
部分軟件設計與建模軟件設計.ppt_第1頁
第1頁 / 共84頁
部分軟件設計與建模軟件設計.ppt_第2頁
第2頁 / 共84頁
部分軟件設計與建模軟件設計.ppt_第3頁
第3頁 / 共84頁

下載文檔到電腦,查找使用更方便

14.9 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《部分軟件設計與建模軟件設計.ppt》由會員分享,可在線閱讀,更多相關《部分軟件設計與建模軟件設計.ppt(84頁珍藏版)》請在裝配圖網上搜索。

1、軟件工程方法與實踐(機械工業(yè)出版社),高等院校計算機課程案例教程系列,竇萬峰 編著,主講:李淑芝 13507077576 L,主講:曾婕 13767792699 ,1.現(xiàn)代軟件工程(國家示范性軟件學院系列教材) 張家浩/東南大學 機械工業(yè)出版社 2009.1 2.軟件工程 理論與實踐 許家珆 曾翎 彭德中 編著 高等教育出版社 2004.7 3.軟件工程-實踐者的研究方法 (美)Roger S. Pressman著 鄭人杰等譯 機械工業(yè)出版社 2008.6 4.Software Engineering, 6th Edition Sommerville.I. (影印版) 機械工業(yè)出版社 2003

2、.4,主要參考書:,總 目 錄,第1章 軟件工程學概述(2學時) 第2章 軟件過程(2學時) 第3章 軟件過程模型(4學時) 第4章 案例研究(2學時) 第5章 軟件需求分析過程(4學時) 第6章 結構化分析建模(4學時) 第7章 面向對象分析(6學時) 第8章 軟件設計(4學時) 第9章 結構化設計方法(4學時),總 目 錄,第10章 面向對象設計(4學時) 第11章 軟件實現(xiàn)(2學時) 第12章 軟件測試(4學時) 第13章 軟件維護(2學時) 第14章 軟件項目管理(2學時) 第15章 軟件項目估算(1學時) 第16章 軟件項目計劃與管理(1學時),第8章 軟件設計,8.1 軟件設計

3、概述 8.2 軟件模塊化設計 8.3 軟件結構 8.4 軟件系統(tǒng)結構模型 8.5 體系結構模式 8.6 習題,引言: 我們前面已經學習了軟件從問題定義到可行性分析,到需求分析,一步步明確軟件問題,用戶的需求,但那都是軟件的需求,而不是軟件(也可以說是從用戶角度描述,而不是從軟件開發(fā)人員角度描述問題),我們這一章就是要將我們的計算機軟件需求變?yōu)檐浖硎荆敲词裁词擒浖硎??怎樣用軟件表示我們的問題?如何實現(xiàn)這一變換?這是我們這一部份要解決的主要問題。,8.1 軟件設計概述,軟件設計階段的基本目標是構造系統(tǒng)“怎么做”的模型描述,它是整個軟件開發(fā)過程的核心問題 開發(fā)工作根據設計的方案進行,軟件的

4、總體設計決定了系統(tǒng)的質量 “設計先于編碼”,這是軟件工程“推遲實現(xiàn)”基本原則 軟件系統(tǒng)設計是把軟件需求“變換”為用于構造軟件的藍圖 “輸入”是需求分析各種模型元素 “輸出”是軟件設計模型和表示 軟件設計的目標是對將要實現(xiàn)的軟件系統(tǒng)的體系結構、系統(tǒng)的數(shù)據、系統(tǒng)模塊間的接口,以及所采用的算法給出詳盡的描述,總體 設計,復審,,,,修 改,詳細 設計,,模塊描述,復審,,,,修 改,軟件設計工作流程,,,從工程管理的角度看,軟件設計分兩步完成:總體設計(概要設計)和詳細設計兩個階段。 首先做概要設計(軟件結構設計),將軟件需求轉化為數(shù)據結構和軟件的系統(tǒng)結構。 然后是詳細設計,即過程設計。通過對結

5、構表示進行細化,得到軟件詳細的數(shù)據結構和算法。,通過軟件設計階段的工作將劃分出組成系統(tǒng)的物理元素: 程序 文件 數(shù)據庫 人工過程 文檔等 但是每個物理元素仍然處于黑盒子級,這些黑盒子里的具體內容將在以后詳細設計。 總體設計階段的另一項重要任務是設計軟件的結構,也就是要確定系統(tǒng)中每個程序是由哪些模塊組成的,以及這些模塊相互間的關系。,設計過程的一般模型,設計活動,設計產品,軟件 設計,編碼,軟件 測試,開發(fā)階段信息流,總體設計通常由兩個主要階段組成: (1)系統(tǒng)設計階段:確定系統(tǒng)的具體實現(xiàn)方案; (2)結構設計階段:確定軟件結構。 典型的總體設計過程包括下述9個步驟: 1. 設計供選

6、擇的方案 需求分析階段得出的數(shù)據流圖是總體設計的極好的出發(fā)點。 一旦選出了邊界劃分(分組)最佳的方案,將能大大提高系統(tǒng)的性能/價格比。,2. 選取合理的方案 通常至少選取低成本、中等成本和高成本的三種方案。 在判斷哪些方案合理時應該考慮在問題定義和可行性研究階段確定的工程規(guī)模和目標,有時可能還需要進一步征求用戶的意見。 對每個合理的方案分析員都應該準備下列4份資料: (1) 系統(tǒng)流程圖; (2) 組成系統(tǒng)的物理元素清單; (3) 成本/效益分析; (4) 實現(xiàn)這個系統(tǒng)的進度計劃。,3. 推薦最佳方案 分析員綜合分析對比各種合理方案的利弊,推薦一個最佳的方案。 用工程

7、網絡技術為推薦的方案制定詳細的實現(xiàn)計劃。 用戶和有關的技術專家認真審查分析員所推薦的最佳系統(tǒng),如果該系統(tǒng)確實符合用戶的需要,并且是在現(xiàn)有條件下完全能夠實現(xiàn)的,則應該提請使用部門負責人進一步審批。 在使用部門的負責人也接受了分析員所推薦的方案之后,將進入總體設計過程的下一個重要階段結構設計。,4. 功能分解 為了最終實現(xiàn)目標系統(tǒng),必須設計出組成這個系統(tǒng)的所有程序和文件(或數(shù)據庫)。 對程序(特別是復雜的大型程序)的設計,通常分為兩個階段完成: (1)結構設計:確定程序由哪些模塊組成,以及這些模塊之間的關系; (2)過程設計:確定每個模塊的處理過程,這是詳細設計階段的任務。,為

8、確定軟件結構,首先需要從實現(xiàn)角度把復雜的功能進一步分解。 分析員結合算法描述仔細分析數(shù)據流圖中的每個處理,如果一個處理的功能過分復雜,必須把它的功能適當?shù)胤纸獬梢幌盗斜容^簡單的功能。 一般說來,經過分解之后應該使每個功能對大多數(shù)程序員而言都是明顯易懂的。 功能分解導致數(shù)據流圖的進一步細化,同時還應該用IPO圖或其他適當?shù)墓ぞ吆喴枋黾毣竺總€處理的算法。,5. 設計軟件結構 通常程序中的一個模塊完成一個適當?shù)淖庸δ堋? 軟件結構(即由模塊組成的層次系統(tǒng)) 表示軟件系統(tǒng)的構成,是軟件模塊間關系的表示,可以用層次圖或結構圖來描繪。 如果數(shù)據流圖已經細化到適當?shù)膶?/p>

9、次,則可以直接從數(shù)據流圖映射出軟件結構,這就是面向數(shù)據流的設計方法。,軟件結構圖,6. 設計數(shù)據庫(確定系統(tǒng)的數(shù)據結構) 對于需要使用數(shù)據庫的那些應用系統(tǒng),軟件工程師應該在需求分析階段所確定的系統(tǒng)數(shù)據需求的基礎上,進一步設計數(shù)據庫。 7. 設計用戶界面 作為人機接口的用戶界面起著越來越重要的作用,它直接影響到軟件的可用性及使用壽命。 8. 制定軟件設計測試計劃 在軟件開發(fā)的早期階段考慮測試問題,能促使軟件設計人員在設計時注意提高軟件的可測試性。,9. 書寫文檔 在這個階段應該完成的文檔通常有下述幾種: (1) 系統(tǒng)說明主要內容:系統(tǒng)流程圖描繪的系統(tǒng)構成方案,物理元素清單,成本/

10、效益分析,精化的數(shù)據流圖,用層次圖或結構圖描繪的軟件結構,用IPO圖或其他工具簡要描述的各個模塊的算法,模塊間的接口關系等。 (2) 用戶手冊:根據總體設計階段的結果,修改更正在需求分析階段產生的初步的用戶手冊。 (3) 測試計劃:測試策略,測試方案,預期的測試結果,測試進度計劃等。 (4) 詳細的實現(xiàn)計劃。 (5) 數(shù)據庫設計結果。,10. 審查和復審 最后對總體設計的結果進行嚴格的技術審查,在技術審查通過之后再由使用部門的負責人從管理角度進行復審。,軟件設計質量原則,設計過程不應該受“隧道視野”的限制 設計對于分析模型應該是可跟蹤的 設計不應該從頭做起 設計應該縮短軟件和現(xiàn)實問題的“智

11、力距離” 設計應該表現(xiàn)出一致性和集成性 設計應該能夠適應修改 設計不是編碼 在創(chuàng)建設計時,就應該考慮能夠評估其質量 應該復審每一步設計,以減少語義性錯誤,概要設計說明書,詳細設計說明書,8.2 軟件模塊化設計,有人說,模塊化是為了使一個復雜的大型程序能被人的智力所管理,軟件應該具備的惟一屬性。,模塊是一個獨立命名的,擁有明確定義的輸入、輸出和特性的程序實體。 把一個大型軟件系統(tǒng)的全部功能,按照一定的原則合理地劃分為若干個模塊,每個模塊完成一個特定子功能,所有的這些模塊以某種結構形式組成一個整體,這就是軟件的模塊化設計(Modular Design)。 軟件模塊化設計可以簡化軟件的設計和實現(xiàn),提

12、高軟件的可理解性和可測試性,并使軟件更容易得到維護。 分解、抽象、逐步求精、信息隱蔽和模塊獨立性,是軟件模塊化設計的指導思想。,模塊(構件)是程序對象有名字的集合。例如,過程、函數(shù)、子程序、宏等,是構成軟件系統(tǒng)結構的基本元素。 面向對象方法學中的對象是模塊,對象內的方法(服務)也是模塊。模塊是構成程序的基本構件。 模塊化就是將系統(tǒng)劃分為若干個模塊,每個模塊完成一個子功能。 模塊化的目的是將系統(tǒng)“分而治之”,模塊化能夠降低問題的復雜性,使軟件結構清晰,易閱讀、易理解,易于測試和調試,因而也有助于提高軟件的可靠性。,,令:C(X)表示問題 X 的復雜度函數(shù), E(X)表示解決問題 X 所需

13、工作量的復雜度函數(shù); 若:有問題 P1,P2 , C(P1) C(P2); 顯然:E(P1) E(P2) 由經驗:C(P1+P2) C(P1)+ C(P2) 于是:E(P1+P2) E(P1)+ E(P2) 將問題(P1+P2)劃分為兩個問題P1和P2后,其工作量和復雜度都降低。,結論:并非模塊分得越小越好,因為模塊之間接口的復雜度和工作量會增加。顯然,每個軟件系統(tǒng)都有一個最佳模塊數(shù)M,注意選擇分解的最佳模塊數(shù)。,,模塊化降低軟件復雜度的簡單證明:,采用模塊化原理可以使軟件結構清晰,不僅容易設計也容易閱讀和理解。 因為程序錯誤通常局限在有關的模塊及它們之間的接口中,所以模塊化使軟件容易測試

14、和調試,因而有助于提高軟件的可靠性。 因為變動往往只涉及少數(shù)幾個模塊,所以模塊化能夠提高軟件的可修改性。 模塊化的主要優(yōu)點是:模塊化設計降低了軟件系統(tǒng)的復雜性,使得系統(tǒng)容易修改,同時使得系統(tǒng)各個部分可以并行開發(fā),從而提高了軟件的生產率。,人類在認識復雜現(xiàn)象的過程中使用的最強有力的思維工具是抽象。 人們在實踐中認識到,在現(xiàn)實世界中一定事物、狀態(tài)或過程之間總存在著某些相似的方面(共性)。 把這些相似的方面集中和概括起來,暫時忽略它們之間的差異,這就是抽象。 或者說抽象就是抽出事物的本質特性而暫時不考慮它們的細節(jié)。,抽象,處理復雜系統(tǒng)的惟一有效的方法是用層次的方式構造和分析它。

15、 軟件工程過程的每一步都是對軟件解法的抽象層次的一次精化: 在可行性研究階段,軟件作為系統(tǒng)的一個完整部件; 在需求分析期間,軟件解法是使用在問題環(huán)境內熟悉的方式描述的; 當由總體設計向詳細設計過渡時,抽象的程度也就隨之減少了; 最后,當源程序寫出來以后,也就達到了抽象的最低層。,軟件體系結構,軟件體系結構是指軟件的整體結構和這種結構為系統(tǒng)提供概念上完整性的方式。 體系結構可以是程序構件或模塊的結構或組織,這些構件或模塊交互的形式以及這些構件所用數(shù)據的結構。 體系結構設計可以使用大量的模型來表達。,信息隱藏原理指出:應該這樣設計和確定模塊,使得一個模塊內包含的信息(過程和數(shù)據)對于不需要這些信

16、息的模塊來說,是不能訪問的。 實際上,應該隱藏的不是有關模塊的一切信息,而是模塊的實現(xiàn)細節(jié)。 獨立的構件或模塊之間的“接口”簡單而清晰。 所謂局部化是指把一些關系密切的軟件元素物理地放得彼此靠近。 在模塊中使用局部數(shù)據元素是局部化的一個例子。 顯然,局部化有助于實現(xiàn)信息隱藏。,信息隱藏和局部化,模塊獨立的概念是模塊化、抽象、信息隱藏和局部化概念的直接結果。 希望這樣設計軟件結構,使得每個模塊完成一個相對獨立的特定子功能,并且和其他模塊之間的關系很簡單。 模塊的獨立性很重要,主要有兩條理由: 第一,有效的模塊化的軟件比較容易開發(fā)出來。 第二,獨立的模塊比較容易測試和維

17、護。 總之,模塊獨立是好設計的關鍵,而設計又是決定軟件質量的關鍵環(huán)節(jié)。,模塊獨立,模塊獨立性的度量標準是兩個定性準則: (1)耦合性:描述模塊之間聯(lián)系的緊密程度; (2)內聚性:描述模塊內部聯(lián)系的緊密程度。 模塊獨立性比較強的模塊應該具有高內聚性和低耦合度。 模塊獨立性愈高,則塊內聯(lián)系越強,塊間聯(lián)系越弱。,,低,高,弱,強,耦合性,,模塊獨立性,1. 耦合 耦合是對一個軟件結構內不同模塊之間互連程度的度量。 耦合強弱取決于模塊間接口的復雜程度,進入或訪問一個模塊的點,以及通過接口的數(shù)據。 模塊間的耦合程度強烈影響系統(tǒng)的可理解性、可測試性、可靠性和可維護性。,(1)數(shù)據耦

18、合:兩個模塊彼此間通過參數(shù)交換信息,而且交換的信息僅僅是數(shù)據。 系統(tǒng)中至少必須存在數(shù)據耦合,只有當某些模塊的輸出數(shù)據作為另一些模塊的輸入數(shù)據時,系統(tǒng)才能完成有價值的功能。 (2)控制耦合:一個模塊通過傳送開關、標志、名字等控制信息,明顯地控制選擇另一模塊的功能。,控制耦合是中等程度的耦合,它增加了系統(tǒng)的復雜程度??刂岂詈显诎涯K適當分解之后通常可以用數(shù)據耦合代替它。,(3)特征耦合:被調用的模塊需要使用作為參數(shù)傳遞進來的數(shù)據結構中的一部分數(shù)據元素時,就出現(xiàn)了特征耦合。 (4)公共耦合:當兩個或多個模塊通過一個公共數(shù)據環(huán)境相互作用時,它們之間的耦合稱為公共環(huán)境耦合。 公共環(huán)境可以是全程變量

19、、共享的通信區(qū)、內存的公共覆蓋區(qū)、任何存儲介質上的文件、物理設備等。 如果兩個模塊共享的數(shù)據很多,都通過參數(shù)傳遞可能很不方便,這時可以利用公共環(huán)境耦合。,(5)內容耦合:是最高程度的耦合。 有如下表現(xiàn):,a. 一個模塊直接訪問另一模塊的內部數(shù)據。 b.一個模塊不通過正常入口轉到另一模塊的內部。 c.一個模塊有多個入口。 d.兩個模塊有部分代碼重迭。,總之,耦合是影響軟件復雜程度的一個重要因素。 應該采取下述設計原則: 盡量使用數(shù)據耦合,少用控制耦合和特征耦合,限制公共環(huán)境耦合的范圍,完全不用內容耦合。,2. 內聚 內聚標志一個模塊內各個元素彼此結合的緊密程度,它是信息隱藏和局部化

20、概念的自然擴展。 簡單地說,理想內聚的模塊只做一件事情。 設計時應該力求做到高內聚,中等程度的內聚也可以采用,不要使用低內聚。,,低,高,強,弱,內聚性,,模塊獨立性,低內聚有如下幾類: (1)偶然內聚一個模塊完成一組任務,這些任務彼此間即使有關系,關系也是很松散的。 有時在寫完一個程序之后,發(fā)現(xiàn)一組語句在兩處或多處出現(xiàn),于是把這些語句作為一個模塊以節(jié)省內存,這樣就出現(xiàn)了偶然內聚的模塊。 (2)邏輯內聚一個模塊完成的任務在邏輯上屬于相同或相似的一類。 (3)時間內聚一個模塊包含的任務必須在同一段時間內執(zhí)行。 例如:初始化系統(tǒng)模塊、系統(tǒng)結束模塊、緊急故障處理模塊 等均是時間性聚合模塊。,

21、被調用模塊,,中內聚主要有兩類: (4)過程內聚一個模塊內的處理元素是相關的,而且必須以特定次序執(zhí)行。 (5)通信內聚模塊中所有元素都使用同一個輸入數(shù)據和(或)產生同一個輸出數(shù)據。 高內聚也有兩類: (6)順序內聚一個模塊內的處理元素和同一個功能密切相關,而且這些處理必須順序執(zhí)行。 (7)功能內聚模塊內所有處理元素屬于一個整體,完成一個單一的功能。 功能內聚是最高程度的內聚。,逐步求精是人類解決復雜問題時采用的基本方法,也是許多軟件工程技術的基礎。 可以把逐步求精定義為:“為了能集中精力解決主要問題而盡量推遲對問題細節(jié)的考慮?!? 逐步求精之所以如此重要,是因為人類的認知過程遵守

22、Miller法則:一個人在任何時候都只能把注意力集中在(72)個知識塊上。 Miller法則是人類智力的基本局限,我們不可能戰(zhàn)勝自己的自然本性,只能接受這個事實,承認自身的局限性,并在這個前提下盡我們的最大努力工作。,逐步求精,逐步求精,或稱逐步細化,是一種自頂向下的設計策略。 抽象與求精是一對互補的概念。 抽象使得設計者能夠說明過程和數(shù)據,同時卻忽略低層細節(jié)。 事實上,可以把抽象看作是一種通過忽略多余的細節(jié)同時強調有關的細節(jié),而實現(xiàn)逐步求精的方法。 求精則幫助設計者在設計過程中逐步揭示出低層細節(jié)。 這兩個概念都有助于設計者在設計演化過程中創(chuàng)造出完整的設計模型。,逐步求

23、精和模塊化的概念,與抽象是緊密相關的。 隨著軟件開發(fā)工程的進展,在軟件結構每一層中的模塊,表示了對軟件抽象層次的一次精化: 事實上,軟件結構頂層的模塊,控制了系統(tǒng)的主要功能并且影響全局; 在軟件結構底層的模塊,完成對數(shù)據的一個具體處理,用自頂向下由抽象到具體的方式分配控制; 簡化了軟件的設計和實現(xiàn),提高了軟件的可理解性和可測試性,并且使軟件更容易維護。,重構,重構是一種重新組織的技術,可以簡化構件或模塊的設計或編碼而無需改變其功能或行為。 重構是一種改進程序內部結構但不改變代碼或設計的外部行為。 “先使它轉起來,再使它快起來”。,8.3 軟件結構,軟件結構圖(Structure Chart

24、, 簡稱SC)是軟件系統(tǒng)的模塊層次結構,反映了整個系統(tǒng)的功能實現(xiàn)。 軟件結構以層次表示程序的系統(tǒng)結構,即一種控制的層次體系,并不表示軟件的具體過程。 軟件結構一般用樹狀或網狀結構的圖形來表示。,8.3 軟件結構,軟件結構圖的主要元素有: 模塊:模塊用帶有名字的方框表示,名稱應體現(xiàn)模塊的功能。 控制關系:控制關系用單向箭頭或直線表示模塊間的調用關系。 信息傳遞:用帶注釋的短箭頭表示模塊調用過程中傳遞的信息。 循環(huán)調用和選擇調用:在上部模塊底部加一個菱形符號表示選擇調用,在上部模塊的下方家一個弧形箭頭,表示循環(huán)調用。,圖4-4結構圖的基本定義,層次圖和HIPO圖 層次圖用來描繪軟件的層次結構。

25、雖然層次圖的形式和描繪數(shù)據結構的層次方框圖相同,但是表現(xiàn)的內容卻完全不同。 層次圖中的一個矩形框代表一個模塊,方框間的連線表示調用關系而不像層次方框圖那樣表示組成關系。,描繪軟件結構的圖形工具,正文加工系統(tǒng)的層次圖,描繪軟件結構的圖形工具,HIPO圖是美國IBM公司發(fā)明的“層次圖加輸入/處理/輸出圖”的英文縮寫。 為了能使HIPO圖具有可追蹤性,在H圖(層次圖)里除了最頂層的方框之外,每個方框都加了編號。 編號規(guī)則和數(shù)據流圖的編號規(guī)則相同。 和H圖中每個方框相對應,應該有一張IPO圖描繪這個方框代表的模塊的處理過程。 HIPO圖中的每張IPO圖內都應該明顯地標出它所描繪的模

26、塊在H圖中的編號,以便追蹤了解這個模塊在軟件結構中的位置。,描繪軟件結構的圖形工具,帶編號的層次圖(H圖),描繪軟件結構的圖形工具,A,SC 圖中的主要內容,1、模塊--在SC圖中用矩形框表示,并用名字來標記它,,-- 模塊調用關系,2、模塊的調用關系和接口,B,被調用模塊,調用模塊,A(查詢學生),B(查找學生記錄),數(shù)據信號,控制信號,,,學 號,,查找成功信號,-- 模塊間接口的表示,描繪軟件結構的圖形工具,例:畫出打印報告的軟件結構圖,調用次序為上層調用下層; 同層按照數(shù)據傳遞關系確定;一般從左到右執(zhí)行。 執(zhí)行過程即按照數(shù)據流向進行。,報 告,,,計 算,,,獲得編輯,,確認數(shù)據,,

27、,讀入,編輯,,打印報告頭,,打印報告尾,,,,打印,,輸入 EOF,,輸入,,已編輯,,已編輯,,已編輯,,已確認,,已確認 數(shù)據,,已確認 數(shù)據,,計算結果,,結果,,日期,,總結果,,行,,行,,行,打印報告,予以確認,描繪軟件結構的圖形工具,SC中還有一些附加的符號,可以表示模塊的選擇調用或循環(huán)調用。 注意:1.層次圖和結構圖并不嚴格表示模塊的調用次序。 2.通常用層次圖作為描繪軟件結構的文檔。 3.利用IPO圖或數(shù)據字典中的信息得到模塊調用時傳遞的信息,由層次圖導出結構圖的過程,作為檢查設計正確性和評價模塊獨立性的好方法。,判定為真時調用A, 為假時調用B,模塊M循環(huán)調

28、用模塊A、B、C,描繪軟件結構的圖形工具,軟件結構圖的形態(tài)特征: 深度:指結構圖控制的層次,也是模塊的層數(shù)。能粗略表示一個系統(tǒng)的大小和復雜程度,深度和程序長度之間存在著某種對應關系。 寬度:指一層中最大的模塊個數(shù)。一般來說,結構的寬度越大,則系統(tǒng)就越復雜。 扇出:指一個模塊直接下屬模塊的個數(shù)。扇出過大,表示模塊過分復雜,需要控制和協(xié)調的下級模塊太多。扇出的上限一般為 59,平均一般為3或4。 扇入:指一個模塊直接上屬模塊的個數(shù)。扇入過大,意味著共享該模塊的上級模塊數(shù)目多,這有一定的益處,但是決不能違背模塊的獨立性原則而片面追求高扇入。,8.3 軟件結構,,有關指標: 深度:表示軟件結構中從頂層

29、模塊到最底層模塊的層數(shù)。 寬度:表示控制的總分布。 扇出數(shù):指一個模塊直接控制下屬的模塊個數(shù)。 扇入數(shù):指一個模塊的直接上屬模塊個數(shù)。,一個好的軟件結構的形態(tài)準則是:頂部寬度小,中部寬度大,底部寬度次之;在結構頂部有較高的扇出數(shù),在底部有較高的扇入數(shù)。,深度、寬度、扇出和扇入都應適當,畫結構圖應注意的事項: 模塊不能重名。 調用關系只能從上到下。,8.3 軟件結構,人們在開發(fā)計算機軟件的長期實踐中積累了豐富的經驗,總結這些經驗得出了一些啟發(fā)式規(guī)則。 啟發(fā)式規(guī)則能幫助人們找到改進軟件設計提高軟件質量的途徑。,模塊化設計的優(yōu)化(啟發(fā)規(guī)則),1. 改進軟件結構提高模塊獨立性 設計出軟件的初步

30、結構以后,應該審查分析這個結構,通過模塊分解或合并,力求降低耦合提高內聚。 例如,多個模塊公有的一個子功能可以獨立成一個模塊,由這些模塊調用;有時可以通過分解或合并模塊以減少控制信息的傳遞及對全程數(shù)據的引用,并且降低接口的復雜程度。,2. 模塊規(guī)模應該適中 一般說來,分解后不應該降低模塊獨立性。 3. 深度、寬度、扇出和扇入都應適當 4.力爭降低模塊接口的復雜程度 模塊接口復雜是軟件發(fā)生錯誤的一個主要原因。 應該仔細設計模塊接口,使得信息傳遞簡單并且和模塊的功能一致。 5. 設計單入口單出口的模塊 當從頂部進入模塊并且從底部退出來時,軟件是比較容易理解的,因此也是比較容易維護的。

31、,控制范圍 結構方面的特點,包括模塊及其所有下屬模塊。 作用范圍 判斷所涉及到的模塊,是從功能特點考慮的。 SD方法認為:當作用范圍為控制范圍的子集時,才能獲得較低的塊間聯(lián)系。 如下圖中的設計,判定的作用范圍恰好在判定所在模塊的下一層。,模塊TOP 的控制范圍是:TOP、X、T、B、A、B1、B2; 模塊B 的控制范圍與作用范圍相同,模塊A的控制范圍: A、B、C、D、G、E、F 則F的的作用范圍:B、E、F,6. 模塊的作用域應該在控制域之內,,圖3.33控制范圍與作用范圍,顯然,圖(a)不滿足作用范圍應與控制范圍的原則,模塊F的作用范圍不在控制范圍之內。 圖(b)中模塊TOP和圖(c)中模

32、塊B雖然滿足上述原則,但其作用范圍所涉及到的模塊不是直接的。 圖(d)的模塊設計最合理。,應用范圍與作用范圍舉例,,,,7. 模塊功能應該可以預測 模塊的功能應該能夠預測,但也要防止模塊功能過分局限。 如果一個模塊可以當做一個黑盒子,也就是說,只要輸入的數(shù)據相同就產生同樣的輸出,這個模塊的功能就是可以預測的。 以上列出的啟發(fā)式規(guī)則多數(shù)是經驗規(guī)律,對改進設計,提高軟件質量,往往有重要的參考價值;但是,它們既不是設計的目標也不是設計時應該普遍遵循的原理。,,8.4 軟件系統(tǒng)結構模型,軟件體系結構是一種表達,使軟件工程師能夠分析設計是否滿足需求、選擇合理的方案和降低風險。 大型軟件系統(tǒng)總是被分

33、解成一系列子系統(tǒng),由子系統(tǒng)提供一些相關的服務。 軟件體系結構設計過程就是識別出這些子系統(tǒng),并建立子系統(tǒng)控制和通信的框架,最后給出軟件體系結構的一個描述。 兩類結構模型: 系統(tǒng)構成模型 系統(tǒng)控制模型,概念補充,概念補充,概念補充,概念補充,概念補充,概念補充,概念補充,概念補充,系統(tǒng)構成模型,以數(shù)據為中心的結構模型 數(shù)據流結構模型 客戶機/服務器結構模型 抽象機結構模型,1. 以數(shù)據為中心的結構模型,由一組子系統(tǒng)構成,子系統(tǒng)交換信息,協(xié)調工作有兩種基本方法: 全部共享數(shù)據放在一個中央數(shù)據庫中,所有子系統(tǒng)都能從中存取數(shù)據。 每個子系統(tǒng)用各自的數(shù)據庫與其他子系統(tǒng)進行數(shù)據交互,通過消息傳遞來實現(xiàn)。 共

34、享數(shù)據模型的優(yōu)點是能夠高效地共享大量的數(shù)據,生產數(shù)據的子系統(tǒng)不需要關心數(shù)據如何被其他子系統(tǒng)使用,可以集中進行如備份、保密性、訪問控制和錯誤恢復等活動; 缺點是子系統(tǒng)一定要與以數(shù)據為中心的體系結構模型一致,系統(tǒng)變更或進化比較困難,子系統(tǒng)的需求會不同,難以集成,以及很難將數(shù)據分布到多臺機器上。,2. 數(shù)據流體系結構模型,當輸入數(shù)據經過一系列的計算和操作構件或模塊的變換形成輸出數(shù)據時,可以應用數(shù)據流體系結構。 管道和過濾器結構通過一組由管道連接的過濾器來變換數(shù)據,并向下傳遞。,管道和過濾器結構,3. 客戶機/服務器結構模型,客戶機/服務器結構模型的主要組成部分是: 一組給其他子系統(tǒng)提供服務的單機服務

35、器 一組向服務器請求服務的客戶機 一個連接客戶機和服務器的網絡(可選) 服務器模型能實現(xiàn)以數(shù)據為中心的體系結構模型的系統(tǒng) 客戶機/服務器模型的最大優(yōu)勢在于可以是一個分布式結構,多媒體服務系統(tǒng)結構,4. 抽象機模型,抽象機模型也稱為分層模型,是建立子系統(tǒng)的接口模型。它把子系統(tǒng)組織成一系列的層次,每一層提供一組服務,每一層定義為一個抽象機。 例如:網絡協(xié)議OSI參考模型,系統(tǒng)控制模型,集中式控制模型 調用返回模型:這是一個自上而下的子過程模型??刂剖加谙到y(tǒng)(程序)的頂層,在子系統(tǒng)(程序)調用過程中,控制逐步傳遞到更低的層次中。該模型適用于順序執(zhí)行的系統(tǒng)。 管理者模型:這是一種適用于并發(fā)系統(tǒng)的模型。

36、一個系統(tǒng)組件被指定為系統(tǒng)管理者,控制其他系統(tǒng)過程的啟動、終止和協(xié)調。一個過程就是一個能和其他過程并發(fā)執(zhí)行的子系統(tǒng)或模塊。,并發(fā)系統(tǒng)的集中式控制模型,系統(tǒng)控制模型,事件驅動系統(tǒng) 廣播模型:發(fā)生的事件廣播到所有子系統(tǒng),任何能處理該事件的子系統(tǒng)都會響應。該模型適用于基于網絡的分布式系統(tǒng)。 廣播模型中的子系統(tǒng)注冊其感興趣的特別事件 廣播模型的優(yōu)點是進化比較簡單 缺點是子系統(tǒng)都知道是否和什么時候處理事件,這可能會引起沖突。 中斷驅動模型:由中斷處理器對來自外部的中斷進行檢測,然后在其他組件中處理這些中斷。該模型適用于對定時有嚴格要求的實時系統(tǒng)。 只用在硬件實時系統(tǒng)中,要求對一些事件能做出及時響應,8.5

37、 軟件的體系結構模式,軟件的體系結構模式定義了處理系統(tǒng)某些行為特征的方法 并發(fā)性 系統(tǒng)必須以一種模擬并行的方式來操作多個任務 操作系統(tǒng)進程管理模式 任務調度器模式包括一組含有tick()操作的活動對象 持久性 如果數(shù)據從創(chuàng)建它的進程執(zhí)行以來一直存在,則該數(shù)據是持久性存在的數(shù)據 數(shù)據庫管理系統(tǒng)模式將DBMS的存儲和存取能力用于應用系統(tǒng)的體系結構中 應用級的持久模式在應用體系結構中建立了持久性特征,8.5 軟件的體系結構模式,分布性 強調系統(tǒng)或系統(tǒng)中構件或模塊在一個分布的環(huán)境中相互通信的方式。分布性問題有兩個元素: 一是實體間連接方式 二是實體間通信的特性 代理模式是一種普遍的體系結構模式 CORBA就是代理模式的一個范例,實驗6:Rational Rose工具基本使用 使用Rational Rose完成一個系統(tǒng)的業(yè)務分析模型。 使用Rational Rose完成一個系統(tǒng)的設計模型的詳細視圖,包括用況視圖、邏輯視圖、開發(fā)視圖、展開視圖和物理視圖。 要求:理解實驗內容與方法、提交實驗報告 習題:1、6、7,8.6 實驗要求及習題,

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

相關資源

更多
正為您匹配相似的精品文檔
關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網版權所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對上載內容本身不做任何修改或編輯。若文檔所含內容侵犯了您的版權或隱私,請立即通知裝配圖網,我們立即給予刪除!