軟件工程總體設計_第1頁
軟件工程總體設計_第2頁
軟件工程總體設計_第3頁
軟件工程總體設計_第4頁
軟件工程總體設計_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、第第5章章 總體設計總體設計(System Design) 結(jié)構(gòu)化設計技術(shù)的結(jié)構(gòu)化設計技術(shù)的基本要點基本要點是:是: 軟件系統(tǒng)由層次化結(jié)構(gòu)的模塊構(gòu)成軟件系統(tǒng)由層次化結(jié)構(gòu)的模塊構(gòu)成 模塊是單入口單出口的模塊是單入口單出口的 構(gòu)造和連接模塊的基本準則是模塊獨立構(gòu)造和連接模塊的基本準則是模塊獨立 用圖來描述軟件系統(tǒng)的結(jié)構(gòu),并且使軟件結(jié)構(gòu)與問題結(jié)構(gòu)用圖來描述軟件系統(tǒng)的結(jié)構(gòu),并且使軟件結(jié)構(gòu)與問題結(jié)構(gòu)盡量一致盡量一致 本章主要介紹總體設計的過程、原理,設計中采用本章主要介紹總體設計的過程、原理,設計中采用的啟發(fā)式規(guī)則和相應圖形工具,最后介紹一種面向數(shù)的啟發(fā)式規(guī)則和相應圖形工具,最后介紹一種面向數(shù)據(jù)流的設計

2、方法。據(jù)流的設計方法。 軟件設計的任務是:把分析階段產(chǎn)生的軟件需求規(guī)格說明軟件設計的任務是:把分析階段產(chǎn)生的軟件需求規(guī)格說明轉(zhuǎn)換為用適當手段表示的軟件設計文檔。(考慮轉(zhuǎn)換為用適當手段表示的軟件設計文檔。(考慮“How”) 總體設計(概要設計),其總體設計(概要設計),其任務任務是劃分出組成系統(tǒng)的物理是劃分出組成系統(tǒng)的物理元素(程序、文件、數(shù)據(jù)庫等),對可能的方案設計軟件的總元素(程序、文件、數(shù)據(jù)庫等),對可能的方案設計軟件的總體結(jié)構(gòu),確定系統(tǒng)中每個物理元素的模塊組成及模塊間的相互體結(jié)構(gòu),確定系統(tǒng)中每個物理元素的模塊組成及模塊間的相互關(guān)系。關(guān)系。 詳細設計階段才設計模塊數(shù)據(jù)結(jié)構(gòu)、算法過程的精確描

3、述詳細設計階段才設計模塊數(shù)據(jù)結(jié)構(gòu)、算法過程的精確描述(見第見第6章章)。第第5章章. 總體設計總體設計 從從DFD出發(fā)進行任務分解,不同的劃分方法即對應不同的出發(fā)進行任務分解,不同的劃分方法即對應不同的方案。方案。 每個合理的方案應配備下列每個合理的方案應配備下列4份資料:份資料: 系統(tǒng)流程圖系統(tǒng)流程圖 組成系統(tǒng)的物理元素清單組成系統(tǒng)的物理元素清單 成本成本/效益分析效益分析 進度計劃進度計劃 選擇最佳方案,并制定詳細的實現(xiàn)計劃(主要技術(shù)詳見第選擇最佳方案,并制定詳細的實現(xiàn)計劃(主要技術(shù)詳見第13章)章)1. 設計過程設計過程1、確定最佳方案、確定最佳方案1. 設計過程設計過程 將將DFD細化

4、,進行功能分解,至每個子功能都明白易懂;細化,進行功能分解,至每個子功能都明白易懂; 每個模塊完成一個子功能,將模塊組織成一個層次系統(tǒng),每每個模塊完成一個子功能,將模塊組織成一個層次系統(tǒng),每層模塊合成一個高一級的功能。層模塊合成一個高一級的功能。 主要工具有主要工具有Hierarchy、Structured及及HIPO圖等。圖等。2、結(jié)構(gòu)設計、結(jié)構(gòu)設計 模塊化思想模塊化思想 對目標系統(tǒng)進行結(jié)構(gòu)設計時,應當:對目標系統(tǒng)進行結(jié)構(gòu)設計時,應當: 采用某種設計方法,將一個復雜系統(tǒng)按功能劃分為模塊采用某種設計方法,將一個復雜系統(tǒng)按功能劃分為模塊 確定每個模塊的功能確定每個模塊的功能 確定模塊間的調(diào)用關(guān)系

5、確定模塊間的調(diào)用關(guān)系 確定模塊間的接口確定模塊間的接口 評價模塊結(jié)構(gòu)的質(zhì)量評價模塊結(jié)構(gòu)的質(zhì)量1. 設計過程設計過程3、設計數(shù)據(jù)庫、設計數(shù)據(jù)庫5、文檔、審查、文檔、審查4、制定測試計劃、制定測試計劃包括的文檔:包括的文檔: 系統(tǒng)說明系統(tǒng)說明 用戶手冊用戶手冊 測試計劃測試計劃 詳細的實現(xiàn)計劃詳細的實現(xiàn)計劃 數(shù)據(jù)庫設計結(jié)果數(shù)據(jù)庫設計結(jié)果在需求分析形成的數(shù)據(jù)需求的基礎(chǔ)上,進一步設計數(shù)據(jù)庫。在需求分析形成的數(shù)據(jù)需求的基礎(chǔ)上,進一步設計數(shù)據(jù)庫。在開發(fā)早期制定測試計劃有助于提高軟件可測試性(見第在開發(fā)早期制定測試計劃有助于提高軟件可測試性(見第7 7章)章)。2. 設計原理設計原理采用模塊化原理來設計軟件

6、:采用模塊化原理來設計軟件: 可以使軟件結(jié)構(gòu)清晰可以使軟件結(jié)構(gòu)清晰 易于設計,易于閱讀、理解易于設計,易于閱讀、理解 使軟件易于測試使軟件易于測試 有助于提高軟件可靠性有助于提高軟件可靠性 提高軟件的可修改性提高軟件的可修改性 有助于開發(fā)工作的組織管理有助于開發(fā)工作的組織管理1、模塊化、模塊化(Modularization) 模塊化是軟件工程時代大型軟件設計的基本策略,是軟件設計模塊化是軟件工程時代大型軟件設計的基本策略,是軟件設計的一條基本原理。的一條基本原理。 模塊化模塊化是把軟件系統(tǒng)是把軟件系統(tǒng)劃分劃分成可獨立命名和訪問的模塊,這些模成可獨立命名和訪問的模塊,這些模塊集成起來完成整體功能

7、需求的過程。塊集成起來完成整體功能需求的過程。 模塊模塊是是程序中表現(xiàn)為數(shù)據(jù)說明、可執(zhí)行語句等程序?qū)ο蟮募铣绦蛑斜憩F(xiàn)為數(shù)據(jù)說明、可執(zhí)行語句等程序?qū)ο蟮募?,是單獨命名和編址的元素。是單獨命名和編址的元素?. 設計原理設計原理經(jīng)驗經(jīng)驗1: 如果如果C(P1) C(P2),則,則 E(P1) E(P2) 同時同時 C(P1+P2) C(P1)+C(P2) E(P1+P2) E(P1)+E(P2)成本成本成本成本/ /模塊模塊最小成本區(qū)最小成本區(qū)接口成本接口成本軟件總成本軟件總成本模塊數(shù)目模塊數(shù)目經(jīng)驗經(jīng)驗2: 考慮接口成本,如右圖考慮接口成本,如右圖 模塊化過程強調(diào)對軟件系統(tǒng)的分解劃分:分解是人

