東北石油大學(xué)-軟件工程-課件-CHAP04 結(jié)構(gòu)化設(shè)計(jì)_1 總體設(shè)計(jì)_第1頁
東北石油大學(xué)-軟件工程-課件-CHAP04 結(jié)構(gòu)化設(shè)計(jì)_1 總體設(shè)計(jì)_第2頁
東北石油大學(xué)-軟件工程-課件-CHAP04 結(jié)構(gòu)化設(shè)計(jì)_1 總體設(shè)計(jì)_第3頁
東北石油大學(xué)-軟件工程-課件-CHAP04 結(jié)構(gòu)化設(shè)計(jì)_1 總體設(shè)計(jì)_第4頁
東北石油大學(xué)-軟件工程-課件-CHAP04 結(jié)構(gòu)化設(shè)計(jì)_1 總體設(shè)計(jì)_第5頁
已閱讀5頁,還剩109頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、軟件工程軟件工程第第4 4章章 結(jié)構(gòu)化設(shè)計(jì)結(jié)構(gòu)化設(shè)計(jì)總體設(shè)計(jì)總體設(shè)計(jì)劉志剛劉志剛 Netscape公司的故事公司的故事 Netscape公司的倒閉是一個(gè)值得深思的故事公司的倒閉是一個(gè)值得深思的故事 最初最初Illinois大學(xué)的大學(xué)的NCSA Mosaic小組開發(fā)了第一小組開發(fā)了第一個(gè)廣泛使用的瀏覽器。他們創(chuàng)建個(gè)廣泛使用的瀏覽器。他們創(chuàng)建Netscape公司,公司,在在1994年年4月到月到12月之間發(fā)行了月之間發(fā)行了Netscape1.0,它可以在它可以在3個(gè)平臺(tái)上運(yùn)行,很快就成為了個(gè)平臺(tái)上運(yùn)行,很快就成為了Windows、Unix和和Mac上的占有統(tǒng)治地位的瀏覽器上的占有統(tǒng)治地位的瀏覽器。

2、 Microsoft公司于公司于1994年年10月開始開發(fā)月開始開發(fā)Internet Explorer1.0,并在,并在1995年綁定在年綁定在Windows 95上上。 Netscape公司的倒閉是一個(gè)值得深思的故事公司的倒閉是一個(gè)值得深思的故事 從從1995年到年到1997年,在年,在Netscape公司的快速發(fā)公司的快速發(fā)展期間,展期間,開發(fā)者努力工作來產(chǎn)生新的特點(diǎn)開發(fā)者努力工作來產(chǎn)生新的特點(diǎn),而,而很很少花時(shí)間進(jìn)行設(shè)計(jì)。少花時(shí)間進(jìn)行設(shè)計(jì)。 Microsoft公司意識(shí)到了需要建立可靠的設(shè)計(jì)公司意識(shí)到了需要建立可靠的設(shè)計(jì),它,它使用共享組件使用共享組件重構(gòu)重構(gòu)Office套裝,建立了套裝,

3、建立了NT操作系操作系統(tǒng)統(tǒng), 并并花費(fèi)了時(shí)間來花費(fèi)了時(shí)間來重構(gòu)重構(gòu)IE3.0。拉近了與。拉近了與Netscape的差距。的差距。 Netscape的開發(fā)在繼續(xù),已有的開發(fā)在繼續(xù),已有120個(gè)開發(fā)者(從個(gè)開發(fā)者(從最初的最初的10個(gè))和個(gè))和3百萬行代碼百萬行代碼。 Netscape公司的倒閉是一個(gè)值得深思的故事公司的倒閉是一個(gè)值得深思的故事 1997年年Netscape公司內(nèi)部關(guān)于公司內(nèi)部關(guān)于模塊設(shè)計(jì)模塊設(shè)計(jì)的爭論的爭論 Netscape用了用了2個(gè)月來重新設(shè)計(jì)瀏覽器個(gè)月來重新設(shè)計(jì)瀏覽器,但是這,但是這還不夠長。還不夠長。 最后,最后,Microsoft贏得了瀏覽器的戰(zhàn)爭,贏得了瀏覽器的戰(zhàn)爭,

4、AOL收購收購了了Netscape。4.1 總體設(shè)計(jì)概述總體設(shè)計(jì)概述 需求分析階段需求分析階段 弄清用戶的需求,弄清用戶的需求,解決解決“做什么做什么”的問題的問題。需求需求分析階段得出的分析階段得出的DFD圖,數(shù)據(jù)字典圖,數(shù)據(jù)字典DD等等。 設(shè)計(jì)階段設(shè)計(jì)階段 解決解決“怎么做怎么做”的問題的問題 軟件系統(tǒng)設(shè)計(jì)是開發(fā)者之間的軟件系統(tǒng)設(shè)計(jì)是開發(fā)者之間的分工和合作的基礎(chǔ)分工和合作的基礎(chǔ) 設(shè)計(jì)方案是設(shè)計(jì)方案是決定系統(tǒng)質(zhì)量決定系統(tǒng)質(zhì)量的主要因素的主要因素 設(shè)計(jì)方案可以借鑒成熟的設(shè)計(jì)經(jīng)驗(yàn)設(shè)計(jì)方案可以借鑒成熟的設(shè)計(jì)經(jīng)驗(yàn) 設(shè)計(jì)方案完成后需要經(jīng)過質(zhì)量分析和評(píng)審設(shè)計(jì)方案完成后需要經(jīng)過質(zhì)量分析和評(píng)審 好的設(shè)計(jì)方案

5、不僅能很好地好的設(shè)計(jì)方案不僅能很好地支持當(dāng)前需求支持當(dāng)前需求的實(shí)現(xiàn),的實(shí)現(xiàn),而且能而且能減小未來的系統(tǒng)維護(hù)減小未來的系統(tǒng)維護(hù)成本。成本。問題定義問題定義可行性研究可行性研究可行否?可行否?否否是是需求分析需求分析終止項(xiàng)目終止項(xiàng)目概要設(shè)計(jì)概要設(shè)計(jì)計(jì)劃計(jì)劃時(shí)期時(shí)期開發(fā)開發(fā)時(shí)期時(shí)期 主要內(nèi)容主要內(nèi)容 4.1 總體設(shè)計(jì)概述總體設(shè)計(jì)概述 4.2 軟件設(shè)計(jì)的基本原則軟件設(shè)計(jì)的基本原則 4.3 總體設(shè)計(jì)圖形總體設(shè)計(jì)圖形工具工具 4.3.1 結(jié)構(gòu)圖結(jié)構(gòu)圖 4.3.2 層次圖和層次圖和HIPO圖圖 4.4 面向數(shù)據(jù)流的設(shè)計(jì)面向數(shù)據(jù)流的設(shè)計(jì)開發(fā)開發(fā)時(shí)期時(shí)期維護(hù)維護(hù)時(shí)期時(shí)期定義定義時(shí)期時(shí)期(軟件開發(fā)任務(wù)書軟件開發(fā)任

6、務(wù)書)(可行性研究報(bào)告可行性研究報(bào)告)(測試報(bào)告測試報(bào)告)(程序程序)(總體設(shè)計(jì)文檔總體設(shè)計(jì)文檔)(需求規(guī)格說明書需求規(guī)格說明書)(詳細(xì)設(shè)計(jì)文檔詳細(xì)設(shè)計(jì)文檔) 設(shè)計(jì)階段設(shè)計(jì)階段 結(jié)構(gòu)化設(shè)計(jì)(結(jié)構(gòu)化設(shè)計(jì)(Structured Design,SD)分為)分為總總體設(shè)計(jì)體設(shè)計(jì)(也稱概要設(shè)計(jì))和(也稱概要設(shè)計(jì))和詳細(xì)設(shè)計(jì)詳細(xì)設(shè)計(jì)(也稱程序(也稱程序設(shè)計(jì))兩個(gè)階段。設(shè)計(jì))兩個(gè)階段。 總體設(shè)計(jì)階段總體設(shè)計(jì)階段:著重解決實(shí)現(xiàn)需求的:著重解決實(shí)現(xiàn)需求的程序模塊設(shè)程序模塊設(shè)計(jì)問題計(jì)問題。如系統(tǒng)分成若干個(gè)模塊、確定模塊的接。如系統(tǒng)分成若干個(gè)模塊、確定模塊的接口(即模塊間相互關(guān)系)、模塊間傳遞的信息??冢茨K間相

7、互關(guān)系)、模塊間傳遞的信息。 詳細(xì)設(shè)計(jì)階段詳細(xì)設(shè)計(jì)階段:確定:確定每個(gè)模塊內(nèi)部的具體算法每個(gè)模塊內(nèi)部的具體算法。 總體設(shè)計(jì)方法總體設(shè)計(jì)方法 結(jié)構(gòu)化設(shè)計(jì)(結(jié)構(gòu)化設(shè)計(jì)(SD)方法:以)方法:以數(shù)據(jù)流圖數(shù)據(jù)流圖為基礎(chǔ)構(gòu)造為基礎(chǔ)構(gòu)造模塊結(jié)構(gòu);模塊結(jié)構(gòu); Jackson方法:以數(shù)據(jù)結(jié)構(gòu)為基礎(chǔ)構(gòu)造模塊結(jié)構(gòu)方法:以數(shù)據(jù)結(jié)構(gòu)為基礎(chǔ)構(gòu)造模塊結(jié)構(gòu) Parans方法:以信息隱蔽為原則構(gòu)造模塊結(jié)構(gòu)方法:以信息隱蔽為原則構(gòu)造模塊結(jié)構(gòu)4.2 總體設(shè)計(jì)的原則和概念總體設(shè)計(jì)的原則和概念 4.2.1 模塊化模塊化 4.2.2 抽象和逐步求精抽象和逐步求精 4.2.3 信息隱藏信息隱藏 4.2.4 模塊獨(dú)立模塊獨(dú)立 4.2.5

