軟件工程ch4軟件設(shè)計(jì)._第1頁(yè)
軟件工程ch4軟件設(shè)計(jì)._第2頁(yè)
軟件工程ch4軟件設(shè)計(jì)._第3頁(yè)
軟件工程ch4軟件設(shè)計(jì)._第4頁(yè)
軟件工程ch4軟件設(shè)計(jì)._第5頁(yè)
已閱讀5頁(yè),還剩157頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第四章 結(jié)構(gòu)化軟件設(shè)計(jì)SDLC 設(shè)計(jì)階段的活動(dòng)設(shè)計(jì)階段的活動(dòng)n 網(wǎng)絡(luò)的設(shè)計(jì)與集成網(wǎng)絡(luò)的設(shè)計(jì)與集成n 應(yīng)用程序體系結(jié)構(gòu)的設(shè)計(jì)應(yīng)用程序體系結(jié)構(gòu)的設(shè)計(jì)n 用戶界面的設(shè)計(jì)用戶界面的設(shè)計(jì)n 系統(tǒng)接口的設(shè)計(jì)系統(tǒng)接口的設(shè)計(jì)n 數(shù)據(jù)庫(kù)系統(tǒng)的設(shè)計(jì)與集成數(shù)據(jù)庫(kù)系統(tǒng)的設(shè)計(jì)與集成n 細(xì)節(jié)設(shè)計(jì)原型系統(tǒng)的建立細(xì)節(jié)設(shè)計(jì)原型系統(tǒng)的建立n 系統(tǒng)控制的設(shè)計(jì)與集成系統(tǒng)控制的設(shè)計(jì)與集成9.1 理解設(shè)計(jì)要素4.1 軟件設(shè)計(jì)的基本概念與原理o 模塊n 相對(duì)獨(dú)立n 組成:數(shù)據(jù)說明、執(zhí)行語(yǔ)句n 表現(xiàn):函數(shù)、子程序、過程 類對(duì)象n 特征o 輸入輸出 接口o 功能o 內(nèi)部數(shù)據(jù)o 程序代碼 邏輯o 狀態(tài) 運(yùn)行環(huán)境總體設(shè)計(jì)的概念和原理模塊化o 模塊

2、化的目的n 模塊化:把程序劃分成為若干個(gè)模塊,獨(dú)立完成若干個(gè)功能,在把他們組成一個(gè)集體,可以完成指定的功能,滿足問題的要求。n “各個(gè)擊破”原則n 使軟件結(jié)構(gòu)清晰;使軟件容易測(cè)試和調(diào)試,從而提高軟件的可靠性;提高軟件的可修改性n 但不能無限分割總體設(shè)計(jì)的概念和原理模塊化o C(P1) C(P2)o E(P1) E(P2)o C(A+B) C(A) + C(B)o E(A+B) E(A) + E(B)總體設(shè)計(jì)的概念和原理模塊化成成本本或或工工作作量量模塊模塊數(shù)量數(shù)量軟件總成本軟件總成本集成(接口)集成(接口)成本成本成本成本/ /模塊模塊M最小成本區(qū)域最小成本區(qū)域o 模塊化的程度與軟件成本的關(guān)系

3、抽象與逐步求精o 抽象與逐步求精:忽略細(xì)節(jié),分層理解問題,自頂向下層層加細(xì)。n 抽象層次:可使用自然語(yǔ)言,配合使用面向問題的專業(yè)術(shù)語(yǔ),概括地描述問題的解法n 抽象層次:任務(wù)需求的描述。列出“What”而不是“How”n 抽象層次:程序過程表示。 在這個(gè)抽象層次上,給出了初步的過程表示,所用的術(shù)語(yǔ)都已面向軟件,而且模塊化的工作已經(jīng)開始顯露 軟件工程的先輩們已將抽象化思想用于軟件設(shè)計(jì)的不同方面用問題所處環(huán)境的術(shù)語(yǔ)來描述這個(gè)軟件:該軟件包括一個(gè)計(jì)算機(jī)繪圖界面,向繪圖員顯示圖形,以及一個(gè)數(shù)字化儀界面,用以代替繪圖板和丁字尺。所有直線、折線、矩形、圓及曲線的描畫、所有的幾何計(jì)算、所有的剖面圖和輔助視圖都

4、可以用這個(gè)CAD軟件實(shí)現(xiàn)。任務(wù)需求的描述。CAD SOFTWARE TASKS user interaction task; 2-D drawing creation task; graphics display task; drawing file management task; end. 在這個(gè)抽象層次上,未給出“怎樣做”的信息,不能直接實(shí)現(xiàn)。程序過程表示。以2-D (二維)繪圖生成任務(wù)為例: PROCEDURE:2-D drawing creation REPEAT UNTIL (drawing creation task terminates) DO WHILE (digitizer

5、 interaction occurs) digitizer interface task; DETERMINE drawing request CASE; line: line drawing task; rectangle:rectangle drawing task; 抽象與逐步求精(續(xù))o 啟示:模塊化和抽象層次思想相結(jié)合,可以使從不同的角度來看系統(tǒng)n 最高層次的模塊:反映了整體的解決方案,隱藏了那些可能擾亂視線的細(xì)節(jié),能夠看到一個(gè)系統(tǒng)所要完成的主要功能。n 更低的抽象層次:反映了某部分更多的細(xì)節(jié)信息隱蔽(Information hiding)o 信息隱蔽:應(yīng)用模塊化原理時(shí),一個(gè)重要原

6、則就是將信息盡量隱藏在相應(yīng)的處理模塊中。該項(xiàng)技術(shù)最早是由Parnas提出的n 核心內(nèi)容:一個(gè)模塊中所包含的信息,不允許其他不需要這些信息的模塊使用。n 有效的模塊化可以通過定義一組相互獨(dú)立的模塊來實(shí)現(xiàn),這些獨(dú)立的模塊彼此間僅僅交換那些為了完成相應(yīng)功能必須的信息 抽象幫助定義構(gòu)成軟件的結(jié)構(gòu),而信息隱蔽則可定義和實(shí)施對(duì)模塊的過程細(xì)節(jié)和局部數(shù)據(jù)結(jié)構(gòu)的存取限制信息隱藏的圖示說明信息隱蔽o String password;o void setPassword(String pswd)password=pswd;o boolean verifyPassword(String userinputpswd).

7、 模塊的獨(dú)立性o 模塊之間的耦合性n 不同模塊間的聯(lián)系緊密程度的度量n 越小越好o 模塊的內(nèi)聚性n 模塊內(nèi)部各元素間相互結(jié)合的緊密程度的度量n 越大越好影響耦合的因素o 聯(lián)系的作用 模塊相互之間的影響程度,取決于傳送的信息流的類型,通常包括三種:數(shù)據(jù)型、控制型和混合型n傳送的信息流是數(shù)據(jù)型時(shí)耦合度最低n如果一個(gè)模塊直接轉(zhuǎn)移到另一模塊的某點(diǎn)上,就影響了兩個(gè)模塊的控制。通常通過傳遞參數(shù)來傳遞控制,如傳遞一個(gè)開關(guān)量來告訴另一模塊做何工作,即控制型的信息流。耦合度很高n當(dāng)一個(gè)模塊修改另一個(gè)模塊的代碼時(shí),對(duì)修改者,修改的代碼是當(dāng)作數(shù)據(jù)來處理的,而對(duì)被修改的模塊,則可能是對(duì)控制的改變,這種情況最難處理,耦

