版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、計算機工程計算機工程學院學院第第5 5章章 總體設計總體設計 需求分析:做什么? 設計:怎么做? 總體設計:概括的說,系統(tǒng)應該如何實現(xiàn)?總體設計:概括的說,系統(tǒng)應該如何實現(xiàn)?計算機工程計算機工程學院學院第第5 5章章 總體設計總體設計5.1 設計過程5.2 設計原理5.3 啟發(fā)規(guī)則5.4 描述軟件結構的圖形工具5.5 面向數(shù)據(jù)流的設計方法計算機工程計算機工程學院學院5.1 5.1 設計過程設計過程 2個主要階段(具體分為個主要階段(具體分為9個步驟):個步驟): 系統(tǒng)設計階段確定系統(tǒng)的具體實現(xiàn)方案 結構設計階段確定軟件結構計算機工程計算機工程學院學院5.1 5.1 設計過程設計過程 1、設想供
2、選擇的方案從數(shù)據(jù)流圖出發(fā) 2、選取合理的方案低、中、高成本 3、推薦最佳方案 4、功能分解細化數(shù)據(jù)流圖 5、設計軟件結構模塊組織成層次結構 6、設計數(shù)據(jù)庫從E-R圖出發(fā) 7、制定測試計劃 8、書寫文檔系統(tǒng)說明、用戶手冊、測試計劃、實現(xiàn)計劃、數(shù)據(jù)庫設計結果 9、審查和復審技術審查、客戶管理審查計算機工程計算機工程學院學院5.2 設計原理設計原理 模塊化模塊化 抽象抽象 逐步求精逐步求精 信息隱藏和局部化信息隱藏和局部化 模塊獨立模塊獨立計算機工程計算機工程學院學院5.2 設計原理設計原理 1 1. . 模塊化模塊化 (Modularity)模塊化是好的軟件設計的一個基本準模塊化是好的軟件設計的一
3、個基本準則則 高層模塊高層模塊 從整體上把握從整體上把握 問題問題, ,隱蔽細節(jié)隱蔽細節(jié) 復雜問題復雜問題 較小問題較小問題 分解分解 可減小解題所需的總的工作可減小解題所需的總的工作分解分解計算機工程計算機工程學院學院1 1. . 模塊化模塊化 (Modularity)v模塊是構成程序的基本構件;模塊是構成程序的基本構件;v 模塊化就是把程序劃分成獨立命名且可模塊化就是把程序劃分成獨立命名且可獨立訪問的模塊,每個模塊完成一個子獨立訪問的模塊,每個模塊完成一個子功能,把這些模塊集成起來構成一個整功能,把這些模塊集成起來構成一個整體,可以完成指定的功能,滿足用戶的體,可以完成指定的功能,滿足用戶
4、的需求。需求。計算機工程計算機工程學院學院例例: :將問題將問題(P1+P2)(P1+P2)分解為分解為P1,P2P1,P2設函數(shù)設函數(shù)C(x)定義問題定義問題 x 的復雜程度的復雜程度函數(shù)函數(shù)E(x)確定解決問題確定解決問題 x 需要的工作量需要的工作量對問題對問題P1和和P2,如:,如: C(P1) C(P2)顯然:顯然: E(P1) E(P2)有規(guī)律:有規(guī)律:C(P1+P2) C(P1)+C(P2)(P1)+E(P2) 各個擊破各個擊破理論理論計算機工程計算機工程學院學院模塊模塊數(shù)量數(shù)量軟件總成本軟件總成本M最小成本區(qū)域最小成本區(qū)域接口成本接口成本成成本本或或工工作作量量模塊化和軟件成本
5、模塊化和軟件成本成本成本/ /模塊模塊計算機工程計算機工程學院學院2. 抽象抽象 抽象抽象:抽出事務的本質特性而暫不考慮它們的抽出事務的本質特性而暫不考慮它們的細節(jié)。細節(jié)。 人類在認識復雜現(xiàn)象的過程中使用的最強人類在認識復雜現(xiàn)象的過程中使用的最強有力的思維工具是抽象。人們在實踐中認識有力的思維工具是抽象。人們在實踐中認識到,在現(xiàn)實世界中一定事物、狀態(tài)或過程之到,在現(xiàn)實世界中一定事物、狀態(tài)或過程之間總存在著某些相似的方面間總存在著某些相似的方面(共性共性)。把這些相。把這些相似的方面集中和概括起來,暫時忽略它們之似的方面集中和概括起來,暫時忽略它們之間的差異,這就是抽象。間的差異,這就是抽象。
6、軟件過程的每一步都是對軟件解法的抽象軟件過程的每一步都是對軟件解法的抽象層次的一次精化。層次的一次精化。計算機工程計算機工程學院學院3. 逐步求精逐步求精q人類解決復雜問題時采用的基本技術。人類解決復雜問題時采用的基本技術。q 定義:為了能集中精力解決主要問題而盡量定義:為了能集中精力解決主要問題而盡量推遲對問題細節(jié)的考慮。推遲對問題細節(jié)的考慮。q Miller法則:一個人在任何時候都只能把注意法則:一個人在任何時候都只能把注意力集中在力集中在72個知識塊上。個知識塊上。q 自頂向下的設計策略,細化的過程。自頂向下的設計策略,細化的過程。q 抽象與求精是一對互補的概念。抽象與求精是一對互補的概
7、念。計算機工程計算機工程學院學院4. 信息隱藏和局部化信息隱藏和局部化 模塊所包含的信息,不允許其它不需要這些信息的模塊訪問,獨立的模塊間僅僅交換為完成系統(tǒng)功能而必須交換的信息。 信息隱藏原理信息隱藏原理: 應該這樣設計和確定模塊,使得一個模塊內包含的信息(過程和數(shù)據(jù))對于不需要這些信息的模塊來說,是不能訪問的。 局部化原理:局部化原理: 一些關系密切的軟件元素物理的放的彼此靠近。計算機工程計算機工程學院學院 信息隱藏和局部化的目的:信息隱藏和局部化的目的: 提高模塊的獨立性,減少修改或維護時的影響面。計算機工程計算機工程學院學院5. 模塊獨立模塊獨立(1 1) 模塊獨立性的概念模塊獨立性的概
8、念 模塊獨立的概念是模塊化、抽象、信息隱藏和局部化概念的直接結果。 模塊獨立的含義:模塊獨立的含義: 模塊完成獨立的功能 符合信息隱蔽和信息局部化原則 模塊間關連和依賴程度盡量小計算機工程計算機工程學院學院模塊的獨立性是軟件質量的關鍵:模塊的獨立性是軟件質量的關鍵:(1)模塊化程度較高的軟件容易開發(fā);(2)模塊化程度較高的軟件也比較容 易測試和維護。計算機工程計算機工程學院學院(2 2)模塊獨立性的度量模塊獨立性的度量 模塊獨立性取決于模塊的 內部和外部特征。SD方法提出的定性的度量標準: 模塊之間的耦合性耦合性 模塊自身的內聚性內聚性計算機工程計算機工程學院學院模塊獨立性的度量之一模塊獨立性
9、的度量之一: :耦合性耦合性 模塊間相對獨立性(相互依賴程度)的度量。 耦合性越高,模塊獨立性越弱。計算機工程計算機工程學院學院松散耦合有松散耦合有少量依賴關系少量依賴關系緊密耦合有緊密耦合有很多依賴關系很多依賴關系無耦合沒有依賴關系無耦合沒有依賴關系計算機工程計算機工程學院學院耦合強度依賴的因素:耦合強度依賴的因素:一模塊對另一模塊的引用一模塊向另一模塊傳遞的數(shù)據(jù)量一模塊施加到另一模塊的控制的數(shù)量模塊間接口的復雜程度計算機工程計算機工程學院學院模塊間耦合的類型模塊間耦合的類型 低低耦耦 數(shù)據(jù)耦合數(shù)據(jù)耦合合合 特征耦合特征耦合性性 控制耦合控制耦合 公共耦合公共耦合 內容耦合內容耦合 高高模模
10、塊塊獨獨立立性性弱弱( (低耦合低耦合) )強強( (中耦合中耦合) )( (較強耦合較強耦合) )( (強耦合強耦合) )計算機工程計算機工程學院學院(1) (1) 數(shù)據(jù)耦合數(shù)據(jù)耦合 一模塊調用另一模塊時,一模塊調用另一模塊時,被調用模塊的輸入、輸出都是被調用模塊的輸入、輸出都是簡單的數(shù)據(jù)簡單的數(shù)據(jù)( (若干參數(shù)若干參數(shù)) )。 屬松散耦合。屬松散耦合。計算機工程計算機工程學院學院數(shù)據(jù)耦合舉例數(shù)據(jù)耦合舉例開發(fā)票開發(fā)票計算水費計算水費單價單價數(shù)量數(shù)量金額金額計算機工程計算機工程學院學院(2) 2) 特征耦合特征耦合( (標記耦合標記耦合) )如兩個模塊通過傳遞數(shù)據(jù)結構數(shù)據(jù)結構(不是簡單數(shù)據(jù),而
11、是記錄、數(shù)組等)加以聯(lián)系,或都與一個數(shù)據(jù)數(shù)據(jù)結構結構有關系, 則稱這兩個模塊間存在特征耦合。計算機工程計算機工程學院學院特征耦合舉例特征耦合舉例計算水電費計算水電費計算水費計算水費計算電費計算電費住戶情況住戶情況水費水費電費電費住戶情況住戶情況“住戶情況住戶情況”是一個是一個數(shù)據(jù)結構數(shù)據(jù)結構( (住戶的用水住戶的用水用電情況用電情況),),圖中模塊都與此數(shù)據(jù)結構有關圖中模塊都與此數(shù)據(jù)結構有關. .“計算水費計算水費”和和“計算電費計算電費”本無關本無關, ,由于由于引用了此數(shù)據(jù)結構產生依賴關系引用了此數(shù)據(jù)結構產生依賴關系, ,它們之間它們之間也是標記偶合也是標記偶合. .計算機工程計算機工程學
12、院學院將特征耦合修改為將特征耦合修改為數(shù)據(jù)耦合舉例數(shù)據(jù)耦合舉例計算水電費計算水電費計算水費計算水費計算電費計算電費本月本月用水量用水量本月本月用電量用電量水費水費電費電費計算機工程計算機工程學院學院(3) (3) 控制耦合控制耦合 一模塊向下屬模塊傳遞的信息 (開關量、標志等控制被調用模塊決策的變量) 控制了被調用模塊的內部邏輯。計算機工程計算機工程學院學院控制耦合舉例A A計算平均分計算平均分或最高分或最高分B B平均平均/ /最高最高( (控制信號控制信號) )成績成績讀入分數(shù)讀入分數(shù)輸出結果輸出結果計算平均分計算平均分計算最高分計算最高分平均平均/ /最高最高? ?B B計算機工程計算機
13、工程學院學院 控制耦合增加了理解和編控制耦合增加了理解和編程的復雜性,調用模塊必須知程的復雜性,調用模塊必須知道被調模塊的內部邏輯,增加道被調模塊的內部邏輯,增加了相互依賴。了相互依賴。去除模塊間控制耦合的方法:去除模塊間控制耦合的方法:(1)(1)將被調用模塊內的判定上移到調將被調用模塊內的判定上移到調 用模塊中進行。用模塊中進行。(2)(2)被調用模塊分解成若干單一功被調用模塊分解成若干單一功 能模塊。能模塊。計算機工程計算機工程學院學院改控制耦合為數(shù)據(jù)耦合舉例改控制耦合為數(shù)據(jù)耦合舉例A A計算平均分計算平均分B1B1平均成績最高成績計算最高分計算最高分B2B2計算機工程計算機工程學院學院
14、(4) (4) 公共耦合公共耦合( (公共環(huán)境耦合公共環(huán)境耦合) )一組模塊引用同一個公用環(huán)境(也稱全局數(shù)據(jù)區(qū)、公共數(shù)據(jù)環(huán)境)。公共環(huán)境指:公共環(huán)境指: 全局數(shù)據(jù)結構 共享通訊區(qū) 內存公共覆蓋區(qū)等計算機工程計算機工程學院學院公共耦合舉例公共耦合舉例公共數(shù)據(jù)區(qū)公共數(shù)據(jù)區(qū)C CB B模塊模塊A A、B B、C C間存在錯綜復雜的間存在錯綜復雜的聯(lián)聯(lián)系系計算機工程計算機工程學院學院(1)軟件可理解性降低;(2)診斷錯誤困難;(3)軟件可維護性差;(4)軟件可靠性差(公共數(shù)據(jù)區(qū)及全程變量無保護措施)。慎用公共數(shù)據(jù)區(qū)和全程變量慎用公共數(shù)據(jù)區(qū)和全程變量!公共耦合存在的問題:公共耦合存在的問題:計算機工程計
15、算機工程學院學院(5) (5) 內容耦合內容耦合一模塊直接訪問另一模塊的內部信息 (程序代碼或數(shù)據(jù))最不好的耦合形式最不好的耦合形式 !ABAB模塊代碼重疊Entry1 Entry1 多入口模塊計算機工程計算機工程學院學院模塊化設計的原則和目標耦合是影響軟件復雜程度和設計質量的重要因素。目標目標:建立模塊間耦合度盡可能松散的系統(tǒng)。計算機工程計算機工程學院學院如何降低模塊間耦合度如何降低模塊間耦合度:(1) 盡量使用數(shù)據(jù)耦合;少用控制耦合和特征耦合;限制公共環(huán)境耦合的范圍;完全不用內容耦合。(2) 降低接口的復雜性計算機工程計算機工程學院學院模塊獨立性的度量之二:模塊獨立性的度量之二:內聚性內聚
16、性 一個模塊內各元素彼此結合的緊密程度。 設計目標:高內聚設計目標:高內聚 (模塊在軟件過程中 完成單一的任務)*高內聚往往意味著低耦合*計算機工程計算機工程學院學院模塊的內聚性類型模塊的內聚性類型低 偶然內聚 0分 邏輯內聚 1分 內 時間內聚 3分 聚 過程內聚 5分 性 通信內聚 7分 順序內聚 9分 高 功能內聚10分模模塊塊獨獨立立性性弱(功能分散)強(功能單一)計算機工程計算機工程學院學院(1)(1)偶然內聚偶然內聚( (巧合內聚巧合內聚) ) 模塊內各部分間無聯(lián)系ABCMMOVE O TO RREAD FILE FMOVE S TO T模塊M中的三個語句沒有任何聯(lián)系缺點:可理解性
17、差, 可修改性差。例例: :計算機工程計算機工程學院學院 偶然內聚偶然內聚為了節(jié)省存儲,把它們抽為了節(jié)省存儲,把它們抽出來組成一個新的模塊,這個模塊就屬出來組成一個新的模塊,這個模塊就屬于偶然內聚。這樣的模塊不易理解也不于偶然內聚。這樣的模塊不易理解也不易修改,這是易修改,這是最差的內聚情況最差的內聚情況。計算機工程計算機工程學院學院(2) (2) 邏輯內聚邏輯內聚 把幾種相關功能(邏輯上相似 的功能)組合在一模塊內,每次調用由傳給模塊的參數(shù)確定執(zhí)行哪種功能。計算機工程計算機工程學院學院邏輯內聚模塊ABCEFGABCEFGA1B1C1EFGEFG模塊內部邏輯模塊內部邏輯E E、F F、G G邏
18、輯邏輯功能相似,組功能相似,組成新模塊成新模塊EFGEFG缺點缺點:增強了耦合程度增強了耦合程度( (控制耦合控制耦合) ) 不易修改,效率低。不易修改,效率低。公用代碼段公用代碼段公用代碼段公用代碼段計算機工程計算機工程學院學院(3) (3) 時間內聚時間內聚( (經典內聚經典內聚) ) 模塊完成的功能必須在同一時間內執(zhí)行,這些功能只因時間因素關聯(lián)在一起。例如:初始化系統(tǒng)模塊、 系統(tǒng)結束模塊、 緊急故障處理模塊等均是時間性聚合 模塊。計算機工程計算機工程學院學院 時間內聚時間內聚比邏輯內聚程度高一些,比邏輯內聚程度高一些, 因為時因為時間內聚模塊中的各部分都要在同一時間內完成。間內聚模塊中的
19、各部分都要在同一時間內完成。 但是由于這樣的模塊往往與其他模塊聯(lián)系的比但是由于這樣的模塊往往與其他模塊聯(lián)系的比較緊密,較緊密, 如初始化模塊對許多模塊的運行有如初始化模塊對許多模塊的運行有影響,因此和其影響,因此和其他模塊耦合的程度較高。他模塊耦合的程度較高。計算機工程計算機工程學院學院(4) 過程內聚(順序性組合) 模塊內各處理成分相關,且必須以特定次序執(zhí)行。 使用流程圖為工具設計軟件時,往往得到過程內聚的模塊。 計算機工程計算機工程學院學院過程內聚模塊讀入讀入成績單成績單審查審查成績單成績單統(tǒng)計統(tǒng)計成績成績打印打印成績成績讀入并審查讀入并審查成績單成績單統(tǒng)計并打印統(tǒng)計并打印成績單成績單計算
20、機工程計算機工程學院學院(5) 通信內聚 指模塊內所有處理元素都在同一個數(shù)據(jù)結構上操作(有時稱之為信息內聚),或者指各處理使用相同的輸入數(shù)據(jù)或者產生相同的輸出數(shù)據(jù)。如一個模塊完成“建表”、“查表”兩部分功能, 都使用同一數(shù)據(jù)結構名字表。又如一個模塊完成生產日報表、 周報表和月報表,都使用同一數(shù)據(jù)日產量。計算機工程計算機工程學院學院通信內聚模塊例產生工產生工資報表資報表計算平計算平均工資均工資職工工職工工資記錄資記錄職工工職工工資報表資報表平均平均工資工資產生職工工資報表并計算平均工資模塊產生職工工資報表并計算平均工資模塊計算機工程計算機工程學院學院通信內聚模塊符符 號號 表表查找查找 登錄登錄
21、 刪除刪除修改修改幾個加工同時引用一個共同的數(shù)據(jù)幾個加工同時引用一個共同的數(shù)據(jù)計算機工程計算機工程學院學院(6) (6) 順序內聚順序內聚 指一個模塊中各個處理元素都密切相關于同一功能且必須順序執(zhí)行,前一功能元素的輸出就是下一功能元素的輸入。例如,某一模塊完成求工業(yè)產值的功能,前面部分功能元素求總產值,隨后部分的功能元素求平均產值,顯然, 該模塊內兩部分緊密相關。計算機工程計算機工程學院學院(7) (7) 功能內聚功能內聚 模塊僅包括為完成某個功能所必模塊僅包括為完成某個功能所必須的所有成分。須的所有成分。 ( (模塊所有成分共同完成一個功能,模塊所有成分共同完成一個功能,缺一不可缺一不可 )
22、 ) 內聚性最強內聚性最強計算機工程計算機工程學院學院 內聚與耦合密切相關,同內聚與耦合密切相關,同其它模塊高耦合的模塊意味其它模塊高耦合的模塊意味著著低內聚,高內聚模塊意味著與低內聚,高內聚模塊意味著與其它模塊間松散耦合其它模塊間松散耦合. .設計目標:設計目標:力爭高內聚、低耦合力爭高內聚、低耦合計算機工程計算機工程學院學院耦合、內聚與模塊獨立性關系耦合、內聚與模塊獨立性關系 耦合與內聚都是模塊獨立性的定性標耦合與內聚都是模塊獨立性的定性標準,都反映模塊獨立性的良好程度。準,都反映模塊獨立性的良好程度。 但耦合是直接的主導因素,內聚則輔但耦合是直接的主導因素,內聚則輔助耦合共同對模塊獨立性
23、進行衡量。助耦合共同對模塊獨立性進行衡量。計算機工程計算機工程學院學院F 軟件工程師們在開發(fā)計算機軟件的長期實踐中積累了豐富的經驗,總結這些經驗得出了一些啟發(fā)規(guī)則。這些啟發(fā)規(guī)則雖然不像前兩節(jié)講述的基本原理那樣普遍適用,但是在許多場合仍然能給軟件工程師有益的啟示,往往能幫助他們找到改進軟件設計提高軟件質量的途徑,因此有助于實現(xiàn)有效的模塊化。下面介紹幾條常用的啟發(fā)規(guī)則。5.3 啟發(fā)規(guī)則啟發(fā)規(guī)則計算機工程計算機工程學院學院1改進軟件結構提高模塊獨立性改進軟件結構提高模塊獨立性2選擇合適的模塊規(guī)模選擇合適的模塊規(guī)模3模塊的深度、寬度、扇出和扇入應適當模塊的深度、寬度、扇出和扇入應適當4模塊的作用范圍應
24、該在控制范圍之內模塊的作用范圍應該在控制范圍之內5降低模塊接口的復雜程度降低模塊接口的復雜程度6設計單入口單出口的模塊設計單入口單出口的模塊7 模塊功能應該可以預測模塊功能應該可以預測5.3 啟發(fā)規(guī)則啟發(fā)規(guī)則計算機工程計算機工程學院學院1. 1. 改進軟件結構提高模塊獨立性改進軟件結構提高模塊獨立性 劃分模塊時,盡量做到高內聚,低耦合,保持模劃分模塊時,盡量做到高內聚,低耦合,保持模塊相對獨立性,并以此原則優(yōu)化初始的軟件結構。塊相對獨立性,并以此原則優(yōu)化初始的軟件結構。 (1) 如果若干模塊之間耦合強度過高,每個模塊如果若干模塊之間耦合強度過高,每個模塊內功能不復雜,可將它們合并,以減少信息的
25、傳遞、內功能不復雜,可將它們合并,以減少信息的傳遞、公共數(shù)據(jù)的引用并降低接口復雜度;公共數(shù)據(jù)的引用并降低接口復雜度; (2) 多個模塊公有的一個子功能可以獨立成一個多個模塊公有的一個子功能可以獨立成一個模塊,供這些模塊調用。模塊,供這些模塊調用。計算機工程計算機工程學院學院2.2.模塊規(guī)模應該適中模塊規(guī)模應該適中 在考慮模塊的獨立性同時,為了增加可理解性,在考慮模塊的獨立性同時,為了增加可理解性,模塊的大小最好在模塊的大小最好在3050條語句左右,條語句左右,可以用可以用12頁打印紙打印,便于人們閱讀與研究。頁打印紙打印,便于人們閱讀與研究。 過大的模塊往往是由于分解不夠充分;過大的模塊往往是
26、由于分解不夠充分; 過小的模塊開銷大于有效操作,而且模塊數(shù)目過小的模塊開銷大于有效操作,而且模塊數(shù)目過多將使系統(tǒng)接口復雜。過多將使系統(tǒng)接口復雜。 無論是分解還是合并,都必須符合無論是分解還是合并,都必須符合“高內聚,高內聚,低耦合低耦合”原則!原則!計算機工程計算機工程學院學院3.3.深度、寬度、扇入、扇出適中深度、寬度、扇入、扇出適中 深度是軟件結構設計完成后觀察到的情況,能粗略地反映系統(tǒng)的規(guī)模和復雜程度,寬度也能反映系統(tǒng)的復雜情況。 寬度與模塊的扇出有關,一個模塊的扇出太多, 說明本模塊過分復雜,缺少中間層。單一功能模塊的扇入單一功能模塊的扇入數(shù)大比較好數(shù)大比較好, 說明本模塊為上層幾個模
27、塊共享的公用模塊,重用率高。但是不能把彼此無關的功能湊在一起形成一個通用的超級模塊,雖然它扇入高,但低內聚。因此非單一功能的模塊扇入高時應重新分解,以消除控制耦合的情況。軟件結構從形態(tài)上看, 應是頂層扇出數(shù)較高一些, 中間層扇出數(shù)較低一些,底層扇入數(shù)較高一些。計算機工程計算機工程學院學院 深度軟件結構中控制的層數(shù),能粗略標志系統(tǒng)的大小和復雜程度。 寬度軟件結構內同一層次上的模塊總數(shù)的最大值。 扇出一個模塊直接控制(調用)的模塊數(shù)。 扇入直接調用該模塊的上級模塊數(shù)目。計算機工程計算機工程學院學院軟件結構度量術語軟件結構度量術語深深度度寬度寬度扇出扇出扇入扇入( (模塊的模塊的 層數(shù)層數(shù)) )(
28、(同一層最大模塊數(shù)同一層最大模塊數(shù)) )( (一個模塊一個模塊 直接調用直接調用 的模塊數(shù)的模塊數(shù)) )( (調用一個給定模調用一個給定模 塊的模塊個數(shù)塊的模塊個數(shù)) )計算機工程計算機工程學院學院4. 4. 模塊作用域應在控制域內模塊作用域應在控制域內 一個模塊的作用域作用域指受該模塊內一個判定影響的所有模塊的集合。一個模塊的控制域控制域指模塊本身以及其所有下屬模塊(直接或間接從屬于它的模塊)的集合。 一個模塊的作用范圍應在其控制范圍之內,且條件判定所在的模塊應與受其影響的模塊在層次上盡量靠近。 在軟件結構中,由于存在著不同事務處理的需要, 某一層上的模塊會存在著判斷處理,這樣可能影響其他層
29、的模塊處理。 為了保證含有判定功能模塊的軟件設計的質量,引入了模塊的作用域(或稱影響范圍)與控制范圍的概念。 計算機工程計算機工程學院學院TOPABC DEF(a)TOPABC DEF(b)TOPABC DEF(c)(a) 差的結構圖;差的結構圖; (b) 不理想的結構圖;不理想的結構圖; (c) 理想的結構圖理想的結構圖計算機工程計算機工程學院學院如上圖(a)(符號表示模塊內有判定功能,陰影表示模塊的作用范圍)所示,模塊D的作用域是C、D、E和F,模塊D的控制域是D、E、F,作用域超過了控制域,這種結構最差。 因為D的判定作用到了C,必然有控制信息通過上層模塊B傳遞到C,這樣增加了數(shù)據(jù)的傳遞
30、量和模塊間的耦合。若修改D模塊,則會影響到不受它控制的C模塊,這樣不易理解與維護。 再看圖(b),模塊TOP的作用范圍在控制域之內, 但是判定所在模塊與受判定影響的模塊位置太遠,也存在著額外的數(shù)據(jù)傳遞(模塊B、D并不需要這些數(shù)據(jù)),增加了接口的復雜性和耦合強度。這種結構雖符合設計原則,但不理想。計算機工程計算機工程學院學院最理想的結構圖是圖(c),消除了額外的數(shù)據(jù)傳遞。如果在設計過程中,發(fā)現(xiàn)模塊作用范圍不在其控制范圍之內, 可以用以下方法加以改進: (1) 上移判斷點。如圖(a)所示,將模塊D中的判斷點上移到它的上層模塊B中,或者將模塊D整個合并到模塊B中, 使該判斷的層次升高,以擴大它的控制
31、范圍。 (2) 下移受判斷影響的模塊。將受判斷影響的模塊下移到判斷所在模塊的控制范圍內,如圖(a)所示,將模塊C下移到模塊D的下層。計算機工程計算機工程學院學院5.5.力爭降低模塊接口的復雜程度力爭降低模塊接口的復雜程度 模塊的接口要簡單、清晰及含義明確(不僅僅是參數(shù)數(shù)量,含義必須清楚),便于理解,易于實現(xiàn)、測試與維護。6.6.設計單入口單出口模塊設計單入口單出口模塊 不要使模塊間出現(xiàn)內容耦合。7.7.模塊功能應能預測模塊功能應能預測 一個模塊可以當作一個黑盒子,只要輸入的數(shù)據(jù)相同就應該產生同樣的輸出,這個模塊的功能就是可以預測的。計算機工程計算機工程學院學院5.4 描繪軟件結構的圖形工具描繪
32、軟件結構的圖形工具5.4.1. 層次圖和層次圖和HIPO圖圖 通常使用層次圖描繪軟件的層次結構。在層次圖中一個矩形框代表一個模塊,框間的連線表示調用關系調用關系(位于上方的矩形框所代表的模塊調用位于下方的矩形框所代表的模塊)。計算機工程計算機工程學院學院正文加工系統(tǒng)的層次圖正文加工系統(tǒng)的層次圖計算機工程計算機工程學院學院 HIPO圖是美國IBM公司發(fā)明的“層次圖+ +輸入/處理/輸出圖”的英文縮寫。為了使HIPO圖具有可追蹤性,在H圖(即層次圖)里除了頂層的方框之外,每個方框都加了編號。編號方法與本書介紹的數(shù)據(jù)流圖的編號方法相同。計算機工程計算機工程學院學院正文加工系統(tǒng)的正文加工系統(tǒng)的H圖圖計
33、算機工程計算機工程學院學院和H圖的每個方框相對應,有一張IPO圖(或表)描繪這個方框代表的模塊的處理過程。 基本形式是:在左邊的框中列出有關的輸入數(shù)據(jù),在中間的框內列出主要的處理,在右邊的框內列出產生的輸出數(shù)據(jù)。計算機工程計算機工程學院學院 Yourdon Yourdon提出的結構圖是進行軟件結構設計的另一提出的結構圖是進行軟件結構設計的另一個有力工具。結構圖中一個個有力工具。結構圖中一個方框方框代表一個代表一個模塊模塊,框內,框內注明模塊的名字或主要功能;注明模塊的名字或主要功能;方框之間的方框之間的箭頭箭頭( (或直或直線線) )表示模塊的表示模塊的調用關系調用關系。 在結構圖中通常還用在
34、結構圖中通常還用帶注釋的箭頭帶注釋的箭頭表示模塊調表示模塊調用過程中來回用過程中來回傳遞的信息傳遞的信息。如果希望進一步標明傳遞。如果希望進一步標明傳遞的信息是數(shù)據(jù)還是控制信息,則可以利用注釋箭頭尾的信息是數(shù)據(jù)還是控制信息,則可以利用注釋箭頭尾部的形狀來區(qū)分:尾部是部的形狀來區(qū)分:尾部是空心圓空心圓表示傳遞的是表示傳遞的是數(shù)據(jù)數(shù)據(jù),實心圓實心圓表示傳遞的是表示傳遞的是控制信息控制信息。2.結構圖(SC Structure Chart)(SC Structure Chart)計算機工程計算機工程學院學院S SC C中的主要表達工具中的主要表達工具約定:約定:編輯學生記錄編輯學生記錄讀學生記錄讀學
35、生記錄學生數(shù)據(jù)學生數(shù)據(jù)無此學生無此學生學號學號數(shù)據(jù)信息數(shù)據(jù)信息控制信息控制信息計算機工程計算機工程學院學院結構圖的主要內容有:結構圖的主要內容有:(1)(1)模塊:模塊:用方框表示,并用名字標識該模塊,名字應體現(xiàn)該模塊的功能。(2)(2)模塊的控制關系:模塊的控制關系: 兩個模塊間用單向箭頭或直線連接起來表示它們的控制關系。按照慣例, 總是圖中位于上方的模塊調用下方的模塊,所以不用箭頭也不會產生二義性。(3)(3)模塊間的信息傳遞:模塊間的信息傳遞: 模塊間還經常用帶注釋的短箭頭表示模塊調用過程中來回傳遞的信息。有時箭頭尾部帶空心圓的表示傳遞的是數(shù)據(jù), 帶實心圓的表示傳遞的是控制信息。(4)(
36、4)兩個附加符號:兩個附加符號: 表示模塊有選擇調用或循環(huán)調用。計算機工程計算機工程學院學院ABCT1MT2T3(a)(b) 選擇調用和循環(huán)調用的表示選擇調用和循環(huán)調用的表示 (a) 選擇調用;選擇調用; (b) 循環(huán)調用循環(huán)調用 計算機工程計算機工程學院學院(5) (5) 畫結構圖應注意的事項如下:畫結構圖應注意的事項如下: 同一名字的模塊在結構圖中僅出現(xiàn)一次。同一名字的模塊在結構圖中僅出現(xiàn)一次。 調用關系只能從上到下。調用關系只能從上到下。 不嚴格表示模塊的調用次序,習慣上從左到不嚴格表示模塊的調用次序,習慣上從左到右。有時為了減少連線的交叉,適當?shù)卣{整同一層模右。有時為了減少連線的交叉,
37、適當?shù)卣{整同一層模塊左右位置,塊左右位置, 以保持結構圖的清晰性。以保持結構圖的清晰性。計算機工程計算機工程學院學院結構圖的例子結構圖的例子產生最佳解產生最佳解計算機工程計算機工程學院學院5.5 5.5 面向數(shù)據(jù)流的設計方法面向數(shù)據(jù)流的設計方法q目標目標是給出是給出設計軟件結構的一個系統(tǒng)化的途徑設計軟件結構的一個系統(tǒng)化的途徑。q數(shù)據(jù)流圖描繪信息在系統(tǒng)中加工和流動的情況。數(shù)據(jù)流圖描繪信息在系統(tǒng)中加工和流動的情況。面向數(shù)據(jù)流的設計方法定義了一些不同的面向數(shù)據(jù)流的設計方法定義了一些不同的“映映射射”,利用這些映射可以把數(shù)據(jù)流圖變換成軟件,利用這些映射可以把數(shù)據(jù)流圖變換成軟件結構。結構。q任何軟件系統(tǒng)
38、都可以用數(shù)據(jù)流圖表示,面向數(shù)據(jù)任何軟件系統(tǒng)都可以用數(shù)據(jù)流圖表示,面向數(shù)據(jù)流的設計方法理論上可以設計任何軟件的結構。流的設計方法理論上可以設計任何軟件的結構。q通常所說的結構化設計方法,也就是基于數(shù)通常所說的結構化設計方法,也就是基于數(shù)據(jù)流據(jù)流的設計方法。的設計方法。 計算機工程計算機工程學院學院 5.5.1 面向數(shù)據(jù)流設計方法的基本概念面向數(shù)據(jù)流設計方法的基本概念 映射映射DFD( (問題結構問題結構) )軟件系統(tǒng)的結構軟件系統(tǒng)的結構( (程序結構程序結構) )以以數(shù)據(jù)流圖數(shù)據(jù)流圖為基礎,定義了把為基礎,定義了把DFDDFD變換變換成成軟件結構軟件結構的不同的不同映射映射方法方法計算機工程計算
39、機工程學院學院系統(tǒng)結構特征可歸納為兩種典型形式:系統(tǒng)結構特征可歸納為兩種典型形式:數(shù)據(jù)流圖可分為兩種類型數(shù)據(jù)流圖可分為兩種類型: 變換型數(shù)據(jù)流變換型數(shù)據(jù)流事務型數(shù)據(jù)流事務型數(shù)據(jù)流n 變換型結構變換型結構n 事務型結構事務型結構計算機工程計算機工程學院學院變換變換中心中心輸入輸入輸出輸出變換型結構事務事務中心中心事務事務活活動動通通路路基本模型 特征特征事務型 結構由輸入、變由輸入、變換中心和輸換中心和輸出三部分組出三部分組成成具有在多種具有在多種事務中事務中選擇選擇執(zhí)行執(zhí)行某類事某類事物的能力物的能力計算機工程計算機工程學院學院變換型數(shù)據(jù)流 結構事務型數(shù)據(jù)流 結構傳入傳入變換變換傳出傳出變換變
40、換中心中心傳傳入入部分部分傳出傳出部分部分事務事務分析分析事務事務中心中心動作動作 1動作動作 2動作動作 3接受接受輸入輸入部分部分計算機工程計算機工程學院學院1 1. .變換型變換型數(shù)據(jù)數(shù)據(jù)流流舉例舉例輸入輸入信息信息物理物理輸入輸入格式格式檢查檢查處理處理顯示顯示正確正確信息信息結果結果物理物理輸出輸出數(shù)據(jù)數(shù)據(jù)變換中心變換中心邏輯邏輯輸入輸入邏輯邏輯輸出輸出傳傳入入部分部分傳出部分傳出部分特點:特點:具有明確的具有明確的傳傳入、變換入、變換( (或稱主加工或稱主加工) )和和 傳傳出界面的出界面的DFDDFD計算機工程計算機工程學院學院變換流示意圖信息信息時間時間信息流信息流輸入流輸出流
41、變換流外部外部表示表示內部內部表示表示計算機工程計算機工程學院學院2.2.事務型數(shù)據(jù)流圖事務型數(shù)據(jù)流圖舉例舉例IMLNOABCDFEGH計算機工程計算機工程學院學院大型系統(tǒng)大型系統(tǒng)DFDDFD中中, ,變換型變換型和和事務型事務型結構結構往往共存往往共存: :T T事務中心事務中心傳入傳入變換變換傳出傳出計算機工程計算機工程學院學院3. 3. 面向數(shù)據(jù)流設計方法的設計步驟面向數(shù)據(jù)流設計方法的設計步驟(1)(1)精化精化DFDDFD;(2)(2)確定確定DFDDFD類型;類型;(3)(3)把把DFDDFD映射到系統(tǒng)模塊結構設計出模塊結映射到系統(tǒng)模塊結構設計出模塊結構的上層;構的上層;(4)(4)
42、基于基于DFDDFD逐步分解高層模塊設計出下層模逐步分解高層模塊設計出下層模塊;塊;(5)(5)根據(jù)模塊獨立性原理,精化模塊結構;根據(jù)模塊獨立性原理,精化模塊結構;(6)(6)模塊接口描述。模塊接口描述。計算機工程計算機工程學院學院流類型流類型復查復查事務分析事務分析變換分析變換分析計算機工程計算機工程學院學院當當DFD具有變換特征時,具有變換特征時, 則按照下列步驟設計。則按照下列步驟設計。 1. 確定確定DFD中的變換中心、中的變換中心、 邏輯輸入和邏輯輸出邏輯輸入和邏輯輸出 如果設計人員經驗豐富,則容易確定系統(tǒng)的變換中心,如果設計人員經驗豐富,則容易確定系統(tǒng)的變換中心, 即主加工。如即主
43、加工。如幾股數(shù)據(jù)流的匯合處往往是系統(tǒng)的主加工幾股數(shù)據(jù)流的匯合處往往是系統(tǒng)的主加工。若一下不能確定,則要從物理輸入端開始,沿著數(shù)據(jù)流方若一下不能確定,則要從物理輸入端開始,沿著數(shù)據(jù)流方向向系統(tǒng)中心尋找,直到有這樣的數(shù)據(jù)流,它不能再被看向向系統(tǒng)中心尋找,直到有這樣的數(shù)據(jù)流,它不能再被看作是系統(tǒng)的輸入則它的前一個數(shù)據(jù)流就是系統(tǒng)的邏輯輸入。作是系統(tǒng)的輸入則它的前一個數(shù)據(jù)流就是系統(tǒng)的邏輯輸入。同理,從物理輸出端開始,逆數(shù)據(jù)流方向向中間移動,可同理,從物理輸出端開始,逆數(shù)據(jù)流方向向中間移動,可以確定系統(tǒng)的邏輯輸出。以確定系統(tǒng)的邏輯輸出。 介于邏輯輸入和邏輯輸出之間的介于邏輯輸入和邏輯輸出之間的加工就是變換
44、中心,用虛線劃分出流界,加工就是變換中心,用虛線劃分出流界,DFD的三部分就的三部分就確定了。確定了。 5.5.2 5.5.2 變換分析變換分析計算機工程計算機工程學院學院2. 設計軟件結構的頂層和第一層設計軟件結構的頂層和第一層變換結構變換結構 變換中心確定以后,就相當于決定了主模塊的位置,變換中心確定以后,就相當于決定了主模塊的位置, 這就這就是軟件結構的頂層是軟件結構的頂層, 如下圖所示。其功能是主要完成所有模塊如下圖所示。其功能是主要完成所有模塊的控制,它的名稱是系統(tǒng)名稱,以體現(xiàn)完成整個系統(tǒng)的功能。的控制,它的名稱是系統(tǒng)名稱,以體現(xiàn)完成整個系統(tǒng)的功能。 主模塊確定之后,設計軟件結構的第
45、一層。主模塊確定之后,設計軟件結構的第一層。 第一層至少要有輸?shù)谝粚又辽僖休斎?、輸出和變換三種功能的模塊入、輸出和變換三種功能的模塊,即為每個邏輯輸入設計一個,即為每個邏輯輸入設計一個輸入模塊,其功能為向頂層模塊提供相應的數(shù)據(jù),如下圖中的輸入模塊,其功能為向頂層模塊提供相應的數(shù)據(jù),如下圖中的f3;為每個邏輯輸出設計一個輸出模塊,其功能為輸出頂層模;為每個邏輯輸出設計一個輸出模塊,其功能為輸出頂層模塊的信息,如下圖中的塊的信息,如下圖中的f7,f8。同時,為變換中心設計一個變。同時,為變換中心設計一個變換模塊,它的功能是將邏輯輸入進行變換加工,然后邏輯輸出,換模塊,它的功能是將邏輯輸入進行變換
46、加工,然后邏輯輸出, 如下圖中如下圖中, 將將f3變換成變換成f7和和f8。這些模塊之間的數(shù)據(jù)傳送應該與。這些模塊之間的數(shù)據(jù)傳送應該與DFD相對應。相對應。 計算機工程計算機工程學院學院變換中心ABCEDFGHf1輸出輸入f2f3f4f5f6f7f8f9f10f11主模塊將f3變換成f7和f8put f7put f8get f3Bget f2CDEFput f9Gput f10Hput f11Aget f1f8f3f3f2f2f3f4f5f4f6f7f8f6f5f7f9f9f10f8f10f11f11f10f1f1f2f3f7f8f7變換分析設計舉例變換分析設計舉例計算機工程計算機工程學院學院
47、3. 設計中、下層模塊設計中、下層模塊 對第一層的輸入、對第一層的輸入、 變換及輸出模塊自頂向下、變換及輸出模塊自頂向下、 逐層分逐層分解。解。 1) 輸入模塊的下屬模塊的設計輸入模塊的下屬模塊的設計 輸入模塊的功能是向它的調用模塊提供數(shù)據(jù),輸入模塊的功能是向它的調用模塊提供數(shù)據(jù), 所以必所以必須要有數(shù)據(jù)來源。須要有數(shù)據(jù)來源。這樣輸入模塊應由接收數(shù)據(jù)和轉換成調這樣輸入模塊應由接收數(shù)據(jù)和轉換成調用模塊所需的信息兩部分組成。用模塊所需的信息兩部分組成。 因此,每個輸入模塊可以設計成兩個下屬模塊:一個因此,每個輸入模塊可以設計成兩個下屬模塊:一個接收,一個轉換。用類似的方法一直分解下去,直到物理接收
48、,一個轉換。用類似的方法一直分解下去,直到物理輸入端。輸入端。 如上圖中模塊如上圖中模塊“get f3”和和“get f2”的分解。模的分解。模塊塊“get f1”為物理輸入模塊。為物理輸入模塊。 計算機工程計算機工程學院學院 2) 輸出模塊的下屬模塊的設計輸出模塊的下屬模塊的設計 輸出模塊的功能是將它的調用模塊產生的結果送出,它輸出模塊的功能是將它的調用模塊產生的結果送出,它由將數(shù)據(jù)轉換成下屬模塊所需的形式和發(fā)送數(shù)據(jù)兩部分組成。由將數(shù)據(jù)轉換成下屬模塊所需的形式和發(fā)送數(shù)據(jù)兩部分組成。 這樣每個輸出模塊可以設計成兩個下屬模塊:一個轉這樣每個輸出模塊可以設計成兩個下屬模塊:一個轉換,換, 一個發(fā)送
49、,一個發(fā)送, 一直到物理輸出端。如上圖中一直到物理輸出端。如上圖中, 模塊模塊“put f7”, “put f8”和和“put f10”的分解。模塊的分解。模塊“put f9”和和“put f11”為物理輸出模塊。為物理輸出模塊。 3) 變換模塊的下屬模塊的設計變換模塊的下屬模塊的設計 根據(jù)根據(jù)DFD中變換中心的組成情況,按照模塊獨立性的原中變換中心的組成情況,按照模塊獨立性的原則來組織其結構,一般對則來組織其結構,一般對DFD中中每個基本加工建立一個功能每個基本加工建立一個功能模塊,模塊, 如上圖中模塊如上圖中模塊“C”, “D”和和“E”。 計算機工程計算機工程學院學院4 . 設計的優(yōu)化設
50、計的優(yōu)化 以上步驟設計出的軟件結構僅僅是初始結構,以上步驟設計出的軟件結構僅僅是初始結構, 還必須還必須根據(jù)設計準則對初始結構精細和改進,以下為提供的求精辦根據(jù)設計準則對初始結構精細和改進,以下為提供的求精辦法。法。 (1) 輸入部分的求精:對每個物理輸入設置專門模塊,輸入部分的求精:對每個物理輸入設置專門模塊, 以體現(xiàn)系統(tǒng)的外部接口;其他輸入模塊并非真正輸入,當它以體現(xiàn)系統(tǒng)的外部接口;其他輸入模塊并非真正輸入,當它與轉換數(shù)據(jù)的模塊都很簡單時,可將它們合并成一個模塊。與轉換數(shù)據(jù)的模塊都很簡單時,可將它們合并成一個模塊。 (2) 輸出部分的求精:為每個物理輸出設置專門模塊,輸出部分的求精:為每個
51、物理輸出設置專門模塊, 同同時注意把相同或類似的物理輸出模塊合并在一起,時注意把相同或類似的物理輸出模塊合并在一起, 以減低以減低耦合度。耦合度。 (3) 變換部分的求精:變換部分的求精: 根據(jù)設計準則,根據(jù)設計準則, 對模塊進行合并對模塊進行合并或調整?;蛘{整。 計算機工程計算機工程學院學院舉例:舉例: 汽車數(shù)字儀表板設計汽車數(shù)字儀表板設計 (1)通過模數(shù)轉換實現(xiàn)傳感器和微處理機接口;)通過模數(shù)轉換實現(xiàn)傳感器和微處理機接口; (2)在發(fā)光二極管面板上顯示數(shù)據(jù);)在發(fā)光二極管面板上顯示數(shù)據(jù); (3)指示每小時英里數(shù),行駛的里程等;)指示每小時英里數(shù),行駛的里程等; (4)指示加速或減速;)指示加速或減速; (5)超速警告()超速警告(55m/h)計算機工程計算機工程學院學院數(shù)字儀表板系統(tǒng)的數(shù)據(jù)流圖數(shù)字儀表板系統(tǒng)的數(shù)據(jù)流圖計算機工程計算機工程學院學院具有邊界的數(shù)據(jù)流圖具有邊界的數(shù)據(jù)流圖區(qū)分區(qū)分傳傳入、變換中心、入、變換中心、傳傳出部分,在出部分,在DFD上標上標明分界線明分界線計算機工程計算機工程學院學院第一級分解的方法第一級分解的方法設計頂層和第一層模塊設計頂層和第一層模塊計算機工程計算機工程學院學院數(shù)字儀表板系統(tǒng)的第一級分解數(shù)字儀表板系統(tǒng)的第一級分解計算機工程計算機工程學院學院
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度二零二五年度新型主題展覽攤位租賃合同3篇
- 2024年油漆裝飾承包合同樣本3篇
- 專業(yè)標準:2024年售樓部裝修工程合同范本3篇
- 核電施工單位歲末年初安全管控方案
- 職業(yè)學院科研項目結題報告書
- 福建省南平市武夷山第二中學2020年高三物理下學期期末試卷含解析
- 福建省南平市文昌學校2021-2022學年高三英語期末試卷含解析
- 福建省南平市松溪縣第一中學2021-2022學年高二物理月考試卷含解析
- 2025年度電子商務平臺預付款充值服務協(xié)議3篇
- 金融市場洞察與財務智慧
- 回族做禮拜的念詞集合6篇
- 臺區(qū)線損綜合分析臺區(qū)線損分類及計算方法
- 2023年《早》舒淇早期古裝掰全照原創(chuàng)
- 辯論賽醫(yī)術更重要
- 保密組織機構及人員職責
- 競爭性磋商評分細則
- 警用無人機考試題庫(全真題庫)
- 中國傳統(tǒng)節(jié)日(作文指導)課件
- 初中化學寒假作業(yè)
- 預應力簡支梁施工
- 機井工程抽水試驗質量驗收表
評論
0/150
提交評論