8、啟發(fā)式規(guī)則啟發(fā)式規(guī)則4.2.1 模塊化模塊化 模塊化模塊化 (1)模塊的定義)模塊的定義:模塊是相對(duì)獨(dú)立的程序體:模塊是相對(duì)獨(dú)立的程序體 是數(shù)據(jù)說明、可執(zhí)行語句等程序?qū)ο蟮募鲜菙?shù)據(jù)說明、可執(zhí)行語句等程序?qū)ο蟮募?單獨(dú)命名的,可以通過名字來訪問單獨(dú)命名的,可以通過名字來訪問 例如:類、過程、函數(shù)、子程序、宏等例如:類、過程、函數(shù)、子程序、宏等 (2)什么是模塊化)什么是模塊化:按照設(shè)計(jì)原則將系統(tǒng)按照設(shè)計(jì)原則將系統(tǒng)劃分為劃分為若干個(gè)較小的模塊若干個(gè)較小的模塊。每個(gè)模塊完成一個(gè)子功能,每個(gè)模塊完成一個(gè)子功能,把這些模塊把這些模塊集成起來構(gòu)成一個(gè)整體集成起來構(gòu)成一個(gè)整體,可以完成指,可以完成指定的

9、功能滿足用戶的需求。定的功能滿足用戶的需求。 相互獨(dú)立但又相互關(guān)聯(lián)相互獨(dú)立但又相互關(guān)聯(lián) 實(shí)際上是系統(tǒng)分解和抽象的過程實(shí)際上是系統(tǒng)分解和抽象的過程 模塊化模塊化 (3)為什么要模塊化)為什么要模塊化 是從是從邏輯模型邏輯模型向是實(shí)際的計(jì)算機(jī)向是實(shí)際的計(jì)算機(jī)物理模型物理模型轉(zhuǎn)化的轉(zhuǎn)化的第一步。模塊劃分好壞影響軟件第一步。模塊劃分好壞影響軟件系統(tǒng)性能系統(tǒng)性能的優(yōu)劣。的優(yōu)劣。 系統(tǒng)性能的衡量標(biāo)準(zhǔn)系統(tǒng)性能的衡量標(biāo)準(zhǔn) 系統(tǒng)效率、系統(tǒng)工作質(zhì)量系統(tǒng)效率、系統(tǒng)工作質(zhì)量、系統(tǒng)可靠性和系統(tǒng)可維護(hù)性系統(tǒng)可靠性和系統(tǒng)可維護(hù)性 可維護(hù)性是重要的指標(biāo),其他的指標(biāo)都可以通過可維護(hù)可維護(hù)性是重要的指標(biāo),其他的指標(biāo)都可以通過可維

10、護(hù)性來修正,而模塊的劃分對(duì)于該指標(biāo)是至關(guān)重要的。性來修正,而模塊的劃分對(duì)于該指標(biāo)是至關(guān)重要的。 模塊化模塊化 (3)為什么要模塊化)為什么要模塊化 目標(biāo):提高系統(tǒng)的可維護(hù)性;目標(biāo):提高系統(tǒng)的可維護(hù)性; 原則:為使得系統(tǒng)易于修改,要求模塊的原則:為使得系統(tǒng)易于修改,要求模塊的內(nèi)部聯(lián)內(nèi)部聯(lián)系盡可能強(qiáng)系盡可能強(qiáng),模塊間的,模塊間的外部聯(lián)系盡可能弱外部聯(lián)系盡可能弱,盡可,盡可能提高能提高模塊的相對(duì)獨(dú)立性模塊的相對(duì)獨(dú)立性。 效果:對(duì)其中某一個(gè)模塊作修改時(shí),造成的影響效果:對(duì)其中某一個(gè)模塊作修改時(shí),造成的影響只局限在本模塊范圍內(nèi),而不至于影響整個(gè)系統(tǒng)。只局限在本模塊范圍內(nèi),而不至于影響整個(gè)系統(tǒng)。C(x):

11、問題:問題x的復(fù)雜性的復(fù)雜性E(x):解決問題:解決問題x所需工作量所需工作量對(duì)于兩個(gè)問題對(duì)于兩個(gè)問題p1 和和p2:1) 如果如果C(p1)C(p2) 那么那么 E(p1)E(p2)問題越復(fù)雜解決問題所需要的花費(fèi)更多問題越復(fù)雜解決問題所需要的花費(fèi)更多2) C(p1+p2)C(p1)+C(p2)因此因此E(p1p2)E(p1)+E(p2)將復(fù)雜問題分解成可以多個(gè)子問題分別解將復(fù)雜問題分解成可以多個(gè)子問題分別解決會(huì)更加容易決會(huì)更加容易(模塊化思想的依據(jù)模塊化思想的依據(jù)) 模塊化模塊化 通過模塊化降低開發(fā)復(fù)雜度通過模塊化降低開發(fā)復(fù)雜度 模塊化模塊化 【模塊化案例】智能灌溉【模塊化案例】智能灌溉 總

12、體設(shè)計(jì):將系統(tǒng)劃分為總體設(shè)計(jì):將系統(tǒng)劃分為傳感器傳感器、灌溉決策灌溉決策和和灌溉設(shè)備控制灌溉設(shè)備控制三個(gè)模塊,定義好相互之間三個(gè)模塊,定義好相互之間的數(shù)據(jù)和控制接口的數(shù)據(jù)和控制接口 傳感器模塊:接受傳感器收集的溫度、濕度、土壤傳感器模塊:接受傳感器收集的溫度、濕度、土壤等各種數(shù)據(jù)等各種數(shù)據(jù) 灌溉決策:根據(jù)種植經(jīng)驗(yàn)和收集到的數(shù)據(jù)判斷灌溉灌溉決策:根據(jù)種植經(jīng)驗(yàn)和收集到的數(shù)據(jù)判斷灌溉決策決策 灌溉設(shè)備控制:根據(jù)決策控制灌溉設(shè)備進(jìn)行灌溉灌溉設(shè)備控制:根據(jù)決策控制灌溉設(shè)備進(jìn)行灌溉降低整體復(fù)雜度:可以分而治之而且降低整體復(fù)雜度:可以分而治之而且可以由具備不同專業(yè)知識(shí)的開發(fā)者分別承擔(dān)可以由具備不同專業(yè)知識(shí)的

13、開發(fā)者分別承擔(dān) 模塊化模塊化 誤區(qū):無限制地進(jìn)行模塊劃分誤區(qū):無限制地進(jìn)行模塊劃分?如果我們無限制地如果我們無限制地劃分軟件,開發(fā)它所需的工作量會(huì)變得小到可以劃分軟件,開發(fā)它所需的工作量會(huì)變得小到可以忽略忽略? 結(jié)論:結(jié)論:NO。因?yàn)殚_發(fā)工作量有很大一部分來自于。因?yàn)殚_發(fā)工作量有很大一部分來自于模塊間的接口和集成模塊間的接口和集成 除了技術(shù)上的接口和集成,還包括除了技術(shù)上的接口和集成,還包括人與人之間的溝通人與人之間的溝通 集成和溝通的開銷到了一定程度就會(huì)成為開發(fā)工作量的集成和溝通的開銷到了一定程度就會(huì)成為開發(fā)工作量的主要部分主要部分 模塊化模塊化 結(jié)論:適度的模塊化結(jié)論:適度的模塊化 模塊數(shù)

14、增加時(shí),模塊間的關(guān)系也隨之增加,接口模塊數(shù)增加時(shí),模塊間的關(guān)系也隨之增加,接口和集成的工作量也隨之增加和集成的工作量也隨之增加 方法:尋找最佳模塊化程度平衡點(diǎn)方法:尋找最佳模塊化程度平衡點(diǎn)4.2.2 抽象和逐步求精抽象和逐步求精 抽象和逐步求精抽象和逐步求精 抽象:考慮高層問題時(shí)忽略低層細(xì)節(jié)抽象:考慮高層問題時(shí)忽略低層細(xì)節(jié) 逐步求精:不斷接近問題的完整解逐步求精:不斷接近問題的完整解 抽象與逐步求精具有互補(bǔ)性抽象與逐步求精具有互補(bǔ)性把大象放進(jìn)冰箱需要幾步?把大象放進(jìn)冰箱需要幾步? 抽象抽象 控制復(fù)雜性的基本策略控制復(fù)雜性的基本策略 抽象過程抽象過程:從特殊到一般的過程從特殊到一般的過程,上層概

15、念是下,上層概念是下層概念的抽象,下層概念是上層概念的精化和細(xì)層概念的抽象,下層概念是上層概念的精化和細(xì)化化 軟件開發(fā)過程的每一步都是對(duì)較高一級(jí)抽象的解軟件開發(fā)過程的每一步都是對(duì)較高一級(jí)抽象的解作一次具體化的描述作一次具體化的描述 逐步求精逐步求精 把問題的求解過程把問題的求解過程分解成若干步驟或階段分解成若干步驟或階段,每步每步都比上步更精化都比上步更精化,更接近問題的解法,更接近問題的解法 常與常與分層抽象分層抽象的思想相結(jié)合的思想相結(jié)合 抽象抽象 Vs. 逐步求精逐步求精 抽象抽象使得設(shè)計(jì)者能夠描述過程和數(shù)據(jù)而忽略低使得設(shè)計(jì)者能夠描述過程和數(shù)據(jù)而忽略低層的細(xì)節(jié)層的細(xì)節(jié) 求精求精有助于設(shè)計(jì)

