軟件工程課件:第5章 總體設計_第1頁
軟件工程課件:第5章 總體設計_第2頁
軟件工程課件:第5章 總體設計_第3頁
軟件工程課件:第5章 總體設計_第4頁
軟件工程課件:第5章 總體設計_第5頁
已閱讀5頁,還剩52頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

第5章總體設計信息技術工程、軟件工程學院5.1設計過程

1.設想供選擇的方案

2.選擇合理的方案對每個合理的方案要提供:

A.系統流程圖

B.組成系統的物理元素清單

C.成本/效益分析

D.實現這個系統的進度計劃3.推薦最佳方案4.功能分解5.設計軟件結構6.數據庫設計A.模式設計B.子模式設計C.完整性和安全性設計D.優化7.制定測試計劃8.書寫文檔

A.系統說明

B.用戶手冊

C.測試計劃

D.詳細的實現計劃

E.數據庫設計結果9.審查和復審

5.2設計原理如果一個大型程序僅由一個模塊組成,很難被人理解。設函數C(x)定義問題x的復雜程度,函數E(x)定義解決問題x需要的工作量(時間)。對于兩個問題P1和P2,如果:

C(P1)>C(P2)

那么E(P1)>E(P2)根據解決問題的經驗,有一個規律是:

C(P1+P2)>C(P1)+C(P2)于是有E(P1+P2)>E(P1)+E(P2)

5.2.1模塊化模塊數目接口成本成本/模塊軟件總成本M最小成本區成本圖5.1模塊化與軟件成本5.2.2抽象

5.2.3逐步求精模塊的獨立性很重要,因為:1)有效的模塊化的軟件比較容易開發出來;2)獨立的模塊比較容易測試和維護。5.2.4信息隱蔽和局部化5.2.5模塊獨立一、耦合

耦合:指軟件結構內不同模塊彼此之間相互依賴(連接)的緊密程度。模塊獨立程度可以由兩個定性標準度量:

耦合與內聚。模塊的偶合分四類:1)數據耦合兩個模塊之間只是通過參數交換信息,而且交換的信息僅僅是數據。數據耦合是最低程度的耦合。AB數據(1)數據耦合2)控制耦合兩個模塊之間所交換的信息包含控制信息。控制耦合是中等程度的耦合。圖中模塊A的內部處理程序判斷是執行C還是執行D,要取決于模塊B傳來的信息狀態(Status)。BACD(2)控制耦合astatus3)公用耦合兩個或多個模塊通過一個公共區相互作用時的耦合。公共區可以是:全程數據區、共享通信區、內存公共覆蓋區、任何介質上的文件、物理設備等。軟件結構中存在大量的公用耦合時會給診斷錯誤帶來困難。

圖中存在公用耦合,假設模塊A、C、E都存取全程數據區(如公用一個磁盤文件)中的一個數據項。如果A模塊讀取該項數據,然后調用C模塊對該項重新計算,并進行數據更新。ABCDE全程數據區(3)公用耦合如果此時C模塊錯誤地更新了該項數據,在往下的處理中模塊E讀該數據項時出現錯誤。表面上看,問題由模塊E產生,實際上由模塊C引起。ABCDE全程數據區(3)公用耦合4)內容耦合

一個模塊與另一個模塊的內容直接發生聯系。內容耦合對維護會帶來嚴重的困難。

模塊A…LAB:MOVE1…模塊B…GOTOLAB…內容耦合(4)內容耦合程序中如果一個模塊直接把程序轉移到另一個模塊中,或一個模塊使用另一個模塊內部的數據,都會產生內容耦合。內容耦合是最高程度的耦合,應該避免采用。軟件設計應追求盡可能松散耦合,避免強耦合,這樣模塊間的聯系就越小,模塊的獨立性就越強,對模塊的測試、維護就越容易。因此建議:盡量使用數據耦合,少用控制耦合,限制公用耦合,完全不用內容偶合。

二、內聚

