




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、軟件工程第五章總體設計河南警察學院河南警察學院信息安全系信息安全系劉磊劉磊第五章總體設計5 . 1 設計過程設計過程 5 . 2 設計原理設計原理 5 . 3 啟發(fā)規(guī)則啟發(fā)規(guī)則 5 . 4 描繪軟件結(jié)構的圖形工具描繪軟件結(jié)構的圖形工具5 . 5 面向數(shù)據(jù)流的設計方法面向數(shù)據(jù)流的設計方法 5 . 6 小結(jié)小結(jié)習題習題2 學習要求掌握:掌握: 1 、軟件設計過程中應遵循的基本原理和相、軟件設計過程中應遵循的基本原理和相關概念;關概念; 2 、描繪軟件結(jié)構的圖形工具的運用;、描繪軟件結(jié)構的圖形工具的運用; 3 、面向數(shù)據(jù)流設計方法概念;變換分析、面向數(shù)據(jù)流設計方法概念;變換分析、事務分析法過程和應用
2、。事務分析法過程和應用。理解:理解: 1 、典型的總體設計過程包括的步驟;、典型的總體設計過程包括的步驟; 2 、設計中的啟發(fā)式規(guī)則;、設計中的啟發(fā)式規(guī)則;3 重點和難點重點重點:軟件設計過程中應遵循的基本原理;軟件設計過程中應遵循的基本原理;面向數(shù)據(jù)流的設計方法面向數(shù)據(jù)流的設計方法難點難點:變換分析、事務分析法的過程和應用變換分析、事務分析法的過程和應用4 軟件設計的目標和任務軟件需求:解決軟件需求:解決“做什么做什么”軟件設計:解決軟件設計:解決“怎么做怎么做”軟件設計的任務:軟件設計的任務:以軟件需求規(guī)格說明書為以軟件需求規(guī)格說明書為依據(jù),著手實現(xiàn)軟件的需求,并將設計的依據(jù),著手實現(xiàn)軟件
3、的需求,并將設計的結(jié)果反映在結(jié)果反映在“設計規(guī)格說明書設計規(guī)格說明書”文檔中。文檔中。軟件設計的重要性:軟件設計的重要性:是軟件開發(fā)階段的第一是軟件開發(fā)階段的第一步,最終影響軟件實現(xiàn)的成敗和軟件維護步,最終影響軟件實現(xiàn)的成敗和軟件維護的難易程度。的難易程度。5 軟件設計的兩個階段第一階段:概要設計(總體設計)第一階段:概要設計(總體設計)根據(jù)軟件需求,設計軟件系統(tǒng)結(jié)構和數(shù)據(jù)結(jié)根據(jù)軟件需求,設計軟件系統(tǒng)結(jié)構和數(shù)據(jù)結(jié)構,確定程序的組成模塊及模塊之間的相構,確定程序的組成模塊及模塊之間的相互關系?;リP系?;卮鸹卮稹案爬ǖ卣f,系統(tǒng)應該如何實現(xiàn)?概括地說,系統(tǒng)應該如何實現(xiàn)?”。其重要性是:站在全局高度,
4、從較抽象的層其重要性是:站在全局高度,從較抽象的層次上分析對比多種可能的系統(tǒng)實現(xiàn)方案和次上分析對比多種可能的系統(tǒng)實現(xiàn)方案和軟件結(jié)構,從中選出最佳方案和最合理的軟件結(jié)構,從中選出最佳方案和最合理的軟件結(jié)構,從而用較低成本開發(fā)出較高質(zhì)軟件結(jié)構,從而用較低成本開發(fā)出較高質(zhì)量的軟件系統(tǒng)。量的軟件系統(tǒng)。6 軟件設計的兩個階段第二階段:詳細設計(過程設計)第二階段:詳細設計(過程設計)確定模塊內(nèi)部的算法和數(shù)據(jù)結(jié)構;選定某種確定模塊內(nèi)部的算法和數(shù)據(jù)結(jié)構;選定某種過程的表達形式來描述各種算法;產(chǎn)生精過程的表達形式來描述各種算法;產(chǎn)生精確描述各模塊程序過程的詳細文檔,并進確描述各模塊程序過程的詳細文檔,并進行評
5、審。行評審。7 將需求分析摸型轉(zhuǎn)換為軟件設計軟件結(jié)構設計以需求分析中得到的數(shù)據(jù)流圖軟件結(jié)構設計以需求分析中得到的數(shù)據(jù)流圖為基礎而進行。為基礎而進行。8 SA與SD的關系9 第一個階段總體設計的任務 制定規(guī)范制定規(guī)范 設計軟件系統(tǒng)結(jié)構(簡稱軟件結(jié)構)設計軟件系統(tǒng)結(jié)構(簡稱軟件結(jié)構) 處理方式設計處理方式設計數(shù)據(jù)結(jié)構及數(shù)據(jù)庫設計數(shù)據(jù)結(jié)構及數(shù)據(jù)庫設計 可靠性設計可靠性設計 編寫概要設計文檔編寫概要設計文檔 概要設計評審概要設計評審10 制定規(guī)范為軟件開發(fā)小組制定在進行軟件設計,應該為軟件開發(fā)小組制定在進行軟件設計,應該共同遵守的標準,以便協(xié)調(diào)組內(nèi)各員的工共同遵守的標準,以便協(xié)調(diào)組內(nèi)各員的工作。作。1
6、1 軟件結(jié)構設計包括:包括:l將系統(tǒng)按功能劃分成模塊將系統(tǒng)按功能劃分成模塊l確定每個模塊的功能確定每個模塊的功能l確定模塊之間的調(diào)用關系確定模塊之間的調(diào)用關系l確定模塊之間的接口,即模塊之間傳遞的確定模塊之間的接口,即模塊之間傳遞的信息信息l評價模塊結(jié)構的質(zhì)量評價模塊結(jié)構的質(zhì)量12 處理方式設計包括:包括:功能設計:功能設計:確定實現(xiàn)功能法,評估算法的性確定實現(xiàn)功能法,評估算法的性能能性能設計:性能設計:確定實現(xiàn)性能需求必須的算法和確定實現(xiàn)性能需求必須的算法和模塊間的控制方式模塊間的控制方式13 5.1 設計的過程14 5. 2 設計原理5.2.1模塊化模塊化5.2.2抽象抽象5.2.3逐步求
7、精逐步求精5.2.4信息隱蔽和局部化信息隱蔽和局部化5.2.4模塊獨立模塊獨立15 5 . 2 . 1 模塊化(Modularity ) 什么是模塊和模塊化思想?什么是模塊和模塊化思想?采取自頂向下的方式,逐層把軟件系統(tǒng)劃分采取自頂向下的方式,逐層把軟件系統(tǒng)劃分成若干可單獨命名和可編址的部分成若干可單獨命名和可編址的部分 “ 模模塊塊” ,每個模塊完成一個特定的子功能每個模塊完成一個特定的子功能;所有模塊按某種方法組成一個整體,完成所有模塊按某種方法組成一個整體,完成整個系統(tǒng)所要求的功能。整個系統(tǒng)所要求的功能。軟件系統(tǒng)就是通過這些模塊的組合來實現(xiàn)。軟件系統(tǒng)就是通過這些模塊的組合來實現(xiàn)。16 模
8、塊化的優(yōu)點模塊化是軟件解決復雜問題所具備的手段,模塊化是軟件解決復雜問題所具備的手段,可降低軟件復雜性,減少開發(fā)工作量,從可降低軟件復雜性,減少開發(fā)工作量,從而降低開發(fā)成本,提高軟件生產(chǎn)率,是模而降低開發(fā)成本,提高軟件生產(chǎn)率,是模塊化的依據(jù)。塊化的依據(jù)。17 模塊化與軟件成本的關系18 接口接口 模塊的基本屬性接口:接口:指模塊的輸入與輸出。指模塊的輸入與輸出。功能:功能:指模塊實現(xiàn)什么功能。指模塊實現(xiàn)什么功能。模塊化好處模塊化好處:l模塊化使軟件容易測試和調(diào)試,因而有助模塊化使軟件容易測試和調(diào)試,因而有助提高軟件的可靠性。提高軟件的可靠性。l模塊化能提高軟件的可修改性。模塊化能提高軟件的可修
9、改性。l模塊化有助于軟件開發(fā)工程的組織管理。模塊化有助于軟件開發(fā)工程的組織管理。19 5.2.2 抽象( Abstraction ) 什么是抽象?什么是抽象?認識復雜事物和現(xiàn)象時,抽出事物本質(zhì)的共認識復雜事物和現(xiàn)象時,抽出事物本質(zhì)的共同特性而暫不考慮它們的細節(jié)。同特性而暫不考慮它們的細節(jié)。20 5.2.2 抽象( Abstraction ) 什么是抽象?什么是抽象?認識復雜事物和現(xiàn)象認識復雜事物和現(xiàn)象時,抽出事物本質(zhì)時,抽出事物本質(zhì)的共同特的共同特 性而暫不性而暫不考慮它們的細節(jié)??紤]它們的細節(jié)。 軟件開發(fā)中的抽象軟件開發(fā)中的抽象過程的抽象過程的抽象數(shù)據(jù)的抽象數(shù)據(jù)的抽象23 抽象什么是抽象思想
10、什么是抽象思想?在認識事物、分析和解決問題的過程中,在認識事物、分析和解決問題的過程中,忽略忽略那些與當前研究目標那些與當前研究目標不相關不相關的部分的部分, 以便將注以便將注意力意力集中于集中于與當前目標與當前目標相關相關的方面的方面軟件開發(fā)實際上就是一個從軟件開發(fā)實際上就是一個從高層次抽象高層次抽象到到低低層次抽象層次抽象逐步過渡的過程。逐步過渡的過程。一個復雜的系統(tǒng)先用一些高級的抽象概念構一個復雜的系統(tǒng)先用一些高級的抽象概念構造和理解,這些高級概念又用較低級的概造和理解,這些高級概念又用較低級的概念構造和理解,如此進行下去,直到具體念構造和理解,如此進行下去,直到具體元素。元素。24 抽
11、象例子25 形體形體衣著衣著性格性格抽象抽象外表外表5 . 2. 3 逐步求精逐步求精:逐步求精:為了能集中精力解決主要問題而為了能集中精力解決主要問題而盡量推遲對問題細節(jié)的考慮。盡量推遲對問題細節(jié)的考慮??砂阎鸩角缶醋魇且豁棸岩粋€時期內(nèi)必須可把逐步求精看作是一項把一個時期內(nèi)必須解決的種種問題解決的種種問題按優(yōu)先級排序按優(yōu)先級排序的技術。的技術。逐步求精是一種逐步求精是一種自頂向下自頂向下的設計策略,按這的設計策略,按這種設計策略,程序的體系結(jié)構是通過逐步種設計策略,程序的體系結(jié)構是通過逐步精化處理過程的層次而設計出來的。精化處理過程的層次而設計出來的。26 逐步求精的例子27 逐步求精逐步
12、求精外表外表形體形體衣著衣著性格性格頭發(fā)頭發(fā)臉形臉形領帶領帶抽象抽象自頂向下,逐步求精的基本思想l將功能、信息的說明分為多個層次,將功能、信息的說明分為多個層次,最高最高層層也最抽象也最抽象 僅僅只是僅僅只是概念性概念性地描述功能地描述功能或信息,或信息,不不提供功能的內(nèi)部工作情況或信提供功能的內(nèi)部工作情況或信息的內(nèi)部結(jié)構;息的內(nèi)部結(jié)構;l設計者從最高層開始,仔細推敲,進行功設計者從最高層開始,仔細推敲,進行功能和信息的細化,給出能和信息的細化,給出下層實現(xiàn)的細節(jié)下層實現(xiàn)的細節(jié);l隨著每個后續(xù)細化逐步的完成,提供越來隨著每個后續(xù)細化逐步的完成,提供越來越多的細節(jié),最終得出用程序設計語言表越多的
13、細節(jié),最終得出用程序設計語言表達的程序。達的程序。28 結(jié)合了模塊化和逐步細化思想建立的軟件結(jié)構圖29 5 . 2.4信息隱蔽和局部化信息隱蔽:信息隱蔽:在設計和確定模塊時,使得一個在設計和確定模塊時,使得一個模塊模塊內(nèi)內(nèi)包含的信息(過程或數(shù)據(jù)),不允包含的信息(過程或數(shù)據(jù)),不允許其它許其它不需要不需要這些信息的這些信息的模塊訪問模塊訪問,獨立,獨立的模塊間僅僅交換為完成系統(tǒng)功能而必須的模塊間僅僅交換為完成系統(tǒng)功能而必須交換的信息。交換的信息。局部化:局部化:將一些關系密切的軟件元素物理地將一些關系密切的軟件元素物理地放得彼此靠近。放得彼此靠近。30 5. 2 . 5 模塊獨立1 、什么是模
14、塊獨立性(、什么是模塊獨立性( module independence)模塊只完成系統(tǒng)要求的相對獨立的功能模塊只完成系統(tǒng)要求的相對獨立的功能l符合信息隱蔽原則符合信息隱蔽原則l模塊間關聯(lián)和依賴程度盡量小模塊間關聯(lián)和依賴程度盡量小 2 、模塊獨立的優(yōu)點、模塊獨立的優(yōu)點容易開發(fā)、測試和維護容易開發(fā)、測試和維護31 3 、衡量模塊獨立性的兩個準則 耦合性(耦合性( coupling ) 內(nèi)聚性(內(nèi)聚性( cohesion )32 耦合性( coupling )也稱塊間的聯(lián)系。是對軟件系統(tǒng)結(jié)構中,各也稱塊間的聯(lián)系。是對軟件系統(tǒng)結(jié)構中,各模塊間相互聯(lián)系緊密程度的一種度量。模塊間相互聯(lián)系緊密程度的一種度量
15、。設計目標:低耦合設計目標:低耦合33 無直接藕合兩個模塊沒有直接關系,模塊獨立性最強。兩個模塊沒有直接關系,模塊獨立性最強。34 數(shù)據(jù)耦合屬松散耦合。一模塊訪問另一模塊時,通過屬松散耦合。一模塊訪問另一模塊時,通過數(shù)據(jù)參數(shù)交換輸入、輸出信息。數(shù)據(jù)參數(shù)交換輸入、輸出信息。35 控制耦合模塊之間傳遞的是控制信息(如開關、模塊之間傳遞的是控制信息(如開關、標志、名字等),標志、名字等),控制被調(diào)用模塊的控制被調(diào)用模塊的內(nèi)部邏輯內(nèi)部邏輯。36 控制耦合舉例37 去除模塊間控制耦合的方法控制藕合增加了理解和編程的復雜性,調(diào)用控制藕合增加了理解和編程的復雜性,調(diào)用模塊必須知道被調(diào)模塊的內(nèi)部邏輯,增加模塊
16、必須知道被調(diào)模塊的內(nèi)部邏輯,增加了相互依賴。解決方法:了相互依賴。解決方法: ( 1 )將被調(diào)用模塊內(nèi)的判定上移到調(diào)用模)將被調(diào)用模塊內(nèi)的判定上移到調(diào)用模塊中進行塊中進行 ( 2 )被調(diào)用模塊分解成若干單一功能模塊)被調(diào)用模塊分解成若干單一功能模塊38 改控制藕合為數(shù)據(jù)藕合舉例39 特征耦合兩個模塊通過傳遞兩個模塊通過傳遞數(shù)據(jù)結(jié)構數(shù)據(jù)結(jié)構加以聯(lián)系,或都加以聯(lián)系,或都與一個與一個數(shù)據(jù)結(jié)構數(shù)據(jù)結(jié)構有關系,則稱這兩個模塊有關系,則稱這兩個模塊間存在特征耦合。間存在特征耦合??赡艹霈F(xiàn)的情況:當把可能出現(xiàn)的情況:當把整個數(shù)據(jù)結(jié)構作為參整個數(shù)據(jù)結(jié)構作為參數(shù)數(shù)傳遞時,被調(diào)用的模塊雖然只需要使用傳遞時,被調(diào)用
17、的模塊雖然只需要使用其中的一部分數(shù)據(jù)元素,但實際可以使用其中的一部分數(shù)據(jù)元素,但實際可以使用的數(shù)據(jù)多于它真正需要的數(shù)據(jù),這將導致的數(shù)據(jù)多于它真正需要的數(shù)據(jù),這將導致對數(shù)據(jù)訪問失去控制,對數(shù)據(jù)訪問失去控制,40 特征耦合舉例說明:說明: l “住戶情況住戶情況”是一個是一個數(shù)據(jù)結(jié)構數(shù)據(jù)結(jié)構,圖中模塊都與此,圖中模塊都與此數(shù)據(jù)結(jié)構有關。數(shù)據(jù)結(jié)構有關。 l “計算水費計算水費”和和“計算電費計算電費”本無關,由于引用本無關,由于引用了此數(shù)據(jù)結(jié)構產(chǎn)生依賴關系,它們之間也是了此數(shù)據(jù)結(jié)構產(chǎn)生依賴關系,它們之間也是標記標記偶合偶合。41 將特征耦合修改為數(shù)據(jù)耦合舉例42 公共環(huán)境耦合一組模塊引用同一個公用數(shù)
18、據(jù)區(qū)(也稱全局一組模塊引用同一個公用數(shù)據(jù)區(qū)(也稱全局數(shù)據(jù)區(qū)、公共數(shù)據(jù)環(huán)境)。數(shù)據(jù)區(qū)、公共數(shù)據(jù)環(huán)境)。公共數(shù)據(jù)區(qū)公共數(shù)據(jù)區(qū)指:指:l全局數(shù)據(jù)結(jié)構。全局數(shù)據(jù)結(jié)構。l共享通訊區(qū)。共享通訊區(qū)。l內(nèi)存公共覆蓋區(qū)等內(nèi)存公共覆蓋區(qū)等43 公共環(huán)境耦合舉例模塊模塊 A 、 B 、 C 間存在錯綜復雜的聯(lián)系間存在錯綜復雜的聯(lián)系44 公共耦合存在的問題( 1 )軟件可理解性降低)軟件可理解性降低 ( 2 )診斷錯誤困難)診斷錯誤困難 ( 3 )軟件可維護性差)軟件可維護性差 ( 4 )軟件可靠性差)軟件可靠性差45 內(nèi)容耦合有下列情況之一的。是最不好的耦合形式!有下列情況之一的。是最不好的耦合形式!46 模塊間耦
19、合強度47 耦合強度依賴的因素:l一模塊對另一模塊的引用一模塊對另一模塊的引用l一模塊向另一模塊傳遞的數(shù)據(jù)量一模塊向另一模塊傳遞的數(shù)據(jù)量l一模塊施加到另一模塊的控制的數(shù)量一模塊施加到另一模塊的控制的數(shù)量l模塊間接口的復雜程度模塊間接口的復雜程度48 降低耦合度的設計原則1、根據(jù)問題特點,選擇合適的、根據(jù)問題特點,選擇合適的 耦合類型。耦合類型。 盡量使用數(shù)據(jù)耦合,少用控制耦合和外部盡量使用數(shù)據(jù)耦合,少用控制耦合和外部耦合,限制公共耦合的范圍,完全不用內(nèi)耦合,限制公共耦合的范圍,完全不用內(nèi)容耦合容耦合2 、降低模塊接口的復雜性。、降低模塊接口的復雜性。減少每個模塊的參數(shù)個數(shù);盡量使用標準過減少每
20、個模塊的參數(shù)個數(shù);盡量使用標準過程調(diào)用方式,少用直接引用的方式;傳送程調(diào)用方式,少用直接引用的方式;傳送的信息以標準、直接的方式提供。的信息以標準、直接的方式提供。 3 、把模塊的通信信息放在緩沖區(qū)中。、把模塊的通信信息放在緩沖區(qū)中。49 內(nèi)聚性( cohesion )又稱塊內(nèi)聯(lián)系。指一個模塊內(nèi)部各個元素彼又稱塊內(nèi)聯(lián)系。指一個模塊內(nèi)部各個元素彼此結(jié)合的緊密程度的度量。此結(jié)合的緊密程度的度量。若一個模塊內(nèi)各元素(語句之間、程序段之若一個模塊內(nèi)各元素(語句之間、程序段之間)聯(lián)系的越緊密,則它的內(nèi)聚性就越間)聯(lián)系的越緊密,則它的內(nèi)聚性就越設計目標:高內(nèi)聚設計目標:高內(nèi)聚50 巧合內(nèi)聚(偶然內(nèi)聚)塊內(nèi)
21、各組成成份在功能上是互不相關的。塊內(nèi)各組成成份在功能上是互不相關的。51 模塊模塊 M 中的三個語句沒有任何聯(lián)系。中的三個語句沒有任何聯(lián)系。缺點:可理解性差,可修改性差缺點:可理解性差,可修改性差邏輯內(nèi)聚把幾種相關功能(邏輯上相似的功能)組合把幾種相關功能(邏輯上相似的功能)組合在一模塊內(nèi),每次調(diào)用由傳給模塊的參數(shù)在一模塊內(nèi),每次調(diào)用由傳給模塊的參數(shù)確定執(zhí)行哪種功能。確定執(zhí)行哪種功能。52 邏輯內(nèi)聚模塊53 時間內(nèi)聚(經(jīng)典內(nèi)聚)模塊完成的功能必須在模塊完成的功能必須在同一時間同一時間內(nèi)執(zhí)行,這內(nèi)執(zhí)行,這些功能只因時間因素關聯(lián)在一起。些功能只因時間因素關聯(lián)在一起。例:例:初始化系統(tǒng)模塊初始化系統(tǒng)
22、模塊系統(tǒng)結(jié)束模塊、系統(tǒng)結(jié)束模塊、 緊急故障處理模塊等緊急故障處理模塊等54 過程內(nèi)聚(順序性組合)模塊內(nèi)各處理成分相關,且必須以特定次序模塊內(nèi)各處理成分相關,且必須以特定次序執(zhí)行。執(zhí)行。55 通信內(nèi)聚模塊內(nèi)各部分使用模塊內(nèi)各部分使用相同的輸入數(shù)據(jù)相同的輸入數(shù)據(jù),或產(chǎn)生,或產(chǎn)生相同的輸出結(jié)果相同的輸出結(jié)果56 順序內(nèi)聚模塊完成模塊完成多個功能多個功能,各功能都在,各功能都在同一數(shù)據(jù)結(jié)同一數(shù)據(jù)結(jié)構構上操作,每一功能有唯一入口。上操作,每一功能有唯一入口。57 功能內(nèi)聚模塊僅包括為完成某個功能所必須的所有成模塊僅包括為完成某個功能所必須的所有成分。分。模塊所有成分共同模塊所有成分共同完成一個功能完成
23、一個功能,缺一不可,缺一不可內(nèi)聚性最強內(nèi)聚性最強58 模塊間內(nèi)聚的類型59 總結(jié):耦合、內(nèi)聚與模塊獨立性關系耦合與內(nèi)聚都是耦合與內(nèi)聚都是模塊獨立性模塊獨立性的定性標準,都的定性標準,都反映模塊獨立性的良好程度。反映模塊獨立性的良好程度。但耦合是直接的主導因素,內(nèi)聚則輔助耦合但耦合是直接的主導因素,內(nèi)聚則輔助耦合共同對模塊獨立性進行衡量。共同對模塊獨立性進行衡量。設計要求:低耦合,高內(nèi)聚設計要求:低耦合,高內(nèi)聚60 5 .3 啟發(fā)規(guī)則改進原則改進原則 :高內(nèi)聚、低耦合:高內(nèi)聚、低耦合 改進軟件結(jié)構,提高模塊獨立性改進軟件結(jié)構,提高模塊獨立性 模塊規(guī)模適中模塊規(guī)模適中 深度、寬度、扇出和扇入適中深
24、度、寬度、扇出和扇入適中 將模塊的影響限制在控制范圍內(nèi)將模塊的影響限制在控制范圍內(nèi) 降低模塊接口的復雜性降低模塊接口的復雜性 設計單入口單出口的模塊設計單入口單出口的模塊 模塊功能可預測模塊功能可預測61 改進軟件結(jié)構,提高模塊獨立性通過模塊分解或合并,降低耦合提高內(nèi)聚通過模塊分解或合并,降低耦合提高內(nèi)聚62 模塊規(guī)模適中模塊過大:可理解程度下降模塊過大:可理解程度下降模塊過小:開銷大于有效操作系統(tǒng)接口復雜模塊過?。洪_銷大于有效操作系統(tǒng)接口復雜 在考慮模塊的獨立性同時,為了增加可在考慮模塊的獨立性同時,為了增加可理解性,模塊的大小最好在理解性,模塊的大小最好在 50 一一 150 條條語句左右
25、,可以用語句左右,可以用 1 一一 2 頁打印紙打印,頁打印紙打印,便于人們閱讀與研究。便于人們閱讀與研究。63 深度、寬度、扇出和扇入適中軟件結(jié)構度量術語軟件結(jié)構度量術語64 例:避免平鋪結(jié)構65 增加中間層降低扇出66 作用域作用域是指受模塊內(nèi)一個判定影響的所有模塊的集是指受模塊內(nèi)一個判定影響的所有模塊的集合合控制域控制域是指這個模塊本身及其所有的下屬模塊的集是指這個模塊本身及其所有的下屬模塊的集合合67 將模塊的影響限制在控制范圍內(nèi)使任一模塊的作用域在其控制域內(nèi)模塊模塊 C 的控制范圍的控制范圍: C 、 D 、 E 、 F 、 G 、 H 。如果模塊如果模塊 C 作出的作出的決策影響了
26、模塊決策影響了模塊 L ,L超出了超出了 C 的控制范圍的控制范圍68 降低模塊接口的復雜性接口傳遞信息應簡單且和模塊功能一致。接口傳遞信息應簡單且和模塊功能一致。模塊的接口要簡單、清晰、含義明確,便于模塊的接口要簡單、清晰、含義明確,便于理解,易于實現(xiàn)、測試與維護。理解,易于實現(xiàn)、測試與維護。69 設計單入口單出口的模塊不要使模塊間出現(xiàn)內(nèi)容耦合。不要使模塊間出現(xiàn)內(nèi)容耦合。70 模塊功能可預測,但防止模塊功能過分局限如果一個模塊可以當作一個黑盒子,相同輸如果一個模塊可以當作一個黑盒子,相同輸入產(chǎn)生相同輸出,其功能為可預測的。入產(chǎn)生相同輸出,其功能為可預測的。若模塊帶有內(nèi)部若模塊帶有內(nèi)部“存儲器
27、存儲器”,其功能可能是,其功能可能是不可預測的,難理解、難測試、難維護。不可預測的,難理解、難測試、難維護。單一的模塊具有高內(nèi)聚。但模塊功能過分局單一的模塊具有高內(nèi)聚。但模塊功能過分局限,可使用范圍將過分狹窄,缺乏靈活性限,可使用范圍將過分狹窄,缺乏靈活性和擴充性。和擴充性。71 5 .4 描繪軟件結(jié)構的圖形具 5 . 4 . 1 層次圖和層次圖和 HIPO 圖圖描述軟件的層次結(jié)構。描述軟件的層次結(jié)構。層次圖中,一個方框代表一個模塊,方框間層次圖中,一個方框代表一個模塊,方框間的連線表示調(diào)用關系。的連線表示調(diào)用關系。 HIPO 圖圖=層次圖層次圖 IPO 圖圖72 正文加工系統(tǒng)73 層次圖層次
28、圖主控模塊酒店管理信息系統(tǒng)功能結(jié)構圖74 75 5.4.2 結(jié)構圖(SC Structure Chart)主要成分說明:主要成分說明:l 一個方框表示一個一個方框表示一個模塊模塊;l 一個模塊指向另一個模塊的箭頭或直線,表示前一模塊對后一模塊的一個模塊指向另一個模塊的箭頭或直線,表示前一模塊對后一模塊的調(diào)調(diào)用用;l 調(diào)用直線邊的小箭頭,表示調(diào)用時從一個模塊傳給另一個模塊的調(diào)用直線邊的小箭頭,表示調(diào)用時從一個模塊傳給另一個模塊的數(shù)據(jù)數(shù)據(jù),也指出了傳送方向。也指出了傳送方向。結(jié)構化設計描述工具n結(jié)構圖結(jié)構圖(Structure Chart, SC)結(jié)構圖:軟件結(jié)構概要設計階段的工具。反映系統(tǒng)的功能
29、結(jié)構圖:軟件結(jié)構概要設計階段的工具。反映系統(tǒng)的功能實現(xiàn)以及模塊與模塊之間的聯(lián)系與通信,即反映了系統(tǒng)的總實現(xiàn)以及模塊與模塊之間的聯(lián)系與通信,即反映了系統(tǒng)的總體結(jié)構。體結(jié)構。結(jié)構圖的表示方法:用矩形表示模塊,用帶箭頭的連線表結(jié)構圖的表示方法:用矩形表示模塊,用帶箭頭的連線表示模塊間的調(diào)用關系。在調(diào)用關系的兩旁,標出傳入和傳出示模塊間的調(diào)用關系。在調(diào)用關系的兩旁,標出傳入和傳出模塊的數(shù)據(jù)流。模塊的數(shù)據(jù)流。模塊模塊模塊間調(diào)用模塊間調(diào)用關系關系數(shù)據(jù)流數(shù)據(jù)流(數(shù)據(jù)信息數(shù)據(jù)信息)SC圖的符號(一種表示方法)圖的符號(一種表示方法)數(shù)據(jù)流數(shù)據(jù)流(控制信息控制信息)數(shù)據(jù)流數(shù)據(jù)流結(jié)構圖的主要元素模塊:表明功能。用
30、矩形表示模塊。模塊:表明功能。用矩形表示模塊。模塊的調(diào)用關系和接口:用單向箭頭表示。模塊的調(diào)用關系和接口:用單向箭頭表示。a) 模塊調(diào)用關系b) 模塊間接口的表示SC圖的符號另一種表示方法圖的符號另一種表示方法結(jié)構圖的結(jié)構圖的6種模塊:傳入、傳出、變換、源、漏和控制。種模塊:傳入、傳出、變換、源、漏和控制。(a)傳入傳入XY(b)傳出傳出YXXY(c)變換變換X(d)源源X(e)漏漏(f)控制控制結(jié)構圖(SC)舉例79 SC中的選擇調(diào)用80 SC中的循環(huán)調(diào)用81 5 .5 面向數(shù)據(jù)流的設計方法5.5. 1 概念概念把信息流映射成軟件結(jié)構把信息流映射成軟件結(jié)構,信息流的類型決定信息流的類型決定了
31、映射的方法了映射的方法,信息流可分為兩種類型信息流可分為兩種類型l變換型流變換型流l事務型流事務型流82 變換型數(shù)據(jù)流基本模型特點:具有明確的傳入、變換(或稱主加工特點:具有明確的傳入、變換(或稱主加工)和傳出界面的)和傳出界面的 DFD83 另一種表示圖84 變換型數(shù)據(jù)流舉例85 事務型數(shù)據(jù)流基本模型86 事務中心的任務:事務中心的任務:接受輸入數(shù)據(jù)(事務)接受輸入數(shù)據(jù)(事務)分析每個事務以確定它的類型。分析每個事務以確定它的類型。根據(jù)事務類型選取一條活動通路根據(jù)事務類型選取一條活動通路事務型數(shù)據(jù)流舉例87 針對兩種數(shù)據(jù)流的設計方法88 系統(tǒng)結(jié)構特征可歸納為兩種典型形式89 大型系統(tǒng)的 DF
32、D 中,變換型和事務型往往共存90 5 .5 .2 變換分析例例1:有如下數(shù)據(jù)流圖:有如下數(shù)據(jù)流圖91 步驟步驟1:區(qū)分輸入、變換中心、輸出部分,在:區(qū)分輸入、變換中心、輸出部分,在 DFD 上標明分界線上標明分界線92 注意;所謂注意;所謂 “輸入輸入”、“ 輸出輸出”是站在整個是站在整個系統(tǒng)的角度來看的,是整個系統(tǒng)的輸入、輸出系統(tǒng)的角度來看的,是整個系統(tǒng)的輸入、輸出部分部分步驟2:第一級分解。設計頂層和第一層模塊93 第一級分解后 SC 的數(shù)據(jù)流94 步驟3:第二級分解。自頂向下分解 SC 各分支,設計出每個分支的中、下層模塊95 1 、傳入分支的分解 ( 1)96 1 、傳入分支的分解
33、(2)若有必要,繼若有必要,繼續(xù)分解。續(xù)分解。以以“輸入金額輸入金額”為例,可為例,可將此分支也將此分支也看成一個變看成一個變換型數(shù)據(jù)流換型數(shù)據(jù)流 得結(jié)構圖:得結(jié)構圖:97 繼續(xù)分解“金額校驗”98 1、傳入分支的分解(3)99 12.傳出分支的分解100 3、中心加工分支的分解101 5.5.3 事務分析當數(shù)據(jù)流具有明顯的事務特征時,應該采用當數(shù)據(jù)流具有明顯的事務特征時,應該采用事務流的分析方法事務流的分析方法基本步驟基本步驟步驟步驟1. 復審基本系統(tǒng)模型復審基本系統(tǒng)模型步驟步驟2. 復審和精化數(shù)據(jù)流圖復審和精化數(shù)據(jù)流圖步驟步驟3. 確定數(shù)據(jù)流圖的類型:變換流還是事務確定數(shù)據(jù)流圖的類型:變換流還是事務流流102 步驟4.識別事務流各個組成部分把整個事務型把整個事務型DFD劃分為以下三個部分劃分為以下三個部分 接受路徑部分:接受事務的輸入接受路徑部分:接受事務的輸入 事務處理中心事務處理中心 動作路徑部分動作路徑部分判定在每一條動作路徑上數(shù)據(jù)流的特征:變判定在每一條動作路徑上數(shù)據(jù)流的特征:變換流或者事務流換流或者事務流103 事務型DFD劃分例子104 A B C D E Q R
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 縣城兩層樓房出售合同范本
- 《有趣的表情》教案
- 廠區(qū)設備轉(zhuǎn)讓合同范例
- 出租辦公室合同范本
- 廚柜翻新服務合同范例
- 廠房倒塌合同范本
- 公立大學教師聘用合同范本
- 農(nóng)村托管合同范本
- 525全國大學生心理健康日策劃書
- 與茶樓合作合同范本
- 房屋市政工程生產(chǎn)安全重大事故隱患判定標準(2024版)宣傳畫冊
- 2025年中國配音行業(yè)市場現(xiàn)狀、發(fā)展概況、未來前景分析報告
- 中建建筑工程竣工驗收指南
- 2020年同等學力申碩《計算機科學與技術學科綜合水平考試》歷年真題及答案
- 電廠應急救援培訓
- 智慧能源島解決方案
- 做最好的教師讀書分享
- 眼底疾病課件教學課件
- 二元一次方程組應用題(50題)
- 出生證警示教育培訓
- KYC高客營銷培訓
評論
0/150
提交評論