




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、軟件工程軟件工程第第4 4章章 結構化設計結構化設計總體設計總體設計劉志剛劉志剛 Netscape公司的故事公司的故事 Netscape公司的倒閉是一個值得深思的故事公司的倒閉是一個值得深思的故事 最初最初Illinois大學的大學的NCSA Mosaic小組開發(fā)了第一小組開發(fā)了第一個廣泛使用的瀏覽器。他們創(chuàng)建個廣泛使用的瀏覽器。他們創(chuàng)建Netscape公司,公司,在在1994年年4月到月到12月之間發(fā)行了月之間發(fā)行了Netscape1.0,它可以在它可以在3個平臺上運行,很快就成為了個平臺上運行,很快就成為了Windows、Unix和和Mac上的占有統(tǒng)治地位的瀏覽器上的占有統(tǒng)治地位的瀏覽器。
2、 Microsoft公司于公司于1994年年10月開始開發(fā)月開始開發(fā)Internet Explorer1.0,并在,并在1995年綁定在年綁定在Windows 95上上。 Netscape公司的倒閉是一個值得深思的故事公司的倒閉是一個值得深思的故事 從從1995年到年到1997年,在年,在Netscape公司的快速發(fā)公司的快速發(fā)展期間,展期間,開發(fā)者努力工作來產生新的特點開發(fā)者努力工作來產生新的特點,而,而很很少花時間進行設計。少花時間進行設計。 Microsoft公司意識到了需要建立可靠的設計公司意識到了需要建立可靠的設計,它,它使用共享組件使用共享組件重構重構Office套裝,建立了套裝,
3、建立了NT操作系操作系統(tǒng)統(tǒng), 并并花費了時間來花費了時間來重構重構IE3.0。拉近了與。拉近了與Netscape的差距。的差距。 Netscape的開發(fā)在繼續(xù),已有的開發(fā)在繼續(xù),已有120個開發(fā)者(從個開發(fā)者(從最初的最初的10個)和個)和3百萬行代碼百萬行代碼。 Netscape公司的倒閉是一個值得深思的故事公司的倒閉是一個值得深思的故事 1997年年Netscape公司內部關于公司內部關于模塊設計模塊設計的爭論的爭論 Netscape用了用了2個月來重新設計瀏覽器個月來重新設計瀏覽器,但是這,但是這還不夠長。還不夠長。 最后,最后,Microsoft贏得了瀏覽器的戰(zhàn)爭,贏得了瀏覽器的戰(zhàn)爭,
4、AOL收購收購了了Netscape。4.1 總體設計概述總體設計概述 需求分析階段需求分析階段 弄清用戶的需求,弄清用戶的需求,解決解決“做什么做什么”的問題的問題。需求需求分析階段得出的分析階段得出的DFD圖,數(shù)據(jù)字典圖,數(shù)據(jù)字典DD等等。 設計階段設計階段 解決解決“怎么做怎么做”的問題的問題 軟件系統(tǒng)設計是開發(fā)者之間的軟件系統(tǒng)設計是開發(fā)者之間的分工和合作的基礎分工和合作的基礎 設計方案是設計方案是決定系統(tǒng)質量決定系統(tǒng)質量的主要因素的主要因素 設計方案可以借鑒成熟的設計經驗設計方案可以借鑒成熟的設計經驗 設計方案完成后需要經過質量分析和評審設計方案完成后需要經過質量分析和評審 好的設計方案
5、不僅能很好地好的設計方案不僅能很好地支持當前需求支持當前需求的實現(xiàn),的實現(xiàn),而且能而且能減小未來的系統(tǒng)維護減小未來的系統(tǒng)維護成本。成本。問題定義問題定義可行性研究可行性研究可行否?可行否?否否是是需求分析需求分析終止項目終止項目概要設計概要設計計劃計劃時期時期開發(fā)開發(fā)時期時期 主要內容主要內容 4.1 總體設計概述總體設計概述 4.2 軟件設計的基本原則軟件設計的基本原則 4.3 總體設計圖形總體設計圖形工具工具 4.3.1 結構圖結構圖 4.3.2 層次圖和層次圖和HIPO圖圖 4.4 面向數(shù)據(jù)流的設計面向數(shù)據(jù)流的設計開發(fā)開發(fā)時期時期維護維護時期時期定義定義時期時期(軟件開發(fā)任務書軟件開發(fā)任
6、務書)(可行性研究報告可行性研究報告)(測試報告測試報告)(程序程序)(總體設計文檔總體設計文檔)(需求規(guī)格說明書需求規(guī)格說明書)(詳細設計文檔詳細設計文檔) 設計階段設計階段 結構化設計(結構化設計(Structured Design,SD)分為)分為總總體設計體設計(也稱概要設計)和(也稱概要設計)和詳細設計詳細設計(也稱程序(也稱程序設計)兩個階段。設計)兩個階段。 總體設計階段總體設計階段:著重解決實現(xiàn)需求的:著重解決實現(xiàn)需求的程序模塊設程序模塊設計問題計問題。如系統(tǒng)分成若干個模塊、確定模塊的接。如系統(tǒng)分成若干個模塊、確定模塊的接口(即模塊間相互關系)、模塊間傳遞的信息??冢茨K間相
7、互關系)、模塊間傳遞的信息。 詳細設計階段詳細設計階段:確定:確定每個模塊內部的具體算法每個模塊內部的具體算法。 總體設計方法總體設計方法 結構化設計(結構化設計(SD)方法:以)方法:以數(shù)據(jù)流圖數(shù)據(jù)流圖為基礎構造為基礎構造模塊結構;模塊結構; Jackson方法:以數(shù)據(jù)結構為基礎構造模塊結構方法:以數(shù)據(jù)結構為基礎構造模塊結構 Parans方法:以信息隱蔽為原則構造模塊結構方法:以信息隱蔽為原則構造模塊結構4.2 總體設計的原則和概念總體設計的原則和概念 4.2.1 模塊化模塊化 4.2.2 抽象和逐步求精抽象和逐步求精 4.2.3 信息隱藏信息隱藏 4.2.4 模塊獨立模塊獨立 4.2.5
8、啟發(fā)式規(guī)則啟發(fā)式規(guī)則4.2.1 模塊化模塊化 模塊化模塊化 (1)模塊的定義)模塊的定義:模塊是相對獨立的程序體:模塊是相對獨立的程序體 是數(shù)據(jù)說明、可執(zhí)行語句等程序對象的集合是數(shù)據(jù)說明、可執(zhí)行語句等程序對象的集合 單獨命名的,可以通過名字來訪問單獨命名的,可以通過名字來訪問 例如:類、過程、函數(shù)、子程序、宏等例如:類、過程、函數(shù)、子程序、宏等 (2)什么是模塊化)什么是模塊化:按照設計原則將系統(tǒng)按照設計原則將系統(tǒng)劃分為劃分為若干個較小的模塊若干個較小的模塊。每個模塊完成一個子功能,每個模塊完成一個子功能,把這些模塊把這些模塊集成起來構成一個整體集成起來構成一個整體,可以完成指,可以完成指定的
9、功能滿足用戶的需求。定的功能滿足用戶的需求。 相互獨立但又相互關聯(lián)相互獨立但又相互關聯(lián) 實際上是系統(tǒng)分解和抽象的過程實際上是系統(tǒng)分解和抽象的過程 模塊化模塊化 (3)為什么要模塊化)為什么要模塊化 是從是從邏輯模型邏輯模型向是實際的計算機向是實際的計算機物理模型物理模型轉化的轉化的第一步。模塊劃分好壞影響軟件第一步。模塊劃分好壞影響軟件系統(tǒng)性能系統(tǒng)性能的優(yōu)劣。的優(yōu)劣。 系統(tǒng)性能的衡量標準系統(tǒng)性能的衡量標準 系統(tǒng)效率、系統(tǒng)工作質量系統(tǒng)效率、系統(tǒng)工作質量、系統(tǒng)可靠性和系統(tǒng)可維護性系統(tǒng)可靠性和系統(tǒng)可維護性 可維護性是重要的指標,其他的指標都可以通過可維護可維護性是重要的指標,其他的指標都可以通過可維
10、護性來修正,而模塊的劃分對于該指標是至關重要的。性來修正,而模塊的劃分對于該指標是至關重要的。 模塊化模塊化 (3)為什么要模塊化)為什么要模塊化 目標:提高系統(tǒng)的可維護性;目標:提高系統(tǒng)的可維護性; 原則:為使得系統(tǒng)易于修改,要求模塊的原則:為使得系統(tǒng)易于修改,要求模塊的內部聯(lián)內部聯(lián)系盡可能強系盡可能強,模塊間的,模塊間的外部聯(lián)系盡可能弱外部聯(lián)系盡可能弱,盡可,盡可能提高能提高模塊的相對獨立性模塊的相對獨立性。 效果:對其中某一個模塊作修改時,造成的影響效果:對其中某一個模塊作修改時,造成的影響只局限在本模塊范圍內,而不至于影響整個系統(tǒng)。只局限在本模塊范圍內,而不至于影響整個系統(tǒng)。C(x):
11、問題:問題x的復雜性的復雜性E(x):解決問題:解決問題x所需工作量所需工作量對于兩個問題對于兩個問題p1 和和p2:1) 如果如果C(p1)C(p2) 那么那么 E(p1)E(p2)問題越復雜解決問題所需要的花費更多問題越復雜解決問題所需要的花費更多2) C(p1+p2)C(p1)+C(p2)因此因此E(p1p2)E(p1)+E(p2)將復雜問題分解成可以多個子問題分別解將復雜問題分解成可以多個子問題分別解決會更加容易決會更加容易(模塊化思想的依據(jù)模塊化思想的依據(jù)) 模塊化模塊化 通過模塊化降低開發(fā)復雜度通過模塊化降低開發(fā)復雜度 模塊化模塊化 【模塊化案例】智能灌溉【模塊化案例】智能灌溉 總
12、體設計:將系統(tǒng)劃分為總體設計:將系統(tǒng)劃分為傳感器傳感器、灌溉決策灌溉決策和和灌溉設備控制灌溉設備控制三個模塊,定義好相互之間三個模塊,定義好相互之間的數(shù)據(jù)和控制接口的數(shù)據(jù)和控制接口 傳感器模塊:接受傳感器收集的溫度、濕度、土壤傳感器模塊:接受傳感器收集的溫度、濕度、土壤等各種數(shù)據(jù)等各種數(shù)據(jù) 灌溉決策:根據(jù)種植經驗和收集到的數(shù)據(jù)判斷灌溉灌溉決策:根據(jù)種植經驗和收集到的數(shù)據(jù)判斷灌溉決策決策 灌溉設備控制:根據(jù)決策控制灌溉設備進行灌溉灌溉設備控制:根據(jù)決策控制灌溉設備進行灌溉降低整體復雜度:可以分而治之而且降低整體復雜度:可以分而治之而且可以由具備不同專業(yè)知識的開發(fā)者分別承擔可以由具備不同專業(yè)知識的
13、開發(fā)者分別承擔 模塊化模塊化 誤區(qū):無限制地進行模塊劃分誤區(qū):無限制地進行模塊劃分?如果我們無限制地如果我們無限制地劃分軟件,開發(fā)它所需的工作量會變得小到可以劃分軟件,開發(fā)它所需的工作量會變得小到可以忽略忽略? 結論:結論:NO。因為開發(fā)工作量有很大一部分來自于。因為開發(fā)工作量有很大一部分來自于模塊間的接口和集成模塊間的接口和集成 除了技術上的接口和集成,還包括除了技術上的接口和集成,還包括人與人之間的溝通人與人之間的溝通 集成和溝通的開銷到了一定程度就會成為開發(fā)工作量的集成和溝通的開銷到了一定程度就會成為開發(fā)工作量的主要部分主要部分 模塊化模塊化 結論:適度的模塊化結論:適度的模塊化 模塊數(shù)
14、增加時,模塊間的關系也隨之增加,接口模塊數(shù)增加時,模塊間的關系也隨之增加,接口和集成的工作量也隨之增加和集成的工作量也隨之增加 方法:尋找最佳模塊化程度平衡點方法:尋找最佳模塊化程度平衡點4.2.2 抽象和逐步求精抽象和逐步求精 抽象和逐步求精抽象和逐步求精 抽象:考慮高層問題時忽略低層細節(jié)抽象:考慮高層問題時忽略低層細節(jié) 逐步求精:不斷接近問題的完整解逐步求精:不斷接近問題的完整解 抽象與逐步求精具有互補性抽象與逐步求精具有互補性把大象放進冰箱需要幾步?把大象放進冰箱需要幾步? 抽象抽象 控制復雜性的基本策略控制復雜性的基本策略 抽象過程抽象過程:從特殊到一般的過程從特殊到一般的過程,上層概
15、念是下,上層概念是下層概念的抽象,下層概念是上層概念的精化和細層概念的抽象,下層概念是上層概念的精化和細化化 軟件開發(fā)過程的每一步都是對較高一級抽象的解軟件開發(fā)過程的每一步都是對較高一級抽象的解作一次具體化的描述作一次具體化的描述 逐步求精逐步求精 把問題的求解過程把問題的求解過程分解成若干步驟或階段分解成若干步驟或階段,每步每步都比上步更精化都比上步更精化,更接近問題的解法,更接近問題的解法 常與常與分層抽象分層抽象的思想相結合的思想相結合 抽象抽象 Vs. 逐步求精逐步求精 抽象抽象使得設計者能夠描述過程和數(shù)據(jù)而忽略低使得設計者能夠描述過程和數(shù)據(jù)而忽略低層的細節(jié)層的細節(jié) 求精求精有助于設計
16、者在設計過程中揭示低層的細有助于設計者在設計過程中揭示低層的細節(jié)節(jié) 高層抽象將在下層不斷精化,最終得到軟件實高層抽象將在下層不斷精化,最終得到軟件實現(xiàn)現(xiàn)抽象抽象1 CAD1 CAD圖形軟件圖形軟件抽象抽象2 CAD2 CAD圖形軟件圖形軟件用戶界用戶界面任務面任務創(chuàng)建二創(chuàng)建二維圖形維圖形顯示圖顯示圖形任務形任務管理圖管理圖形文件形文件模塊化模塊化抽象抽象抽象抽象3 3 創(chuàng)建二維圖形任務創(chuàng)建二維圖形任務畫線畫線任務任務畫圓畫圓任務任務模塊化模塊化逐步求精逐步求精4.2.3 信息隱藏信息隱藏 信息隱蔽信息隱蔽 對其它模塊隱藏內部對其它模塊隱藏內部細節(jié)。細節(jié)。注意:注意:不是隱藏一切不是隱藏一切信息
17、,是實現(xiàn)細節(jié)信息,是實現(xiàn)細節(jié)。 模塊內部的數(shù)據(jù)和過程不允許其它不需要這些信模塊內部的數(shù)據(jù)和過程不允許其它不需要這些信息的模塊使用息的模塊使用 定義和實施對模塊的過程細節(jié)和局部數(shù)據(jù)結構的定義和實施對模塊的過程細節(jié)和局部數(shù)據(jù)結構的存取限制存取限制 典型的信息隱藏:面向對象的訪問控制符典型的信息隱藏:面向對象的訪問控制符優(yōu)點優(yōu)點:減小模塊之間聯(lián)系的復雜度,并且修改軟減小模塊之間聯(lián)系的復雜度,并且修改軟件時影響面小件時影響面小 信息隱藏是實現(xiàn)抽象信息隱藏是實現(xiàn)抽象/模塊化機制的基本支撐模塊化機制的基本支撐4.2.4 模塊獨立模塊獨立 1、模塊獨立的定義、模塊獨立的定義 開發(fā)具有獨立功能而且和其他模塊之
18、間沒有過多開發(fā)具有獨立功能而且和其他模塊之間沒有過多的相互作用的模塊,就可以做到模塊獨立。的相互作用的模塊,就可以做到模塊獨立。 2、模塊獨立的重要性、模塊獨立的重要性 3、模塊獨立的定性度量標準、模塊獨立的定性度量標準 2、模塊獨立的重要性、模塊獨立的重要性 模塊化模塊化 (3)為什么要模塊化)為什么要模塊化 目標:提高系統(tǒng)的可維護性;目標:提高系統(tǒng)的可維護性; 原則:為使得系統(tǒng)易于修改,要求模塊的原則:為使得系統(tǒng)易于修改,要求模塊的內部聯(lián)內部聯(lián)系盡可能強系盡可能強,模塊間的,模塊間的外部聯(lián)系盡可能弱外部聯(lián)系盡可能弱,盡可,盡可能提高能提高模塊的相對獨立性模塊的相對獨立性。 效果:對其中某一
19、個模塊作修改時,造成的影響效果:對其中某一個模塊作修改時,造成的影響只局限在本模塊范圍內,而不至于影響整個系統(tǒng)。只局限在本模塊范圍內,而不至于影響整個系統(tǒng)。 2、模塊獨立的重要性、模塊獨立的重要性 (1)模塊獨立是模塊化的根本要求)模塊獨立是模塊化的根本要求 (2)模塊的開發(fā)者專注于某一個相對獨立的部分,)模塊的開發(fā)者專注于某一個相對獨立的部分,不用過多關心其他模塊不用過多關心其他模塊 (3)單個模塊更容易復用)單個模塊更容易復用 (4)獨立的模塊更易于維護和測試,修改和)獨立的模塊更易于維護和測試,修改和bug影響的范圍被局部化影響的范圍被局部化 3 3、模塊獨立的定性度量標準、模塊獨立的定
20、性度量標準 (1)內聚)內聚:一個模塊內部各個元素彼此結合的緊:一個模塊內部各個元素彼此結合的緊密程度密程度盡量高盡量高 (2)耦合)耦合:模塊之間相互關聯(lián)的程度:模塊之間相互關聯(lián)的程度盡量低盡量低獨立性較強的模塊應該是獨立性較強的模塊應該是高內聚低耦合高內聚低耦合的模塊。的模塊。4.2.4 模塊獨立模塊獨立 【耦合的種類【耦合的種類】 數(shù)據(jù)耦合數(shù)據(jù)耦合 特征耦合特征耦合 控制耦合控制耦合 公共耦合公共耦合 內容耦合內容耦合 1、數(shù)據(jù)耦合、數(shù)據(jù)耦合 如果一個模塊訪問另一個模塊時,彼此之間通過如果一個模塊訪問另一個模塊時,彼此之間通過數(shù)據(jù)參數(shù)數(shù)據(jù)參數(shù)(不是控制參數(shù)、公共數(shù)據(jù)結構或外部變不是控制參
21、數(shù)、公共數(shù)據(jù)結構或外部變量量)來交換輸入、輸出信息,則稱這種耦合為來交換輸入、輸出信息,則稱這種耦合為數(shù)據(jù)數(shù)據(jù)耦合耦合。這是模塊之間影響最小的耦合關系這是模塊之間影響最小的耦合關系。發(fā)貨發(fā)貨計算金額計算金額總金額總金額單價單價數(shù)量數(shù)量計算水費和電費計算水費和電費計算水費計算水費計算電費計算電費水費水費電費電費本月用水量本月用水量本月用電量本月用電量 2、特征耦合、特征耦合 一組模塊通過某一一組模塊通過某一數(shù)據(jù)結構數(shù)據(jù)結構來傳遞來傳遞記錄信息記錄信息,而,而不是簡單變量不是簡單變量。這種耦合稱為。這種耦合稱為特征耦合特征耦合。 計算水費和電費計算水費和電費計算水費計算水費計算電費計算電費住戶詳情
22、住戶詳情水費水費住戶詳情住戶詳情電費電費住戶詳情住戶詳情=用水量用水量+用電量用電量+租房開始日期租房開始日期+租期租期特征耦合的耦合強度顯然比數(shù)據(jù)耦合要高。特征耦合的耦合強度顯然比數(shù)據(jù)耦合要高。不僅在模塊間傳遞的數(shù)據(jù)量增加了,而且當不僅在模塊間傳遞的數(shù)據(jù)量增加了,而且當“住戶詳情住戶詳情”的數(shù)據(jù)的數(shù)據(jù)結構發(fā)生變化時,圖中的兩個模塊都要發(fā)生變化。結構發(fā)生變化時,圖中的兩個模塊都要發(fā)生變化。 3、控制耦合、控制耦合 如果如果模塊模塊A向模塊向模塊B所傳遞的信號控制了模塊所傳遞的信號控制了模塊B的內的內部邏輯部邏輯,模塊,模塊B對控制信號進行判斷,選擇不同的對控制信號進行判斷,選擇不同的邏輯結構,
23、那么邏輯結構,那么A和和B之間的耦合稱為控制耦合。之間的耦合稱為控制耦合。A A計算平均分或最分計算平均分或最分 B B平均平均/ /最高最高( (控制信號控制信號) )成績成績此時。此時。模塊間傳遞的信息不是一般的數(shù)據(jù),而是控制信號模塊間傳遞的信息不是一般的數(shù)據(jù),而是控制信號。因為控制模塊必須知道被控制模塊的內部邏輯,從而增強了模塊因為控制模塊必須知道被控制模塊的內部邏輯,從而增強了模塊間的相互依賴??刂岂詈鲜侵械葟姸鹊鸟詈稀ig的相互依賴??刂岂詈鲜侵械葟姸鹊鸟詈?。 3、控制耦合、控制耦合 控制耦合增加了理解和編程的復雜性,調用模塊控制耦合增加了理解和編程的復雜性,調用模塊必須知道被調模塊的
24、內部邏輯,增加了相互依賴。必須知道被調模塊的內部邏輯,增加了相互依賴。 去除模塊間控制耦合的方法去除模塊間控制耦合的方法 (1)將將被調用模塊被調用模塊內的內的判定上移判定上移到調用模塊進行到調用模塊進行 (2)被被被調用模塊分解被調用模塊分解成若干單一功能模塊成若干單一功能模塊 3、控制耦合、控制耦合 解決方法:改控制耦合為數(shù)據(jù)耦合舉例解決方法:改控制耦合為數(shù)據(jù)耦合舉例A A計算平均分計算平均分B1B1平均成績平均成績最高成績最高成績計算最高分計算最高分B2B2 4、公共耦合、公共耦合 如果兩個或如果兩個或多個模塊多個模塊都和都和同一個公共數(shù)據(jù)域同一個公共數(shù)據(jù)域有關,有關,則稱為公共耦合。則
25、稱為公共耦合。 公共數(shù)據(jù)域公共數(shù)據(jù)域:全程變量、共享的通信區(qū)、內存的:全程變量、共享的通信區(qū)、內存的公共覆蓋區(qū)、任何存儲介質上的文件、物理設備公共覆蓋區(qū)、任何存儲介質上的文件、物理設備等。等。AB公共數(shù)據(jù)公共數(shù)據(jù)AB公共數(shù)據(jù)公共數(shù)據(jù)緊密公共耦合緊密公共耦合AB公共數(shù)據(jù)公共數(shù)據(jù)CDEF不良公共耦合不良公共耦合松散公共耦合松散公共耦合 5、內容耦合、內容耦合 如果一個模塊和另一個模塊的內部屬性(即運行如果一個模塊和另一個模塊的內部屬性(即運行程序和內部數(shù)據(jù))有關,則稱為內容耦合。程序和內部數(shù)據(jù))有關,則稱為內容耦合。 舉例:一個模塊訪問另一個模塊的內部數(shù)據(jù)舉例:一個模塊訪問另一個模塊的內部數(shù)據(jù)病態(tài)
26、耦合關系病態(tài)耦合關系4.2.4 模塊獨立模塊獨立 總結總結設計模塊時,設計模塊時,盡量使用盡量使用數(shù)據(jù)耦合,數(shù)據(jù)耦合,少用少用特征耦合與控制耦合,特征耦合與控制耦合,限制限制使用公共耦合,完全使用公共耦合,完全不用不用內容耦合內容耦合。模塊間的耦合度就是模塊間的依賴性。耦合越高,維護成本越模塊間的耦合度就是模塊間的依賴性。耦合越高,維護成本越高。因此模塊設計應使模塊間的耦合最小。高。因此模塊設計應使模塊間的耦合最小。 數(shù)據(jù)耦合數(shù)據(jù)耦合特征耦合特征耦合控制耦合控制耦合公共耦合公共耦合內容耦合內容耦合耦合度耦合度低低高高4.2.4 模塊獨立模塊獨立 內聚內聚 定義:模塊的內聚是指一個模塊內部的各個
27、組成定義:模塊的內聚是指一個模塊內部的各個組成部分的部分的緊湊性緊湊性,其處理動作的,其處理動作的組合強度組合強度。 內聚的種類(只介紹幾種)內聚的種類(只介紹幾種) 功能內聚功能內聚 順序內聚順序內聚 通訊內聚通訊內聚 過程內聚過程內聚 時間內聚時間內聚 邏輯內聚邏輯內聚 偶然內聚偶然內聚int max(x,y) int x,y; int z; z=xy?x:y; return(z); 判斷一個模塊是不是功判斷一個模塊是不是功能內聚,只要看這個模能內聚,只要看這個模塊是塊是“做什么做什么”,是完,是完成成一個一個具體的任務,還具體的任務,還是完成是完成多任務多任務。 A、功能功能內聚內聚 如
28、果一個模塊內部的各組成部分的處理動作全都如果一個模塊內部的各組成部分的處理動作全都為執(zhí)行為執(zhí)行同一個功能同一個功能而存在,并且只執(zhí)行一個功能,而存在,并且只執(zhí)行一個功能,則稱為功能內聚。例如:按雇員生日計算年齡則稱為功能內聚。例如:按雇員生日計算年齡計算年齡計算年齡輸出輸出年齡年齡雇員生日 B、通訊內聚通訊內聚 如果一個模塊內各組成部分的處理動作都使用如果一個模塊內各組成部分的處理動作都使用相相同的輸入數(shù)據(jù)同的輸入數(shù)據(jù)或產生或產生相同的輸出數(shù)據(jù)相同的輸出數(shù)據(jù),稱為通訊,稱為通訊內聚內聚。計算年齡計算年齡輸出輸出年齡年齡計算工資計算工資輸出輸出工資工資雇員生日雇員生日 C、邏輯內聚、邏輯內聚 如
29、果一個模塊是把如果一個模塊是把幾幾種相關的功能種相關的功能組合在組合在一起,每次調用時,一起,每次調用時,由傳送給模塊的由傳送給模塊的判定判定參數(shù)來確定該模塊應參數(shù)來確定該模塊應該該執(zhí)行哪一種功能執(zhí)行哪一種功能,則稱為邏輯內聚。則稱為邏輯內聚。 D、偶然內聚偶然內聚 如果一個模塊的內部如果一個模塊的內部各組成部分的處理動各組成部分的處理動作彼此作彼此沒有任何聯(lián)系沒有任何聯(lián)系,或者即使有聯(lián)系,這或者即使有聯(lián)系,這種聯(lián)系也很松散種聯(lián)系也很松散4.2.4 模塊獨立模塊獨立結論:結論:盡量采用功能內聚,避免邏輯和耦然內聚盡量采用功能內聚,避免邏輯和耦然內聚偶然內聚偶然內聚邏輯內聚邏輯內聚通信內聚通信內
30、聚功能內聚功能內聚一個模塊一個功能是軟件設計人員模塊化設計的一條準則一個模塊一個功能是軟件設計人員模塊化設計的一條準則內聚程度內聚程度弱弱高高4.2.4 模塊獨立模塊獨立 小結:設計原則設計原則:力爭做到:力爭做到高內聚高內聚,低耦合低耦合耦合與內聚的衡量:耦合與內聚的衡量:內聚度高,耦合弱內聚度高,耦合弱,標志著模塊的標志著模塊的獨立性強獨立性強;4.2.5 啟發(fā)式規(guī)則啟發(fā)式規(guī)則 1 1、模塊的分解、模塊的分解 為什么要分解?為什么要分解?分解是指把一個模塊分解成若干分解是指把一個模塊分解成若干個從屬于它的下層模塊。個從屬于它的下層模塊。當模塊過大時就應分解當模塊過大時就應分解 如何分解?如
31、何分解?一般按功能分解一般按功能分解,分解到成為一個小,分解到成為一個小的功能單一的模塊為止。一般一個模塊內包含的的功能單一的模塊為止。一般一個模塊內包含的語句在語句在30-5030-50條左右較好。條左右較好。不要過大,也不要過小不要過大,也不要過小。 分解后不應該降低模塊的獨立性分解后不應該降低模塊的獨立性。 2、深度、寬度、扇出和扇入都應適當、深度、寬度、扇出和扇入都應適當ABCDFELKJSRIPONQTHGM深度深度寬度寬度扇出扇出扇入扇入 2、深度、寬度、扇出和扇入都應適當、深度、寬度、扇出和扇入都應適當 深度深度:表示軟件結構中控制的:表示軟件結構中控制的層數(shù)層數(shù),粗略的標志,粗
32、略的標志一個系統(tǒng)的大小和復雜程度。一個系統(tǒng)的大小和復雜程度。 寬度寬度:軟件結構:軟件結構同一層次同一層次上的上的模塊總數(shù)的最大值模塊總數(shù)的最大值,寬度越大系統(tǒng)越復雜。寬度越大系統(tǒng)越復雜。 扇出扇出:一個模塊擁有的:一個模塊擁有的直屬下級模塊的個數(shù)直屬下級模塊的個數(shù),一,一般扇出數(shù)控制在般扇出數(shù)控制在7以內,平均為以內,平均為3或或4。例如模塊。例如模塊A、D的扇出為的扇出為3、2。 扇入扇入:一個模塊的:一個模塊的直接上級模塊的個數(shù)直接上級模塊的個數(shù)。例如模。例如模塊塊T的扇入為的扇入為4。 2、深度、寬度、扇出和扇入都應適當、深度、寬度、扇出和扇入都應適當 好的設計結構好的設計結構通常是通
33、常是頂層扇出比較高頂層扇出比較高,底層模塊底層模塊有高扇入有高扇入。 模塊的獨立性是貫穿始終的標準,不能為了追求模塊的獨立性是貫穿始終的標準,不能為了追求其它目標而違背獨立性標準。其它目標而違背獨立性標準。編外編外人員人員工資工資取得取得工資工資數(shù)據(jù)數(shù)據(jù) 計時計時工人工人工資工資計薪計薪工人工人工資工資編外編外人員人員稅款稅款編外編外人員人員扣款扣款常規(guī)常規(guī)扣款扣款稅收稅收扣款扣款計算實發(fā)工資計算實發(fā)工資改進方法:改進方法:(1 1)避免平鋪結構)避免平鋪結構(2)減少高扇出,增加中間層降低扇出,同時爭取高扇入)減少高扇出,增加中間層降低扇出,同時爭取高扇入(4)最終實現(xiàn)不同人員實發(fā)工資的計算
34、在不同模塊中完成,頂)最終實現(xiàn)不同人員實發(fā)工資的計算在不同模塊中完成,頂層模塊直接調用即可。層模塊直接調用即可。案例:不理想的模塊結構案例:不理想的模塊結構所有人員的工資的計算都在頂層模塊【計算實發(fā)工資】中完成,所有人員的工資的計算都在頂層模塊【計算實發(fā)工資】中完成,扇出過大,同時增加該模塊的復雜性。扇出過大,同時增加該模塊的復雜性。編外編外人員人員工資工資取得工取得工資數(shù)據(jù)資數(shù)據(jù) 計時計時制工制工資額資額薪金薪金制工制工資額資額編外編外人員人員稅款稅款編外編外人員人員扣款扣款常規(guī)常規(guī)扣款扣款稅收稅收扣款扣款計算實發(fā)工資計算實發(fā)工資計時工人計時工人實發(fā)工資實發(fā)工資計薪工人計薪工人實發(fā)工資實發(fā)工
35、資編外人員編外人員實發(fā)工資實發(fā)工資案例:理想的模塊結構案例:理想的模塊結構 3、力爭降低模塊接口的復雜程度、力爭降低模塊接口的復雜程度 模塊的接口要簡單、清晰及含義明確,便于理解,模塊的接口要簡單、清晰及含義明確,便于理解,易于實現(xiàn)、測試與維護。易于實現(xiàn)、測試與維護。 例如:一元二次方程:例如:一元二次方程:AX2 + BX + C = 0 定義接口如下:定義接口如下: ComputeEquation(TAB);其中,其中,TAB是數(shù)組是數(shù)組 修改為:修改為: ComputeEquation(A, B, C);4.3 總體設計圖形工具總體設計圖形工具 4.3.1 層次圖和層次圖和HIPO圖圖
36、4.3.2 結構圖結構圖(Structure Chart, SC)4.3.1 層次圖和層次圖和HIPO圖圖 1 1、層次圖、層次圖(H(H圖圖) )層次圖是軟件結構設計階段中的表達工具,它用層次圖是軟件結構設計階段中的表達工具,它用來描繪來描繪軟件的層次結構軟件的層次結構,也稱為,也稱為功能模塊圖功能模塊圖。每一個方框代表一個每一個方框代表一個模塊模塊方框間的方框間的連線表示模塊的調用關系連線表示模塊的調用關系銷售管理系統(tǒng)的功能模塊圖銷售管理系統(tǒng)的功能模塊圖銷售管理系統(tǒng)銷售管理系統(tǒng)訂貨處理訂貨處理進貨處理進貨處理銷售統(tǒng)計銷售統(tǒng)計缺貨處理缺貨處理輸入進貨單輸入進貨單增加庫存量增加庫存量讀進貨記錄
37、讀進貨記錄讀缺貨記錄讀缺貨記錄統(tǒng)計各項缺貨統(tǒng)計各項缺貨打印缺貨單打印缺貨單QQQQ軟件的層次圖軟件的層次圖 1 1、層次圖、層次圖(H(H圖圖) ) 層次圖層次圖的用處:在的用處:在自頂向下自頂向下設計軟件的過程中使設計軟件的過程中使用用 優(yōu)點優(yōu)點:簡單、易學易用:簡單、易學易用 缺點缺點:不能表示:不能表示選擇選擇和和循環(huán)循環(huán) 【學生練習【學生練習】 繪制出學生管理系統(tǒng)的層次圖繪制出學生管理系統(tǒng)的層次圖 2、IPO圖圖 表示輸入、加工處理與輸出的關系。表示輸入、加工處理與輸出的關系。主要的處理主要的處理輸出數(shù)據(jù)輸出數(shù)據(jù)1輸入數(shù)據(jù)輸入數(shù)據(jù)處理處理1處理處理2輸出數(shù)據(jù)輸出數(shù)據(jù)2處理框中列出處理的
38、次序暗示了執(zhí)行的順序處理框中列出處理的次序暗示了執(zhí)行的順序描述如何把輸入數(shù)據(jù)流描述如何把輸入數(shù)據(jù)流輸出數(shù)據(jù)流;輸出數(shù)據(jù)流;IPO圖圖 輸入輸入/處理處理/輸出圖輸出圖 【例【例】教務系統(tǒng)成績管理教務系統(tǒng)成績管理IPO圖。圖。統(tǒng)計報表統(tǒng)計報表統(tǒng)計要求統(tǒng)計要求統(tǒng)計成績統(tǒng)計成績成績計算成績計算查詢結果查詢結果課程成績課程成績查詢條件查詢條件成績查詢成績查詢輸入輸入處理處理輸出輸出成績記錄成績記錄 HIPO圖圖 Hierarchy plus Input Process Output IBM公司發(fā)明的公司發(fā)明的層次圖層次圖+輸入輸入/處理處理/輸出圖輸出圖的英文的英文縮寫??s寫。 每個模塊都加了每個模塊
39、都加了編號編號,帶編號的層次圖帶編號的層次圖(H圖圖) 和和H圖中圖中每個模塊每個模塊相對應,應該有一張相對應,應該有一張IPO圖圖描繪描繪這個方框代表的這個方框代表的模塊的處理過程模塊的處理過程。 在每張在每張IPO圖圖內都應該標出該模塊在內都應該標出該模塊在H圖中的編號圖中的編號,以便知道以便知道該模塊在軟件結構中的位置該模塊在軟件結構中的位置。HIPO圖是由一個帶編號的圖是由一個帶編號的H圖和一組模塊的圖和一組模塊的IPO圖組成圖組成 HIPO圖圖 案例:用案例:用HIPO圖描述教務管理系統(tǒng)圖描述教務管理系統(tǒng) (1)層次圖()層次圖(H圖)圖)教務管理系統(tǒng)教務管理系統(tǒng)3 3 錄入成績錄入
40、成績2 2 待錄成績單管理待錄成績單管理1 1 查詢查詢3.13.1導入導入課程課程成績成績3.23.2百分百分制成制成績錄績錄入入3.23.2等級等級制成制成績錄績錄入入2.12.1個別個別學生學生成績成績單單2.22.2成批成批學生學生成績成績單單1.11.1查詢查詢課程課程1.2 1.2 查詢查詢上課上課班級班級1.3 1.3 查詢查詢學生學生成績成績 HIPO圖圖 案例:用案例:用HIPO圖描述成績管理系統(tǒng)圖描述成績管理系統(tǒng) (2)其中,部分)其中,部分統(tǒng)計報表統(tǒng)計報表統(tǒng)計要求統(tǒng)計要求統(tǒng)計成績統(tǒng)計成績成績計算成績計算查詢結果查詢結果課程成績課程成績查詢條件查詢條件成績查詢成績查詢輸入輸
41、入處理處理輸出輸出成績記錄成績記錄CD/VCDCD/VCD管理系統(tǒng)管理系統(tǒng)會員管理會員管理1.01.0CD/VCDCD/VCD管理管理2.02.0費用管理費用管理3.03.0添加添加2.12.1更新更新2.22.2刪除刪除2.32.3檢索檢索2.42.4系統(tǒng)名系統(tǒng)名 CD/VCDCD/VCD管理系統(tǒng)管理系統(tǒng) 編號編號 2.0 2.0 日期日期 2010.3.28 2010.3.28 模塊名模塊名 CD/VCDCD/VCD管理管理 被調用:被調用:CD/VCDCD/VCD管理系統(tǒng)管理系統(tǒng)調用:添加、更新、刪除、檢索調用:添加、更新、刪除、檢索輸出:輸出:輸入:輸入:局部數(shù)據(jù)元素:局部數(shù)據(jù)元素:處
42、理:處理: H圖圖IPO表表4.3.2 結構圖結構圖 【結構圖【結構圖】 Software Chart, 簡稱簡稱SC圖圖 1974年年Yourdon提出提出 用來表示用來表示軟件層次結構軟件層次結構,描述模塊之間的,描述模塊之間的調用關調用關系系 既能表示既能表示數(shù)據(jù)信息數(shù)據(jù)信息、控制信息控制信息,也能表示,也能表示選擇調選擇調用和循環(huán)調用用和循環(huán)調用。 數(shù)據(jù)流圖數(shù)據(jù)流圖 Vs. 模塊結構圖模塊結構圖 數(shù)據(jù)流圖:數(shù)據(jù)流圖:系統(tǒng)的邏輯模型系統(tǒng)的邏輯模型,反映,反映信息在系統(tǒng)中信息在系統(tǒng)中流動情況流動情況。 結構圖:結構圖:系統(tǒng)的物理模型系統(tǒng)的物理模型,反映系統(tǒng)構成,反映系統(tǒng)構成模塊的模塊的層次
43、結構和功能關系層次結構和功能關系。 結構圖結構圖是數(shù)據(jù)流圖和是數(shù)據(jù)流圖和HIPO圖發(fā)展和延伸的結果圖發(fā)展和延伸的結果,表示了系統(tǒng)構成模塊以及模塊間的調用關系。表示了系統(tǒng)構成模塊以及模塊間的調用關系。 層次圖和層次圖和HIPO圖不能表示模塊間的調用關系。圖不能表示模塊間的調用關系。 【結構圖【結構圖】 基本符號基本符號 (1)模塊模塊 一個一個方框方框代表一個代表一個模塊模塊,框內注明模塊的,框內注明模塊的名稱名稱,名稱應表達此模塊的名稱應表達此模塊的功能功能; 最低層的模塊最低層的模塊叫叫基本模塊基本模塊或或功能模塊功能模塊,必須有,必須有明明確的含義確的含義。如。如“計算累加計算累加”、“求
44、平方根求平方根”、“按學號查詢按學號查詢”等。等。M 【結構圖【結構圖】 基本符號基本符號 (2)調用調用 調用是模塊之間的調用是模塊之間的唯一的聯(lián)系唯一的聯(lián)系方式。用方式。用直線直線表示表示模塊的模塊的調用關系調用關系。 只能是上層模塊調用下層模塊只能是上層模塊調用下層模塊,不允許下層模塊不允許下層模塊調用上層模塊調用上層模塊。通常。通常也不允許同層模塊之間調用也不允許同層模塊之間調用。 【結構圖【結構圖】 基本符號基本符號 (3)信息信息 模塊在調用過程中要互相傳送信息;結構圖用帶模塊在調用過程中要互相傳送信息;結構圖用帶注釋的小箭頭表示傳送的信息。有注釋的小箭頭表示傳送的信息。有2種類型
45、種類型 數(shù)據(jù)數(shù)據(jù)信息,尾部是空心圓信息,尾部是空心圓 控制控制信息,尾部是實心圓信息,尾部是實心圓 【結構圖【結構圖】 結構圖用三種主要成分結構圖用三種主要成分(模塊模塊、調用調用、信息信息)表示軟表示軟件系統(tǒng)的件系統(tǒng)的構成構成、模塊之間的、模塊之間的調用關系調用關系以及模塊之以及模塊之間的通信情況間的通信情況傳送的信息傳送的信息編輯學生記錄編輯學生記錄讀學生記錄讀學生記錄學生數(shù)據(jù)學生數(shù)據(jù)無此學生無此學生學號學號BCA簡單調用簡單調用選擇調用選擇調用循環(huán)調用循環(huán)調用 【結構圖【結構圖】 結構圖可以表示三種模塊調用關系,分別是結構圖可以表示三種模塊調用關系,分別是簡單簡單調用調用、選擇調用選擇調
46、用和和循環(huán)調用循環(huán)調用。判定為真時調用判定為真時調用A A,為假時調用,為假時調用B B模塊模塊M M循環(huán)調用模塊循環(huán)調用模塊A A、B B、C C 【結構圖【結構圖】 案例:用結構圖描述最佳解模塊的結構案例:用結構圖描述最佳解模塊的結構 層次圖層次圖 沒有過多的符號,清晰易讀,沒有過多的符號,清晰易讀,作為總體設計的文作為總體設計的文檔比較合適檔比較合適。 結構圖結構圖 能較好地反映軟件結構的能較好地反映軟件結構的控制關系控制關系,如:,如: 重復重復調用、選擇調用;調用、選擇調用; 傳遞是傳遞是數(shù)據(jù)數(shù)據(jù)還是還是控制控制信息,信息,有利于有利于評價軟件結構質量評價軟件結構質量。4.4 面向數(shù)
47、據(jù)流的設計方法面向數(shù)據(jù)流的設計方法 1、面向數(shù)據(jù)流的設計方法、面向數(shù)據(jù)流的設計方法 也稱為結構化設計方法(也稱為結構化設計方法(Structured Design ,簡簡稱稱SD),由于所有的設計都是從),由于所有的設計都是從DFD開始進行分開始進行分析設計。面向數(shù)據(jù)流的設計方法就是把析設計。面向數(shù)據(jù)流的設計方法就是把數(shù)據(jù)流數(shù)據(jù)流映映射成射成軟件結構軟件結構。 是基于是基于模塊化模塊化、自頂向下逐步求精自頂向下逐步求精、結構化程序結構化程序設計設計等基礎上發(fā)展起來的。等基礎上發(fā)展起來的。 2、面向數(shù)據(jù)流的設計要解決的任務、面向數(shù)據(jù)流的設計要解決的任務 在需求分析基礎上,將在需求分析基礎上,將數(shù)
48、據(jù)流圖數(shù)據(jù)流圖映射為映射為軟件系統(tǒng)軟件系統(tǒng)的結構的結構。即:把。即:把數(shù)據(jù)流圖數(shù)據(jù)流圖中的中的處理處理,轉換為,轉換為軟件軟件結構圖結構圖中合適的中合適的模塊模塊。映射映射DFD( (問題結構問題結構) )軟件結構軟件結構( (程序結構程序結構) )處理處理模塊模塊分析模型分析模型(邏輯模型(邏輯模型)從數(shù)據(jù)流圖導出結構圖從數(shù)據(jù)流圖導出結構圖 2、面向數(shù)據(jù)流的設計要解決的任務、面向數(shù)據(jù)流的設計要解決的任務 為什么把為什么把DFD轉換為軟件結構?轉換為軟件結構? 1) 雖然雖然DFD分析系統(tǒng)時很有價值分析系統(tǒng)時很有價值,但它但它不便于直接不便于直接用于編寫程序用于編寫程序;而軟件結構圖描述而軟件
49、結構圖描述模塊之間的模塊之間的調用調用關系關系,便于過渡到編寫程序便于過渡到編寫程序。 2) DFD中的中的處理處理和軟件結構中的和軟件結構中的模塊模塊有有對應關系對應關系,但但不一定有一一對應關系不一定有一一對應關系。 3、基本概念、基本概念 數(shù)據(jù)流的類型數(shù)據(jù)流的類型決定了決定了映射的方法映射的方法。數(shù)據(jù)流有。數(shù)據(jù)流有變換變換流流和和事務流事務流兩種。兩種。 因此,常見的因此,常見的軟件結構軟件結構有兩種:有兩種:變換型變換型和和事務型事務型,當然更一般的情況是當然更一般的情況是兩種類型的混合兩種類型的混合。 3、基本概念、基本概念 【變換流】特征【變換流】特征 (1)信息沿輸入通路進入系統(tǒng)
50、,同時由外部形式)信息沿輸入通路進入系統(tǒng),同時由外部形式變換成內部形式變換成內部形式 (2)進入系統(tǒng)的信息通過變換中心)進入系統(tǒng)的信息通過變換中心 (3)經過加工處理以后再沿輸出通路變換成外部)經過加工處理以后再沿輸出通路變換成外部形式離開軟件形式離開軟件 3、基本概念、基本概念 【事務流】特征【事務流】特征 (1)接收輸入數(shù)據(jù)(輸入數(shù)據(jù)又稱為事務)接收輸入數(shù)據(jù)(輸入數(shù)據(jù)又稱為事務) (2)分析每個事務確定它的類型)分析每個事務確定它的類型 (3)根據(jù)事務類型選?。└鶕?jù)事務類型選取一條活動通路一條活動通路。事務事務事務中心事務中心動作序列動作序列4.4.1 變換映射變換映射 4、【變換映射、【
51、變換映射】 定義:經過一系列設計步驟將具有變換流特點的定義:經過一系列設計步驟將具有變換流特點的數(shù)據(jù)流圖映射成軟件結構,也稱為變換分析。數(shù)據(jù)流圖映射成軟件結構,也稱為變換分析。 【變換映射的基本步驟【變換映射的基本步驟】 第第1步步 確定數(shù)據(jù)流圖類型確定數(shù)據(jù)流圖類型 第第2步步 確定輸入流和輸出流的邊界,從而孤立出確定輸入流和輸出流的邊界,從而孤立出變換中心。變換中心。 第第3步步 完成完成“第一級分解第一級分解” 第第4步步 完成完成“第二級分解第二級分解” 【案例】汽車數(shù)字儀表板控制系統(tǒng)【案例】汽車數(shù)字儀表板控制系統(tǒng) 功能:功能: (1) 模模/數(shù)數(shù)轉換:把傳感器讀出的轉換:把傳感器讀出的
52、車輪轉數(shù)信號車輪轉數(shù)信號和和燃料信號燃料信號(耗油量耗油量)轉換成轉換成數(shù)字量數(shù)字量 (2) 在發(fā)光二極管面板上在發(fā)光二極管面板上(各種儀表板各種儀表板)顯示數(shù)據(jù)顯示數(shù)據(jù) 指示指示每小時每小時公里數(shù)公里數(shù)、行駛、行駛里程里程、每升油行駛、每升油行駛公里數(shù)公里數(shù)等等 指示加速或減速;指示加速或減速; 超速警告超速警告:車速車速超過超過200公里公里/小時,發(fā)出超速警告鈴聲小時,發(fā)出超速警告鈴聲數(shù)字儀表板數(shù)字儀表板控制系統(tǒng)控制系統(tǒng)1.1.加加/ /勻勻/ /減速減速2.2.顯示里程顯示里程3.3.超速鈴聲超速鈴聲4.4.顯示公里顯示公里/ /小時小時mphmph5.5.顯示公里顯示公里/ /升升m
53、pgmpgA/DA/D轉換后轉換后I:I:旋轉信號旋轉信號( (車輪車輪) ): :燃料流傳感器信號燃料流傳感器信號 ( (耗油量耗油量) )儀表板頂層數(shù)據(jù)流圖儀表板頂層數(shù)據(jù)流圖輸入:輸入: 輸出:輸出:1 1、2 2、3 3、4 4輸入:輸入:+ + 輸出:輸出:5 5采集采集和求和求平均值平均值旋轉旋轉信號信號下箭頭下箭頭( (減速指示減速指示) )燃料流信號燃料流信號燃料流燃料流升升/ /小時小時鈴聲鈴聲超速值超速值公里公里/ /小時小時公里公里/ /升升公里公里/ /小時小時公里公里/ /升升確定加確定加速減速速減速轉換成轉換成轉轉/ /分分計算公里計算公里/ /小時小時和超速值和超速
54、值計算計算燃料消耗燃料消耗產生產生公里公里/ /升升顯示顯示讀、讀、校核校核計算每小時計算每小時消耗的燃油消耗的燃油計算計算里程里程產生產生里程里程顯示顯示發(fā)出發(fā)出鈴聲鈴聲產生產生公里公里/ /小時小時顯示顯示讀旋轉讀旋轉信號信號產生產生加加/ /減速減速顯示顯示轉數(shù)轉數(shù)/ /秒秒轉轉/ /分分rpmrpm轉轉/ /分分rpmrpm里程里程1 12 23 34 45 5水平線水平線( (勻速指示勻速指示) ) 轉數(shù)轉數(shù)/ /秒的平均值秒的平均值轉數(shù)轉數(shù)/ /秒的瞬時值秒的瞬時值上箭頭上箭頭( (加速指示加速指示) )公里公里/ /小時小時公里公里儀表板系統(tǒng)的數(shù)據(jù)流圖儀表板系統(tǒng)的數(shù)據(jù)流圖 第第1
55、步步 確定數(shù)據(jù)流圖類型確定數(shù)據(jù)流圖類型 即:具有變換特性還是事務特性即:具有變換特性還是事務特性,因類型不同因類型不同, 其其映射的方法不同映射的方法不同 1)當一個系統(tǒng))當一個系統(tǒng)沒有明顯的事務特性沒有明顯的事務特性時,可以認為時,可以認為是是變換流變換流。 2)應根據(jù))應根據(jù)數(shù)據(jù)流圖中數(shù)據(jù)流圖中占優(yōu)勢的占優(yōu)勢的屬性屬性,確定數(shù)據(jù)流,確定數(shù)據(jù)流的的全局特性全局特性。 3)有的可能)有的可能全局全局是變換流,而是變換流,而局部局部可能是事務流,可能是事務流,有的與此相反有的與此相反。 第第2步步 確定輸入流和輸出流的確定輸入流和輸出流的邊界邊界,從而孤立,從而孤立出變換中心。出變換中心。 變換
56、結構變換結構由由輸入輸入、輸出輸出和和變換中心變換中心3部分組成部分組成。 (1)邏輯輸入)邏輯輸入:是指離是指離輸入開始端最遠輸入開始端最遠,但仍可,但仍可以被看作以被看作系統(tǒng)輸入系統(tǒng)輸入的那些數(shù)據(jù)流。的那些數(shù)據(jù)流。 (2)邏輯輸出)邏輯輸出:是指離是指離輸出末端最遠輸出末端最遠,但仍可視,但仍可視為為系統(tǒng)輸出系統(tǒng)輸出的那些數(shù)據(jù)流。的那些數(shù)據(jù)流。 使用邏輯輸入和邏輯輸出的目的:就是要根據(jù)邏使用邏輯輸入和邏輯輸出的目的:就是要根據(jù)邏輯輸入、邏輯輸出輯輸入、邏輯輸出確定變換中心確定變換中心。因為變換中心。因為變換中心位于邏輯輸入和輸出中間,位于邏輯輸入和輸出中間, 確定邊界后用確定邊界后用虛線畫
57、邊界虛線畫邊界。 數(shù)字儀表板系統(tǒng)的數(shù)據(jù)流圖數(shù)字儀表板系統(tǒng)的數(shù)據(jù)流圖采集采集和求和求平均值平均值旋轉旋轉信號信號下箭頭下箭頭( (減速指示減速指示) )燃料流信號燃料流信號燃料流燃料流升升/ /小時小時鈴聲鈴聲超速值超速值公里公里/ /小時小時公里公里/ /升升公里公里/ /小時小時公里公里/ /升升確定加確定加速減速速減速轉換成轉換成轉轉/ /分分計算公里計算公里/ /小時小時和超速值和超速值計算計算燃料消耗燃料消耗產生產生公里公里/ /升升顯示顯示讀、讀、校核校核計算每小時計算每小時消耗的燃油消耗的燃油計算計算里程里程產生產生里程里程顯示顯示發(fā)出發(fā)出鈴聲鈴聲產生產生公里公里/ /小時小時顯示
58、顯示讀旋轉讀旋轉信號信號產生產生加加/ /減速減速顯示顯示轉數(shù)轉數(shù)/ /秒秒轉轉/ /分分rpmrpm轉轉/ /分分rpmrpm里程里程1 12 23 34 45 5水平線水平線( (勻速指示勻速指示) ) 轉數(shù)轉數(shù)/ /秒的平均值秒的平均值轉數(shù)轉數(shù)/ /秒的瞬時值秒的瞬時值上箭頭上箭頭( (加速指示加速指示) )公里公里/ /小時小時公里公里 第第3步步 完成完成“第一級分解第一級分解” 任務:畫任務:畫頂層頂層和和第一層第一層 頂層頂層:只含一個用于控制的:只含一個用于控制的主控模塊主控模塊。 第一層第一層:包括:包括輸入輸入模塊、模塊、變換變換模塊、模塊、輸出輸出模塊模塊數(shù)字儀表板系統(tǒng)的
59、第一級分解數(shù)字儀表板系統(tǒng)的第一級分解頂層頂層一層一層數(shù)字儀表數(shù)字儀表 板控制板控制接收傳感接收傳感 器信號器信號數(shù)據(jù)轉換數(shù)據(jù)轉換 控制控制驅動儀表驅動儀表 板輸出板輸出轉數(shù)轉數(shù)/ /秒的瞬時值秒的瞬時值加加/ /減速減速里程里程公里公里/ /小時小時公里公里/ /升,鈴聲升,鈴聲轉轉/ /分分升升/ /小時小時 第第4步步 完成完成“第二級分解第二級分解”。 所謂第二級分解就是把所謂第二級分解就是把DFD中的中的每個處理映射每個處理映射成成軟件結構中一個適當?shù)能浖Y構中一個適當?shù)哪K模塊。 以下圖為例說明完成第二級分解的方法以下圖為例說明完成第二級分解的方法ABCDEF輸入輸入 變換變換 輸出
60、輸出 第第4步步 完成完成“第二級分解第二級分解”。輸入模塊輸入模塊BA輸出模塊輸出模塊EF(1)輸入模塊:)輸入模塊:從從變換中心變換中心的的邊界邊界開始,沿著開始,沿著輸入輸入通路通路向外移動向外移動。從從最近開始最近開始,把輸入通路中,把輸入通路中每一個處理每一個處理轉換成結轉換成結構圖中輸入模塊控制下的一個低層模塊。構圖中輸入模塊控制下的一個低層模塊。(2)輸出模塊:)輸出模塊:從從變換中心變換中心的的邊界邊界開始,沿著開始,沿著輸出輸出通路通路向外移向外移動動,從,從最近開始最近開始,把輸出通路中,把輸出通路中每一個處理每一個處理轉轉換成結構圖中輸出模塊控制下的一個低層模塊。換成結構
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- Module 8 Sports Life Unit 1 教學設計 2024-2025學年外研版九年級英語上冊
- 副會長聘用合同范本
- 前置物業(yè)合同范本
- 勞務分包泥工合同范本
- 公墓bot項目合同范本
- gps銷售合同范本
- 2024年新疆格瑞汀新材料科技有限公司招聘考試真題
- 七人合同范本
- 勞務裝修合同范本
- 2024年黑龍江省選調考試真題
- 口腔正畸學單詞
- 2022牛排消費趨勢報告
- TPM╲t4Step Manul(三星TPM絕密資料)
- 細菌群體感應系統(tǒng)及其應用課件
- 司法鑒定程序通則(試行)
- 內襯修復用HTPO管材企標
- 部編教材一年級下冊生字筆順筆畫
- 通達信指標——江恩輪
- 二維火收銀使用手冊
- 神經電生理檢查ppt課件
- 管路滑脫風險評估表
評論
0/150
提交評論