內聚:一個模塊內部各個元素彼此結合的緊密程度。它是衡量一個模塊內部組成部分間整體統一性的度量。常見的內聚有七類。1)功能內聚(FunctionalCohesion)如果一個模塊內所有處理元素完成一個,而且僅完成一個功能,則稱為功能內聚。功能內聚是最高程度的內聚。但在軟件結構中,并不是每個模塊都能設計成一個功能內聚模塊。2)順序內聚(SequentialCohesion)如果一個模塊內處理元素和同一個功能密切相關,而且這些處理元素必須順序執行,則稱為順序內聚。

如圖,一個求一元二次方程根的模塊由三個處理元素組成,該模塊中存在順序內聚。通常,順序內聚中一個處理元素的輸出是另一個處理元素的輸入。

求一元二次方程根模塊1.輸入方程系數2.求解3.打印方程的解順序內聚示例3)通信內聚(CommunicationalCohesion)如果一個模塊中所有處理元素都使用同一個輸入數據和(或)產生同一個輸出數據,稱為通信內聚。

如圖,模塊A的處理單元將根據同一個數據文件FILE的數據產生不同的表格,因此它存在通信內聚。通信內聚有時也稱為數據內聚。A從文件FILE中讀出數據1.由數據產生報表A2.由數據產生報表B通信內聚示例4)過程內聚(ProceduralCohesion)如果一個模塊內的處理元素是相關的,而且必須以特定的次序執行,稱為過程內聚。過程內聚與順序內聚的區別是:順序內聚中是數據流從一個處理單元流到另一個處理單元,而過程內聚是控制流從一個動作流向另一個動作。

5)時間內聚(TemporalCohesion)如果一個模塊包含的任務必須在同一段時間內執行,稱為時間內聚。也稱為瞬時內聚。例如,完成各種初始化工作的模塊,或者處理故障的模塊都存在時間內聚。如圖,在“緊急故障處理模塊”中,“關閉文件”、“報警”、“保留現場”等任務都必須無中斷地同時處理。緊急故障處理模塊1.關閉文件2.報警3.保留現場時間內聚示例6)邏輯內聚(LogicalCohesion)如果模塊完成的任務在邏輯上屬于相同或相似的一類,稱為邏輯內聚。如圖,A、B、C模塊合并成ABC模塊之后,ABC模塊就是邏輯內聚模塊。XYZABCXYZABC合并邏輯內聚示例對邏輯內聚模塊的調用,常常需要有一個功能開關,由上層調用模塊向它發出一個控制信號,在多個關聯性功能中選擇執行某一個功能。這種內聚較差,增加了模塊之間的聯系,不易修改。7)偶然內聚(CoincidentalCohesion)如果一個模塊由完成若干毫無關系的功能處理元素偶然組合在一起的,就叫偶然內聚。偶然內聚是最差的一種內聚。常犯這種錯誤的一種情況是:有時在寫完程序后,發現一組語句在多處出現,于是為了節省空間而將這些語句作為一個模塊設計,就出現偶然內聚。如圖,模塊A、B、C出現公共代碼段W,于是將W獨立成一個模塊,而W中這些語句并沒有任何聯系。如果在測試中發現模塊A不需要做“X=Y+Z”,而應該做“X=Y*Z”,此時對W的維護就很困難了。ABCW模塊X=Y+ZGETCARDIFI=5THENE=0…偶然內聚示例軟件設計中應該:力求做到高內聚,盡量少用中內聚,不用低內聚。

5.3啟發式規則1.改進軟件結構提高模塊獨立性2.模塊規模應該適中3.深度、寬度、扇出和扇入都應適當

深度:軟件結構中控制的層數;

寬度:軟件結構內同一個層次上的模塊總數的最大值;

扇出:一個模塊直接控制(調用)其它模塊的數目;

扇入:一個模塊被其它模塊調用的數目。

正文加工系統輸入輸出編輯加標題存儲檢索編目錄格式化添加刪除插入修改合并列表對扇出、扇入過大的改進:

(a)對扇入過大的改進(b)對扇出過大的改進4.模塊的作用域應該在控制域之內

MAGBCEDF圖5.2模塊的作用域和控制域作用域:受該模塊內一個判定影響的所有模塊的集合。控制域:模塊本身以及所有從屬于它的模塊的集合。如:QUAD-ROOT(TBL,X)求一元二次方程的根的模塊,其中TBL,X都為數組,分別代表方程的系數和方程的根。應該使接口更簡單,如:

