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

下載本文檔

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

文檔簡介

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

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

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

4、可以用這個CAD軟件實(shí)現(xiàn)。任務(wù)需求的描述。CAD SOFTWARE TASKS user interaction task; 2-D drawing creation task; graphics display task; drawing file management task; end. 在這個抽象層次上,未給出“怎樣做”的信息,不能直接實(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é),能夠看到一個系統(tǒng)所要完成的主要功能。n 更低的抽象層次:反映了某部分更多的細(xì)節(jié)信息隱蔽(Information hiding)o 信息隱蔽:應(yīng)用模塊化原理時,一個重要原

6、則就是將信息盡量隱藏在相應(yīng)的處理模塊中。該項(xiàng)技術(shù)最早是由Parnas提出的n 核心內(nèi)容:一個模塊中所包含的信息,不允許其他不需要這些信息的模塊使用。n 有效的模塊化可以通過定義一組相互獨(dú)立的模塊來實(shí)現(xiàn),這些獨(dú)立的模塊彼此間僅僅交換那些為了完成相應(yīng)功能必須的信息 抽象幫助定義構(gòu)成軟件的結(jié)構(gòu),而信息隱蔽則可定義和實(shí)施對模塊的過程細(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ù)型時耦合度最低n如果一個模塊直接轉(zhuǎn)移到另一模塊的某點(diǎn)上,就影響了兩個模塊的控制。通常通過傳遞參數(shù)來傳遞控制,如傳遞一個開關(guān)量來告訴另一模塊做何工作,即控制型的信息流。耦合度很高n當(dāng)一個模塊修改另一個模塊的代碼時,對修改者,修改的代碼是當(dāng)作數(shù)據(jù)來處理的,而對被修改的模塊,則可能是對控制的改變,這種情況最難處理,耦

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

9、據(jù),而是記錄、數(shù)組等)加以聯(lián)系,或都與一個數(shù)據(jù)結(jié)構(gòu)有關(guān)系, 則稱這兩個模塊間存在標(biāo)記偶合。22標(biāo)記耦合舉例計算水電費(fèi)計算水電費(fèi)計算水費(fèi)計算水費(fèi)計算電費(fèi)計算電費(fèi)住戶情況住戶情況水費(fèi)水費(fèi)電費(fèi)電費(fèi)住戶情住戶情況況“住戶情況住戶情況”是一個是一個數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu), ,圖中模塊都與此數(shù)據(jù)結(jié)圖中模塊都與此數(shù)據(jù)結(jié)構(gòu)有關(guān)。構(gòu)有關(guān)?!坝嬎闼M(fèi)計算水費(fèi)”和和“計算電費(fèi)計算電費(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ù)耦合舉例計算水電費(fèi)計算水電費(fèi)計算水費(fèi)

10、計算水費(fèi)計算電費(fèi)計算電費(fèi)本月本月用水量用水量本月本月用電量用電量水費(fèi)水費(fèi)電費(fèi)電費(fèi)24控制耦合 一模塊向下屬模塊傳遞的信息 (開關(guān)量、標(biāo)志等控制被調(diào)用模塊決策的變量) 控制了被調(diào)用模塊的內(nèi)部邏輯。25控制耦合舉例A A計算平均分計算平均分或最高分或最高分B B平均平均/ /最高最高( (控制信號控制信號) )成績成績讀入分?jǐn)?shù)讀入分?jǐn)?shù)輸出結(jié)果輸出結(jié)果計算平均分計算平均分計算最高分計算最高分平均平均/ /最高最高? ?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計算平均分計算平均分B1B1平均成績平均成績最高成績最高成績計算最高分計算最高分B2B228外部耦合o 如果兩個模塊都訪問同一個全局簡單變量而不是同一全局?jǐn)?shù)據(jù)結(jié)構(gòu),而且,不是通過參數(shù)表傳遞該全局變量的信息,則這兩個變量具有外部耦合。o 例如,模塊A和模塊B之間的通信不是通過參數(shù),而是通過全局變量,并且兩個模塊內(nèi)部都可以修改全局變量。o 設(shè)計時,盡量不要使用外部耦合29公共耦合(公共數(shù)據(jù)區(qū)耦合) 一組模塊引用同一個公用數(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 診斷錯誤困難o 軟件可維護(hù)性差o 軟件可靠性差(公共數(shù)據(jù)區(qū)及全程變量無保護(hù)措施)慎用公共數(shù)據(jù)區(qū)和全程變量! 只有在模塊之間共享的數(shù)據(jù)很多,并且通過參數(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)系的語句組合在一起偶然內(nèi)聚(巧合內(nèi)聚)模塊模塊MM中的三個語句沒有任

13、何聯(lián)系,只因?yàn)橹械娜齻€語句沒有任何聯(lián)系,只因?yàn)?A A、B B、C C三個模塊都要用到這些語句三個模塊都要用到這些語句缺點(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)多個邏輯上相同或相似的功能邏輯內(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)聚舉例時間內(nèi)聚(經(jīng)典內(nèi)聚) 模塊完成的功能必須在同一時間內(nèi)執(zhí)行,這些功能只因時間因素關(guān)聯(lián)在一起。例如:o 初始化系統(tǒng)模塊o 系統(tǒng)結(jié)束模塊o 緊急故障處理模塊等均是時間性聚合模塊 這種模塊在20世紀(jì)80年代的應(yīng)用程序中使用較多,沒有任何復(fù)用價值,并且一旦其他模塊需要修改時,對該模塊的影響較大,所以現(xiàn)在主張將變量的初始化操作都?xì)w入到相關(guān)的模塊中過程內(nèi)聚(順序性組合) 模塊內(nèi)各處理成分相關(guān),且必須以特定次序執(zhí)行,如把

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

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

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

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

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