8、合度最高影響耦合的因素o 耦合的時(shí)間 有以下幾種情況:n 編寫程序時(shí)(程序員編寫一行語(yǔ)句時(shí))n 模塊編譯或匯編時(shí)n 程序模塊連接時(shí)n 系統(tǒng)運(yùn)行時(shí)耦合出現(xiàn)的時(shí)間越晚,程序就越容易修改,越靈活耦合性:由小到大非直接耦合 兩個(gè)模塊沒有直接關(guān)系(模塊1和模塊2),模塊獨(dú)立性最強(qiáng)。模塊模塊1 1模塊模塊2 2模塊模塊3 3模塊模塊4 420數(shù)據(jù)耦合(Data Coupling) 一模塊調(diào)用另一模塊時(shí),被調(diào)用模塊的輸入、輸出都是簡(jiǎn)單的數(shù)據(jù)(若干參數(shù))。 通過模塊參數(shù)交換信息屬松散耦合。開發(fā)票開發(fā)票計(jì)算水費(fèi)計(jì)算水費(fèi)單價(jià)單價(jià)數(shù)量數(shù)量金額金額21標(biāo)記耦合(復(fù)合型耦合)如兩個(gè)或一組模塊通過傳遞數(shù)據(jù)結(jié)構(gòu)(不是簡(jiǎn)單數(shù)

9、據(jù),而是記錄、數(shù)組等)加以聯(lián)系,或都與一個(gè)數(shù)據(jù)結(jié)構(gòu)有關(guān)系, 則稱這兩個(gè)模塊間存在標(biāo)記偶合。22標(biāo)記耦合舉例計(jì)算水電費(fèi)計(jì)算水電費(fèi)計(jì)算水費(fèi)計(jì)算水費(fèi)計(jì)算電費(fèi)計(jì)算電費(fèi)住戶情況住戶情況水費(fèi)水費(fèi)電費(fèi)電費(fèi)住戶情住戶情況況“住戶情況住戶情況”是一個(gè)是一個(gè)數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu), ,圖中模塊都與此數(shù)據(jù)結(jié)圖中模塊都與此數(shù)據(jù)結(jié)構(gòu)有關(guān)。構(gòu)有關(guān)?!坝?jì)算水費(fèi)計(jì)算水費(fèi)”和和“計(jì)算電費(fèi)計(jì)算電費(fèi)”本無關(guān)本無關(guān), ,由于引用了此數(shù)由于引用了此數(shù)據(jù)結(jié)構(gòu)產(chǎn)生依賴關(guān)系據(jù)結(jié)構(gòu)產(chǎn)生依賴關(guān)系, ,它們之間是標(biāo)記偶合。它們之間是標(biāo)記偶合。用戶姓名家庭住址用水量用電量住 戶 情住 戶 情況況23將標(biāo)記耦合修改為數(shù)據(jù)耦合舉例計(jì)算水電費(fèi)計(jì)算水電費(fèi)計(jì)算水費(fèi)

10、計(jì)算水費(fèi)計(jì)算電費(fèi)計(jì)算電費(fèi)本月本月用水量用水量本月本月用電量用電量水費(fèi)水費(fèi)電費(fèi)電費(fèi)24控制耦合 一模塊向下屬模塊傳遞的信息 (開關(guān)量、標(biāo)志等控制被調(diào)用模塊決策的變量) 控制了被調(diào)用模塊的內(nèi)部邏輯。25控制耦合舉例A A計(jì)算平均分計(jì)算平均分或最高分或最高分B B平均平均/ /最高最高( (控制信號(hào)控制信號(hào)) )成績(jī)成績(jī)讀入分?jǐn)?shù)讀入分?jǐn)?shù)輸出結(jié)果輸出結(jié)果計(jì)算平均分計(jì)算平均分計(jì)算最高分計(jì)算最高分平均平均/ /最高最高? ?B B26控制耦合增加了理解和編程的復(fù)雜性,調(diào)用模塊必須知道被調(diào)模塊的內(nèi)部邏輯,增加了相互依賴o 將被調(diào)用模塊內(nèi)的判定上移到調(diào)用模塊 中進(jìn)行o 被調(diào)用模塊分解成若干單一功能模塊去除模塊

11、間控制耦合的方法27改控制耦合為數(shù)據(jù)耦合舉例A A計(jì)算平均分計(jì)算平均分B1B1平均成績(jī)平均成績(jī)最高成績(jī)最高成績(jī)計(jì)算最高分計(jì)算最高分B2B228外部耦合o 如果兩個(gè)模塊都訪問同一個(gè)全局簡(jiǎn)單變量而不是同一全局?jǐn)?shù)據(jù)結(jié)構(gòu),而且,不是通過參數(shù)表傳遞該全局變量的信息,則這兩個(gè)變量具有外部耦合。o 例如,模塊A和模塊B之間的通信不是通過參數(shù),而是通過全局變量,并且兩個(gè)模塊內(nèi)部都可以修改全局變量。o 設(shè)計(jì)時(shí),盡量不要使用外部耦合29公共耦合(公共數(shù)據(jù)區(qū)耦合) 一組模塊引用同一個(gè)公用數(shù)據(jù)區(qū)(也稱全局?jǐn)?shù)據(jù)區(qū)、公共數(shù)據(jù)環(huán)境)。公共數(shù)據(jù)區(qū)指:o 全局?jǐn)?shù)據(jù)結(jié)構(gòu)o 共享通訊區(qū)o 內(nèi)存公共覆蓋區(qū)等30公共耦合舉例31o 軟

12、件可理解性降低o 診斷錯(cuò)誤困難o 軟件可維護(hù)性差o 軟件可靠性差(公共數(shù)據(jù)區(qū)及全程變量無保護(hù)措施)慎用公共數(shù)據(jù)區(qū)和全程變量! 只有在模塊之間共享的數(shù)據(jù)很多,并且通過參數(shù)表傳遞不方便時(shí),才使用公共耦合公共耦合存在的問題內(nèi)容耦合33內(nèi)容耦合舉例一模塊直接訪問一模塊直接訪問另一模塊的內(nèi)部另一模塊的內(nèi)部信息信息 ( (程序代碼程序代碼或數(shù)據(jù)或數(shù)據(jù))最不好的耦合形式最不好的耦合形式 !ABAB模塊模塊代碼重疊代碼重疊Entry1 Entry1 多入口多入口模塊模塊模塊內(nèi)聚內(nèi)聚性:由小到大o 偶然內(nèi)聚(低)n 為節(jié)省空間將不同功能相互無聯(lián)系的語(yǔ)句組合在一起偶然內(nèi)聚(巧合內(nèi)聚)模塊模塊MM中的三個(gè)語(yǔ)句沒有任

13、何聯(lián)系,只因?yàn)橹械娜齻€(gè)語(yǔ)句沒有任何聯(lián)系,只因?yàn)?A A、B B、C C三個(gè)模塊都要用到這些語(yǔ)句三個(gè)模塊都要用到這些語(yǔ)句缺點(diǎn):缺點(diǎn):可理解性差可理解性差, 可修改性差可修改性差A(yù) AB BC CM MMOVE O TO RMOVE O TO RREAD FILE FREAD FILE FMOVE S TO TMOVE S TO T邏輯內(nèi)聚 把幾種相關(guān)功能(邏輯上相似的功能)組合在一模塊內(nèi),每次調(diào)用由傳給模塊的參數(shù)確定執(zhí)行哪種功能。n 實(shí)現(xiàn)多個(gè)邏輯上相同或相似的功能邏輯內(nèi)聚舉例ABCEFGABCEFGA1B1C1EFGEFG模塊內(nèi)部邏輯模塊內(nèi)部邏輯 E E、F F、G G邏輯邏輯 功能相似,組功能

14、相似,組 成新模塊成新模塊EFGEFG 缺點(diǎn)缺點(diǎn):增強(qiáng)了耦合程度增強(qiáng)了耦合程度( (控制耦合控制耦合) ) 不易修改,效率低不易修改,效率低公用代碼段公用代碼段公用代碼段公用代碼段邏輯內(nèi)聚舉例時(shí)間內(nèi)聚(經(jīng)典內(nèi)聚) 模塊完成的功能必須在同一時(shí)間內(nèi)執(zhí)行,這些功能只因時(shí)間因素關(guān)聯(lián)在一起。例如:o 初始化系統(tǒng)模塊o 系統(tǒng)結(jié)束模塊o 緊急故障處理模塊等均是時(shí)間性聚合模塊 這種模塊在20世紀(jì)80年代的應(yīng)用程序中使用較多,沒有任何復(fù)用價(jià)值,并且一旦其他模塊需要修改時(shí),對(duì)該模塊的影響較大,所以現(xiàn)在主張將變量的初始化操作都?xì)w入到相關(guān)的模塊中過程內(nèi)聚(順序性組合) 模塊內(nèi)各處理成分相關(guān),且必須以特定次序執(zhí)行,如把