16、者在設(shè)計(jì)過程中揭示低層的細(xì)有助于設(shè)計(jì)者在設(shè)計(jì)過程中揭示低層的細(xì)節(jié)節(jié) 高層抽象將在下層不斷精化,最終得到軟件實(shí)高層抽象將在下層不斷精化,最終得到軟件實(shí)現(xiàn)現(xiàn)抽象抽象1 CAD1 CAD圖形軟件圖形軟件抽象抽象2 CAD2 CAD圖形軟件圖形軟件用戶界用戶界面任務(wù)面任務(wù)創(chuàng)建二創(chuàng)建二維圖形維圖形顯示圖顯示圖形任務(wù)形任務(wù)管理圖管理圖形文件形文件模塊化模塊化抽象抽象抽象抽象3 3 創(chuàng)建二維圖形任務(wù)創(chuàng)建二維圖形任務(wù)畫線畫線任務(wù)任務(wù)畫圓畫圓任務(wù)任務(wù)模塊化模塊化逐步求精逐步求精4.2.3 信息隱藏信息隱藏 信息隱蔽信息隱蔽 對(duì)其它模塊隱藏內(nèi)部對(duì)其它模塊隱藏內(nèi)部細(xì)節(jié)。細(xì)節(jié)。注意:注意:不是隱藏一切不是隱藏一切信息

17、,是實(shí)現(xiàn)細(xì)節(jié)信息,是實(shí)現(xiàn)細(xì)節(jié)。 模塊內(nèi)部的數(shù)據(jù)和過程不允許其它不需要這些信模塊內(nèi)部的數(shù)據(jù)和過程不允許其它不需要這些信息的模塊使用息的模塊使用 定義和實(shí)施對(duì)模塊的過程細(xì)節(jié)和局部數(shù)據(jù)結(jié)構(gòu)的定義和實(shí)施對(duì)模塊的過程細(xì)節(jié)和局部數(shù)據(jù)結(jié)構(gòu)的存取限制存取限制 典型的信息隱藏:面向?qū)ο蟮脑L問控制符典型的信息隱藏:面向?qū)ο蟮脑L問控制符優(yōu)點(diǎn)優(yōu)點(diǎn):減小模塊之間聯(lián)系的復(fù)雜度,并且修改軟減小模塊之間聯(lián)系的復(fù)雜度,并且修改軟件時(shí)影響面小件時(shí)影響面小 信息隱藏是實(shí)現(xiàn)抽象信息隱藏是實(shí)現(xiàn)抽象/模塊化機(jī)制的基本支撐模塊化機(jī)制的基本支撐4.2.4 模塊獨(dú)立模塊獨(dú)立 1、模塊獨(dú)立的定義、模塊獨(dú)立的定義 開發(fā)具有獨(dú)立功能而且和其他模塊之

18、間沒有過多開發(fā)具有獨(dú)立功能而且和其他模塊之間沒有過多的相互作用的模塊,就可以做到模塊獨(dú)立。的相互作用的模塊,就可以做到模塊獨(dú)立。 2、模塊獨(dú)立的重要性、模塊獨(dú)立的重要性 3、模塊獨(dú)立的定性度量標(biāo)準(zhǔn)、模塊獨(dú)立的定性度量標(biāo)準(zhǔn) 2、模塊獨(dú)立的重要性、模塊獨(dú)立的重要性 模塊化模塊化 (3)為什么要模塊化)為什么要模塊化 目標(biāo):提高系統(tǒng)的可維護(hù)性;目標(biāo):提高系統(tǒng)的可維護(hù)性; 原則:為使得系統(tǒng)易于修改,要求模塊的原則:為使得系統(tǒng)易于修改,要求模塊的內(nèi)部聯(lián)內(nèi)部聯(lián)系盡可能強(qiáng)系盡可能強(qiáng),模塊間的,模塊間的外部聯(lián)系盡可能弱外部聯(lián)系盡可能弱,盡可,盡可能提高能提高模塊的相對(duì)獨(dú)立性模塊的相對(duì)獨(dú)立性。 效果:對(duì)其中某一

19、個(gè)模塊作修改時(shí),造成的影響效果:對(duì)其中某一個(gè)模塊作修改時(shí),造成的影響只局限在本模塊范圍內(nèi),而不至于影響整個(gè)系統(tǒng)。只局限在本模塊范圍內(nèi),而不至于影響整個(gè)系統(tǒng)。 2、模塊獨(dú)立的重要性、模塊獨(dú)立的重要性 (1)模塊獨(dú)立是模塊化的根本要求)模塊獨(dú)立是模塊化的根本要求 (2)模塊的開發(fā)者專注于某一個(gè)相對(duì)獨(dú)立的部分,)模塊的開發(fā)者專注于某一個(gè)相對(duì)獨(dú)立的部分,不用過多關(guān)心其他模塊不用過多關(guān)心其他模塊 (3)單個(gè)模塊更容易復(fù)用)單個(gè)模塊更容易復(fù)用 (4)獨(dú)立的模塊更易于維護(hù)和測試,修改和)獨(dú)立的模塊更易于維護(hù)和測試,修改和bug影響的范圍被局部化影響的范圍被局部化 3 3、模塊獨(dú)立的定性度量標(biāo)準(zhǔn)、模塊獨(dú)立的定

20、性度量標(biāo)準(zhǔn) (1)內(nèi)聚)內(nèi)聚:一個(gè)模塊內(nèi)部各個(gè)元素彼此結(jié)合的緊:一個(gè)模塊內(nèi)部各個(gè)元素彼此結(jié)合的緊密程度密程度盡量高盡量高 (2)耦合)耦合:模塊之間相互關(guān)聯(lián)的程度:模塊之間相互關(guān)聯(lián)的程度盡量低盡量低獨(dú)立性較強(qiáng)的模塊應(yīng)該是獨(dú)立性較強(qiáng)的模塊應(yīng)該是高內(nèi)聚低耦合高內(nèi)聚低耦合的模塊。的模塊。4.2.4 模塊獨(dú)立模塊獨(dú)立 【耦合的種類【耦合的種類】 數(shù)據(jù)耦合數(shù)據(jù)耦合 特征耦合特征耦合 控制耦合控制耦合 公共耦合公共耦合 內(nèi)容耦合內(nèi)容耦合 1、數(shù)據(jù)耦合、數(shù)據(jù)耦合 如果一個(gè)模塊訪問另一個(gè)模塊時(shí),彼此之間通過如果一個(gè)模塊訪問另一個(gè)模塊時(shí),彼此之間通過數(shù)據(jù)參數(shù)數(shù)據(jù)參數(shù)(不是控制參數(shù)、公共數(shù)據(jù)結(jié)構(gòu)或外部變不是控制參

21、數(shù)、公共數(shù)據(jù)結(jié)構(gòu)或外部變量量)來交換輸入、輸出信息,則稱這種耦合為來交換輸入、輸出信息,則稱這種耦合為數(shù)據(jù)數(shù)據(jù)耦合耦合。這是模塊之間影響最小的耦合關(guān)系這是模塊之間影響最小的耦合關(guān)系。發(fā)貨發(fā)貨計(jì)算金額計(jì)算金額總金額總金額單價(jià)單價(jià)數(shù)量數(shù)量計(jì)算水費(fèi)和電費(fèi)計(jì)算水費(fèi)和電費(fèi)計(jì)算水費(fèi)計(jì)算水費(fèi)計(jì)算電費(fèi)計(jì)算電費(fèi)水費(fèi)水費(fèi)電費(fèi)電費(fèi)本月用水量本月用水量本月用電量本月用電量 2、特征耦合、特征耦合 一組模塊通過某一一組模塊通過某一數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)來傳遞來傳遞記錄信息記錄信息,而,而不是簡單變量不是簡單變量。這種耦合稱為。這種耦合稱為特征耦合特征耦合。 計(jì)算水費(fèi)和電費(fèi)計(jì)算水費(fèi)和電費(fèi)計(jì)算水費(fèi)計(jì)算水費(fèi)計(jì)算電費(fèi)計(jì)算電費(fèi)住戶詳情

22、住戶詳情水費(fèi)水費(fèi)住戶詳情住戶詳情電費(fèi)電費(fèi)住戶詳情住戶詳情=用水量用水量+用電量用電量+租房開始日期租房開始日期+租期租期特征耦合的耦合強(qiáng)度顯然比數(shù)據(jù)耦合要高。特征耦合的耦合強(qiáng)度顯然比數(shù)據(jù)耦合要高。不僅在模塊間傳遞的數(shù)據(jù)量增加了,而且當(dāng)不僅在模塊間傳遞的數(shù)據(jù)量增加了,而且當(dāng)“住戶詳情住戶詳情”的數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)發(fā)生變化時(shí),圖中的兩個(gè)模塊都要發(fā)生變化。結(jié)構(gòu)發(fā)生變化時(shí),圖中的兩個(gè)模塊都要發(fā)生變化。 3、控制耦合、控制耦合 如果如果模塊模塊A向模塊向模塊B所傳遞的信號(hào)控制了模塊所傳遞的信號(hào)控制了模塊B的內(nèi)的內(nèi)部邏輯部邏輯,模塊,模塊B對(duì)控制信號(hào)進(jìn)行判斷,選擇不同的對(duì)控制信號(hào)進(jìn)行判斷,選擇不同的邏輯結(jié)構(gòu),