8、們處模塊化過程強調(diào)對軟件系統(tǒng)的分解劃分:分解是人們處理復雜問題的常用方法,其依據(jù)是理復雜問題的常用方法,其依據(jù)是2. 設計原理設計原理 忽略細節(jié),分層理解問題,自頂向下層層加細。忽略細節(jié),分層理解問題,自頂向下層層加細。2、抽象、抽象(Abstraction)思維工具思維工具 考慮模塊化解法時,可提出許多的抽象層次:考慮模塊化解法時,可提出許多的抽象層次: 抽象是人們把現(xiàn)實世界中的事物、狀態(tài)、過程的相似性(共性)抽象是人們把現(xiàn)實世界中的事物、狀態(tài)、過程的相似性(共性)集中和概括起來,而暫時忽略它們之間的差異。集中和概括起來,而暫時忽略它們之間的差異。 最高層次的抽象:使用問題環(huán)境語言,以概括的

9、方式描述問最高層次的抽象:使用問題環(huán)境語言,以概括的方式描述問題的解法。題的解法。 較低層次的抽象:采用更過程化的方式把面向問題的術(shù)語和較低層次的抽象:采用更過程化的方式把面向問題的術(shù)語和面向?qū)崿F(xiàn)的術(shù)語結(jié)合起來描述問題的解法。面向?qū)崿F(xiàn)的術(shù)語結(jié)合起來描述問題的解法。 最低層次的抽象:采用可直接實現(xiàn)的方式描述問題的解法。最低層次的抽象:采用可直接實現(xiàn)的方式描述問題的解法。2. 設計原理設計原理3、逐步求精、逐步求精基本技術(shù)基本技術(shù) 逐步求精定義為:為了能集中精力解決主要問題而盡量推遲逐步求精定義為:為了能集中精力解決主要問題而盡量推遲對問題細節(jié)的考慮。對問題細節(jié)的考慮。 逐步求精技術(shù)確保每個問題都