15、流程圖中的某一部分劃出組成模塊,得到的就是過程內(nèi)聚模塊n 過程內(nèi)聚模塊可能包含一個(gè)完整功能的一部分n 或者包含一個(gè)或幾個(gè)功能再加上其它功能的一部分,會(huì)導(dǎo)致模塊的高度可變性 如果選擇不當(dāng),就不能使這種模塊完成獨(dú)立的任務(wù),也無法在新的系統(tǒng)中獨(dú)立使用。所以它的內(nèi)聚程度仍然比較低,模塊間的耦合度還比較高。過程內(nèi)聚(順序性組合)舉例計(jì)算模塊循環(huán)處理模塊判斷處理模塊通信內(nèi)聚 模塊內(nèi)各部分使用相同的輸入數(shù)據(jù),或產(chǎn)生相同的輸出結(jié)果產(chǎn)生職工工資報(bào)表并計(jì)算平均工資模塊產(chǎn)生職工工資報(bào)表并計(jì)算平均工資模塊產(chǎn)生工資報(bào)表產(chǎn)生工資報(bào)表計(jì)算平均工資計(jì)算平均工資工資記錄工資記錄 工資報(bào)表工資報(bào)表平均工資平均工資信息內(nèi)聚 模塊完

16、成多個(gè)功能,各功能都在同一數(shù)據(jù)結(jié)構(gòu)上操作,每一功能有唯一入口,實(shí)現(xiàn)時(shí),一般采用選擇結(jié)構(gòu)來實(shí)現(xiàn)功能。 學(xué)生記錄數(shù)據(jù)學(xué)生記錄數(shù)據(jù)查找查找登錄登錄刪除刪除修改修改 幾個(gè)加工同時(shí)引用一個(gè)共同的數(shù)據(jù)幾個(gè)加工同時(shí)引用一個(gè)共同的數(shù)據(jù)功能內(nèi)聚o 模塊僅包括為完成某個(gè)功能所必須的所有成分。o 模塊所有成分共同完成一個(gè)功能,缺一不可 內(nèi)聚性最強(qiáng)函數(shù)函數(shù)A-處理處理1函數(shù)函數(shù)B-處理處理2函數(shù)函數(shù)C-處理處理34.2 4.2 體系結(jié)構(gòu)設(shè)計(jì)概述體系結(jié)構(gòu)設(shè)計(jì)概述4.2.1軟件設(shè)計(jì)的任務(wù)總體設(shè)計(jì)的任務(wù)及目標(biāo)o 開發(fā)階段的信息流總體設(shè)計(jì)任務(wù)總體設(shè)計(jì)任務(wù)總體設(shè)計(jì)任務(wù)總體設(shè)計(jì)任務(wù)5、編寫總體設(shè)計(jì)文檔 國(guó)標(biāo)GB8576-88的“

17、計(jì)算機(jī)軟件產(chǎn)品開發(fā)文件編制指南”規(guī)定,軟件設(shè)計(jì)文檔可分為:n 概要設(shè)計(jì)說明書:集中于軟件結(jié)構(gòu)描述,如系統(tǒng)目標(biāo)和軟件的總體設(shè)計(jì)、在系統(tǒng)中的作用、與硬件、軟件和人員的接口、軟件的主要功能、模塊的劃分、模塊功能及數(shù)據(jù)設(shè)計(jì) n 數(shù)據(jù)庫(kù)設(shè)計(jì)說明書:主要給出DBMS系統(tǒng)的選擇、所使用的DBMS簡(jiǎn)介、數(shù)據(jù)庫(kù)的概念模型、邏輯設(shè)計(jì)結(jié)果以及模式、子模式、完整性、安全性和優(yōu)化方法等n 用戶手冊(cè):對(duì)需求分析階段編寫的用戶手冊(cè)進(jìn)行補(bǔ)充n 測(cè)試計(jì)劃:修訂需求分析階段編寫測(cè)試計(jì)劃,對(duì)測(cè)試策略、方法、步驟提出明確要求 總體設(shè)計(jì)任務(wù)6、設(shè)計(jì)審查和復(fù)審o 最后應(yīng)該對(duì)總體設(shè)計(jì)的結(jié)果進(jìn)行嚴(yán)格的技術(shù)審查o 在技術(shù)審查通過之后再由使用部

18、門的負(fù)責(zé)人從管理角度進(jìn)行復(fù)審o 通過審查,對(duì)設(shè)計(jì)部分是否完整地實(shí)現(xiàn)了需求中規(guī)定的功能、性能等要求、設(shè)計(jì)方案的可行性、關(guān)鍵的處理及內(nèi)外部接口定義的正確性、有效性以及各部分之間的一致性等進(jìn)行驗(yàn)證總體設(shè)計(jì)任務(wù)4.2.2 體系結(jié)構(gòu)設(shè)計(jì)中可采用的工具1.HIPO圖o HIPO圖(層次圖輸入/處理/輸出圖)nH圖:描述總體模塊結(jié)構(gòu)的層次nIPO圖:描述每個(gè)模塊輸入/輸出和處理功能工資計(jì)算系統(tǒng)的H圖計(jì)算出勤獎(jiǎng)計(jì)算業(yè)績(jī)獎(jiǎng)計(jì)算工資檔案各基本數(shù)據(jù)項(xiàng)之和1.1.1計(jì)算獎(jiǎng)金1.1.2計(jì)算應(yīng)發(fā)工資1.1計(jì)算水電扣款1.2.1計(jì)算缺勤扣款1.2.2計(jì)算所得稅扣款1.2.3計(jì)算扣款1.2計(jì)算實(shí)發(fā)

19、工資1.3計(jì)算工資1查詢職工賬號(hào)2.1生成工資存款清單2.2工資轉(zhuǎn)存2打印工資清單3工資計(jì)算系統(tǒng)計(jì)算工資模塊的IPO圖業(yè)績(jī)表出勤表工資檔案文件獎(jiǎng)懲條例水電扣款表計(jì)算獎(jiǎng)金計(jì)算應(yīng)發(fā)工資計(jì)算扣款計(jì)算實(shí)發(fā)工資獎(jiǎng)金發(fā)放表應(yīng)發(fā)工資表扣款表工資清單實(shí)發(fā)工資表4.2.2 體系結(jié)構(gòu)設(shè)計(jì)中可采用的工具2.結(jié)構(gòu)圖結(jié)構(gòu)圖主要成分o 模塊:用方框表示,方框中寫有模塊的名字,一個(gè)模塊的名字應(yīng)適當(dāng)?shù)胤从尺@個(gè)模塊的功能,這就在某種程度上反映了塊內(nèi)聯(lián)系o 調(diào)用:從一個(gè)模塊指向另一個(gè)模塊的箭頭(或直線)表示模塊間的調(diào)用o 模塊間的信息傳遞:模塊問還經(jīng)常用帶注釋的短箭頭表示模塊調(diào)用過程中來回傳遞的信息。有時(shí)箭頭尾部帶空心圓的表示傳