23、那么邏輯結(jié)構(gòu),那么A和和B之間的耦合稱為控制耦合。之間的耦合稱為控制耦合。A A計(jì)算平均分或最分計(jì)算平均分或最分 B B平均平均/ /最高最高( (控制信號(hào)控制信號(hào)) )成績成績此時(shí)。此時(shí)。模塊間傳遞的信息不是一般的數(shù)據(jù),而是控制信號(hào)模塊間傳遞的信息不是一般的數(shù)據(jù),而是控制信號(hào)。因?yàn)榭刂颇K必須知道被控制模塊的內(nèi)部邏輯,從而增強(qiáng)了模塊因?yàn)榭刂颇K必須知道被控制模塊的內(nèi)部邏輯,從而增強(qiáng)了模塊間的相互依賴。控制耦合是中等強(qiáng)度的耦合。間的相互依賴??刂岂詈鲜侵械葟?qiáng)度的耦合。 3、控制耦合、控制耦合 控制耦合增加了理解和編程的復(fù)雜性,調(diào)用模塊控制耦合增加了理解和編程的復(fù)雜性,調(diào)用模塊必須知道被調(diào)模塊的

24、內(nèi)部邏輯,增加了相互依賴。必須知道被調(diào)模塊的內(nèi)部邏輯,增加了相互依賴。 去除模塊間控制耦合的方法去除模塊間控制耦合的方法 (1)將將被調(diào)用模塊被調(diào)用模塊內(nèi)的內(nèi)的判定上移判定上移到調(diào)用模塊進(jìn)行到調(diào)用模塊進(jìn)行 (2)被被被調(diào)用模塊分解被調(diào)用模塊分解成若干單一功能模塊成若干單一功能模塊 3、控制耦合、控制耦合 解決方法:改控制耦合為數(shù)據(jù)耦合舉例解決方法:改控制耦合為數(shù)據(jù)耦合舉例A A計(jì)算平均分計(jì)算平均分B1B1平均成績平均成績最高成績最高成績計(jì)算最高分計(jì)算最高分B2B2 4、公共耦合、公共耦合 如果兩個(gè)或如果兩個(gè)或多個(gè)模塊多個(gè)模塊都和都和同一個(gè)公共數(shù)據(jù)域同一個(gè)公共數(shù)據(jù)域有關(guān),有關(guān),則稱為公共耦合。則

25、稱為公共耦合。 公共數(shù)據(jù)域公共數(shù)據(jù)域:全程變量、共享的通信區(qū)、內(nèi)存的:全程變量、共享的通信區(qū)、內(nèi)存的公共覆蓋區(qū)、任何存儲(chǔ)介質(zhì)上的文件、物理設(shè)備公共覆蓋區(qū)、任何存儲(chǔ)介質(zhì)上的文件、物理設(shè)備等。等。AB公共數(shù)據(jù)公共數(shù)據(jù)AB公共數(shù)據(jù)公共數(shù)據(jù)緊密公共耦合緊密公共耦合AB公共數(shù)據(jù)公共數(shù)據(jù)CDEF不良公共耦合不良公共耦合松散公共耦合松散公共耦合 5、內(nèi)容耦合、內(nèi)容耦合 如果一個(gè)模塊和另一個(gè)模塊的內(nèi)部屬性(即運(yùn)行如果一個(gè)模塊和另一個(gè)模塊的內(nèi)部屬性(即運(yùn)行程序和內(nèi)部數(shù)據(jù))有關(guān),則稱為內(nèi)容耦合。程序和內(nèi)部數(shù)據(jù))有關(guān),則稱為內(nèi)容耦合。 舉例:一個(gè)模塊訪問另一個(gè)模塊的內(nèi)部數(shù)據(jù)舉例:一個(gè)模塊訪問另一個(gè)模塊的內(nèi)部數(shù)據(jù)病態(tài)

26、耦合關(guān)系病態(tài)耦合關(guān)系4.2.4 模塊獨(dú)立模塊獨(dú)立 總結(jié)總結(jié)設(shè)計(jì)模塊時(shí),設(shè)計(jì)模塊時(shí),盡量使用盡量使用數(shù)據(jù)耦合,數(shù)據(jù)耦合,少用少用特征耦合與控制耦合,特征耦合與控制耦合,限制限制使用公共耦合,完全使用公共耦合,完全不用不用內(nèi)容耦合內(nèi)容耦合。模塊間的耦合度就是模塊間的依賴性。耦合越高,維護(hù)成本越模塊間的耦合度就是模塊間的依賴性。耦合越高,維護(hù)成本越高。因此模塊設(shè)計(jì)應(yīng)使模塊間的耦合最小。高。因此模塊設(shè)計(jì)應(yīng)使模塊間的耦合最小。 數(shù)據(jù)耦合數(shù)據(jù)耦合特征耦合特征耦合控制耦合控制耦合公共耦合公共耦合內(nèi)容耦合內(nèi)容耦合耦合度耦合度低低高高4.2.4 模塊獨(dú)立模塊獨(dú)立 內(nèi)聚內(nèi)聚 定義:模塊的內(nèi)聚是指一個(gè)模塊內(nèi)部的各個(gè)

27、組成定義:模塊的內(nèi)聚是指一個(gè)模塊內(nèi)部的各個(gè)組成部分的部分的緊湊性緊湊性,其處理動(dòng)作的,其處理動(dòng)作的組合強(qiáng)度組合強(qiáng)度。 內(nèi)聚的種類(只介紹幾種)內(nèi)聚的種類(只介紹幾種) 功能內(nèi)聚功能內(nèi)聚 順序內(nèi)聚順序內(nèi)聚 通訊內(nèi)聚通訊內(nèi)聚 過程內(nèi)聚過程內(nèi)聚 時(shí)間內(nèi)聚時(shí)間內(nèi)聚 邏輯內(nèi)聚邏輯內(nèi)聚 偶然內(nèi)聚偶然內(nèi)聚int max(x,y) int x,y; int z; z=xy?x:y; return(z); 判斷一個(gè)模塊是不是功判斷一個(gè)模塊是不是功能內(nèi)聚,只要看這個(gè)模能內(nèi)聚,只要看這個(gè)模塊是塊是“做什么做什么”,是完,是完成成一個(gè)一個(gè)具體的任務(wù),還具體的任務(wù),還是完成是完成多任務(wù)多任務(wù)。 A、功能功能內(nèi)聚內(nèi)聚 如

28、果一個(gè)模塊內(nèi)部的各組成部分的處理動(dòng)作全都如果一個(gè)模塊內(nèi)部的各組成部分的處理動(dòng)作全都為執(zhí)行為執(zhí)行同一個(gè)功能同一個(gè)功能而存在,并且只執(zhí)行一個(gè)功能,而存在,并且只執(zhí)行一個(gè)功能,則稱為功能內(nèi)聚。例如:按雇員生日計(jì)算年齡則稱為功能內(nèi)聚。例如:按雇員生日計(jì)算年齡計(jì)算年齡計(jì)算年齡輸出輸出年齡年齡雇員生日 B、通訊內(nèi)聚通訊內(nèi)聚 如果一個(gè)模塊內(nèi)各組成部分的處理動(dòng)作都使用如果一個(gè)模塊內(nèi)各組成部分的處理動(dòng)作都使用相相同的輸入數(shù)據(jù)同的輸入數(shù)據(jù)或產(chǎn)生或產(chǎn)生相同的輸出數(shù)據(jù)相同的輸出數(shù)據(jù),稱為通訊,稱為通訊內(nèi)聚內(nèi)聚。計(jì)算年齡計(jì)算年齡輸出輸出年齡年齡計(jì)算工資計(jì)算工資輸出輸出工資工資雇員生日雇員生日 C、邏輯內(nèi)聚、邏輯內(nèi)聚 如

29、果一個(gè)模塊是把如果一個(gè)模塊是把幾幾種相關(guān)的功能種相關(guān)的功能組合在組合在一起,每次調(diào)用時(shí),一起,每次調(diào)用時(shí),由傳送給模塊的由傳送給模塊的判定判定參數(shù)來確定該模塊應(yīng)參數(shù)來確定該模塊應(yīng)該該執(zhí)行哪一種功能執(zhí)行哪一種功能,則稱為邏輯內(nèi)聚。則稱為邏輯內(nèi)聚。 D、偶然內(nèi)聚偶然內(nèi)聚 如果一個(gè)模塊的內(nèi)部如果一個(gè)模塊的內(nèi)部各組成部分的處理動(dòng)各組成部分的處理動(dòng)作彼此作彼此沒有任何聯(lián)系沒有任何聯(lián)系,或者即使有聯(lián)系,這或者即使有聯(lián)系,這種聯(lián)系也很松散種聯(lián)系也很松散4.2.4 模塊獨(dú)立模塊獨(dú)立結(jié)論:結(jié)論:盡量采用功能內(nèi)聚,避免邏輯和耦然內(nèi)聚盡量采用功能內(nèi)聚,避免邏輯和耦然內(nèi)聚偶然內(nèi)聚偶然內(nèi)聚邏輯內(nèi)聚邏輯內(nèi)聚通信內(nèi)聚通信內(nèi)

30、聚功能內(nèi)聚功能內(nèi)聚一個(gè)模塊一個(gè)功能是軟件設(shè)計(jì)人員模塊化設(shè)計(jì)的一條準(zhǔn)則一個(gè)模塊一個(gè)功能是軟件設(shè)計(jì)人員模塊化設(shè)計(jì)的一條準(zhǔn)則內(nèi)聚程度內(nèi)聚程度弱弱高高4.2.4 模塊獨(dú)立模塊獨(dú)立 小結(jié):設(shè)計(jì)原則設(shè)計(jì)原則:力爭做到:力爭做到高內(nèi)聚高內(nèi)聚,低耦合低耦合耦合與內(nèi)聚的衡量:耦合與內(nèi)聚的衡量:內(nèi)聚度高,耦合弱內(nèi)聚度高,耦合弱,標(biāo)志著模塊的標(biāo)志著模塊的獨(dú)立性強(qiáng)獨(dú)立性強(qiáng);4.2.5 啟發(fā)式規(guī)則啟發(fā)式規(guī)則 1 1、模塊的分解、模塊的分解 為什么要分解?為什么要分解?分解是指把一個(gè)模塊分解成若干分解是指把一個(gè)模塊分解成若干個(gè)從屬于它的下層模塊。個(gè)從屬于它的下層模塊。當(dāng)模塊過大時(shí)就應(yīng)分解當(dāng)模塊過大時(shí)就應(yīng)分解 如何分解?如