10、將被解決,而且每個問題都在逐步求精技術(shù)確保每個問題都將被解決,而且每個問題都在適當?shù)臅r候解決。適當?shù)臅r候解決。 求精實際上是細化過程。求精實際上是細化過程。 抽象與求精是一對互補的概念。抽象與求精是一對互補的概念。4、信息隱藏與局部化信息隱藏與局部化指導思想指導思想 在設計軟件模塊時應該使得一個模塊內(nèi)包含的信息(過程和在設計軟件模塊時應該使得一個模塊內(nèi)包含的信息(過程和數(shù)據(jù)),對于不需要這些信息的模塊來說是不能訪問的,這就是數(shù)據(jù)),對于不需要這些信息的模塊來說是不能訪問的,這就是信息隱藏。信息隱藏。 局部化是指把一些關(guān)系密切的軟件元素物理地放得彼此靠近。局部化是指把一些關(guān)系密切的軟件元素物理地

11、放得彼此靠近。 局部化是實現(xiàn)信息隱藏的有效措施之一。局部化是實現(xiàn)信息隱藏的有效措施之一。2. 設計原理設計原理 “隱藏隱藏”的思想,要求有效的模塊化通過定義一組相互獨立的的思想,要求有效的模塊化通過定義一組相互獨立的模塊來實現(xiàn),這些模塊彼此之間僅交換那些為了完成系統(tǒng)功能所模塊來實現(xiàn),這些模塊彼此之間僅交換那些為了完成系統(tǒng)功能所必須的信息,而將那些自身的實現(xiàn)細節(jié)與數(shù)據(jù)必須的信息,而將那些自身的實現(xiàn)細節(jié)與數(shù)據(jù)“隱藏隱藏”起來。起來。 5、模塊獨立、模塊獨立(Module Independence) 好設計的關(guān)鍵:每個模塊完成一個相對獨立的特定子功能,好設計的關(guān)鍵:每個模塊完成一個相對獨立的特定子功

12、能,并且與其它模塊間的聯(lián)系最少、接口簡單。并且與其它模塊間的聯(lián)系最少、接口簡單。2. 設計原理設計原理 模塊獨立的概念是模塊化、抽象、信息隱藏和局部化概念的模塊獨立的概念是模塊化、抽象、信息隱藏和局部化概念的直接結(jié)果直接結(jié)果。 模塊獨立性的重要性體現(xiàn)在:模塊獨立性的重要性體現(xiàn)在: 具有獨立模塊的軟件容易開發(fā)具有獨立模塊的軟件容易開發(fā) 獨立的模塊容易測試和維護獨立的模塊容易測試和維護 獨立的模塊便于重用獨立的模塊便于重用獨立性的度量:獨立性的度量:耦合耦合(Coupling)&內(nèi)聚內(nèi)聚(Cohesion) (Yourdon & Constantine,1978) 耦合耦合(Coupling)Gr

13、eat deal of dependenceIndependent Highly coupledLoosely coupledUncoupled 2. 設計原理設計原理 耦合是模塊之間的聯(lián)系,是對一個軟件結(jié)構(gòu)內(nèi)不同模塊之間耦合是模塊之間的聯(lián)系,是對一個軟件結(jié)構(gòu)內(nèi)不同模塊之間互連程度的度量?;ミB程度的度量。 模塊間的耦合程度直接影響著系統(tǒng)的可理解性、可測試性、模塊間的耦合程度直接影響著系統(tǒng)的可理解性、可測試性、可靠性和可維護性??煽啃院涂删S護性。Goal: as loose as possible = as independent as possible 例例1:A訪問訪問C的內(nèi)部數(shù)據(jù)的內(nèi)部數(shù)據(jù)

14、或不通過正常入口而或不通過正常入口而轉(zhuǎn)入轉(zhuǎn)入C的內(nèi)部。的內(nèi)部。ABCDA:goto C1C:C1: 內(nèi)容耦合內(nèi)容耦合(Content Coupling): 2. 設計原理設計原理 耦合性耦合性按獨立性由弱到強包括按獨立性由弱到強包括5種:內(nèi)容耦合、公共耦合、種:內(nèi)容耦合、公共耦合、特征耦合、控制耦合和數(shù)據(jù)耦合特征耦合、控制耦合和數(shù)據(jù)耦合例例2:部分代碼重疊(常出:部分代碼重疊(常出現(xiàn)在匯編程序中)現(xiàn)在匯編程序中)B A例例3:一個模塊有多個入:一個模塊有多個入口(功能)口(功能)A:entry 1:entry 2: The least desirable2. 設計原理設計原理 公共耦合公共耦合