20、遞的是數(shù)據(jù),帶實(shí)心圓的表示傳遞的是控制信息 o SD方法在總體設(shè)計(jì)中的主要表達(dá)工具結(jié)構(gòu)圖中的基本符號(hào)結(jié)構(gòu)圖中的基本符號(hào)ABCABC符 號(hào)含 義用于表示模塊,方框中標(biāo)明模塊的名稱用于描述模塊之間的調(diào)用關(guān)系用于表示模塊調(diào)用過程中傳遞的信息,箭頭上標(biāo)明信息的名稱;箭頭尾部為空心圓表示傳遞的信息是數(shù)據(jù),若為實(shí)心圓則表示傳遞的是控制信息 表示模塊A選擇調(diào)用模塊B或模塊C表示模塊A循環(huán)調(diào)用模塊B和模塊C結(jié)構(gòu)圖(Structure Chart)結(jié)構(gòu)圖SC中的四種模塊傳入模塊傳入模塊(a)(b)AA傳出模塊傳出模塊BB變換模塊變換模塊(c)CD協(xié)調(diào)模塊協(xié)調(diào)模塊E(d)EFF結(jié)構(gòu)圖(Structure Char

21、t)o 同名字的模塊在結(jié)構(gòu)圖中僅出現(xiàn)一次。o 調(diào)用關(guān)系只能從上到下。o 不嚴(yán)格表示模塊的調(diào)用次序,習(xí)慣上從左到右。有時(shí)為了減少連線的交叉,適當(dāng)?shù)卣{(diào)整同一層模塊左右位置,以保持結(jié)構(gòu)圖的清晰性。4.2.3 體系結(jié)構(gòu)設(shè)計(jì)的原則o 1.降低模塊的耦合性、提高模塊的內(nèi)聚性n 耦合性:模塊與模塊之間的關(guān)系盡量使用數(shù)據(jù)耦合n 內(nèi)聚性:模塊內(nèi)各部分之間的關(guān)系最好實(shí)現(xiàn)功能內(nèi)聚o 2.保持適中的模塊規(guī)模n 模塊規(guī)模過大:o 模塊實(shí)現(xiàn)功能過多o 降低程序可讀性n 規(guī)模過小o 模塊數(shù)過多o 不利于上層模塊控制n 10100句/模塊n 合并小模塊、拆分大模塊o 3.模塊的扇入與扇出n扇入:o 上級(jí)模塊調(diào)用下級(jí)模塊o 該

22、模塊的上級(jí)模塊數(shù)稱為該模塊的扇入o 右圖中模塊S的扇入數(shù)為no 模塊的扇入數(shù)越大n則調(diào)用該模塊的上級(jí)模塊越多n該模塊復(fù)用性越高o 將多個(gè)模塊的重復(fù)功能編寫?yīng)毩⒌哪K,以提高程序的重用性,SM1M2M3Mno 3.模塊的扇入與扇出n扇出:o 上級(jí)模塊調(diào)用下級(jí)模塊o 該模塊可調(diào)用的下級(jí)模塊數(shù)o 右圖中模塊S的扇出數(shù)為mo 模塊的扇出數(shù)越大n使模塊的調(diào)用控制過于復(fù)雜n原因:模塊分解過快所致n解決方法:填加中間層,降低分解速度o 模塊扇出數(shù)過小n扇出為1n將下級(jí)模塊合并到上級(jí)模塊SG1G2G3Gm會(huì)員信息管理管理員增加新會(huì)員管理員修改會(huì)員信息管理員刪除會(huì)員銷售部修改會(huì)員信息銷售部刪除會(huì)員銷售部增加新會(huì)

23、員領(lǐng)導(dǎo)查詢會(huì)員信息銷售部查詢會(huì)員信息會(huì)員信息管理管理員增加新會(huì)員管理員修改會(huì)員信息管理員刪除會(huì)員銷售部修改會(huì)員信息銷售部刪除會(huì)員銷售部增加新會(huì)員銷售部查詢會(huì)員信息領(lǐng)導(dǎo)查詢會(huì)員信息管理員管理會(huì)員銷售管理會(huì)員領(lǐng)導(dǎo)查詢會(huì)員o 4.模塊的深度和寬度兩者相互對(duì)立n深度o 模塊層次數(shù)o 反應(yīng)系統(tǒng)規(guī)模o 程序中的表現(xiàn):嵌套調(diào)用o 深度過大解決方案:將簡(jiǎn)單模塊與上級(jí)模塊合并n寬度o 同一層次上模塊數(shù)最大值o 反應(yīng)系統(tǒng)復(fù)雜性o 程序中表現(xiàn):子模塊o 與扇出有關(guān)o 寬度過大如何解決?增加中間層模塊設(shè)計(jì)準(zhǔn)則o 深度 = 分層的層數(shù)。過大表示分工過細(xì)。o 寬度 = 結(jié)構(gòu)圖中模塊數(shù)最多的那層的模塊個(gè)數(shù)。過大表示系統(tǒng)復(fù)雜

24、度大。o 扇出 = 一個(gè)模塊直接調(diào)用控制的模塊數(shù)。 3 fan-out 9o 扇入 = 直接調(diào)用該模塊的模塊數(shù)。多扇入的模塊通常是用公用模塊 在不破壞獨(dú)立性的前提下,fan-in 大的比較好。3.模塊高扇入與適當(dāng)扇出o5.模塊作用域 控制域n作用域o受該模塊內(nèi)一個(gè)判定條件影響的所有模塊n控制域o該模塊本身及其下屬模塊n實(shí)例:o模塊C的控制域包括:C E F G Ho由于模塊C中存在一個(gè)判定條件影響模塊C D E F G H D,所以模塊C的作用域包括C D E F G H Do作用域不屬于控制域o導(dǎo)致:n模塊C對(duì)模塊D的控制必須通過B來執(zhí)行n模塊間耦合性增大o解決方案一:判定位置上移o解決方案

25、二:將超出模塊控制域部分的模塊下移MABCDEFHG模塊設(shè)計(jì)準(zhǔn)則TopAYBB1XTopABB1B2XTopYABXAYBB1B2X圖圖1.作用域作用域在控制域之外在控制域之外圖圖2.作用域作用域在控制域之內(nèi),但判定位置太高在控制域之內(nèi),但判定位置太高圖圖3.作用域作用域在控制域之內(nèi),正確實(shí)現(xiàn)在控制域之內(nèi),正確實(shí)現(xiàn) 圖圖4.理想的理想的作用域作用域和控制域和控制域 作用域作用域判定判定o 6.降低模塊接口的復(fù)雜程度n 即:降低模塊間耦合性n 接口應(yīng)簡(jiǎn)單清晰n 減少接口間傳遞信息的個(gè)數(shù),降低信息的復(fù)雜性o 盡量保證是簡(jiǎn)單數(shù)據(jù)o 減少:數(shù)據(jù)結(jié)構(gòu)、對(duì)象等數(shù)據(jù)類型作為接口傳遞數(shù)據(jù)4.2.4 體系結(jié)構(gòu)設(shè)

26、計(jì)說明書o引言:n編寫說明書的目的、背景、定義術(shù)語(yǔ)和縮略語(yǔ)、參考資料n說明現(xiàn)行系統(tǒng)問題n系統(tǒng)前景o總體設(shè)計(jì)n軟件需求規(guī)定、運(yùn)行環(huán)境、處理流程和總體結(jié)構(gòu)n不涉及具體模塊的實(shí)現(xiàn)細(xì)節(jié)o運(yùn)行設(shè)計(jì)n模塊組合、運(yùn)行控制方式o模塊設(shè)計(jì)n各模塊性能n模塊間接口o數(shù)據(jù)設(shè)計(jì)n邏輯數(shù)據(jù)結(jié)構(gòu)(建立在E-R圖至上)o出錯(cuò)處理設(shè)計(jì)n各種錯(cuò)誤及所采取處理錯(cuò)誤的措施nJava中Exception4.3 面向數(shù)據(jù)流的體系結(jié)構(gòu)設(shè)計(jì)方法o 設(shè)計(jì)將信息需求轉(zhuǎn)換成數(shù)據(jù)結(jié)構(gòu)、程序結(jié)構(gòu)和過程性表示的多步驟過程。o 系統(tǒng)設(shè)計(jì)的角度不同,分三類:n 面向數(shù)據(jù)流的設(shè)計(jì),過程驅(qū)動(dòng)設(shè)計(jì)n 面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì),數(shù)據(jù)驅(qū)動(dòng)設(shè)計(jì)n 面向?qū)ο蟮脑O(shè)計(jì)一.面向數(shù)

27、據(jù)流的設(shè)計(jì)o 基于模塊化、自頂向下、結(jié)構(gòu)化程序設(shè)計(jì)的基礎(chǔ)實(shí)現(xiàn),實(shí)施要點(diǎn):n 研究分析數(shù)據(jù)流圖n 根據(jù)數(shù)據(jù)流圖決定問題類型n 由數(shù)據(jù)流圖推導(dǎo)出系統(tǒng)初始結(jié)構(gòu)圖n 利用啟發(fā)式原則改進(jìn)系統(tǒng)初始結(jié)構(gòu)圖n 修改補(bǔ)充數(shù)據(jù)字典n 制定測(cè)試計(jì)劃1.典型的系統(tǒng)結(jié)構(gòu)形式o 結(jié)構(gòu)化設(shè)計(jì):數(shù)據(jù)流圖表示的信息 程序結(jié)構(gòu)設(shè)計(jì)描述o 1)系統(tǒng)結(jié)構(gòu)中的模塊n原子模塊系統(tǒng)結(jié)構(gòu)圖中底層不能再被分解的模塊。n完全因子分解系統(tǒng)一個(gè)軟件系統(tǒng)的全部實(shí)際加工(數(shù)據(jù)處理或計(jì)算)都有底層原子模塊完成,非原子模塊僅僅執(zhí)行控制或協(xié)調(diào)功能。n完全因子分解系統(tǒng)是最理想的,也是我們?cè)谲浖O(shè)計(jì)中希望達(dá)到的目標(biāo)。轉(zhuǎn)換為n系統(tǒng)結(jié)構(gòu)圖中的四種類型的模塊:o 傳入