31、何分解?一般按功能分解一般按功能分解,分解到成為一個(gè)小,分解到成為一個(gè)小的功能單一的模塊為止。一般一個(gè)模塊內(nèi)包含的的功能單一的模塊為止。一般一個(gè)模塊內(nèi)包含的語句在語句在30-5030-50條左右較好。條左右較好。不要過大,也不要過小不要過大,也不要過小。 分解后不應(yīng)該降低模塊的獨(dú)立性分解后不應(yīng)該降低模塊的獨(dú)立性。 2、深度、寬度、扇出和扇入都應(yīng)適當(dāng)、深度、寬度、扇出和扇入都應(yīng)適當(dāng)ABCDFELKJSRIPONQTHGM深度深度寬度寬度扇出扇出扇入扇入 2、深度、寬度、扇出和扇入都應(yīng)適當(dāng)、深度、寬度、扇出和扇入都應(yīng)適當(dāng) 深度深度:表示軟件結(jié)構(gòu)中控制的:表示軟件結(jié)構(gòu)中控制的層數(shù)層數(shù),粗略的標(biāo)志,粗

32、略的標(biāo)志一個(gè)系統(tǒng)的大小和復(fù)雜程度。一個(gè)系統(tǒng)的大小和復(fù)雜程度。 寬度寬度:軟件結(jié)構(gòu):軟件結(jié)構(gòu)同一層次同一層次上的上的模塊總數(shù)的最大值模塊總數(shù)的最大值,寬度越大系統(tǒng)越復(fù)雜。寬度越大系統(tǒng)越復(fù)雜。 扇出扇出:一個(gè)模塊擁有的:一個(gè)模塊擁有的直屬下級(jí)模塊的個(gè)數(shù)直屬下級(jí)模塊的個(gè)數(shù),一,一般扇出數(shù)控制在般扇出數(shù)控制在7以內(nèi),平均為以內(nèi),平均為3或或4。例如模塊。例如模塊A、D的扇出為的扇出為3、2。 扇入扇入:一個(gè)模塊的:一個(gè)模塊的直接上級(jí)模塊的個(gè)數(shù)直接上級(jí)模塊的個(gè)數(shù)。例如模。例如模塊塊T的扇入為的扇入為4。 2、深度、寬度、扇出和扇入都應(yīng)適當(dāng)、深度、寬度、扇出和扇入都應(yīng)適當(dāng) 好的設(shè)計(jì)結(jié)構(gòu)好的設(shè)計(jì)結(jié)構(gòu)通常是通

33、常是頂層扇出比較高頂層扇出比較高,底層模塊底層模塊有高扇入有高扇入。 模塊的獨(dú)立性是貫穿始終的標(biāo)準(zhǔn),不能為了追求模塊的獨(dú)立性是貫穿始終的標(biāo)準(zhǔn),不能為了追求其它目標(biāo)而違背獨(dú)立性標(biāo)準(zhǔn)。其它目標(biāo)而違背獨(dú)立性標(biāo)準(zhǔn)。編外編外人員人員工資工資取得取得工資工資數(shù)據(jù)數(shù)據(jù) 計(jì)時(shí)計(jì)時(shí)工人工人工資工資計(jì)薪計(jì)薪工人工人工資工資編外編外人員人員稅款稅款編外編外人員人員扣款扣款常規(guī)常規(guī)扣款扣款稅收稅收扣款扣款計(jì)算實(shí)發(fā)工資計(jì)算實(shí)發(fā)工資改進(jìn)方法:改進(jìn)方法:(1 1)避免平鋪結(jié)構(gòu))避免平鋪結(jié)構(gòu)(2)減少高扇出,增加中間層降低扇出,同時(shí)爭取高扇入)減少高扇出,增加中間層降低扇出,同時(shí)爭取高扇入(4)最終實(shí)現(xiàn)不同人員實(shí)發(fā)工資的計(jì)算

34、在不同模塊中完成,頂)最終實(shí)現(xiàn)不同人員實(shí)發(fā)工資的計(jì)算在不同模塊中完成,頂層模塊直接調(diào)用即可。層模塊直接調(diào)用即可。案例:不理想的模塊結(jié)構(gòu)案例:不理想的模塊結(jié)構(gòu)所有人員的工資的計(jì)算都在頂層模塊【計(jì)算實(shí)發(fā)工資】中完成,所有人員的工資的計(jì)算都在頂層模塊【計(jì)算實(shí)發(fā)工資】中完成,扇出過大,同時(shí)增加該模塊的復(fù)雜性。扇出過大,同時(shí)增加該模塊的復(fù)雜性。編外編外人員人員工資工資取得工取得工資數(shù)據(jù)資數(shù)據(jù) 計(jì)時(shí)計(jì)時(shí)制工制工資額資額薪金薪金制工制工資額資額編外編外人員人員稅款稅款編外編外人員人員扣款扣款常規(guī)常規(guī)扣款扣款稅收稅收扣款扣款計(jì)算實(shí)發(fā)工資計(jì)算實(shí)發(fā)工資計(jì)時(shí)工人計(jì)時(shí)工人實(shí)發(fā)工資實(shí)發(fā)工資計(jì)薪工人計(jì)薪工人實(shí)發(fā)工資實(shí)發(fā)工

35、資編外人員編外人員實(shí)發(fā)工資實(shí)發(fā)工資案例:理想的模塊結(jié)構(gòu)案例:理想的模塊結(jié)構(gòu) 3、力爭降低模塊接口的復(fù)雜程度、力爭降低模塊接口的復(fù)雜程度 模塊的接口要簡單、清晰及含義明確,便于理解,模塊的接口要簡單、清晰及含義明確,便于理解,易于實(shí)現(xiàn)、測試與維護(hù)。易于實(shí)現(xiàn)、測試與維護(hù)。 例如:一元二次方程:例如:一元二次方程:AX2 + BX + C = 0 定義接口如下:定義接口如下: ComputeEquation(TAB);其中,其中,TAB是數(shù)組是數(shù)組 修改為:修改為: ComputeEquation(A, B, C);4.3 總體設(shè)計(jì)圖形工具總體設(shè)計(jì)圖形工具 4.3.1 層次圖和層次圖和HIPO圖圖

36、4.3.2 結(jié)構(gòu)圖結(jié)構(gòu)圖(Structure Chart, SC)4.3.1 層次圖和層次圖和HIPO圖圖 1 1、層次圖、層次圖(H(H圖圖) )層次圖是軟件結(jié)構(gòu)設(shè)計(jì)階段中的表達(dá)工具,它用層次圖是軟件結(jié)構(gòu)設(shè)計(jì)階段中的表達(dá)工具,它用來描繪來描繪軟件的層次結(jié)構(gòu)軟件的層次結(jié)構(gòu),也稱為,也稱為功能模塊圖功能模塊圖。每一個(gè)方框代表一個(gè)每一個(gè)方框代表一個(gè)模塊模塊方框間的方框間的連線表示模塊的調(diào)用關(guān)系連線表示模塊的調(diào)用關(guān)系銷售管理系統(tǒng)的功能模塊圖銷售管理系統(tǒng)的功能模塊圖銷售管理系統(tǒng)銷售管理系統(tǒng)訂貨處理訂貨處理進(jìn)貨處理進(jìn)貨處理銷售統(tǒng)計(jì)銷售統(tǒng)計(jì)缺貨處理缺貨處理輸入進(jìn)貨單輸入進(jìn)貨單增加庫存量增加庫存量讀進(jìn)貨記錄

37、讀進(jìn)貨記錄讀缺貨記錄讀缺貨記錄統(tǒng)計(jì)各項(xiàng)缺貨統(tǒng)計(jì)各項(xiàng)缺貨打印缺貨單打印缺貨單QQQQ軟件的層次圖軟件的層次圖 1 1、層次圖、層次圖(H(H圖圖) ) 層次圖層次圖的用處:在的用處:在自頂向下自頂向下設(shè)計(jì)軟件的過程中使設(shè)計(jì)軟件的過程中使用用 優(yōu)點(diǎn)優(yōu)點(diǎn):簡單、易學(xué)易用:簡單、易學(xué)易用 缺點(diǎn)缺點(diǎn):不能表示:不能表示選擇選擇和和循環(huán)循環(huán) 【學(xué)生練習(xí)【學(xué)生練習(xí)】 繪制出學(xué)生管理系統(tǒng)的層次圖繪制出學(xué)生管理系統(tǒng)的層次圖 2、IPO圖圖 表示輸入、加工處理與輸出的關(guān)系。表示輸入、加工處理與輸出的關(guān)系。主要的處理主要的處理輸出數(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圖圖 輸入輸入/處理處理/輸出圖輸出圖 【例【例】教務(wù)系統(tǒng)成績管理教務(wù)系統(tǒng)成績管理IPO圖。圖。統(tǒng)計(jì)報(bào)表統(tǒng)計(jì)報(bào)表統(tǒng)計(jì)要求統(tǒng)計(jì)要求統(tǒng)計(jì)成績統(tǒng)計(jì)成績成績計(jì)算成績計(jì)算查詢結(jié)果查詢結(jié)果課程成績課程成績查詢條件查詢條件成績查詢成績查詢輸入輸入處理處理輸出輸出成績記錄成績記錄 HIPO圖圖 Hierarchy plus Input Process Output IBM公司發(fā)明的公司發(fā)明的層次圖層次圖+輸入輸入/處理處理/輸出圖輸出圖的英文的英文縮寫??s寫。 每個(gè)模塊都加了每個(gè)模塊

39、都加了編號(hào)編號(hào),帶編號(hào)的層次圖帶編號(hào)的層次圖(H圖圖) 和和H圖中圖中每個(gè)模塊每個(gè)模塊相對(duì)應(yīng),應(yīng)該有一張相對(duì)應(yīng),應(yīng)該有一張IPO圖圖描繪描繪這個(gè)方框代表的這個(gè)方框代表的模塊的處理過程模塊的處理過程。 在每張?jiān)诿繌圛PO圖圖內(nèi)都應(yīng)該標(biāo)出該模塊在內(nèi)都應(yīng)該標(biāo)出該模塊在H圖中的編號(hào)圖中的編號(hào),以便知道以便知道該模塊在軟件結(jié)構(gòu)中的位置該模塊在軟件結(jié)構(gòu)中的位置。HIPO圖是由一個(gè)帶編號(hào)的圖是由一個(gè)帶編號(hào)的H圖和一組模塊的圖和一組模塊的IPO圖組成圖組成 HIPO圖圖 案例:用案例:用HIPO圖描述教務(wù)管理系統(tǒng)圖描述教務(wù)管理系統(tǒng) (1)層次圖()層次圖(H圖)圖)教務(wù)管理系統(tǒng)教務(wù)管理系統(tǒng)3 3 錄入成績錄入