20、遞的是數(shù)據(jù),帶實(shí)心圓的表示傳遞的是控制信息 o SD方法在總體設(shè)計中的主要表達(dá)工具結(jié)構(gòu)圖中的基本符號結(jié)構(gòu)圖中的基本符號ABCABC符 號含 義用于表示模塊,方框中標(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í)慣上從左到右。有時為了減少連線的交叉,適當(dāng)?shù)卣{(diào)整同一層模塊左右位置,以保持結(jié)構(gòu)圖的清晰性。4.2.3 體系結(jié)構(gòu)設(shè)計的原則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 上級模塊調(diào)用下級模塊o 該

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

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

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

25、二:將超出模塊控制域部分的模塊下移MABCDEFHG模塊設(shè)計準(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)簡單清晰n 減少接口間傳遞信息的個數(shù),降低信息的復(fù)雜性o 盡量保證是簡單數(shù)據(jù)o 減少:數(shù)據(jù)結(jié)構(gòu)、對象等數(shù)據(jù)類型作為接口傳遞數(shù)據(jù)4.2.4 體系結(jié)構(gòu)設(shè)

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

27、據(jù)流的設(shè)計o 基于模塊化、自頂向下、結(jié)構(gòu)化程序設(shè)計的基礎(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 制定測試計劃1.典型的系統(tǒng)結(jié)構(gòu)形式o 結(jié)構(gòu)化設(shè)計:數(shù)據(jù)流圖表示的信息 程序結(jié)構(gòu)設(shè)計描述o 1)系統(tǒng)結(jié)構(gòu)中的模塊n原子模塊系統(tǒng)結(jié)構(gòu)圖中底層不能再被分解的模塊。n完全因子分解系統(tǒng)一個軟件系統(tǒng)的全部實(shí)際加工(數(shù)據(jù)處理或計算)都有底層原子模塊完成,非原子模塊僅僅執(zhí)行控制或協(xié)調(diào)功能。n完全因子分解系統(tǒng)是最理想的,也是我們在軟件設(shè)計中希望達(dá)到的目標(biāo)。轉(zhuǎn)換為n系統(tǒng)結(jié)構(gòu)圖中的四種類型的模塊:o 傳入

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

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

30、塊輸入模塊主加工模塊主加工模塊輸入模塊輸入模塊由由變換分析變換分析產(chǎn)生產(chǎn)生接收模塊接收模塊調(diào)度模塊調(diào)度模塊動作動作1 1模塊模塊動作動作2 2模塊模塊動作動作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ù)據(jù)流就是系統(tǒng)的邏輯輸入(出),介于邏輯輸入和邏輯輸出間的加工就是變換中心n 從輸入設(shè)備獲得的物理輸入一般要經(jīng)過編輯、數(shù)制轉(zhuǎn)換、格式變換