28、模塊邏輯輸入數(shù)據(jù)流n從下屬模塊取得數(shù)據(jù)n處理數(shù)據(jù)n結(jié)果上傳給上級(jí)模塊o 傳出模塊邏輯輸出數(shù)據(jù)流n從上級(jí)模塊獲得數(shù)據(jù)n處理數(shù)據(jù)n結(jié)果傳送給下屬模塊o 變換模塊(加工模塊)計(jì)算模塊n從上級(jí)模塊取得數(shù)據(jù)n特定處理,轉(zhuǎn)換數(shù)據(jù)形式n傳送回上級(jí)模塊o 協(xié)調(diào)模塊對(duì)下屬模塊進(jìn)行協(xié)調(diào)和管理n在較高層出現(xiàn),協(xié)調(diào)和管理下屬模塊n出現(xiàn)在輸入/輸出部分或數(shù)據(jù)加工部分傳入模塊傳出模塊變換模塊協(xié)調(diào)模塊SD方法數(shù)據(jù)流圖的類型o 變換型:變換型DFD是一個(gè)線性結(jié)構(gòu),由輸入、變換和輸出三部分組成SD方法數(shù)據(jù)流圖的類型o 事務(wù)型:事務(wù)型DFD中,數(shù)據(jù)沿輸入通路到達(dá)一個(gè)處理,這個(gè)處理將輸入分為許多相互平行的加工路徑,并根據(jù)輸入數(shù)據(jù)的

29、類型,選擇某一加工路徑SD方法數(shù)據(jù)流圖的類型o 變換/事務(wù)混合型:SD方法設(shè)計(jì)過程精化數(shù)據(jù)流圖精化數(shù)據(jù)流圖區(qū)分事務(wù)中心區(qū)分事務(wù)中心和數(shù)據(jù)接收路徑和數(shù)據(jù)接收路徑映射成變換結(jié)構(gòu)映射成變換結(jié)構(gòu) 類型類型區(qū)分輸入和區(qū)分輸入和輸出分支輸出分支映射成事務(wù)結(jié)構(gòu)映射成事務(wù)結(jié)構(gòu) 用設(shè)計(jì)準(zhǔn)則精化軟件結(jié)構(gòu)用設(shè)計(jì)準(zhǔn)則精化軟件結(jié)構(gòu)導(dǎo)出接口描述和全程數(shù)據(jù)結(jié)構(gòu)導(dǎo)出接口描述和全程數(shù)據(jù)結(jié)構(gòu)復(fù)查復(fù)查詳細(xì)設(shè)計(jì)詳細(xì)設(shè)計(jì)“事務(wù)事務(wù)”“變換變換”事務(wù)分析事務(wù)分析變換分析變換分析SD方法的兩種映射方法變換型變換型DFDDFD初始初始SCSC變換分析變換分析事務(wù)型事務(wù)型DFDDFD初始初始SCSC事務(wù)分析事務(wù)分析初始的SC主模塊主模塊輸入模

30、塊輸入模塊主加工模塊主加工模塊輸入模塊輸入模塊由由變換分析變換分析產(chǎn)生產(chǎn)生接收模塊接收模塊調(diào)度模塊調(diào)度模塊動(dòng)作動(dòng)作1 1模塊模塊動(dòng)作動(dòng)作2 2模塊模塊動(dòng)作動(dòng)作3 3模塊模塊由事務(wù)由事務(wù)分析分析產(chǎn)生產(chǎn)生事務(wù)控制模塊事務(wù)控制模塊SD方法變換分析o 第一步:確定DFD中的變換中心、邏輯輸入、邏輯輸出n 通常幾股數(shù)據(jù)流的匯合處就是系統(tǒng)的變換中心n 或從物理輸入(出)端開始,沿(逆)數(shù)據(jù)流方向向系統(tǒng)中心尋找,直到有這樣的DF,它不能再看做是系統(tǒng)的輸入(出)時(shí),則它的前一數(shù)據(jù)流就是系統(tǒng)的邏輯輸入(出),介于邏輯輸入和邏輯輸出間的加工就是變換中心n 從輸入設(shè)備獲得的物理輸入一般要經(jīng)過編輯、數(shù)制轉(zhuǎn)換、格式變換

31、、合法性檢查等一系列預(yù)處理變成邏輯輸入;同樣,邏輯輸出一般也要經(jīng)過格式轉(zhuǎn)換等處理后再進(jìn)行物理輸出SD方法變換分析BCADEQPRWUVabcedrpuwv變換中心變換中心輸輸入部分入部分輸輸出部分出部分SD方法變換分析o 第二步:一級(jí)分解,設(shè)計(jì)軟件結(jié)構(gòu)的頂層和一層模塊建立初始結(jié)構(gòu)圖 變換中心變換中心 SD方法變換分析o 初始結(jié)構(gòu)圖MC CMT TMA AME E第一層第一層頂層頂層c,ec,ec,ec,eu,wu,wu,wu,w 輸入模塊輸入模塊 輸出模塊輸出模塊主加工模塊主加工模塊SD方法變換分析o 第三步:第二級(jí)分解(分解SC各分支) 自頂向下分解,設(shè)計(jì)輸入分支、輸出分支、中心變換分支的中

32、、下層模塊SD方法變換分析:輸入分支o輸入模塊的功能是向調(diào)用它的上級(jí)模塊提供數(shù)據(jù),所以它必須要有一個(gè)數(shù)據(jù)來源,因此它需要兩個(gè)下屬模塊:n 一個(gè)接收數(shù)據(jù)n 另一個(gè)把這些數(shù)據(jù)變換成它的上級(jí)模塊所需要的數(shù)據(jù)格式SD方法變換分析BCADEQPRWUVabcedrpuwv變換中心變換中心輸輸入部分入部分輸輸出部分出部分SD方法變換分析o 輸入分支的分解MACBAbacEDdec,eMAGet CGet Cb ba ac cRead Read Dd de ec,ec,eB to CB to Cb bc cd de ea ab bGet EGet EGet BGet BD to to EA to to BR

33、ead ARead ASD方法變換分析BCADEQPRWUVabcedrpuwv變換中心變換中心輸輸入部分入部分輸輸出部分出部分SD方法變換分析o 輸出分支的分解MEWWrite Vuuw,uvvvPut UU to VMEUWrite Wwwuw,uV(1)(1)(2)(2)SD方法變換分析BCADEQPRWUVabcedrpuwv變換中心變換中心輸輸入部分入部分輸輸出部分出部分SD方法變換分析o 中心加工模塊的分解MTPQRec,pru,wprSD方法成績(jī)管理系統(tǒng)模塊圖SD方法成績(jī)管理系統(tǒng)模塊圖成績(jī)管理系統(tǒng)成績(jī)管理系統(tǒng)成績(jī)統(tǒng)計(jì)成績(jī)統(tǒng)計(jì)成績(jī)登記成績(jī)登記成績(jī)打印成績(jī)打印成績(jī)檔案成績(jī)檔案綜合評(píng)分

34、綜合評(píng)分補(bǔ)考通知補(bǔ)考通知成績(jī)通知單成績(jī)通知單成績(jī)通知單成績(jī)通知單補(bǔ)考通知補(bǔ)考通知綜合評(píng)分綜合評(píng)分成績(jī)檔案成績(jī)檔案成績(jī)錄入成績(jī)錄入 成績(jī)驗(yàn)證成績(jī)驗(yàn)證成績(jī)檔案成績(jī)檔案單科成績(jī)單科成績(jī)單科成績(jī)單科成績(jī)SD方法事務(wù)分析 任何情況下都可使用變換分析方法設(shè)計(jì)軟件結(jié)構(gòu),但如數(shù)據(jù)流具有明顯的事務(wù)特點(diǎn)時(shí)(有一個(gè)明顯的事務(wù)中心),以采用事務(wù)分析方法為宜。o 步驟:n 第一步:在DFD上確定事務(wù)中心、接收和發(fā)送部分n 第二步:畫出SC框架,把DFD上的三部分分別映射為事務(wù)控制模塊、接收模塊和調(diào)度模塊。n 第三步:分解細(xì)化接收分支和發(fā)送分支,完成初始SCSD方法事務(wù)分析o 事務(wù)分析的映射方法總控總控調(diào)度調(diào)度C C路徑