40、成績2 2 待錄成績單管理待錄成績單管理1 1 查詢查詢3.13.1導(dǎo)入導(dǎo)入課程課程成績成績3.23.2百分百分制成制成績錄績錄入入3.23.2等級(jí)等級(jí)制成制成績錄績錄入入2.12.1個(gè)別個(gè)別學(xué)生學(xué)生成績成績單單2.22.2成批成批學(xué)生學(xué)生成績成績單單1.11.1查詢查詢課程課程1.2 1.2 查詢查詢上課上課班級(jí)班級(jí)1.3 1.3 查詢查詢學(xué)生學(xué)生成績成績 HIPO圖圖 案例:用案例:用HIPO圖描述成績管理系統(tǒng)圖描述成績管理系統(tǒng) (2)其中,部分)其中,部分統(tǒng)計(jì)報(bào)表統(tǒng)計(jì)報(bào)表統(tǒng)計(jì)要求統(tǒng)計(jì)要求統(tǒng)計(jì)成績統(tǒng)計(jì)成績成績計(jì)算成績計(jì)算查詢結(jié)果查詢結(jié)果課程成績課程成績查詢條件查詢條件成績查詢成績查詢輸入輸

41、入處理處理輸出輸出成績記錄成績記錄CD/VCDCD/VCD管理系統(tǒng)管理系統(tǒng)會(huì)員管理會(huì)員管理1.01.0CD/VCDCD/VCD管理管理2.02.0費(fèi)用管理費(fèi)用管理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) 編號(hào)編號(hào) 2.0 2.0 日期日期 2010.3.28 2010.3.28 模塊名模塊名 CD/VCDCD/VCD管理管理 被調(diào)用:被調(diào)用:CD/VCDCD/VCD管理系統(tǒng)管理系統(tǒng)調(diào)用:添加、更新、刪除、檢索調(diào)用:添加、更新、刪除、檢索輸出:輸出:輸入:輸入:局部數(shù)據(jù)元素:局部數(shù)據(jù)元素:處

42、理:處理: H圖圖IPO表表4.3.2 結(jié)構(gòu)圖結(jié)構(gòu)圖 【結(jié)構(gòu)圖【結(jié)構(gòu)圖】 Software Chart, 簡稱簡稱SC圖圖 1974年年Yourdon提出提出 用來表示用來表示軟件層次結(jié)構(gòu)軟件層次結(jié)構(gòu),描述模塊之間的,描述模塊之間的調(diào)用關(guān)調(diào)用關(guān)系系 既能表示既能表示數(shù)據(jù)信息數(shù)據(jù)信息、控制信息控制信息,也能表示,也能表示選擇調(diào)選擇調(diào)用和循環(huán)調(diào)用用和循環(huán)調(diào)用。 數(shù)據(jù)流圖數(shù)據(jù)流圖 Vs. 模塊結(jié)構(gòu)圖模塊結(jié)構(gòu)圖 數(shù)據(jù)流圖:數(shù)據(jù)流圖:系統(tǒng)的邏輯模型系統(tǒng)的邏輯模型,反映,反映信息在系統(tǒng)中信息在系統(tǒng)中流動(dòng)情況流動(dòng)情況。 結(jié)構(gòu)圖:結(jié)構(gòu)圖:系統(tǒng)的物理模型系統(tǒng)的物理模型,反映系統(tǒng)構(gòu)成,反映系統(tǒng)構(gòu)成模塊的模塊的層次

43、結(jié)構(gòu)和功能關(guān)系層次結(jié)構(gòu)和功能關(guān)系。 結(jié)構(gòu)圖結(jié)構(gòu)圖是數(shù)據(jù)流圖和是數(shù)據(jù)流圖和HIPO圖發(fā)展和延伸的結(jié)果圖發(fā)展和延伸的結(jié)果,表示了系統(tǒng)構(gòu)成模塊以及模塊間的調(diào)用關(guān)系。表示了系統(tǒng)構(gòu)成模塊以及模塊間的調(diào)用關(guān)系。 層次圖和層次圖和HIPO圖不能表示模塊間的調(diào)用關(guān)系。圖不能表示模塊間的調(diào)用關(guān)系。 【結(jié)構(gòu)圖【結(jié)構(gòu)圖】 基本符號(hào)基本符號(hào) (1)模塊模塊 一個(gè)一個(gè)方框方框代表一個(gè)代表一個(gè)模塊模塊,框內(nèi)注明模塊的,框內(nèi)注明模塊的名稱名稱,名稱應(yīng)表達(dá)此模塊的名稱應(yīng)表達(dá)此模塊的功能功能; 最低層的模塊最低層的模塊叫叫基本模塊基本模塊或或功能模塊功能模塊,必須有,必須有明明確的含義確的含義。如。如“計(jì)算累加計(jì)算累加”、“求

44、平方根求平方根”、“按學(xué)號(hào)查詢按學(xué)號(hào)查詢”等。等。M 【結(jié)構(gòu)圖【結(jié)構(gòu)圖】 基本符號(hào)基本符號(hào) (2)調(diào)用調(diào)用 調(diào)用是模塊之間的調(diào)用是模塊之間的唯一的聯(lián)系唯一的聯(lián)系方式。用方式。用直線直線表示表示模塊的模塊的調(diào)用關(guān)系調(diào)用關(guān)系。 只能是上層模塊調(diào)用下層模塊只能是上層模塊調(diào)用下層模塊,不允許下層模塊不允許下層模塊調(diào)用上層模塊調(diào)用上層模塊。通常。通常也不允許同層模塊之間調(diào)用也不允許同層模塊之間調(diào)用。 【結(jié)構(gòu)圖【結(jié)構(gòu)圖】 基本符號(hào)基本符號(hào) (3)信息信息 模塊在調(diào)用過程中要互相傳送信息;結(jié)構(gòu)圖用帶模塊在調(diào)用過程中要互相傳送信息;結(jié)構(gòu)圖用帶注釋的小箭頭表示傳送的信息。有注釋的小箭頭表示傳送的信息。有2種類型

45、種類型 數(shù)據(jù)數(shù)據(jù)信息,尾部是空心圓信息,尾部是空心圓 控制控制信息,尾部是實(shí)心圓信息,尾部是實(shí)心圓 【結(jié)構(gòu)圖【結(jié)構(gòu)圖】 結(jié)構(gòu)圖用三種主要成分結(jié)構(gòu)圖用三種主要成分(模塊模塊、調(diào)用調(diào)用、信息信息)表示軟表示軟件系統(tǒng)的件系統(tǒng)的構(gòu)成構(gòu)成、模塊之間的、模塊之間的調(diào)用關(guān)系調(diào)用關(guān)系以及模塊之以及模塊之間的通信情況間的通信情況傳送的信息傳送的信息編輯學(xué)生記錄編輯學(xué)生記錄讀學(xué)生記錄讀學(xué)生記錄學(xué)生數(shù)據(jù)學(xué)生數(shù)據(jù)無此學(xué)生無此學(xué)生學(xué)號(hào)學(xué)號(hào)BCA簡單調(diào)用簡單調(diào)用選擇調(diào)用選擇調(diào)用循環(huán)調(diào)用循環(huán)調(diào)用 【結(jié)構(gòu)圖【結(jié)構(gòu)圖】 結(jié)構(gòu)圖可以表示三種模塊調(diào)用關(guān)系,分別是結(jié)構(gòu)圖可以表示三種模塊調(diào)用關(guān)系,分別是簡單簡單調(diào)用調(diào)用、選擇調(diào)用選擇調(diào)