31、、合法性檢查等一系列預(yù)處理變成邏輯輸入;同樣,邏輯輸出一般也要經(jīng)過格式轉(zhuǎn)換等處理后再進(jìn)行物理輸出SD方法變換分析BCADEQPRWUVabcedrpuwv變換中心變換中心輸輸入部分入部分輸輸出部分出部分SD方法變換分析o 第二步:一級分解,設(shè)計軟件結(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 第三步:第二級分解(分解SC各分支) 自頂向下分解,設(shè)計輸入分支、輸出分支、中心變換分支的中

32、、下層模塊SD方法變換分析:輸入分支o輸入模塊的功能是向調(diào)用它的上級模塊提供數(shù)據(jù),所以它必須要有一個數(shù)據(jù)來源,因此它需要兩個下屬模塊:n 一個接收數(shù)據(jù)n 另一個把這些數(shù)據(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方法成績管理系統(tǒng)模塊圖SD方法成績管理系統(tǒng)模塊圖成績管理系統(tǒng)成績管理系統(tǒng)成績統(tǒng)計成績統(tǒng)計成績登記成績登記成績打印成績打印成績檔案成績檔案綜合評分

34、綜合評分補(bǔ)考通知補(bǔ)考通知成績通知單成績通知單成績通知單成績通知單補(bǔ)考通知補(bǔ)考通知綜合評分綜合評分成績檔案成績檔案成績錄入成績錄入 成績驗(yàn)證成績驗(yàn)證成績檔案成績檔案單科成績單科成績單科成績單科成績SD方法事務(wù)分析 任何情況下都可使用變換分析方法設(shè)計軟件結(jié)構(gòu),但如數(shù)據(jù)流具有明顯的事務(wù)特點(diǎn)時(有一個明顯的事務(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 一個完整的功能模塊,o 不僅能完成指定的功能o 還應(yīng)該能夠告訴使用者完成

37、任務(wù)的狀態(tài),任務(wù)不能完成的原因執(zhí)行規(guī)定的功能出錯處理部分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è)置多個開關(guān)n處理步驟:將模塊R1和R2的相同部分找出從R1和R2中分離出來重新定義成獨(dú)立的下一層模塊,供R1和R2調(diào)用R1和R2的剩余部分可根據(jù)情況與上級合并,減少控制的傳遞、全局?jǐn)?shù)據(jù)的引用和接口的復(fù)雜性n模塊作用域在控制域范圍之內(nèi)n減少高扇出,隨深度增大扇入n模塊大小適中XYR1R2XYR1+R2COMMONCOMMONCOMMONn 3)設(shè)計功能可預(yù)測的模塊,避免過分限制

38、模塊o 一個功能可預(yù)測的模塊可看作一個黑盒:無論內(nèi)部處理細(xì)節(jié)如何,對相同的輸入數(shù)據(jù),產(chǎn)生同樣的結(jié)構(gòu)o 模塊內(nèi)存在特殊的鮮為人知的功能,則該模塊為不可預(yù)測的。(邏輯炸彈)o 4)對模塊的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è)計的第一階段體系結(jié)構(gòu)設(shè)計o 系統(tǒng)設(shè)計的第二階段詳細(xì)設(shè)計n目的:在體系結(jié)構(gòu)設(shè)計的基礎(chǔ)上,為軟件的每個模塊確定相應(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è)計概述4.4.1 詳細(xì)設(shè)計的任務(wù)o 確定每個模塊的具體算法o 數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)庫的物理結(jié)構(gòu)o 模塊接口細(xì)節(jié)o 測試用例(模擬)o 編寫文檔詳細(xì)設(shè)計說明書詳細(xì)設(shè)計的原則o 將保證程序的清晰度放在首位o 采用逐步細(xì)化的實(shí)現(xiàn)方法 o 選擇適當(dāng)?shù)谋磉_(dá)工具 4.4.2 詳細(xì)設(shè)計采用的工具o 程序流程圖o N-S圖o PAD圖o PDL語言一、程序流程圖(a) 一般處理框(b) 輸入/輸出框(c) 判斷框(d) 流程線(e) 起止框流程圖基本符號一、程序流程圖o 五種基本的控制結(jié)構(gòu)組成復(fù)雜多變的程序流程圖AB順序型PAB選擇型PSF

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

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

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

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

44、OCEDURE 模塊名(參數(shù))RETURNENDn控制結(jié)構(gòu)n1)順序結(jié)構(gòu)語句按先后順序執(zhí)行o語句序列1語句序列2.語句序列nn2)選擇型結(jié)構(gòu)IFELSEIFELSEENDIFnCASE表達(dá)式OFCASE 取值1:語句序列S1CASE 取值2:語句序列S2 DEFAULT:語句序列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)用語句oCALL模塊名(參數(shù))4.5 面向數(shù)據(jù)流的詳細(xì)設(shè)計方法面向數(shù)據(jù)流的詳細(xì)設(shè)計方法面向數(shù)據(jù)流的詳細(xì)設(shè)計方法 o面向數(shù)據(jù)流的詳細(xì)設(shè)計方法,主要指結(jié)構(gòu)化程序設(shè)計方法,首要思面向數(shù)據(jù)流的詳細(xì)設(shè)計方法,主要指結(jié)構(gòu)化程序設(shè)計方法,首要思想是,從改善每個模塊的控制結(jié)構(gòu)入手來提高程序的清晰度、易讀想是,從改善每個模塊的控制結(jié)構(gòu)入手來提高程序的清晰度、易讀性、可測試性和可維護(hù)性性、可測試性和可維護(hù)性 。o自頂向下,逐步細(xì)分的方法自頂向下,逐步細(xì)分的方法 ,符合人類思維的一般方式,有效地,符合人類思維的一般方式,有效地控制復(fù)雜度和難度,大大減少了設(shè)計過程中出現(xiàn)錯誤的可能,能夠控制復(fù)雜度和難