35、路徑B B路徑路徑A A路徑路徑A A路徑路徑B B路徑路徑C C路徑路徑接收接收路徑路徑SD方法事務(wù)分析舉例IMLNOabcdfeghSD方法事務(wù)分析舉例o 初始結(jié)構(gòu)圖 輸入輸入 aXX系統(tǒng)系統(tǒng)變換控制變換控制aLMagdbcfe 輸出輸出he、f、ge、f、gNo 結(jié)構(gòu)圖細(xì)化SD方法事務(wù)分析舉例P PT 2T 2T 1T 1T iT iA 2A 2D 2D 2A 1A 1D 1D 1A 3A 3A jA jD kD k事務(wù)層事務(wù)層操作層操作層細(xì)節(jié)層細(xì)節(jié)層處理層處理層主模塊主模塊事務(wù)加事務(wù)加工模塊工模塊操作操作模塊模塊細(xì)節(jié)細(xì)節(jié)模塊模塊SD方法事務(wù)分析舉例 輸入輸入 aXX系統(tǒng)系統(tǒng)變換控制變換

36、控制aLMagdbcfe 輸出輸出e、f、ge、f、ge、f、g輸出輸出h hOe、f、ghhNo 判定上移的結(jié)構(gòu)圖SD方法事務(wù)分析舉例 輸入輸入 aXX系統(tǒng)系統(tǒng)a 輸出輸出e、f、ge、f、g輸出輸出h hOe、f、ghhLMgdbcfeNSD方法事務(wù)分析舉例o 事務(wù)型DFDIMLNABCDFEG事務(wù)中心事務(wù)中心o 初始結(jié)構(gòu)圖SD方法事務(wù)分析舉例 取取 a 總控總控aLMNgdbcfe(主模塊)(主模塊)輸出輸出e、f、ge、f、gSD方法混合型DFDSD方法混合型DFD3.軟件模塊結(jié)構(gòu)的改進(jìn)o 1)模塊功能的完善化n 一個(gè)完整的功能模塊,o 不僅能完成指定的功能o 還應(yīng)該能夠告訴使用者完成

37、任務(wù)的狀態(tài),任務(wù)不能完成的原因執(zhí)行規(guī)定的功能出錯(cuò)處理部分o2)消除重復(fù)功能,改善軟件結(jié)構(gòu)n審查系統(tǒng)的初始結(jié)構(gòu)圖n模塊改進(jìn)o模塊完全相似n結(jié)構(gòu)上完全一致,只是數(shù)據(jù)類型上下不一致n采用完全合并的方法o局部相似n完全合并:需要設(shè)置多個(gè)開關(guān)n處理步驟:將模塊R1和R2的相同部分找出從R1和R2中分離出來重新定義成獨(dú)立的下一層模塊,供R1和R2調(diào)用R1和R2的剩余部分可根據(jù)情況與上級(jí)合并,減少控制的傳遞、全局?jǐn)?shù)據(jù)的引用和接口的復(fù)雜性n模塊作用域在控制域范圍之內(nèi)n減少高扇出,隨深度增大扇入n模塊大小適中XYR1R2XYR1+R2COMMONCOMMONCOMMONn 3)設(shè)計(jì)功能可預(yù)測(cè)的模塊,避免過分限制

38、模塊o 一個(gè)功能可預(yù)測(cè)的模塊可看作一個(gè)黑盒:無論內(nèi)部處理細(xì)節(jié)如何,對(duì)相同的輸入數(shù)據(jù),產(chǎn)生同樣的結(jié)構(gòu)o 模塊內(nèi)存在特殊的鮮為人知的功能,則該模塊為不可預(yù)測(cè)的。(邏輯炸彈)o 4)對(duì)模塊的n 數(shù)據(jù)結(jié)構(gòu)大小n 控制流的選擇n 與外界(人或硬件)的接口模式被限制過死,很難適應(yīng)客戶的新要求和環(huán)境的變更,維護(hù)困難。為適應(yīng)變更,1)模塊中數(shù)據(jù)結(jié)構(gòu)的大小應(yīng)當(dāng)是可控制的,可通過模塊接口的參數(shù)表來改變數(shù)據(jù)結(jié)構(gòu)2)與外界的接口應(yīng)該是靈活的,可通過參數(shù)來調(diào)整。o 系統(tǒng)設(shè)計(jì)的第一階段體系結(jié)構(gòu)設(shè)計(jì)o 系統(tǒng)設(shè)計(jì)的第二階段詳細(xì)設(shè)計(jì)n目的:在體系結(jié)構(gòu)設(shè)計(jì)的基礎(chǔ)上,為軟件的每個(gè)模塊確定相應(yīng)的:o 算法o 內(nèi)部數(shù)據(jù)結(jié)構(gòu)n獲得目標(biāo)系

39、統(tǒng)具體實(shí)現(xiàn)的精確描述n為編碼工作做好準(zhǔn)備n決定了程序代碼的質(zhì)量4.4 詳細(xì)設(shè)計(jì)概述4.4.1 詳細(xì)設(shè)計(jì)的任務(wù)o 確定每個(gè)模塊的具體算法o 數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)庫(kù)的物理結(jié)構(gòu)o 模塊接口細(xì)節(jié)o 測(cè)試用例(模擬)o 編寫文檔詳細(xì)設(shè)計(jì)說明書詳細(xì)設(shè)計(jì)的原則o 將保證程序的清晰度放在首位o 采用逐步細(xì)化的實(shí)現(xiàn)方法 o 選擇適當(dāng)?shù)谋磉_(dá)工具 4.4.2 詳細(xì)設(shè)計(jì)采用的工具o 程序流程圖o N-S圖o PAD圖o PDL語(yǔ)言一、程序流程圖(a) 一般處理框(b) 輸入/輸出框(c) 判斷框(d) 流程線(e) 起止框流程圖基本符號(hào)一、程序流程圖o 五種基本的控制結(jié)構(gòu)組成復(fù)雜多變的程序流程圖AB順序型PAB選擇型PSF

40、T先判定型循環(huán)WHILEPSFT后判定型循環(huán)DO-UTILLP1P2PnA1TA2TA3T多情況選擇型CASE模塊詳細(xì)設(shè)計(jì)描述工具接受單科成績(jī)從課程管理系統(tǒng)中查出課程的學(xué)分IF 普通考試成績(jī)DO WHILE 對(duì)于成績(jī)單中每個(gè)學(xué)生IF 學(xué)生的成績(jī)大于合格成績(jī)記錄學(xué)生的成績(jī),學(xué)分ELSE記錄學(xué)生的成績(jī),學(xué)分為0ENDIFENDDOELSEDO WHILE 對(duì)于成績(jī)單中每個(gè)學(xué)生 IF 學(xué)生的補(bǔ)考成績(jī)大于合格成績(jī)記錄學(xué)生的補(bǔ)考成績(jī),學(xué)分ELSE記錄學(xué)生的補(bǔ)考成績(jī),學(xué)分為0ENDIFENDDOENDIF模塊詳細(xì)設(shè)計(jì)描述工具o 流程圖優(yōu)點(diǎn)n 對(duì)程序的控制流程描述直觀、清晰n 使用靈活n 便于閱讀和掌握o

41、缺點(diǎn)n 箭頭使用靈活性大,容易造成程序控制結(jié)構(gòu)的混亂n 難以描述逐步求精的過程,導(dǎo)致程序員過早注重細(xì)節(jié)而忽略了程序全局結(jié)構(gòu)的設(shè)計(jì)n 難以表示系統(tǒng)中的數(shù)據(jù)結(jié)構(gòu)二、N-S圖o可清晰的表達(dá)結(jié)構(gòu)中的嵌套及模塊的層次關(guān)系o沒有流程線,避免隨意轉(zhuǎn)移模塊詳細(xì)設(shè)計(jì)描述工具ajbX1fX2X4ighde=1=2 =3cDo-while X6TFTFDo-while X5while -doX3ghm1X7TFm3m4m2Do-while X8g:X9TFn1Do-while X10h:2n23n31o N-S圖特點(diǎn)n 每個(gè)矩形框都明確定義了功能域,清晰可見n 控制轉(zhuǎn)移不能隨意n 容易確定局部或全部數(shù)據(jù)的作用域n