15、 (Common coupling):Global : V1 V2A:A1=V1+V2B:V1=B1Global : V1 V2A:V1+B:V2=B1+V1問題:問題: 公共部分的改動將影響所有調(diào)用它的模塊;公共部分的改動將影響所有調(diào)用它的模塊; 公共部分的數(shù)據(jù)存取無法控制;公共部分的數(shù)據(jù)存取無法控制; 復雜程度隨耦合模塊的個數(shù)增加而增加,可測試性、復雜程度隨耦合模塊的個數(shù)增加而增加,可測試性、可理解性、可維護性變差。可理解性、可維護性變差。2. 設計原理設計原理一組模塊訪問同一個全局性的數(shù)據(jù)結(jié)構(gòu)。一組模塊訪問同一個全局性的數(shù)據(jù)結(jié)構(gòu)。 特征特征耦合耦合 (Character coupling

16、):2. 設計原理設計原理模塊間調(diào)用傳遞的參數(shù)是數(shù)據(jù)結(jié)構(gòu),但使用的是部分元素。模塊間調(diào)用傳遞的參數(shù)是數(shù)據(jù)結(jié)構(gòu),但使用的是部分元素。 控制耦合控制耦合(Control coupling): 一個模塊調(diào)用另一模塊時,傳遞的是控制變量(開關(guān)、標記一個模塊調(diào)用另一模塊時,傳遞的是控制變量(開關(guān)、標記等),被調(diào)用模塊通過控制變量的值有選擇地執(zhí)行塊內(nèi)某一功能。等),被調(diào)用模塊通過控制變量的值有選擇地執(zhí)行塊內(nèi)某一功能。ABFlagF2F1FnFlag接口單一,但仍接口單一,但仍然影響被控模塊然影響被控模塊的內(nèi)部邏輯。的內(nèi)部邏輯。 模塊間有調(diào)用關(guān)系,傳遞的信息僅僅是簡單模塊間有調(diào)用關(guān)系,傳遞的信息僅僅是簡單數(shù)

17、據(jù)。數(shù)據(jù)。 The most desirable.原則:原則:盡量使用數(shù)據(jù)耦合,少用控制耦合和特征耦合,盡量使用數(shù)據(jù)耦合,少用控制耦合和特征耦合,限制公共耦合的范圍,完全不用內(nèi)容耦合。限制公共耦合的范圍,完全不用內(nèi)容耦合。2. 設計原理設計原理 數(shù)據(jù)耦合數(shù)據(jù)耦合(Data coupling): 在設計過程中,不在于禁止使用高耦合、較強耦合,而在設計過程中,不在于禁止使用高耦合、較強耦合,而是要了解各種耦合的特點與不足,以便在需要使用它們時能是要了解各種耦合的特點與不足,以便在需要使用它們時能預見到可能產(chǎn)生的問題。預見到可能產(chǎn)生的問題。 偶然內(nèi)聚偶然內(nèi)聚(Coincidental cohesio

18、n)A: Read Inputsfrom diskfrom tapefrom 邏輯內(nèi)聚邏輯內(nèi)聚(Logical cohesion)Goal: as cohesive as possible.2. 設計原理設計原理 內(nèi)聚內(nèi)聚 (Cohesion) 內(nèi)聚是模塊內(nèi)部各成分之間的聯(lián)系(塊內(nèi)聯(lián)系),是對一個內(nèi)聚是模塊內(nèi)部各成分之間的聯(lián)系(塊內(nèi)聯(lián)系),是對一個模塊內(nèi)部各成分彼此結(jié)合的緊密程度的度量。模塊內(nèi)部各成分彼此結(jié)合的緊密程度的度量。 低內(nèi)聚:低內(nèi)聚: 模塊完成一組任務,其內(nèi)部各成分在功能上互不相關(guān)。模塊完成一組任務,其內(nèi)部各成分在功能上互不相關(guān)。 模塊內(nèi)部各成分在邏輯功能上模塊內(nèi)部各成分在邏輯功能上

19、相似,通過參數(shù)完成相應功能。相似,通過參數(shù)完成相應功能。 內(nèi)聚性內(nèi)聚性由低到高包括由低到高包括7種:偶然內(nèi)聚、邏輯內(nèi)聚、時間內(nèi)種:偶然內(nèi)聚、邏輯內(nèi)聚、時間內(nèi)聚、過程內(nèi)聚、通信內(nèi)聚、順序內(nèi)聚和功能內(nèi)聚。聚、過程內(nèi)聚、通信內(nèi)聚、順序內(nèi)聚和功能內(nèi)聚。例如:系統(tǒng)的初始化、賦初值、打開文件等例如:系統(tǒng)的初始化、賦初值、打開文件等問題:不同功能混在一個模塊中,有時共用部分編碼,使局問題:不同功能混在一個模塊中,有時共用部分編碼,使局部功能的修改牽動全局。部功能的修改牽動全局。 過程內(nèi)聚過程內(nèi)聚(Procedural cohesion)enter datacheck datamanipulate data2