QUAD-ROOT(A,B,C,ROOT1,ROOT2)

A、B、C是方程的系數,ROOT1,ROOT2是方程的根。5.力爭降低模塊接口的復雜度6.設計單入口、單出口的模塊7.模塊功能應該可以預測5.4圖形工具5.4.1層次圖和HIPO圖

正文加工系統輸入輸出編輯加標題存儲檢索編目錄格式化添加刪除插入修改合并列表圖5.3正文加工系統的層次圖正文加工系統輸入1.0輸出2.0編輯3.0加標題4.0存儲5.0檢索6.0編目錄7.0格式化8.0添加3.1刪除3.2插入3.3修改3.4合并3.5列表3.6圖5.4帶編號的層次圖(H圖)HIPO圖是:“層次圖+輸入/處理/輸出圖”5.4.2結構圖產生最佳解得到好輸入計算最佳解輸出結果讀輸入編輯輸入結果格式化顯示結果圖4.5結構圖的例子—產生最佳解的一般結構MAB圖5.6判定為真時調用A,為假時調用BMABC圖5.7模塊M循環調用模塊A、B、C5.5面向數據流的設計方法面向數據流設計(DataFlow-OrientedDesign,DFOD)是與數據流分析(DFA)對應的結構化軟件設計技術。面向數據流的設計將得到以數據流圖為基礎的軟件模塊結構圖。

數據流可以分為兩種類型:

1)變換型數據流

2)事務型數據流

5.5.1變換流與事務流一、變換流

具有較明確的輸入、變換(或稱主加工)和輸出界面的數據流圖稱為變換型數據流圖。如圖所示,該變換中心可以理解為數據的加工和處理程序。

讀入原始數據校驗原始數據計算最優結果編輯打印最優結果輸入變換中心輸出事務型數據流圖中存在一個事務中心(也就是數據處理、加工中心),它將輸入分離成若干個發散的數據流,形成許多活動路徑,并根據輸入值選擇其中一條路徑。要求類別處理分房處理調房處理退房處理住房要求事務中心活動路徑二、事務流通常,一個實際系統的數據流圖是變換型和事務型兩種類型的混合體。如圖所示,中間的子塊屬事務型數據流,如果把中間子塊視為一個處理整體的話,整個程序屬變換型程序。

A(事務型,A為事務中心)變換中心輸入輸出混合型數據流圖面向數據流設計軟件結構的基本步驟有七步:1)復審并精化數據流圖;2)確定數據處理流圖的類型;3)確定變換中心或事務中心;5.5.2面向數據流設計的步驟4)將數據流圖映射成軟件模塊結構圖,設計出該數據流圖對應的第一層模塊結構;5)基于數據流圖逐步分解,設計下層模塊;6)運用模塊設計和優化準則優化軟件結構;7)描述模塊的接口。復查、精化數據流圖類型找出事務中心找出變換中心映射成事務結構映射成變換結構優化軟件模塊結構導出模塊結構復查不滿意變換事務變換設計事務設計面向數據流的設計步驟變換設計就是從變換型數據流圖映射出軟件模塊結構的過程,也稱以變換為中心的設計。

5.5.3變換設計變換設計的基本方法有兩步:1)分解第一層模塊結構

就是把整個變換分解成輸入控制模塊Ci、輸出控制模塊Co和變換中心控制模塊Ct,由主控模塊控制。主控模塊輸出控制模塊Co變換中心控制模塊Ct輸入控制模塊Ci2)分別設計輸入、輸出和處理的下層模塊結構方法是:

從變換中心邊界向兩側移動,分別把輸入通路和輸出通路的每個處理映射成輸入控制模塊Ci和輸出控制模塊Co的下屬模塊。變換中心的下層模塊,是把每個處理映射成變換中心控制模塊Ct的一個直接下屬模塊。ABCDFEGHIJK變換中心輸入輸出主控模塊輸出控制模塊Co變換中心控制模塊Ct輸入控制模塊CiDCBAEFGIHJK

事務設計就是從事務型數據流圖映射出軟件模塊結構的過程,也稱為以事務為中心的設計。5.5.4事務設計事務設計的基本方法有兩步:1)

溫馨提示

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

評論

0/150

提交評論