46、用和和循環(huán)調(diào)用循環(huán)調(diào)用。判定為真時(shí)調(diào)用判定為真時(shí)調(diào)用A A,為假時(shí)調(diào)用,為假時(shí)調(diào)用B B模塊模塊M M循環(huán)調(diào)用模塊循環(huán)調(diào)用模塊A A、B B、C C 【結(jié)構(gòu)圖【結(jié)構(gòu)圖】 案例:用結(jié)構(gòu)圖描述最佳解模塊的結(jié)構(gòu)案例:用結(jié)構(gòu)圖描述最佳解模塊的結(jié)構(gòu) 層次圖層次圖 沒有過多的符號(hào),清晰易讀,沒有過多的符號(hào),清晰易讀,作為總體設(shè)計(jì)的文作為總體設(shè)計(jì)的文檔比較合適檔比較合適。 結(jié)構(gòu)圖結(jié)構(gòu)圖 能較好地反映軟件結(jié)構(gòu)的能較好地反映軟件結(jié)構(gòu)的控制關(guān)系控制關(guān)系,如:,如: 重復(fù)重復(fù)調(diào)用、選擇調(diào)用;調(diào)用、選擇調(diào)用; 傳遞是傳遞是數(shù)據(jù)數(shù)據(jù)還是還是控制控制信息,信息,有利于有利于評(píng)價(jià)軟件結(jié)構(gòu)質(zhì)量評(píng)價(jià)軟件結(jié)構(gòu)質(zhì)量。4.4 面向數(shù)

47、據(jù)流的設(shè)計(jì)方法面向數(shù)據(jù)流的設(shè)計(jì)方法 1、面向數(shù)據(jù)流的設(shè)計(jì)方法、面向數(shù)據(jù)流的設(shè)計(jì)方法 也稱為結(jié)構(gòu)化設(shè)計(jì)方法(也稱為結(jié)構(gòu)化設(shè)計(jì)方法(Structured Design ,簡簡稱稱SD),由于所有的設(shè)計(jì)都是從),由于所有的設(shè)計(jì)都是從DFD開始進(jìn)行分開始進(jìn)行分析設(shè)計(jì)。面向數(shù)據(jù)流的設(shè)計(jì)方法就是把析設(shè)計(jì)。面向數(shù)據(jù)流的設(shè)計(jì)方法就是把數(shù)據(jù)流數(shù)據(jù)流映映射成射成軟件結(jié)構(gòu)軟件結(jié)構(gòu)。 是基于是基于模塊化模塊化、自頂向下逐步求精自頂向下逐步求精、結(jié)構(gòu)化程序結(jié)構(gòu)化程序設(shè)計(jì)設(shè)計(jì)等基礎(chǔ)上發(fā)展起來的。等基礎(chǔ)上發(fā)展起來的。 2、面向數(shù)據(jù)流的設(shè)計(jì)要解決的任務(wù)、面向數(shù)據(jù)流的設(shè)計(jì)要解決的任務(wù) 在需求分析基礎(chǔ)上,將在需求分析基礎(chǔ)上,將數(shù)

48、據(jù)流圖數(shù)據(jù)流圖映射為映射為軟件系統(tǒng)軟件系統(tǒng)的結(jié)構(gòu)的結(jié)構(gòu)。即:把。即:把數(shù)據(jù)流圖數(shù)據(jù)流圖中的中的處理處理,轉(zhuǎn)換為,轉(zhuǎn)換為軟件軟件結(jié)構(gòu)圖結(jié)構(gòu)圖中合適的中合適的模塊模塊。映射映射DFD( (問題結(jié)構(gòu)問題結(jié)構(gòu)) )軟件結(jié)構(gòu)軟件結(jié)構(gòu)( (程序結(jié)構(gòu)程序結(jié)構(gòu)) )處理處理模塊模塊分析模型分析模型(邏輯模型(邏輯模型)從數(shù)據(jù)流圖導(dǎo)出結(jié)構(gòu)圖從數(shù)據(jù)流圖導(dǎo)出結(jié)構(gòu)圖 2、面向數(shù)據(jù)流的設(shè)計(jì)要解決的任務(wù)、面向數(shù)據(jù)流的設(shè)計(jì)要解決的任務(wù) 為什么把為什么把DFD轉(zhuǎn)換為軟件結(jié)構(gòu)?轉(zhuǎn)換為軟件結(jié)構(gòu)? 1) 雖然雖然DFD分析系統(tǒng)時(shí)很有價(jià)值分析系統(tǒng)時(shí)很有價(jià)值,但它但它不便于直接不便于直接用于編寫程序用于編寫程序;而軟件結(jié)構(gòu)圖描述而軟件

49、結(jié)構(gòu)圖描述模塊之間的模塊之間的調(diào)用調(diào)用關(guān)系關(guān)系,便于過渡到編寫程序便于過渡到編寫程序。 2) DFD中的中的處理處理和軟件結(jié)構(gòu)中的和軟件結(jié)構(gòu)中的模塊模塊有有對(duì)應(yīng)關(guān)系對(duì)應(yīng)關(guān)系,但但不一定有一一對(duì)應(yīng)關(guān)系不一定有一一對(duì)應(yīng)關(guān)系。 3、基本概念、基本概念 數(shù)據(jù)流的類型數(shù)據(jù)流的類型決定了決定了映射的方法映射的方法。數(shù)據(jù)流有。數(shù)據(jù)流有變換變換流流和和事務(wù)流事務(wù)流兩種。兩種。 因此,常見的因此,常見的軟件結(jié)構(gòu)軟件結(jié)構(gòu)有兩種:有兩種:變換型變換型和和事務(wù)型事務(wù)型,當(dāng)然更一般的情況是當(dāng)然更一般的情況是兩種類型的混合兩種類型的混合。 3、基本概念、基本概念 【變換流】特征【變換流】特征 (1)信息沿輸入通路進(jìn)入系統(tǒng)

50、,同時(shí)由外部形式)信息沿輸入通路進(jìn)入系統(tǒng),同時(shí)由外部形式變換成內(nèi)部形式變換成內(nèi)部形式 (2)進(jìn)入系統(tǒng)的信息通過變換中心)進(jìn)入系統(tǒng)的信息通過變換中心 (3)經(jīng)過加工處理以后再沿輸出通路變換成外部)經(jīng)過加工處理以后再沿輸出通路變換成外部形式離開軟件形式離開軟件 3、基本概念、基本概念 【事務(wù)流】特征【事務(wù)流】特征 (1)接收輸入數(shù)據(jù)(輸入數(shù)據(jù)又稱為事務(wù))接收輸入數(shù)據(jù)(輸入數(shù)據(jù)又稱為事務(wù)) (2)分析每個(gè)事務(wù)確定它的類型)分析每個(gè)事務(wù)確定它的類型 (3)根據(jù)事務(wù)類型選?。└鶕?jù)事務(wù)類型選取一條活動(dòng)通路一條活動(dòng)通路。事務(wù)事務(wù)事務(wù)中心事務(wù)中心動(dòng)作序列動(dòng)作序列4.4.1 變換映射變換映射 4、【變換映射、【

51、變換映射】 定義:經(jīng)過一系列設(shè)計(jì)步驟將具有變換流特點(diǎn)的定義:經(jīng)過一系列設(shè)計(jì)步驟將具有變換流特點(diǎn)的數(shù)據(jù)流圖映射成軟件結(jié)構(gòu),也稱為變換分析。數(shù)據(jù)流圖映射成軟件結(jié)構(gòu),也稱為變換分析。 【變換映射的基本步驟【變換映射的基本步驟】 第第1步步 確定數(shù)據(jù)流圖類型確定數(shù)據(jù)流圖類型 第第2步步 確定輸入流和輸出流的邊界,從而孤立出確定輸入流和輸出流的邊界,從而孤立出變換中心。變換中心。 第第3步步 完成完成“第一級(jí)分解第一級(jí)分解” 第第4步步 完成完成“第二級(jí)分解第二級(jí)分解” 【案例】汽車數(shù)字儀表板控制系統(tǒng)【案例】汽車數(shù)字儀表板控制系統(tǒng) 功能:功能: (1) 模模/數(shù)數(shù)轉(zhuǎn)換:把傳感器讀出的轉(zhuǎn)換:把傳感器讀出的

52、車輪轉(zhuǎn)數(shù)信號(hào)車輪轉(zhuǎn)數(shù)信號(hào)和和燃料信號(hào)燃料信號(hào)(耗油量耗油量)轉(zhuǎn)換成轉(zhuǎn)換成數(shù)字量數(shù)字量 (2) 在發(fā)光二極管面板上在發(fā)光二極管面板上(各種儀表板各種儀表板)顯示數(shù)據(jù)顯示數(shù)據(jù) 指示指示每小時(shí)每小時(shí)公里數(shù)公里數(shù)、行駛、行駛里程里程、每升油行駛、每升油行駛公里數(shù)公里數(shù)等等 指示加速或減速;指示加速或減速; 超速警告超速警告:車速車速超過超過200公里公里/小時(shí),發(fā)出超速警告鈴聲小時(shí),發(fā)出超速警告鈴聲數(shù)字儀表板數(shù)字儀表板控制系統(tǒng)控制系統(tǒng)1.1.加加/ /勻勻/ /減速減速2.2.顯示里程顯示里程3.3.超速鈴聲超速鈴聲4.4.顯示公里顯示公里/ /小時(shí)小時(shí)mphmph5.5.顯示公里顯示公里/ /升升m

53、pgmpgA/DA/D轉(zhuǎn)換后轉(zhuǎn)換后I:I:旋轉(zhuǎn)信號(hào)旋轉(zhuǎn)信號(hào)( (車輪車輪) ): :燃料流傳感器信號(hào)燃料流傳感器信號(hào) ( (耗油量耗油量) )儀表板頂層數(shù)據(jù)流圖儀表板頂層數(shù)據(jù)流圖輸入:輸入: 輸出:輸出:1 1、2 2、3 3、4 4輸入:輸入:+ + 輸出:輸出:5 5采集采集和求和求平均值平均值旋轉(zhuǎn)旋轉(zhuǎn)信號(hào)信號(hào)下箭頭下箭頭( (減速指示減速指示) )燃料流信號(hào)燃料流信號(hào)燃料流燃料流升升/ /小時(shí)小時(shí)鈴聲鈴聲超速值超速值公里公里/ /小時(shí)小時(shí)公里公里/ /升升公里公里/ /小時(shí)小時(shí)公里公里/ /升升確定加確定加速減速速減速轉(zhuǎn)換成轉(zhuǎn)換成轉(zhuǎn)轉(zhuǎn)/ /分分計(jì)算公里計(jì)算公里/ /小時(shí)小時(shí)和超速值和超速