42、很容易表現(xiàn)嵌套關(guān)系,也可以表示模塊的層次結(jié)構(gòu)三、PAD(problem analysis diagram)問題分析圖模塊詳細(xì)設(shè)計(jì)描述工具三、PAD(problem analysis diagram)問題分析圖o PAD特點(diǎn)n 層次清晰n 為多種語(yǔ)言提供相應(yīng)圖形符號(hào),易于轉(zhuǎn)換n 支持自頂向下逐步求精n 既能描述程序邏輯結(jié)構(gòu),又能描述數(shù)據(jù)結(jié)構(gòu)四、PDL語(yǔ)言(過程設(shè)計(jì)語(yǔ)言)o 是一種偽代碼n 外語(yǔ)法:符合一般程序設(shè)計(jì)語(yǔ)言常用語(yǔ)句的語(yǔ)法規(guī)則n 內(nèi)語(yǔ)法:自然語(yǔ)言n 有數(shù)據(jù)說明機(jī)制n 有子程序定義與調(diào)用機(jī)制過程設(shè)計(jì)語(yǔ)言(過程設(shè)計(jì)語(yǔ)言(Process Design LanguageProcess Desig

43、n Language) PDLPDLoPDLPDL語(yǔ)言的主要特點(diǎn):語(yǔ)言的主要特點(diǎn): (1 1)各種定義語(yǔ)句及控制結(jié)構(gòu)的表達(dá)都具有嚴(yán)格的語(yǔ)法形式,使程序)各種定義語(yǔ)句及控制結(jié)構(gòu)的表達(dá)都具有嚴(yán)格的語(yǔ)法形式,使程序 結(jié)構(gòu)、數(shù)據(jù)說明等更加清晰。結(jié)構(gòu)、數(shù)據(jù)說明等更加清晰。 (2 2)提供了數(shù)據(jù)說明機(jī)制,可用于定義簡(jiǎn)單及復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。)提供了數(shù)據(jù)說明機(jī)制,可用于定義簡(jiǎn)單及復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。 (3 3)提供了模塊的定義和調(diào)用機(jī)制,方便了程序模塊化的表達(dá)。)提供了模塊的定義和調(diào)用機(jī)制,方便了程序模塊化的表達(dá)。 o 語(yǔ)法規(guī)則n 注釋行語(yǔ)句:-*n 數(shù)據(jù)說明o DECLARE 數(shù)據(jù)類型 變量名n 模塊定義o PR

44、OCEDURE 模塊名(參數(shù))RETURNENDn控制結(jié)構(gòu)n1)順序結(jié)構(gòu)語(yǔ)句按先后順序執(zhí)行o語(yǔ)句序列1語(yǔ)句序列2.語(yǔ)句序列nn2)選擇型結(jié)構(gòu)IFELSEIFELSEENDIFnCASE表達(dá)式OFCASE 取值1:語(yǔ)句序列S1CASE 取值2:語(yǔ)句序列S2 DEFAULT:語(yǔ)句序列Sn ENDCASEn控制結(jié)構(gòu)n3)循環(huán)結(jié)構(gòu)oFOR結(jié)構(gòu)例“For x=1 to nsum=sum*xEndforoWHILE結(jié)構(gòu)例:while x= nsum=sum*xEndwhileoUNTIL結(jié)構(gòu)例:REPEATsum=sum*xUTILL x=nn4)輸入輸出o輸入:GET(輸入變量表)o輸出:PUT(輸出變

45、量表)n5)模塊調(diào)用語(yǔ)句oCALL模塊名(參數(shù))4.5 面向數(shù)據(jù)流的詳細(xì)設(shè)計(jì)方法面向數(shù)據(jù)流的詳細(xì)設(shè)計(jì)方法面向數(shù)據(jù)流的詳細(xì)設(shè)計(jì)方法 o面向數(shù)據(jù)流的詳細(xì)設(shè)計(jì)方法,主要指結(jié)構(gòu)化程序設(shè)計(jì)方法,首要思面向數(shù)據(jù)流的詳細(xì)設(shè)計(jì)方法,主要指結(jié)構(gòu)化程序設(shè)計(jì)方法,首要思想是,從改善每個(gè)模塊的控制結(jié)構(gòu)入手來提高程序的清晰度、易讀想是,從改善每個(gè)模塊的控制結(jié)構(gòu)入手來提高程序的清晰度、易讀性、可測(cè)試性和可維護(hù)性性、可測(cè)試性和可維護(hù)性 。o自頂向下,逐步細(xì)分的方法自頂向下,逐步細(xì)分的方法 ,符合人類思維的一般方式,有效地,符合人類思維的一般方式,有效地控制復(fù)雜度和難度,大大減少了設(shè)計(jì)過程中出現(xiàn)錯(cuò)誤的可能,能夠控制復(fù)雜度和難

46、度,大大減少了設(shè)計(jì)過程中出現(xiàn)錯(cuò)誤的可能,能夠顯著提高軟件開發(fā)的可靠性及縮短軟件開發(fā)的周期顯著提高軟件開發(fā)的可靠性及縮短軟件開發(fā)的周期 o為了保證程序結(jié)構(gòu)的清晰度,通常限制只能采用順序結(jié)構(gòu)、選擇結(jié)為了保證程序結(jié)構(gòu)的清晰度,通常限制只能采用順序結(jié)構(gòu)、選擇結(jié)構(gòu)(構(gòu)(IF-THEN-ELSEIF-THEN-ELSE型)和循環(huán)結(jié)構(gòu)(型)和循環(huán)結(jié)構(gòu)(DO-WHILEDO-WHILE型)三種基本控制結(jié)型)三種基本控制結(jié)構(gòu)來構(gòu)造程序,稱為經(jīng)典的結(jié)構(gòu)程序設(shè)計(jì),其共同特點(diǎn)是所有模塊構(gòu)來構(gòu)造程序,稱為經(jīng)典的結(jié)構(gòu)程序設(shè)計(jì),其共同特點(diǎn)是所有模塊均只有一個(gè)入口和一個(gè)出口。均只有一個(gè)入口和一個(gè)出口。o加入了(加入了(DO-

47、UNTILDO-UNTIL)和多分支選擇結(jié)構(gòu)()和多分支選擇結(jié)構(gòu)(DO-CASEDO-CASE)兩種補(bǔ)充結(jié)構(gòu))兩種補(bǔ)充結(jié)構(gòu)的詳細(xì)設(shè)計(jì)則被稱為擴(kuò)展的結(jié)構(gòu)程序設(shè)計(jì)的詳細(xì)設(shè)計(jì)則被稱為擴(kuò)展的結(jié)構(gòu)程序設(shè)計(jì) 。o允許使用允許使用BREAKBREAK、EXITEXIT這類語(yǔ)句的程序設(shè)計(jì)被稱為修正的結(jié)構(gòu)程序這類語(yǔ)句的程序設(shè)計(jì)被稱為修正的結(jié)構(gòu)程序設(shè)計(jì)。設(shè)計(jì)。 面向數(shù)據(jù)流的詳細(xì)設(shè)計(jì)方法o 結(jié)構(gòu)化程序設(shè)計(jì)方法o 目的:GOTO帶來的問題n 1963,ALGOL,Peter Naur:取消GOTOn 1965,E.W.Dijkstra:GOTO與程序質(zhì)量成反比n 1966,Bohm與Jacopini:經(jīng)典結(jié)構(gòu)程序設(shè)計(jì)

48、n 1968,爭(zhēng)論結(jié)果:GOTO可適當(dāng)存在o 首要思想:改善每個(gè)模塊的控制結(jié)構(gòu)提高程序清晰度o 關(guān)鍵技術(shù):n 自頂向下,逐步細(xì)分o 只采用單入口單出口的三種基本控制結(jié)構(gòu)經(jīng)典的結(jié)構(gòu)程序設(shè)計(jì)o 保證每個(gè)程序模塊的清晰的邏輯結(jié)構(gòu)AB順序型PAB選擇型PSFT先判定型循環(huán)WHILEn 增加DO-UNTILL和DO-CASE的兩種補(bǔ)充結(jié)構(gòu)o 除以上三種結(jié)構(gòu)外增加了DO-UNTILL和DO-CASE的詳細(xì)設(shè)計(jì)擴(kuò)充的結(jié)構(gòu)程序設(shè)計(jì)o 限制GOTO語(yǔ)句的使用o 面向數(shù)據(jù)流的詳細(xì)設(shè)計(jì)n 為保證程序的清晰性n 以存儲(chǔ)容量和運(yùn)行效率的降低為代價(jià)PSFT后判定型循環(huán)DO-UTILLP1P2PnA1TA2TA3T多情況選