20、. 設計原理設計原理 時間內(nèi)聚時間內(nèi)聚(Temporal cohesion) 模塊內(nèi)部各成分是由相同的執(zhí)行時間將它們聯(lián)結(jié)在一起。模塊內(nèi)部各成分是由相同的執(zhí)行時間將它們聯(lián)結(jié)在一起。 中內(nèi)聚:中內(nèi)聚: 模塊內(nèi)包含的一組相關(guān)任務必須按照某一特定的順序執(zhí)行。模塊內(nèi)包含的一組相關(guān)任務必須按照某一特定的順序執(zhí)行。 順序內(nèi)聚順序內(nèi)聚(Sequential cohesion)2. 設計原理設計原理 通信內(nèi)聚通信內(nèi)聚(Communicational cohesion) 模塊內(nèi)各成分使用同一個輸入數(shù)據(jù)源或產(chǎn)生同一個輸出數(shù)據(jù),模塊內(nèi)各成分使用同一個輸入數(shù)據(jù)源或產(chǎn)生同一個輸出數(shù)據(jù),借公用數(shù)據(jù)聯(lián)系在一起。借公用數(shù)據(jù)聯(lián)系

21、在一起。 高內(nèi)聚:高內(nèi)聚: 功能內(nèi)聚功能內(nèi)聚(Functional cohesion) 模塊內(nèi)各成分密切相關(guān)于同一功能,且必須是順序執(zhí)行。模塊內(nèi)各成分密切相關(guān)于同一功能,且必須是順序執(zhí)行。 模塊內(nèi)各成分結(jié)合在一起,缺一不可,用于完成一個單一的模塊內(nèi)各成分結(jié)合在一起,缺一不可,用于完成一個單一的功能。功能。 事實上事實上,對模塊的內(nèi)聚和耦合的級別沒有必要去精對模塊的內(nèi)聚和耦合的級別沒有必要去精確界定,重要的是能夠確界定,重要的是能夠辨認出辨認出低內(nèi)聚、高耦合的模塊,低內(nèi)聚、高耦合的模塊,有能力有能力通過修改設計通過修改設計提高模塊的內(nèi)聚程度和降低模塊提高模塊的內(nèi)聚程度和降低模塊間耦合程度,做到高