54、值計(jì)算計(jì)算燃料消耗燃料消耗產(chǎn)生產(chǎn)生公里公里/ /升升顯示顯示讀、讀、校核校核計(jì)算每小時(shí)計(jì)算每小時(shí)消耗的燃油消耗的燃油計(jì)算計(jì)算里程里程產(chǎn)生產(chǎn)生里程里程顯示顯示發(fā)出發(fā)出鈴聲鈴聲產(chǎn)生產(chǎn)生公里公里/ /小時(shí)小時(shí)顯示顯示讀旋轉(zhuǎn)讀旋轉(zhuǎn)信號(hào)信號(hào)產(chǎn)生產(chǎn)生加加/ /減速減速顯示顯示轉(zhuǎn)數(shù)轉(zhuǎn)數(shù)/ /秒秒轉(zhuǎn)轉(zhuǎn)/ /分分rpmrpm轉(zhuǎn)轉(zhuǎn)/ /分分rpmrpm里程里程1 12 23 34 45 5水平線水平線( (勻速指示勻速指示) ) 轉(zhuǎn)數(shù)轉(zhuǎn)數(shù)/ /秒的平均值秒的平均值轉(zhuǎn)數(shù)轉(zhuǎn)數(shù)/ /秒的瞬時(shí)值秒的瞬時(shí)值上箭頭上箭頭( (加速指示加速指示) )公里公里/ /小時(shí)小時(shí)公里公里儀表板系統(tǒng)的數(shù)據(jù)流圖儀表板系統(tǒng)的數(shù)據(jù)流圖 第第1

55、步步 確定數(shù)據(jù)流圖類型確定數(shù)據(jù)流圖類型 即:具有變換特性還是事務(wù)特性即:具有變換特性還是事務(wù)特性,因類型不同因類型不同, 其其映射的方法不同映射的方法不同 1)當(dāng)一個(gè)系統(tǒng))當(dāng)一個(gè)系統(tǒng)沒有明顯的事務(wù)特性沒有明顯的事務(wù)特性時(shí),可以認(rèn)為時(shí),可以認(rèn)為是是變換流變換流。 2)應(yīng)根據(jù))應(yīng)根據(jù)數(shù)據(jù)流圖中數(shù)據(jù)流圖中占優(yōu)勢的占優(yōu)勢的屬性屬性,確定數(shù)據(jù)流,確定數(shù)據(jù)流的的全局特性全局特性。 3)有的可能)有的可能全局全局是變換流,而是變換流,而局部局部可能是事務(wù)流,可能是事務(wù)流,有的與此相反有的與此相反。 第第2步步 確定輸入流和輸出流的確定輸入流和輸出流的邊界邊界,從而孤立,從而孤立出變換中心。出變換中心。 變換

56、結(jié)構(gòu)變換結(jié)構(gòu)由由輸入輸入、輸出輸出和和變換中心變換中心3部分組成部分組成。 (1)邏輯輸入)邏輯輸入:是指離是指離輸入開始端最遠(yuǎn)輸入開始端最遠(yuǎn),但仍可,但仍可以被看作以被看作系統(tǒng)輸入系統(tǒng)輸入的那些數(shù)據(jù)流。的那些數(shù)據(jù)流。 (2)邏輯輸出)邏輯輸出:是指離是指離輸出末端最遠(yuǎn)輸出末端最遠(yuǎn),但仍可視,但仍可視為為系統(tǒng)輸出系統(tǒng)輸出的那些數(shù)據(jù)流。的那些數(shù)據(jù)流。 使用邏輯輸入和邏輯輸出的目的:就是要根據(jù)邏使用邏輯輸入和邏輯輸出的目的:就是要根據(jù)邏輯輸入、邏輯輸出輯輸入、邏輯輸出確定變換中心確定變換中心。因?yàn)樽儞Q中心。因?yàn)樽儞Q中心位于邏輯輸入和輸出中間,位于邏輯輸入和輸出中間, 確定邊界后用確定邊界后用虛線畫

57、邊界虛線畫邊界。 數(shù)字儀表板系統(tǒng)的數(shù)據(jù)流圖數(shù)字儀表板系統(tǒng)的數(shù)據(jù)流圖采集采集和求和求平均值平均值旋轉(zhuǎn)旋轉(zhuǎn)信號(hào)信號(hào)下箭頭下箭頭( (減速指示減速指示) )燃料流信號(hào)燃料流信號(hào)燃料流燃料流升升/ /小時(shí)小時(shí)鈴聲鈴聲超速值超速值公里公里/ /小時(shí)小時(shí)公里公里/ /升升公里公里/ /小時(shí)小時(shí)公里公里/ /升升確定加確定加速減速速減速轉(zhuǎn)換成轉(zhuǎn)換成轉(zhuǎn)轉(zhuǎn)/ /分分計(jì)算公里計(jì)算公里/ /小時(shí)小時(shí)和超速值和超速值計(jì)算計(jì)算燃料消耗燃料消耗產(chǎn)生產(chǎn)生公里公里/ /升升顯示顯示讀、讀、校核校核計(jì)算每小時(shí)計(jì)算每小時(shí)消耗的燃油消耗的燃油計(jì)算計(jì)算里程里程產(chǎn)生產(chǎn)生里程里程顯示顯示發(fā)出發(fā)出鈴聲鈴聲產(chǎn)生產(chǎn)生公里公里/ /小時(shí)小時(shí)顯示

58、顯示讀旋轉(zhuǎn)讀旋轉(zhuǎn)信號(hào)信號(hào)產(chǎn)生產(chǎn)生加加/ /減速減速顯示顯示轉(zhuǎn)數(shù)轉(zhuǎn)數(shù)/ /秒秒轉(zhuǎn)轉(zhuǎn)/ /分分rpmrpm轉(zhuǎn)轉(zhuǎn)/ /分分rpmrpm里程里程1 12 23 34 45 5水平線水平線( (勻速指示勻速指示) ) 轉(zhuǎn)數(shù)轉(zhuǎn)數(shù)/ /秒的平均值秒的平均值轉(zhuǎn)數(shù)轉(zhuǎn)數(shù)/ /秒的瞬時(shí)值秒的瞬時(shí)值上箭頭上箭頭( (加速指示加速指示) )公里公里/ /小時(shí)小時(shí)公里公里 第第3步步 完成完成“第一級(jí)分解第一級(jí)分解” 任務(wù):畫任務(wù):畫頂層頂層和和第一層第一層 頂層頂層:只含一個(gè)用于控制的:只含一個(gè)用于控制的主控模塊主控模塊。 第一層第一層:包括:包括輸入輸入模塊、模塊、變換變換模塊、模塊、輸出輸出模塊模塊數(shù)字儀表板系統(tǒng)的

59、第一級(jí)分解數(shù)字儀表板系統(tǒng)的第一級(jí)分解頂層頂層一層一層數(shù)字儀表數(shù)字儀表 板控制板控制接收傳感接收傳感 器信號(hào)器信號(hào)數(shù)據(jù)轉(zhuǎn)換數(shù)據(jù)轉(zhuǎn)換 控制控制驅(qū)動(dòng)儀表驅(qū)動(dòng)儀表 板輸出板輸出轉(zhuǎn)數(shù)轉(zhuǎn)數(shù)/ /秒的瞬時(shí)值秒的瞬時(shí)值加加/ /減速減速里程里程公里公里/ /小時(shí)小時(shí)公里公里/ /升,鈴聲升,鈴聲轉(zhuǎn)轉(zhuǎn)/ /分分升升/ /小時(shí)小時(shí) 第第4步步 完成完成“第二級(jí)分解第二級(jí)分解”。 所謂第二級(jí)分解就是把所謂第二級(jí)分解就是把DFD中的中的每個(gè)處理映射每個(gè)處理映射成成軟件結(jié)構(gòu)中一個(gè)適當(dāng)?shù)能浖Y(jié)構(gòu)中一個(gè)適當(dāng)?shù)哪K模塊。 以下圖為例說明完成第二級(jí)分解的方法以下圖為例說明完成第二級(jí)分解的方法ABCDEF輸入輸入 變換變換 輸出

60、輸出 第第4步步 完成完成“第二級(jí)分解第二級(jí)分解”。輸入模塊輸入模塊BA輸出模塊輸出模塊EF(1)輸入模塊:)輸入模塊:從從變換中心變換中心的的邊界邊界開始,沿著開始,沿著輸入輸入通路通路向外移動(dòng)向外移動(dòng)。從從最近開始最近開始,把輸入通路中,把輸入通路中每一個(gè)處理每一個(gè)處理轉(zhuǎn)換成結(jié)轉(zhuǎn)換成結(jié)構(gòu)圖中輸入模塊控制下的一個(gè)低層模塊。構(gòu)圖中輸入模塊控制下的一個(gè)低層模塊。(2)輸出模塊:)輸出模塊:從從變換中心變換中心的的邊界邊界開始,沿著開始,沿著輸出輸出通路通路向外移向外移動(dòng)動(dòng),從,從最近開始最近開始,把輸出通路中,把輸出通路中每一個(gè)處理每一個(gè)處理轉(zhuǎn)轉(zhuǎn)換成結(jié)構(gòu)圖中輸出模塊控制下的一個(gè)低層模塊。換成結(jié)構(gòu)

溫馨提示

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

評(píng)論

0/150

提交評(píng)論