46、度,大大減少了設(shè)計過程中出現(xiàn)錯誤的可能,能夠顯著提高軟件開發(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è)計,其共同特點(diǎn)是所有模塊構(gòu)來構(gòu)造程序,稱為經(jīng)典的結(jié)構(gòu)程序設(shè)計,其共同特點(diǎn)是所有模塊均只有一個入口和一個出口。均只有一個入口和一個出口。o加入了(加入了(DO-

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

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

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

50、計方法的設(shè)計步驟面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法的設(shè)計步驟 1 1:畫出系統(tǒng)中輸入、輸出數(shù)據(jù)對應(yīng)的數(shù)據(jù)結(jié)構(gòu)圖;:畫出系統(tǒng)中輸入、輸出數(shù)據(jù)對應(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è)計方法的典型代表是面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法的典型代表是JacksonJackson方法和方法和WarnierWarnier方法方法 oJacksonJackson方法是由英國的方法是由英國的M.A.JacksonM.A.Jackson在在1975

51、1975年首先提出的,同時還提出了與年首先提出的,同時還提出了與這種方法配套使用的、用于描述系統(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對于輸入、輸出數(shù)據(jù)結(jié)構(gòu)之間對應(yīng)關(guān)系清晰的小規(guī)模數(shù)據(jù)處理問題

52、,采用對于輸入、輸出數(shù)據(jù)結(jié)構(gòu)之間對應(yīng)關(guān)系清晰的小規(guī)模數(shù)據(jù)處理問題,采用JacksonJackson方法可以很方便地得到系統(tǒng)的處理過程描述方法可以很方便地得到系統(tǒng)的處理過程描述。(。(o 以系統(tǒng)中數(shù)據(jù)結(jié)構(gòu)作為設(shè)計的出發(fā)點(diǎn)o 目標(biāo):得到詳細(xì)設(shè)計o 適合:詳細(xì)設(shè)計階段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)常采用對應(yīng)的分層調(diào)用程序結(jié)構(gòu)o 遵循自頂向下,逐步求精o 面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法數(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è)計方法o 目標(biāo):分析系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)Jackson偽代碼o 實(shí)現(xiàn)步驟:nSTEP1 分析問題,確定輸入、輸出數(shù)據(jù)的邏輯結(jié)構(gòu)工號姓名職稱工齡XXXXX*YYYYY*ZZZZZ*工號工資津貼XXXXX*YYYYY*ZZZZZ*工號姓名職稱工齡工資津貼XXXXX*YYYYY*ZZZZZ*檔案文件工資文件職工工資檔案文件工號姓名職稱工齡XXXXX*YYYYY*ZZZZZ*檔案文件檔案文件職工記錄*工號姓名職稱工齡工號工資津貼XXXXX*YYYYY*ZZZZZ*工資文件工資文件職工記錄*工號工資津貼工號姓名職稱工齡工資津貼XXXXX*YYYYY*ZZZZZ*職工工資檔案文件檔案文件職工記錄*工號姓名職稱工齡工資津貼n STEP2 找出輸入數(shù)據(jù)結(jié)構(gòu)和輸出數(shù)據(jù)結(jié)構(gòu)中有對應(yīng)關(guān)系的單元o 對應(yīng)單元:在程序中具有因果關(guān)系,可同時處理的單元o 為每對有對應(yīng)關(guān)系的數(shù)據(jù)單元,在程序結(jié)構(gòu)圖的相應(yīng)層次畫一個處理框o 為輸入數(shù)據(jù)結(jié)構(gòu)中每個數(shù)據(jù)單元,若它在輸出數(shù)據(jù)結(jié)構(gòu)中沒有對應(yīng)的數(shù)據(jù)單元,則在程序結(jié)構(gòu)圖的相應(yīng)層次畫一個處理框o 為輸出數(shù)據(jù)結(jié)構(gòu)中每個數(shù)據(jù)單元,若它在輸入數(shù)據(jù)結(jié)構(gòu)中沒有對應(yīng)的數(shù)據(jù)單元,則在程序結(jié)構(gòu)圖的相應(yīng)層次畫一個處理框o 即:n 對輸入數(shù)據(jù)結(jié)構(gòu)與輸出數(shù)據(jù)結(jié)構(gòu)中的數(shù)據(jù)單元,每對有對應(yīng)關(guān)系的數(shù)據(jù)單元合畫

溫馨提示

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

最新文檔

評論

0/150

提交評論