22、內(nèi)聚、低耦合,從而提高模塊的間耦合程度,做到高內(nèi)聚、低耦合,從而提高模塊的獨立性。獨立性。2. 設計原理設計原理3. 啟發(fā)規(guī)則啟發(fā)規(guī)則 深度深度 = 分層的層數(shù)。過大表示分工過細。分層的層數(shù)。過大表示分工過細。 寬度寬度 = 同一層上模塊數(shù)的最大值。過大表示系統(tǒng)復雜度大。同一層上模塊數(shù)的最大值。過大表示系統(tǒng)復雜度大。爭取低耦合、高內(nèi)聚(提高內(nèi)聚、降低耦合)爭取低耦合、高內(nèi)聚(提高內(nèi)聚、降低耦合)1. 改進軟件結(jié)構(gòu)提高模塊獨立性改進軟件結(jié)構(gòu)提高模塊獨立性2. 模塊規(guī)模(大?。┻m中模塊規(guī)模(大小)適中 過大不易理解;太小則接口開銷過大。注意分解后不應降過大不易理解;太小則接口開銷過大。注意分解后不

23、應降低模塊的獨立性。低模塊的獨立性。3. 適當控制適當控制 深度、寬度、扇出、扇入深度、寬度、扇出、扇入 3.啟發(fā)規(guī)則啟發(fā)規(guī)則 扇出扇出 = 一個模塊直接調(diào)用一個模塊直接調(diào)用/控制的模塊數(shù)??刂频哪K數(shù)。 3 fan-out 9AA的扇出的扇出AA的扇入的扇入 扇入扇入 = 直接調(diào)用該模塊的直接調(diào)用該模塊的模塊數(shù)。模塊數(shù)。在不破壞獨立性的前提下,在不破壞獨立性的前提下,fan-in 大的比較好。大的比較好。3.啟發(fā)規(guī)則啟發(fā)規(guī)則 控制域控制域MACBM的控制域為的控制域為 M,A,B,C例如:例如:A: if then goto B1 B: B1: 作用域在控制域內(nèi)作用域在控制域內(nèi) 例中例中A的

24、作用超出了控制域。改進方法之一,可以把的作用超出了控制域。改進方法之一,可以把A中的中的 if 移移到到M中;方法之二,可以把中;方法之二,可以把C移到移到A下面。下面。4、作用域在控制域之內(nèi)、作用域在控制域之內(nèi) 作用域:作用域:M中的一個判定所影響的模塊。中的一個判定所影響的模塊。A: if then goto M1 M: M1: goto C1 作用域超出了控制域作用域超出了控制域C: C1: 3.啟發(fā)規(guī)則啟發(fā)規(guī)則6、單入單出、單入單出避免內(nèi)容耦合避免內(nèi)容耦合接口復雜可能表明模塊的獨立性差。接口復雜可能表明模塊的獨立性差。5、降低接口的復雜程度、降低接口的復雜程度 相同輸入必產(chǎn)生相同輸出。

25、反例:模塊中使用全局變相同輸入必產(chǎn)生相同輸出。反例:模塊中使用全局變量或靜態(tài)變量,則可能導致不可預測。量或靜態(tài)變量,則可能導致不可預測。7、模塊功能可預測、模塊功能可預測4. 描繪軟件結(jié)構(gòu)的圖形工具描繪軟件結(jié)構(gòu)的圖形工具1、Hierarchy和和HIPO如:如:P.102 圖圖5.3 層次圖(層次圖(H圖):圖): 用矩形框表示一個模塊,方框間上下的連線表示上調(diào)用矩形框表示一個模塊,方框間上下的連線表示上調(diào)用下。用下。 通常頂層由一個模塊,表示主控模塊,調(diào)用下屬模塊通常頂層由一個模塊,表示主控模塊,調(diào)用下屬模塊完成系統(tǒng)功能。完成系統(tǒng)功能。 HIPO圖:圖: 結(jié)合結(jié)合H圖與圖與IPO圖,即對每個

26、模塊附一張圖,即對每個模塊附一張IPO圖。每個圖。每個IPO圖中應明確標出對應模塊的編號。圖中應明確標出對應模塊的編號。計算教職工工資計算教職工工資計算工資計算工資打印表格打印表格取數(shù)據(jù)取數(shù)據(jù)計算正常工計算正常工資資審核事務審核事務數(shù)據(jù)數(shù)據(jù)收集事務收集事務數(shù)據(jù)數(shù)據(jù)計算超額課計算超額課時費時費更新年度更新年度數(shù)據(jù)數(shù)據(jù)例:例:工資支付系統(tǒng)工資支付系統(tǒng)4.圖形工具圖形工具 這里的這里的Hierarchy表現(xiàn)軟件的結(jié)構(gòu),而非數(shù)據(jù)結(jié)構(gòu);表現(xiàn)軟件的結(jié)構(gòu),而非數(shù)據(jù)結(jié)構(gòu); 每個矩形框代表一個模塊,連線表示每個矩形框代表一個模塊,連線表示“調(diào)用調(diào)用”而非而非“組成組成”。注意注意:4.圖形工具圖形工具2、結(jié)構(gòu)圖

27、、結(jié)構(gòu)圖(Structured Diagram)數(shù)據(jù)傳遞;數(shù)據(jù)傳遞;控制信息;控制信息;或或(判定判定);循環(huán)循環(huán). .符號:符號:模塊;模塊;調(diào)用;調(diào)用;例:例:BAMM1M2M3CD4.圖形工具圖形工具注意注意: 層次圖和結(jié)構(gòu)圖沒有嚴格表示其調(diào)用的順序;層次圖和結(jié)構(gòu)圖沒有嚴格表示其調(diào)用的順序; 圖中只表示了調(diào)用關(guān)系,至于何時調(diào)用、塊內(nèi)有無其他成分則圖中只表示了調(diào)用關(guān)系,至于何時調(diào)用、塊內(nèi)有無其他成分則沒有表示;沒有表示; 層次圖通常用來表示軟件結(jié)構(gòu)設計文檔;層次圖通常用來表示軟件結(jié)構(gòu)設計文檔; 結(jié)構(gòu)圖通常用以檢查設計的正確性和評價模塊的獨立性。結(jié)構(gòu)圖通常用以檢查設計的正確性和評價模塊的獨立

28、性。須檢查:須檢查: 每個傳遞的數(shù)據(jù)是否每個傳遞的數(shù)據(jù)是否必須必須? 完成模塊功能所必須的數(shù)據(jù)是否完成模塊功能所必須的數(shù)據(jù)是否都傳遞了都傳遞了? 傳輸?shù)臄?shù)據(jù)是否只與傳輸?shù)臄?shù)據(jù)是否只與單一單一的功能有關(guān)?是否目的明確?的功能有關(guān)?是否目的明確?5. 面向數(shù)據(jù)流的設計方法面向數(shù)據(jù)流的設計方法(又稱為(又稱為SD:Structural Design) 變換流變換流(Transform Flow):Internal representationInformationExternal representationTimeTransform flowOutgoingflowIncomingflow 事實上

29、所有信息流都可歸結(jié)事實上所有信息流都可歸結(jié)為變換流。為變換流。基本思想基本思想: DFD System Hierarchy1、Data Flow 的分類的分類 變換型結(jié)構(gòu):具有變換流特變換型結(jié)構(gòu):具有變換流特征的征的DFD結(jié)構(gòu)。結(jié)構(gòu)。TransformCenterIncoming PathsOutgoing Paths 變換型數(shù)據(jù)處理過程:讀取變換型數(shù)據(jù)處理過程:讀取數(shù)據(jù)、變換數(shù)據(jù)、輸出數(shù)據(jù)。數(shù)據(jù)、變換數(shù)據(jù)、輸出數(shù)據(jù)。5.面向數(shù)據(jù)流的設計方法面向數(shù)據(jù)流的設計方法 事務流事務流(Transaction Flow) TTransactionrequest Action paths 當信息流具有明顯

30、的當信息流具有明顯的“發(fā)射發(fā)射中心中心”時,可歸結(jié)為事務流。時,可歸結(jié)為事務流。 TransactionCenterAction pathsAccept paths 事務型結(jié)構(gòu):具有事務流特征事務型結(jié)構(gòu):具有事務流特征的的DFD結(jié)構(gòu)。結(jié)構(gòu)。 事務型數(shù)據(jù)處理過程:接收數(shù)據(jù)、事務型數(shù)據(jù)處理過程:接收數(shù)據(jù)、分析數(shù)據(jù)、根據(jù)類型選擇通路。分析數(shù)據(jù)、根據(jù)類型選擇通路。 大型系統(tǒng)的大型系統(tǒng)的DFD中,變換流和事中,變換流和事務流常同時存在,即變換型結(jié)構(gòu)和事務流常同時存在,即變換型結(jié)構(gòu)和事務型結(jié)構(gòu)同時存在。務型結(jié)構(gòu)同時存在。5.面向數(shù)據(jù)流的設計方法面向數(shù)據(jù)流的設計方法 變換分析變換分析2、分析設計、分析設計

31、變換分析是把具有變換流特征的變換分析是把具有變換流特征的DFD按預先確定的模式映按預先確定的模式映射成軟件結(jié)構(gòu)的設計步驟的總稱。射成軟件結(jié)構(gòu)的設計步驟的總稱。設計步驟(以設計步驟(以P.106汽車數(shù)字儀表板的設計為例):汽車數(shù)字儀表板的設計為例):變換型變換型DFD變換結(jié)構(gòu)(初始軟件結(jié)構(gòu))變換結(jié)構(gòu)(初始軟件結(jié)構(gòu))變換分析變換分析 復查基本系統(tǒng)模型,確保輸入輸出符合實際復查基本系統(tǒng)模型,確保輸入輸出符合實際 精化精化DFD,確保系統(tǒng)正確性和每個加工代表一個獨立,確保系統(tǒng)正確性和每個加工代表一個獨立子功能子功能 確定確定DFD的類型結(jié)構(gòu),以全局特性為主的類型結(jié)構(gòu),以全局特性為主5.面向數(shù)據(jù)流的設計

32、方法面向數(shù)據(jù)流的設計方法 DFD的分界,區(qū)分出的分界,區(qū)分出I、T、O三部分三部分燃料流燃料流 傳感器信號傳感器信號SPS旋轉(zhuǎn)信號旋轉(zhuǎn)信號讀讀旋轉(zhuǎn)旋轉(zhuǎn)信號信號收集和收集和求平均求平均確定確定加加/ /減減速速轉(zhuǎn)換成轉(zhuǎn)換成轉(zhuǎn)轉(zhuǎn)/ /分分計算計算里程里程計算計算mph,超超速值速值產(chǎn)生產(chǎn)生加加/ /減減速顯示速顯示計算計算燃料燃料消耗消耗計算計算gph讀和讀和校核校核產(chǎn)生產(chǎn)生mpg顯示顯示產(chǎn)生產(chǎn)生mph顯示顯示發(fā)出發(fā)出鈴聲鈴聲產(chǎn)生產(chǎn)生里程里程顯示顯示SPS SPS箭頭指示箭頭指示燃燒流燃燒流上箭頭上箭頭水平線水平線下箭頭下箭頭rpmrpmgphmphmpgmph超速值超速值英里英里顯示顯示鈴聲鈴聲

33、mph顯示顯示mpg顯示顯示 邏輯輸入邏輯輸入 I :指:指離物理輸入最遠,但離物理輸入最遠,但仍可視為系統(tǒng)輸入的仍可視為系統(tǒng)輸入的數(shù)據(jù)流。數(shù)據(jù)流。 變換中心變換中心T的任務:的任務:通過計算或處理,把通過計算或處理,把系統(tǒng)的邏輯輸入變換系統(tǒng)的邏輯輸入變換(加工加工)為系統(tǒng)的邏輯為系統(tǒng)的邏輯輸出。輸出。 邏輯輸出邏輯輸出O:指:指離物理輸出最遠,但離物理輸出最遠,但仍可視為系統(tǒng)輸出的仍可視為系統(tǒng)輸出的數(shù)據(jù)流。數(shù)據(jù)流。5.面向數(shù)據(jù)流的設計方法面向數(shù)據(jù)流的設計方法劃分劃分DFD的三部分時的三部分時注意注意: 對對DFD的劃分,不同設計人員可能得到不同的結(jié)果,的劃分,不同設計人員可能得到不同的結(jié)果,

34、這依據(jù)他們的經(jīng)驗和對這依據(jù)他們的經(jīng)驗和對DFD的解釋,對最后結(jié)果影響不大。的解釋,對最后結(jié)果影響不大。 設計人員重要的是對設計人員重要的是對DFD從實際出發(fā),進行認真、仔從實際出發(fā),進行認真、仔細的分析。細的分析。 有些(子)系統(tǒng)可能沒有加工,此時不要硬性劃分三有些(子)系統(tǒng)可能沒有加工,此時不要硬性劃分三部分,應如實畫出。部分,應如實畫出。 除傳入部分外,在變換中心甚至傳出部分也可能從系除傳入部分外,在變換中心甚至傳出部分也可能從系統(tǒng)外部接收某些數(shù)據(jù)流,稱二次傳入數(shù)據(jù)。在劃分時應依統(tǒng)外部接收某些數(shù)據(jù)流,稱二次傳入數(shù)據(jù)。在劃分時應依據(jù)實際情況,不應強制劃入傳入部分。據(jù)實際情況,不應強制劃入傳入

35、部分。5.面向數(shù)據(jù)流的設計方法面向數(shù)據(jù)流的設計方法 一般問題的第一級分一般問題的第一級分解方法:解方法:數(shù)字儀表板控制數(shù)字儀表板控制數(shù)據(jù)轉(zhuǎn)換控制數(shù)據(jù)轉(zhuǎn)換控制驅(qū)動儀表板驅(qū)動儀表板接收傳感器信號接收傳感器信號MTIO 完成完成“第一級分解第一級分解” 對應例子第一級分解為:對應例子第一級分解為: 依據(jù)變換依據(jù)變換DFD畫出軟件畫出軟件結(jié)構(gòu)的頂層和第一層模塊。結(jié)構(gòu)的頂層和第一層模塊。5.面向數(shù)據(jù)流的設計方法面向數(shù)據(jù)流的設計方法ADCBMICBDA T:每個處理直接對應一:每個處理直接對應一個下層模塊。個下層模塊。 I:由邊界沿輸入路徑回:由邊界沿輸入路徑回溯,將每個遇到的處理映溯,將每個遇到的處理映

36、射成相應層的模塊。射成相應層的模塊。 O:由邊界沿輸出路徑向:由邊界沿輸出路徑向外,將每個遇到的處理映外,將每個遇到的處理映射成相應層的模塊。射成相應層的模塊。 完成完成“第二級分解第二級分解”5.面向數(shù)據(jù)流的設計方法面向數(shù)據(jù)流的設計方法對例子(與對例子(與P.108 圖圖5.12 對照):對照): 數(shù)字儀表板數(shù)字儀表板控制控制數(shù)據(jù)轉(zhuǎn)換數(shù)據(jù)轉(zhuǎn)換控制控制驅(qū)動儀表板驅(qū)動儀表板接收傳感器接收傳感器信號信號計算計算gph讀燃料流讀燃料流轉(zhuǎn)換成轉(zhuǎn)換成rpm收集收集sps讀旋轉(zhuǎn)信號讀旋轉(zhuǎn)信號確定確定加加/ /減速減速計算計算mph計算計算mpg計算計算里程里程加加/ /減速減速顯示顯示顯示顯示mpg顯示顯示mph顯示顯示里程里程發(fā)出發(fā)出鈴聲鈴聲發(fā)光二極管顯示發(fā)光二極管顯示5.面向數(shù)據(jù)流的設計方法面向數(shù)據(jù)流的設計方法例如例如P.111 圖圖5.19精化后的數(shù)字儀表板系統(tǒng)的軟件結(jié)構(gòu)。精化后的數(shù)字儀表板系統(tǒng)的軟件結(jié)構(gòu)。注注: 分解不一定使用一一映射,要根據(jù)

溫馨提示

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

評論

0/150

提交評論