49、擇型CASEo 結(jié)構(gòu)化程序設(shè)計(jì)的原則n 使用語(yǔ)言中的順序、選擇、重復(fù)等有限的基本控制結(jié)構(gòu)表示程序邏輯n 選用的控制結(jié)構(gòu)只許有一個(gè)入口和一個(gè)出口n 程序語(yǔ)句組成容易識(shí)別的塊,每塊只有一個(gè)入口和一個(gè)出口n 復(fù)雜結(jié)構(gòu)用基本控制結(jié)構(gòu)嵌套組合而成n 嚴(yán)格控制GOTO語(yǔ)句4.6 面向數(shù)據(jù)結(jié)構(gòu)的詳細(xì)設(shè)計(jì)方法面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法 o面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法根據(jù)軟件所要處理的信息的數(shù)據(jù)結(jié)構(gòu)來設(shè)計(jì)軟件,面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法根據(jù)軟件所要處理的信息的數(shù)據(jù)結(jié)構(gòu)來設(shè)計(jì)軟件,它同樣遵循結(jié)構(gòu)程序設(shè)計(jì)和自頂向下、逐步細(xì)分的設(shè)計(jì)原則它同樣遵循結(jié)構(gòu)程序設(shè)計(jì)和自頂向下、逐步細(xì)分的設(shè)計(jì)原則 。o面向數(shù)據(jù)結(jié)構(gòu)的設(shè)

50、計(jì)方法的設(shè)計(jì)步驟面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法的設(shè)計(jì)步驟 1 1:畫出系統(tǒng)中輸入、輸出數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu)圖;:畫出系統(tǒng)中輸入、輸出數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu)圖; 2 2:根據(jù)數(shù)據(jù)結(jié)構(gòu)圖,映射得到相應(yīng)的程序結(jié)構(gòu)圖:根據(jù)數(shù)據(jù)結(jié)構(gòu)圖,映射得到相應(yīng)的程序結(jié)構(gòu)圖 3 3:按照程序結(jié)構(gòu)圖,分析得到程序的詳細(xì)過程性描述:按照程序結(jié)構(gòu)圖,分析得到程序的詳細(xì)過程性描述 o面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法的典型代表是面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法的典型代表是JacksonJackson方法和方法和WarnierWarnier方法方法 oJacksonJackson方法是由英國(guó)的方法是由英國(guó)的M.A.JacksonM.A.Jackson在在1975

51、1975年首先提出的,同時(shí)還提出了與年首先提出的,同時(shí)還提出了與這種方法配套使用的、用于描述系統(tǒng)數(shù)據(jù)結(jié)構(gòu)和程序結(jié)構(gòu)的圖形工具,被稱這種方法配套使用的、用于描述系統(tǒng)數(shù)據(jù)結(jié)構(gòu)和程序結(jié)構(gòu)的圖形工具,被稱為為JacksonJackson圖。圖。JacksonJackson方法從目標(biāo)系統(tǒng)的輸入、輸出數(shù)據(jù)結(jié)構(gòu)入手,導(dǎo)出程方法從目標(biāo)系統(tǒng)的輸入、輸出數(shù)據(jù)結(jié)構(gòu)入手,導(dǎo)出程序框架結(jié)構(gòu),再補(bǔ)充其它細(xì)節(jié),就可得到完整的程序結(jié)構(gòu)圖,并采用序框架結(jié)構(gòu),再補(bǔ)充其它細(xì)節(jié),就可得到完整的程序結(jié)構(gòu)圖,并采用PDLPDL進(jìn)行進(jìn)行程序的詳細(xì)過程型描述。程序的詳細(xì)過程型描述。o對(duì)于輸入、輸出數(shù)據(jù)結(jié)構(gòu)之間對(duì)應(yīng)關(guān)系清晰的小規(guī)模數(shù)據(jù)處理問題

52、,采用對(duì)于輸入、輸出數(shù)據(jù)結(jié)構(gòu)之間對(duì)應(yīng)關(guān)系清晰的小規(guī)模數(shù)據(jù)處理問題,采用JacksonJackson方法可以很方便地得到系統(tǒng)的處理過程描述方法可以很方便地得到系統(tǒng)的處理過程描述。(。(o 以系統(tǒng)中數(shù)據(jù)結(jié)構(gòu)作為設(shè)計(jì)的出發(fā)點(diǎn)o 目標(biāo):得到詳細(xì)設(shè)計(jì)o 適合:詳細(xì)設(shè)計(jì)階段o 算法數(shù)據(jù)結(jié)構(gòu)o 算法依賴于數(shù)據(jù)結(jié)構(gòu):n 重復(fù)出現(xiàn)的數(shù)據(jù)結(jié)構(gòu)采用循環(huán)結(jié)構(gòu)n 選擇性的數(shù)據(jù)結(jié)構(gòu)采用選擇結(jié)構(gòu)n 分層的數(shù)據(jù)結(jié)構(gòu)常采用對(duì)應(yīng)的分層調(diào)用程序結(jié)構(gòu)o 遵循自頂向下,逐步求精o 面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法數(shù)據(jù)結(jié)構(gòu)圖程序結(jié)構(gòu)圖映射程序的詳細(xì)過程性描述Jackson圖o 由方框、連線、特殊含義的字符構(gòu)成ABCDAB。C 。D 。AB*AB*

53、F*DC*E*順序結(jié)構(gòu)選擇結(jié)構(gòu)重復(fù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)的組合表示Jackson方法o 面向數(shù)據(jù)結(jié)構(gòu)的的結(jié)構(gòu)程序設(shè)計(jì)方法o 目標(biāo):分析系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)Jackson偽代碼o 實(shí)現(xiàn)步驟:nSTEP1 分析問題,確定輸入、輸出數(shù)據(jù)的邏輯結(jié)構(gòu)工號(hào)姓名職稱工齡XXXXX*YYYYY*ZZZZZ*工號(hào)工資津貼XXXXX*YYYYY*ZZZZZ*工號(hào)姓名職稱工齡工資津貼XXXXX*YYYYY*ZZZZZ*檔案文件工資文件職工工資檔案文件工號(hào)姓名職稱工齡XXXXX*YYYYY*ZZZZZ*檔案文件檔案文件職工記錄*工號(hào)姓名職稱工齡工號(hào)工資津貼XXXXX*YYYYY*ZZZZZ*工資文件工資文件職工記錄*工號(hào)工資津貼工號(hào)姓名職稱工齡工資津貼XXXXX*YYYYY*ZZZZZ*職工工資檔案文件檔案文件職工記錄*工號(hào)姓名職稱工齡工資津貼n STEP2 找出輸入數(shù)據(jù)結(jié)構(gòu)和輸出數(shù)據(jù)結(jié)構(gòu)中有對(duì)應(yīng)關(guān)系的單元o 對(duì)應(yīng)單元:在程序中具有因果關(guān)系,可同時(shí)處理的單元o 為每對(duì)有對(duì)應(yīng)關(guān)系的數(shù)據(jù)單元,在程序結(jié)構(gòu)圖的相應(yīng)層次畫一個(gè)處理框o 為輸入數(shù)據(jù)結(jié)構(gòu)中每個(gè)數(shù)據(jù)單元,若它在輸出數(shù)據(jù)結(jié)構(gòu)中沒有對(duì)應(yīng)的數(shù)據(jù)單元,則在程序結(jié)構(gòu)圖的相應(yīng)層次畫一個(gè)處理框o 為輸出數(shù)據(jù)結(jié)構(gòu)中每個(gè)數(shù)據(jù)單元,若它在輸入數(shù)據(jù)結(jié)構(gòu)中沒有對(duì)應(yīng)的數(shù)據(jù)單元,則在程序結(jié)構(gòu)圖的相應(yīng)層次畫一個(gè)處理框o 即:n 對(duì)輸入數(shù)據(jù)結(jié)構(gòu)與輸出數(shù)據(jù)結(jié)構(gòu)中的數(shù)據(jù)單元,每對(duì)有對(duì)應(yīng)關(guān)系的數(shù)據(jù)單元合畫

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論