軟件工程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)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第四章

結(jié)構(gòu)化軟件設(shè)計(jì)SDLC設(shè)計(jì)階段的活動(dòng)網(wǎng)絡(luò)的設(shè)計(jì)與集成應(yīng)用程序體系結(jié)構(gòu)的設(shè)計(jì)用戶界面的設(shè)計(jì)系統(tǒng)接口的設(shè)計(jì)數(shù)據(jù)庫(kù)系統(tǒng)的設(shè)計(jì)與集成細(xì)節(jié)設(shè)計(jì)原型系統(tǒng)的建立系統(tǒng)控制的設(shè)計(jì)與集成9.1理解設(shè)計(jì)要素4.1軟件設(shè)計(jì)的基本概念與原理模塊相對(duì)獨(dú)立組成:數(shù)據(jù)說(shuō)明、執(zhí)行語(yǔ)句表現(xiàn):函數(shù)、子程序、過(guò)程類(lèi)對(duì)象特征輸入/輸出接口功能內(nèi)部數(shù)據(jù)程序代碼邏輯狀態(tài)運(yùn)行環(huán)境總體設(shè)計(jì)的概念和原理──模塊化模塊化的目的模塊化:把程序劃分成為若干個(gè)模塊,獨(dú)立完成若干個(gè)功能,在把他們組成一個(gè)集體,可以完成指定的功能,滿足問(wèn)題的要求?!案鱾€(gè)擊破”原則使軟件結(jié)構(gòu)清晰;使軟件容易測(cè)試和調(diào)試,從而提高軟件的可靠性;提高軟件的可修改性但不能無(wú)限分割總體設(shè)計(jì)的概念和原理──模塊化C(P1)>C(P2)E(P1)>E(P2)C(A+B)>C(A)+C(B)E(A+B)>E(A)+E(B)總體設(shè)計(jì)的概念和原理──模塊化成本或工作量模塊數(shù)量軟件總成本集成(接口)成本成本/模塊M最小成本區(qū)域模塊化的程度與軟件成本的關(guān)系抽象與逐步求精抽象與逐步求精:忽略細(xì)節(jié),分層理解問(wèn)題,自頂向下層層加細(xì)。抽象層次Ⅰ:可使用自然語(yǔ)言,配合使用面向問(wèn)題的專業(yè)術(shù)語(yǔ),概括地描述問(wèn)題的解法抽象層次Ⅱ:任務(wù)需求的描述。列出“What”而不是“How”抽象層次Ⅲ:程序過(guò)程表示。在這個(gè)抽象層次上,給出了初步的過(guò)程表示,所用的術(shù)語(yǔ)都已面向軟件,而且模塊化的工作已經(jīng)開(kāi)始顯露

軟件工程的先輩們已將抽象化思想用于軟件設(shè)計(jì)的不同方面例:開(kāi)發(fā)一個(gè)CAD軟件時(shí)的三種抽象層次抽象層次Ⅰ.

用問(wèn)題所處環(huán)境的術(shù)語(yǔ)來(lái)描述這個(gè)軟件:

該軟件包括一個(gè)計(jì)算機(jī)繪圖界面,向繪圖員顯示圖形,以及一個(gè)數(shù)字化儀界面,用以代替繪圖板和丁字尺。所有直線、折線、矩形、圓及曲線的描畫(huà)、所有的幾何計(jì)算、所有的剖面圖和輔助視圖都可以用這個(gè)CAD軟件實(shí)現(xiàn)……。抽象層次Ⅱ.

任務(wù)需求的描述。

CADSOFTWARETASKS

userinteractiontask;

2-Ddrawingcreationtask;graphicsdisplaytask;

drawingfilemanagementtask;

end.

在這個(gè)抽象層次上,未給出“怎樣做”的信息,不能直接實(shí)現(xiàn)。抽象層次Ⅲ.

程序過(guò)程表示。以2-D(二維)繪圖生成任務(wù)為例:

PROCEDURE:2-Ddrawingcreation

REPEATUNTIL(drawingcreationtaskterminates)

DOWHILE(digitizerinteractionoccurs)digitizerinterfacetask;

DETERMINEdrawingrequestCASE;

line:linedrawingtask;

rectangle:rectangledrawingtask;

circle:circledrawingtask;

……抽象與逐步求精(續(xù))啟示:模塊化和抽象層次思想相結(jié)合,可以使從不同的角度來(lái)看系統(tǒng)最高層次的模塊:反映了整體的解決方案,隱藏了那些可能擾亂視線的細(xì)節(jié),能夠看到一個(gè)系統(tǒng)所要完成的主要功能。更低的抽象層次:反映了某部分更多的細(xì)節(jié)信息隱蔽(Informationhiding)

信息隱蔽:應(yīng)用模塊化原理時(shí),一個(gè)重要原則就是將信息盡量隱藏在相應(yīng)的處理模塊中。該項(xiàng)技術(shù)最早是由Parnas提出的核心內(nèi)容:一個(gè)模塊中所包含的信息,不允許其他不需要這些信息的模塊使用。有效的模塊化可以通過(guò)定義一組相互獨(dú)立的模塊來(lái)實(shí)現(xiàn),這些獨(dú)立的模塊彼此間僅僅交換那些為了完成相應(yīng)功能必須的信息抽象幫助定義構(gòu)成軟件的結(jié)構(gòu),而信息隱蔽則可定義和實(shí)施對(duì)模塊的過(guò)程細(xì)節(jié)和局部數(shù)據(jù)結(jié)構(gòu)的存取限制信息隱藏的圖示說(shuō)明模塊控制接口"secret"?算法?數(shù)據(jù)結(jié)構(gòu)?外部接口的細(xì)節(jié)?資源分配策略用戶模塊的詳細(xì)設(shè)計(jì)信息隱蔽Stringpassword;voidsetPassword(Stringpswd)

{password=pswd;}booleanverifyPassword(Stringuserinputpswd)

{...}

模塊的獨(dú)立性模塊之間的耦合性不同模塊間的聯(lián)系緊密程度的度量越小越好模塊的內(nèi)聚性模塊內(nèi)部各元素間相互結(jié)合的緊密程度的度量越大越好影響耦合的因素聯(lián)系的作用模塊相互之間的影響程度,取決于傳送的信息流的類(lèi)型,通常包括三種:數(shù)據(jù)型、控制型和混合型傳送的信息流是數(shù)據(jù)型時(shí)耦合度最低如果一個(gè)模塊直接轉(zhuǎn)移到另一模塊的某點(diǎn)上,就影響了兩個(gè)模塊的控制。通常通過(guò)傳遞參數(shù)來(lái)傳遞控制,如傳遞一個(gè)開(kāi)關(guān)量來(lái)告訴另一模塊做何工作,即控制型的信息流。──耦合度很高當(dāng)一個(gè)模塊修改另一個(gè)模塊的代碼時(shí),對(duì)修改者,修改的代碼是當(dāng)作數(shù)據(jù)來(lái)處理的,而對(duì)被修改的模塊,則可能是對(duì)控制的改變,這種情況最難處理,耦合度最高影響耦合的因素耦合的時(shí)間有以下幾種情況:編寫(xiě)程序時(shí)(程序員編寫(xiě)一行語(yǔ)句時(shí))模塊編譯或匯編時(shí)程序模塊連接時(shí)系統(tǒng)運(yùn)行時(shí)耦合出現(xiàn)的時(shí)間越晚,程序就越容易修改,越靈活耦合性:由小到大非直接耦合(NondirectCoupling)兩個(gè)模塊沒(méi)有直接關(guān)系(模塊1和模塊2),模塊獨(dú)立性最強(qiáng)。模塊1模塊2模塊3模塊4數(shù)據(jù)耦合(DataCoupling)一模塊調(diào)用另一模塊時(shí),被調(diào)用模塊的輸入、輸出都是簡(jiǎn)單的數(shù)據(jù)(若干參數(shù))。

通過(guò)模塊參數(shù)交換信息屬松散耦合。開(kāi)發(fā)票計(jì)算水費(fèi)單價(jià)數(shù)量金額20標(biāo)記耦合(復(fù)合型耦合) 如兩個(gè)或一組模塊通過(guò)傳遞數(shù)據(jù)結(jié)構(gòu)(不是簡(jiǎn)單數(shù)據(jù),而是記錄、數(shù)組等)加以聯(lián)系,或都與一個(gè)數(shù)據(jù)結(jié)構(gòu)有關(guān)系,則稱這兩個(gè)模塊間存在標(biāo)記偶合。21標(biāo)記耦合舉例計(jì)算水電費(fèi)計(jì)算水費(fèi)計(jì)算電費(fèi)住戶情況水費(fèi)電費(fèi)住戶情況“住戶情況”是一個(gè)數(shù)據(jù)結(jié)構(gòu),圖中模塊都與此數(shù)據(jù)結(jié)構(gòu)有關(guān)?!坝?jì)算水費(fèi)”和“計(jì)算電費(fèi)”本無(wú)關(guān),由于引用了此數(shù)據(jù)結(jié)構(gòu)產(chǎn)生依賴關(guān)系,它們之間是標(biāo)記偶合。用戶姓名家庭住址用水量用電量住戶情況22將標(biāo)記耦合修改為數(shù)據(jù)耦合舉例計(jì)算水電費(fèi)計(jì)算水費(fèi)計(jì)算電費(fèi)本月用水量本月用電量水費(fèi)電費(fèi)23控制耦合一模塊向下屬模塊傳遞的信息

(開(kāi)關(guān)量、標(biāo)志等控制被調(diào)用模塊決策的變量)控制了被調(diào)用模塊的內(nèi)部邏輯。24控制耦合舉例A計(jì)算平均分或最高分B平均/最高(控制信號(hào))成績(jī)讀入分?jǐn)?shù)輸出結(jié)果計(jì)算平均分計(jì)算最高分平均/最高?B25 控制耦合增加了理解和編程的復(fù)雜性,調(diào)用模塊必須知道被調(diào)模塊的內(nèi)部邏輯,增加了相互依賴將被調(diào)用模塊內(nèi)的判定上移到調(diào)用模塊中進(jìn)行被調(diào)用模塊分解成若干單一功能模塊去除模塊間控制耦合的方法26改控制耦合為數(shù)據(jù)耦合舉例A計(jì)算平均分B1平均成績(jī)最高成績(jī)計(jì)算最高分B227外部耦合如果兩個(gè)模塊都訪問(wèn)同一個(gè)全局簡(jiǎn)單變量而不是同一全局?jǐn)?shù)據(jù)結(jié)構(gòu),而且,不是通過(guò)參數(shù)表傳遞該全局變量的信息,則這兩個(gè)變量具有外部耦合。例如,模塊A和模塊B之間的通信不是通過(guò)參數(shù),而是通過(guò)全局變量,并且兩個(gè)模塊內(nèi)部都可以修改全局變量。設(shè)計(jì)時(shí),盡量不要使用外部耦合28公共耦合(公共數(shù)據(jù)區(qū)耦合) 一組模塊引用同一個(gè)公用數(shù)據(jù)區(qū)(也稱全局?jǐn)?shù)據(jù)區(qū)、公共數(shù)據(jù)環(huán)境)。公共數(shù)據(jù)區(qū)指:

全局?jǐn)?shù)據(jù)結(jié)構(gòu)共享通訊區(qū)內(nèi)存公共覆蓋區(qū)等29公共耦合舉例30軟件可理解性降低診斷錯(cuò)誤困難軟件可維護(hù)性差軟件可靠性差(公共數(shù)據(jù)區(qū)及全程變量無(wú)保護(hù)措施)慎用公共數(shù)據(jù)區(qū)和全程變量!!!

只有在模塊之間共享的數(shù)據(jù)很多,并且通過(guò)參數(shù)表傳遞不方便時(shí),才使用公共耦合公共耦合存在的問(wèn)題31內(nèi)容耦合如果發(fā)生下列情形,兩個(gè)模塊之間就發(fā)生了內(nèi)容耦合一個(gè)模塊直接訪問(wèn)另一個(gè)模塊的內(nèi)部數(shù)據(jù)一個(gè)模塊不通過(guò)正常入口轉(zhuǎn)到另一模塊內(nèi)部?jī)蓚€(gè)模塊有一部分程序代碼重迭(只可能出現(xiàn)在匯編語(yǔ)言中)一個(gè)模塊有多個(gè)入口(表明該模塊有幾種功能內(nèi)容耦合舉例一模塊直接訪問(wèn)另一模塊的內(nèi)部信息(程序代碼或數(shù)據(jù))最不好的耦合形式!!!ABAB模塊代碼重疊Entry1……Entry1……多入口模塊33模塊內(nèi)聚內(nèi)聚性:由小到大偶然內(nèi)聚(低)為節(jié)省空間將不同功能相互無(wú)聯(lián)系的語(yǔ)句組合在一起偶然內(nèi)聚(巧合內(nèi)聚)模塊M中的三個(gè)語(yǔ)句沒(méi)有任何聯(lián)系,只因?yàn)锳、B、C三個(gè)模塊都要用到這些語(yǔ)句缺點(diǎn):可理解性差,可修改性差A(yù)BCMMOVEOTORREADFILEFMOVESTOT邏輯內(nèi)聚把幾種相關(guān)功能(邏輯上相似的功能)組合在一模塊內(nèi),每次調(diào)用由傳給模塊的參數(shù)確定執(zhí)行哪種功能。實(shí)現(xiàn)多個(gè)邏輯上相同或相似的功能邏輯內(nèi)聚舉例ABCEFGABCEFGA1B1C1EFG模塊內(nèi)部邏輯

E、F、G邏輯功能相似,組成新模塊EFG缺點(diǎn):增強(qiáng)了耦合程度(控制耦合)

不易修改,效率低公用代碼段公用代碼段邏輯內(nèi)聚舉例時(shí)間內(nèi)聚(經(jīng)典內(nèi)聚)模塊完成的功能必須在同一時(shí)間內(nèi)執(zhí)行,這些功能只因時(shí)間因素關(guān)聯(lián)在一起。例如:初始化系統(tǒng)模塊系統(tǒng)結(jié)束模塊緊急故障處理模塊等均是時(shí)間性聚合模塊這種模塊在20世紀(jì)80年代的應(yīng)用程序中使用較多,沒(méi)有任何復(fù)用價(jià)值,并且一旦其他模塊需要修改時(shí),對(duì)該模塊的影響較大,所以現(xiàn)在主張將變量的初始化操作都?xì)w入到相關(guān)的模塊中過(guò)程內(nèi)聚(順序性組合)模塊內(nèi)各處理成分相關(guān),且必須以特定次序執(zhí)行,如把流程圖中的某一部分劃出組成模塊,得到的就是過(guò)程內(nèi)聚模塊過(guò)程內(nèi)聚模塊可能包含一個(gè)完整功能的一部分或者包含一個(gè)或幾個(gè)功能再加上其它功能的一部分,會(huì)導(dǎo)致模塊的高度可變性如果選擇不當(dāng),就不能使這種模塊完成獨(dú)立的任務(wù),也無(wú)法在新的系統(tǒng)中獨(dú)立使用。所以它的內(nèi)聚程度仍然比較低,模塊間的耦合度還比較高。過(guò)程內(nèi)聚(順序性組合)舉例計(jì)算模塊循環(huán)處理模塊判斷處理模塊通信內(nèi)聚模塊內(nèi)各部分使用相同的輸入數(shù)據(jù),或產(chǎn)生相同的輸出結(jié)果產(chǎn)生職工工資報(bào)表并計(jì)算平均工資模塊產(chǎn)生工資報(bào)表計(jì)算平均工資工資記錄工資報(bào)表平均工資信息內(nèi)聚模塊完成多個(gè)功能,各功能都在同一數(shù)據(jù)結(jié)構(gòu)上操作,每一功能有唯一入口,實(shí)現(xiàn)時(shí),一般采用選擇結(jié)構(gòu)來(lái)實(shí)現(xiàn)功能。學(xué)生記錄數(shù)據(jù)查找登錄刪除修改幾個(gè)加工同時(shí)引用一個(gè)共同的數(shù)據(jù)功能內(nèi)聚模塊僅包括為完成某個(gè)功能所必須的所有成分。模塊所有成分共同完成一個(gè)功能,缺一不可

內(nèi)聚性最強(qiáng)函數(shù)A-處理1函數(shù)B-處理2函數(shù)C-處理34.2體系結(jié)構(gòu)設(shè)計(jì)概述4.2.1軟件設(shè)計(jì)的任務(wù)從工程管理的角度來(lái)看,軟件設(shè)計(jì)分兩步完成??傮w(概要)設(shè)計(jì),將軟件需求轉(zhuǎn)化為數(shù)據(jù)結(jié)構(gòu)和軟件的系統(tǒng)結(jié)構(gòu)。詳細(xì)設(shè)計(jì),包括過(guò)程(處理流程)設(shè)計(jì)、人機(jī)對(duì)話設(shè)計(jì)、界面設(shè)計(jì)、輸入輸出設(shè)計(jì)等??傮w設(shè)計(jì)的任務(wù)及目標(biāo)開(kāi)發(fā)階段的信息流總體設(shè)計(jì)任務(wù)1、制定規(guī)范在進(jìn)入軟件開(kāi)發(fā)階段之初,首先應(yīng)為軟件開(kāi)發(fā)組制定在設(shè)計(jì)時(shí)應(yīng)該共同遵守的標(biāo)準(zhǔn),以便協(xié)調(diào)組內(nèi)各成員的工作。閱讀和理解軟件需求說(shuō)明書(shū),確認(rèn)用戶要求能否實(shí)現(xiàn),明確實(shí)現(xiàn)的條件,從而確定設(shè)計(jì)的目標(biāo),以及它們的優(yōu)先順序根據(jù)目標(biāo)確定最合適的設(shè)計(jì)方法規(guī)定設(shè)計(jì)文檔的編制標(biāo)準(zhǔn)規(guī)定編碼的信息形式,與硬件,操作系統(tǒng)的接口規(guī)約,命名規(guī)則總體設(shè)計(jì)任務(wù)2、軟件系統(tǒng)結(jié)構(gòu)的總體設(shè)計(jì)軟件系統(tǒng)結(jié)構(gòu)的設(shè)計(jì)是總體設(shè)計(jì)關(guān)鍵的一步,直接影響到下一階段詳細(xì)設(shè)計(jì)與編碼的工作。軟件系統(tǒng)結(jié)構(gòu)的設(shè)計(jì)是以模塊為基礎(chǔ)的──以需求分析的層次結(jié)構(gòu)為依據(jù)采用某種設(shè)計(jì)方法,將系統(tǒng)按功能劃分成模塊的層次結(jié)構(gòu)確定每個(gè)模塊的功能建立與已確定的軟件需求的對(duì)應(yīng)關(guān)系確定模塊間的調(diào)用關(guān)系確定模塊間的接口評(píng)估模塊劃分的質(zhì)量總體設(shè)計(jì)任務(wù)3.數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)庫(kù)設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì):需求分析階段,數(shù)據(jù)字典對(duì)數(shù)據(jù)的組成、操作約束、數(shù)據(jù)之間的關(guān)系等方面進(jìn)行了描述,確定了數(shù)據(jù)的結(jié)構(gòu)特性。總體設(shè)計(jì)階段主要是對(duì)數(shù)據(jù)字典的一些相關(guān)內(nèi)容加以細(xì)化,到詳細(xì)設(shè)計(jì)階段則規(guī)定其具體的實(shí)現(xiàn)細(xì)節(jié),如確定輸入,輸出文件的詳細(xì)的數(shù)據(jù)結(jié)構(gòu)結(jié)合算法設(shè)計(jì),確定算法所必需的邏輯數(shù)據(jù)結(jié)構(gòu)及其操作數(shù)據(jù)庫(kù)設(shè)計(jì)概念結(jié)構(gòu)設(shè)計(jì)、邏輯結(jié)構(gòu)設(shè)計(jì)、物理結(jié)構(gòu)設(shè)計(jì)設(shè)計(jì)數(shù)據(jù)庫(kù)的模式、子模式,進(jìn)行數(shù)據(jù)完整性和安全性的設(shè)計(jì)確定對(duì)邏輯數(shù)據(jù)結(jié)構(gòu)所必需的那些操作的程序模塊(軟件包)總體設(shè)計(jì)任務(wù)4.可靠性設(shè)計(jì)可靠性設(shè)計(jì)也叫做質(zhì)量設(shè)計(jì)在運(yùn)行過(guò)程中,為了適應(yīng)環(huán)境的變化和用戶新的要求,需經(jīng)常對(duì)軟件進(jìn)行改造和修正。在軟件開(kāi)發(fā)的一開(kāi)始就要確定軟件可靠性和其它質(zhì)量指標(biāo),考慮相應(yīng)措施,以使得軟件易于修改和易于維護(hù)

5、編寫(xiě)總體設(shè)計(jì)文檔國(guó)標(biāo)GB8576-88的“計(jì)算機(jī)軟件產(chǎn)品開(kāi)發(fā)文件編制指南”規(guī)定,軟件設(shè)計(jì)文檔可分為:概要設(shè)計(jì)說(shuō)明書(shū):集中于軟件結(jié)構(gòu)描述,如系統(tǒng)目標(biāo)和軟件的總體設(shè)計(jì)、在系統(tǒng)中的作用、與硬件、軟件和人員的接口、軟件的主要功能、模塊的劃分、模塊功能及數(shù)據(jù)設(shè)計(jì)數(shù)據(jù)庫(kù)設(shè)計(jì)說(shuō)明書(shū):主要給出DBMS系統(tǒng)的選擇、所使用的DBMS簡(jiǎn)介、數(shù)據(jù)庫(kù)的概念模型、邏輯設(shè)計(jì)結(jié)果以及模式、子模式、完整性、安全性和優(yōu)化方法等用戶手冊(cè):對(duì)需求分析階段編寫(xiě)的用戶手冊(cè)進(jìn)行補(bǔ)充測(cè)試計(jì)劃:修訂需求分析階段編寫(xiě)測(cè)試計(jì)劃,對(duì)測(cè)試策略、方法、步驟提出明確要求總體設(shè)計(jì)任務(wù)6、設(shè)計(jì)審查和復(fù)審最后應(yīng)該對(duì)總體設(shè)計(jì)的結(jié)果進(jìn)行嚴(yán)格的技術(shù)審查在技術(shù)審查通過(guò)之后再由使用部門(mén)的負(fù)責(zé)人從管理角度進(jìn)行復(fù)審?fù)ㄟ^(guò)審查,對(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圖HIPO圖(層次圖+輸入/處理/輸出圖)H圖:描述總體模塊結(jié)構(gòu)的層次IPO圖:描述每個(gè)模塊輸入/輸出和處理功能工資計(jì)算系統(tǒng)的H圖計(jì)算工資模塊的IPO圖4.2.2體系結(jié)構(gòu)設(shè)計(jì)中可采用的工具

2.結(jié)構(gòu)圖結(jié)構(gòu)圖主要成分模塊:用方框表示,方框中寫(xiě)有模塊的名字,一個(gè)模塊的名字應(yīng)適當(dāng)?shù)胤从尺@個(gè)模塊的功能,這就在某種程度上反映了塊內(nèi)聯(lián)系調(diào)用:從一個(gè)模塊指向另一個(gè)模塊的箭頭(或直線)表示模塊間的調(diào)用模塊間的信息傳遞:模塊問(wèn)還經(jīng)常用帶注釋的短箭頭表示模塊調(diào)用過(guò)程中來(lái)回傳遞的信息。有時(shí)箭頭尾部帶空心圓的表示傳遞的是數(shù)據(jù),帶實(shí)心圓的表示傳遞的是控制信息

SD方法在總體設(shè)計(jì)中的主要表達(dá)工具結(jié)構(gòu)圖中的基本符號(hào)ABCABC符號(hào)含義用于表示模塊,方框中標(biāo)明模塊的名稱用于描述模塊之間的調(diào)用關(guān)系用于表示模塊調(diào)用過(guò)程中傳遞的信息,箭頭上標(biāo)明信息的名稱;箭頭尾部為空心圓表示傳遞的信息是數(shù)據(jù),若為實(shí)心圓則表示傳遞的是控制信息

表示模塊A選擇調(diào)用模塊B或模塊C表示模塊A循環(huán)調(diào)用模塊B和模塊C結(jié)構(gòu)圖(StructureChart)結(jié)構(gòu)圖──SC中的四種模塊傳入模塊(a)(b)AA傳出模塊BB變換模塊(c)CD協(xié)調(diào)模塊E(d)EFF結(jié)構(gòu)圖(StructureChart)同名字的模塊在結(jié)構(gòu)圖中僅出現(xiàn)一次。調(diào)用關(guān)系只能從上到下。不嚴(yán)格表示模塊的調(diào)用次序,習(xí)慣上從左到右。有時(shí)為了減少連線的交叉,適當(dāng)?shù)卣{(diào)整同一層模塊左右位置,以保持結(jié)構(gòu)圖的清晰性。4.2.3體系結(jié)構(gòu)設(shè)計(jì)的原則1.降低模塊的耦合性、提高模塊的內(nèi)聚性耦合性:模塊與模塊之間的關(guān)系

盡量使用數(shù)據(jù)耦合內(nèi)聚性:模塊內(nèi)各部分之間的關(guān)系

最好實(shí)現(xiàn)功能內(nèi)聚2.保持適中的模塊規(guī)模模塊規(guī)模過(guò)大:模塊實(shí)現(xiàn)功能過(guò)多降低程序可讀性規(guī)模過(guò)小模塊數(shù)過(guò)多不利于上層模塊控制10~100句/模塊合并小模塊、拆分大模塊3.模塊的扇入與扇出扇入:上級(jí)模塊調(diào)用下級(jí)模塊該模塊的上級(jí)模塊數(shù)稱為該模塊的扇入右圖中模塊S的扇入數(shù)為n模塊的扇入數(shù)越大則調(diào)用該模塊的上級(jí)模塊越多該模塊復(fù)用性越高將多個(gè)模塊的重復(fù)功能編寫(xiě)?yīng)毩⒌哪K,以提高程序的重用性,SM1M2M3Mn…3.模塊的扇入與扇出扇出:上級(jí)模塊調(diào)用下級(jí)模塊該模塊可調(diào)用的下級(jí)模塊數(shù)右圖中模塊S的扇出數(shù)為m模塊的扇出數(shù)越大使模塊的調(diào)用控制過(guò)于復(fù)雜原因:模塊分解過(guò)快所致解決方法:填加中間層,降低分解速度模塊扇出數(shù)過(guò)小扇出為1將下級(jí)模塊合并到上級(jí)模塊SG1G2G3Gm…會(huì)員信息管理管理員增加新會(huì)員管理員修改會(huì)員信息管理員刪除會(huì)員銷(xiāo)售部修改會(huì)員信息銷(xiāo)售部刪除會(huì)員銷(xiāo)售部增加新會(huì)員領(lǐng)導(dǎo)查詢會(huì)員信息銷(xiāo)售部查詢會(huì)員信息會(huì)員信息管理管理員增加新會(huì)員管理員修改會(huì)員信息管理員刪除會(huì)員銷(xiāo)售部修改會(huì)員信息銷(xiāo)售部刪除會(huì)員銷(xiāo)售部增加新會(huì)員銷(xiāo)售部查詢會(huì)員信息領(lǐng)導(dǎo)查詢會(huì)員信息管理員管理會(huì)員銷(xiāo)售管理會(huì)員領(lǐng)導(dǎo)查詢會(huì)員4.模塊的深度和寬度-兩者相互對(duì)立深度模塊層次數(shù)反應(yīng)系統(tǒng)規(guī)模程序中的表現(xiàn):嵌套調(diào)用深度過(guò)大解決方案:將簡(jiǎn)單模塊與上級(jí)模塊合并寬度同一層次上模塊數(shù)最大值反應(yīng)系統(tǒng)復(fù)雜性程序中表現(xiàn):子模塊與扇出有關(guān)寬度過(guò)大如何解決?增加中間層模塊設(shè)計(jì)準(zhǔn)則深度

=分層的層數(shù)。過(guò)大表示分工過(guò)細(xì)。寬度

=結(jié)構(gòu)圖中模塊數(shù)最多的那層的模塊個(gè)數(shù)。過(guò)大表示系統(tǒng)復(fù)雜度大。扇出

=一個(gè)模塊直接調(diào)用\控制的模塊數(shù)。

3fan-out9扇入

=直接調(diào)用該模塊的模塊數(shù)。多扇入的模塊通常是用公用模塊

在不破壞獨(dú)立性的前提下,fan-in大的比較好。3.模塊高扇入與適當(dāng)扇出5.模塊作用域控制域作用域受該模塊內(nèi)一個(gè)判定條件影響的所有模塊控制域該模塊本身及其下屬模塊實(shí)例:模塊C的控制域包括:CEFGH由于模塊C中存在一個(gè)判定條件影響模塊CDEFGHD,所以模塊C的作用域包括CDEFGHD作用域不屬于控制域?qū)е拢耗KC對(duì)模塊D的控制必須通過(guò)B來(lái)執(zhí)行模塊間耦合性增大解決方案一:判定位置上移解決方案二:將超出模塊控制域部分的模塊下移MABCDEFHG模塊設(shè)計(jì)準(zhǔn)則TopAYBB1XTopABB1B2XTopYABXAYBB1B2X圖1.作用域在控制域之外圖2.作用域在控制域之內(nèi),但判定位置太高圖3.作用域在控制域之內(nèi),正確實(shí)現(xiàn)圖4.理想的作用域和控制域作用域判定6.降低模塊接口的復(fù)雜程度即:降低模塊間耦合性接口應(yīng)簡(jiǎn)單清晰減少接口間傳遞信息的個(gè)數(shù),降低信息的復(fù)雜性盡量保證是簡(jiǎn)單數(shù)據(jù)減少:數(shù)據(jù)結(jié)構(gòu)、對(duì)象等數(shù)據(jù)類(lèi)型作為接口傳遞數(shù)據(jù)4.2.4體系結(jié)構(gòu)設(shè)計(jì)說(shuō)明書(shū)引言:編寫(xiě)說(shuō)明書(shū)的目的、背景、定義術(shù)語(yǔ)和縮略語(yǔ)、參考資料說(shuō)明現(xiàn)行系統(tǒng)問(wèn)題系統(tǒng)前景總體設(shè)計(jì)軟件需求規(guī)定、運(yùn)行環(huán)境、處理流程和總體結(jié)構(gòu)不涉及具體模塊的實(shí)現(xiàn)細(xì)節(jié)運(yùn)行設(shè)計(jì)模塊組合、運(yùn)行控制方式模塊設(shè)計(jì)各模塊性能模塊間接口數(shù)據(jù)設(shè)計(jì)邏輯數(shù)據(jù)結(jié)構(gòu)(建立在E-R圖至上)出錯(cuò)處理設(shè)計(jì)各種錯(cuò)誤及所采取處理錯(cuò)誤的措施Java中Exception4.3面向數(shù)據(jù)流的體系結(jié)構(gòu)設(shè)計(jì)方法設(shè)計(jì)——將信息需求轉(zhuǎn)換成數(shù)據(jù)結(jié)構(gòu)、程序結(jié)構(gòu)和過(guò)程性表示的多步驟過(guò)程。系統(tǒng)設(shè)計(jì)的角度不同,分三類(lèi):面向數(shù)據(jù)流的設(shè)計(jì),過(guò)程驅(qū)動(dòng)設(shè)計(jì)面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì),數(shù)據(jù)驅(qū)動(dòng)設(shè)計(jì)面向?qū)ο蟮脑O(shè)計(jì)一.面向數(shù)據(jù)流的設(shè)計(jì)基于模塊化、自頂向下、結(jié)構(gòu)化程序設(shè)計(jì)的基礎(chǔ)實(shí)現(xiàn),實(shí)施要點(diǎn):研究分析數(shù)據(jù)流圖根據(jù)數(shù)據(jù)流圖決定問(wèn)題類(lèi)型由數(shù)據(jù)流圖推導(dǎo)出系統(tǒng)初始結(jié)構(gòu)圖利用啟發(fā)式原則改進(jìn)系統(tǒng)初始結(jié)構(gòu)圖修改補(bǔ)充數(shù)據(jù)字典制定測(cè)試計(jì)劃1.典型的系統(tǒng)結(jié)構(gòu)形式結(jié)構(gòu)化設(shè)計(jì):

數(shù)據(jù)流圖表示的信息程序結(jié)構(gòu)設(shè)計(jì)描述1)系統(tǒng)結(jié)構(gòu)中的模塊原子模塊——系統(tǒng)結(jié)構(gòu)圖中底層不能再被分解的模塊。完全因子分解系統(tǒng)——一個(gè)軟件系統(tǒng)的全部實(shí)際加工(數(shù)據(jù)處理或計(jì)算)都有底層原子模塊完成,非原子模塊僅僅執(zhí)行控制或協(xié)調(diào)功能。完全因子分解系統(tǒng)是最理想的,也是我們?cè)谲浖O(shè)計(jì)中希望達(dá)到的目標(biāo)。轉(zhuǎn)換為系統(tǒng)結(jié)構(gòu)圖中的四種類(lèi)型的模塊:①傳入模塊-邏輯輸入數(shù)據(jù)流從下屬模塊取得數(shù)據(jù)處理數(shù)據(jù)結(jié)果上傳給上級(jí)模塊②傳出模塊-邏輯輸出數(shù)據(jù)流從上級(jí)模塊獲得數(shù)據(jù)處理數(shù)據(jù)結(jié)果傳送給下屬模塊③變換模塊(加工模塊)—計(jì)算模塊從上級(jí)模塊取得數(shù)據(jù)特定處理,轉(zhuǎn)換數(shù)據(jù)形式傳送回上級(jí)模塊④協(xié)調(diào)模塊-對(duì)下屬模塊進(jìn)行協(xié)調(diào)和管理在較高層出現(xiàn),協(xié)調(diào)和管理下屬模塊出現(xiàn)在輸入/輸出部分或數(shù)據(jù)加工部分傳入模塊傳出模塊變換模塊協(xié)調(diào)模塊SD方法──數(shù)據(jù)流圖的類(lèi)型變換型:變換型DFD是一個(gè)線性結(jié)構(gòu),由輸入、變換和輸出三部分組成SD方法──數(shù)據(jù)流圖的類(lèi)型事務(wù)型:事務(wù)型DFD中,數(shù)據(jù)沿輸入通路到達(dá)一個(gè)處理,這個(gè)處理將輸入分為許多相互平行的加工路徑,并根據(jù)輸入數(shù)據(jù)的類(lèi)型,選擇某一加工路徑SD方法──數(shù)據(jù)流圖的類(lèi)型變換/事務(wù)混合型:SD方法──設(shè)計(jì)過(guò)程精化數(shù)據(jù)流圖區(qū)分事務(wù)中心和數(shù)據(jù)接收路徑映射成變換結(jié)構(gòu)類(lèi)型區(qū)分輸入和輸出分支映射成事務(wù)結(jié)構(gòu)用設(shè)計(jì)準(zhǔn)則精化軟件結(jié)構(gòu)導(dǎo)出接口描述和全程數(shù)據(jù)結(jié)構(gòu)復(fù)查詳細(xì)設(shè)計(jì)“事務(wù)”“變換”事務(wù)分析變換分析SD方法的兩種映射方法變換型DFD初始SC變換分析事務(wù)型DFD初始SC事務(wù)分析初始的SC主模塊輸入模塊主加工模塊輸入模塊由變換分析產(chǎn)生接收模塊調(diào)度模塊動(dòng)作1模塊動(dòng)作2模塊動(dòng)作3模塊由事務(wù)分析產(chǎn)生事務(wù)控制模塊SD方法──變換分析第一步:確定DFD中的變換中心、邏輯輸入、邏輯輸出

通常幾股數(shù)據(jù)流的匯合處就是系統(tǒng)的變換中心或從物理輸入(出)端開(kāi)始,沿(逆)數(shù)據(jù)流方向向系統(tǒng)中心尋找,直到有這樣的DF,它不能再看做是系統(tǒng)的輸入(出)時(shí),則它的前一數(shù)據(jù)流就是系統(tǒng)的邏輯輸入(出),介于邏輯輸入和邏輯輸出間的加工就是變換中心從輸入設(shè)備獲得的物理輸入一般要經(jīng)過(guò)編輯、數(shù)制轉(zhuǎn)換、格式變換、合法性檢查等一系列預(yù)處理變成邏輯輸入;同樣,邏輯輸出一般也要經(jīng)過(guò)格式轉(zhuǎn)換等處理后再進(jìn)行物理輸出SD方法──變換分析BCADEQPRWUVabcedrpuwv變換中心輸入部分輸出部分SD方法──變換分析第二步:一級(jí)分解,設(shè)計(jì)軟件結(jié)構(gòu)的頂層和一層模塊──建立初始結(jié)構(gòu)圖變換中心MCMTMAMESD方法──變換分析初始結(jié)構(gòu)圖MCMTMAME第一層頂層c,ec,eu,wu,w輸入模塊輸出模塊主加工模塊SD方法──變換分析第三步:第二級(jí)分解(分解SC各分支)

自頂向下分解,設(shè)計(jì)輸入分支、輸出分支、中心變換分支的中、下層模塊SD方法──變換分析:輸入分支輸入模塊的功能是向調(diào)用它的上級(jí)模塊提供數(shù)據(jù),所以它必須要有一個(gè)數(shù)據(jù)來(lái)源,因此它需要兩個(gè)下屬模塊:一個(gè)接收數(shù)據(jù)另一個(gè)把這些數(shù)據(jù)變換成它的上級(jí)模塊所需要的數(shù)據(jù)格式SD方法──變換分析BCADEQPRWUVabcedrpuwv變換中心輸入部分輸出部分SD方法──變換分析輸入分支的分解⊙MACBAbacEDdec,eMAGetCbacReadDdec,eBtoCbcdeabGetEGetBDtoEAtoBReadASD方法──變換分析BCADEQPRWUVabcedrpuwv變換中心輸入部分輸出部分SD方法──變換分析輸出分支的分解MEWWriteVuuw,uvvvPutUUtoVMEUWriteWwwuw,uV(1)(2)SD方法──變換分析BCADEQPRWUVabcedrpuwv變換中心輸入部分輸出部分SD方法──變換分析中心加工模塊的分解MTPQRec,pru,wprSD方法──成績(jī)管理系統(tǒng)模塊圖SD方法──成績(jī)管理系統(tǒng)模塊圖成績(jī)管理系統(tǒng)成績(jī)統(tǒng)計(jì)成績(jī)登記成績(jī)打印成績(jī)檔案綜合評(píng)分補(bǔ)考通知成績(jī)通知單成績(jī)通知單補(bǔ)考通知綜合評(píng)分成績(jī)檔案成績(jī)錄入成績(jī)驗(yàn)證成績(jī)檔案單科成績(jī)單科成績(jī)SD方法──事務(wù)分析

任何情況下都可使用變換分析方法設(shè)計(jì)軟件結(jié)構(gòu),但如數(shù)據(jù)流具有明顯的事務(wù)特點(diǎn)時(shí)(有一個(gè)明顯的事務(wù)中心),以采用事務(wù)分析方法為宜。步驟:第一步:在DFD上確定事務(wù)中心、接收和發(fā)送部分第二步:畫(huà)出SC框架,把DFD上的三部分分別映射為事務(wù)控制模塊、接收模塊和調(diào)度模塊。第三步:分解細(xì)化接收分支和發(fā)送分支,完成初始SCSD方法──事務(wù)分析事務(wù)分析的映射方法總控調(diào)度C路徑B路徑A路徑A路徑B路徑C路徑接收路徑SD方法──事務(wù)分析舉例IMLNOabcdfeghSD方法──事務(wù)分析舉例初始結(jié)構(gòu)圖輸入

aXX系統(tǒng)變換控制aLMagdbcfe

輸出he、f、ge、f、gN結(jié)構(gòu)圖細(xì)化SD方法──事務(wù)分析舉例PT2T1TiA2D2A1D1A3AjDk事務(wù)層操作層細(xì)節(jié)層處理層主模塊事務(wù)加工模塊操作模塊細(xì)節(jié)模塊SD方法──事務(wù)分析舉例輸入

aXX系統(tǒng)變換控制aLMagdbcfe

輸出e、f、ge、f、ge、f、g輸出hOe、f、ghhN判定上移的結(jié)構(gòu)圖SD方法──事務(wù)分析舉例輸入

aXX系統(tǒng)a

輸出e、f、ge、f、g輸出hOe、f、ghhLMgdbcfeNSD方法──事務(wù)分析舉例事務(wù)型DFDIMLNABCDFEG事務(wù)中心初始結(jié)構(gòu)圖SD方法──事務(wù)分析舉例取

a

總控aLMNgdbcfe(主模塊)輸出e、f、ge、f、gSD方法──混合型DFDSD方法──混合型DFD3.軟件模塊結(jié)構(gòu)的改進(jìn)1)模塊功能的完善化一個(gè)完整的功能模塊,不僅能完成指定的功能還應(yīng)該能夠告訴使用者完成任務(wù)的狀態(tài),任務(wù)不能完成的原因執(zhí)行規(guī)定的功能出錯(cuò)處理部分2)消除重復(fù)功能,改善軟件結(jié)構(gòu)審查系統(tǒng)的初始結(jié)構(gòu)圖模塊改進(jìn)模塊完全相似結(jié)構(gòu)上完全一致,只是數(shù)據(jù)類(lèi)型上下不一致采用完全合并的方法局部相似完全合并:需要設(shè)置多個(gè)開(kāi)關(guān)處理步驟:將模塊R1和R2的相同部分找出從R1和R2中分離出來(lái)重新定義成獨(dú)立的下一層模塊,供R1和R2調(diào)用R1和R2的剩余部分可根據(jù)情況與上級(jí)合并,減少控制的傳遞、全局?jǐn)?shù)據(jù)的引用和接口的復(fù)雜性模塊作用域在控制域范圍之內(nèi)減少高扇出,隨深度增大扇入模塊大小適中XYR1R2XYR1+R2COMMONCOMMONCOMMON3)設(shè)計(jì)功能可預(yù)測(cè)的模塊,避免過(guò)分限制模塊一個(gè)功能可預(yù)測(cè)的模塊可看作一個(gè)黑盒:無(wú)論內(nèi)部處理細(xì)節(jié)如何,對(duì)相同的輸入數(shù)據(jù),產(chǎn)生同樣的結(jié)構(gòu)模塊內(nèi)存在特殊的鮮為人知的功能,則該模塊為不可預(yù)測(cè)的。(邏輯炸彈)4)對(duì)模塊的數(shù)據(jù)結(jié)構(gòu)大小控制流的選擇與外界(人或硬件)的接口模式 被限制過(guò)死,很難適應(yīng)客戶的新要求和環(huán)境的變更,維護(hù)困難。為適應(yīng)變更,1)模塊中數(shù)據(jù)結(jié)構(gòu)的大小應(yīng)當(dāng)是可控制的,可通過(guò)模塊接口的參數(shù)表來(lái)改變數(shù)據(jù)結(jié)構(gòu)2)與外界的接口應(yīng)該是靈活的,可通過(guò)參數(shù)來(lái)調(diào)整。系統(tǒng)設(shè)計(jì)的第一階段——體系結(jié)構(gòu)設(shè)計(jì)系統(tǒng)設(shè)計(jì)的第二階段——詳細(xì)設(shè)計(jì)目的:在體系結(jié)構(gòu)設(shè)計(jì)的基礎(chǔ)上,為軟件的每個(gè)模塊確定相應(yīng)的:算法內(nèi)部數(shù)據(jù)結(jié)構(gòu)獲得目標(biāo)系統(tǒng)具體實(shí)現(xiàn)的精確描述為編碼工作做好準(zhǔn)備決定了程序代碼的質(zhì)量4.4詳細(xì)設(shè)計(jì)概述4.4.1詳細(xì)設(shè)計(jì)的任務(wù)確定每個(gè)模塊的具體算法數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)庫(kù)的物理結(jié)構(gòu)模塊接口細(xì)節(jié)測(cè)試用例(模擬)編寫(xiě)文檔——詳細(xì)設(shè)計(jì)說(shuō)明書(shū)詳細(xì)設(shè)計(jì)的原則將保證程序的清晰度放在首位采用逐步細(xì)化的實(shí)現(xiàn)方法

選擇適當(dāng)?shù)谋磉_(dá)工具4.4.2詳細(xì)設(shè)計(jì)采用的工具程序流程圖N-S圖PAD圖PDL語(yǔ)言一、程序流程圖(a)一般處理框(b)輸入/輸出框(c)判斷框(d)流程線(e)起止框流程圖基本符號(hào)一、程序流程圖五種基本的控制結(jié)構(gòu)組成復(fù)雜多變的程序流程圖AB順序型PAB選擇型PSFT先判定型循環(huán)WHILEPSFT后判定型循環(huán)DO-UTILLP=1P=2P=n…A1TA2TA3T多情況選擇型CASE模塊詳細(xì)設(shè)計(jì)──描述工具接受單科成績(jī)從課程管理系統(tǒng)中查出課程的學(xué)分IF

普通考試成績(jī)

DOWHILE

對(duì)于成績(jī)單中每個(gè)學(xué)生

IF學(xué)生的成績(jī)大于合格成績(jī) 記錄學(xué)生的成績(jī),學(xué)分

ELSE

記錄學(xué)生的成績(jī),學(xué)分為0

ENDIF

ENDDOELSE

DOWHILE

對(duì)于成績(jī)單中每個(gè)學(xué)生

IF

學(xué)生的補(bǔ)考成績(jī)大于合格成績(jī) 記錄學(xué)生的補(bǔ)考成績(jī),學(xué)分

ELSE

記錄學(xué)生的補(bǔ)考成績(jī),學(xué)分為0

ENDIF

ENDDOENDIF

模塊詳細(xì)設(shè)計(jì)──描述工具流程圖優(yōu)點(diǎn)對(duì)程序的控制流程描述直觀、清晰使用靈活便于閱讀和掌握缺點(diǎn)箭頭使用靈活性大,容易造成程序控制結(jié)構(gòu)的混亂難以描述逐步求精的過(guò)程,導(dǎo)致程序員過(guò)早注重細(xì)節(jié)而忽略了程序全局結(jié)構(gòu)的設(shè)計(jì)難以表示系統(tǒng)中的數(shù)據(jù)結(jié)構(gòu)二、N-S圖可清晰的表達(dá)結(jié)構(gòu)中的嵌套及模塊的層次關(guān)系沒(méi)有流程線,避免隨意轉(zhuǎn)移模塊詳細(xì)設(shè)計(jì)──描述工具ajbX1fX2X4ighde=1=2=3cDo-whileX6TFTFDo-whileX5while-doX3ghm1X7TFm3m4m2Do-whileX8g:X9TFn1Do-whileX10h:=2n2=3n3=1N-S圖特點(diǎn)每個(gè)矩形框都明確定義了功能域,清晰可見(jiàn)控制轉(zhuǎn)移不能隨意容易確定局部或全部數(shù)據(jù)的作用域很容易表現(xiàn)嵌套關(guān)系,也可以表示模塊的層次結(jié)構(gòu)三、PAD(problemanalysisdiagram)

問(wèn)題分析圖模塊詳細(xì)設(shè)計(jì)──描述工具三、PAD(problemanalysisdiagram)

問(wèn)題分析圖PAD特點(diǎn)層次清晰為多種語(yǔ)言提供相應(yīng)圖形符號(hào),易于轉(zhuǎn)換支持自頂向下逐步求精既能描述程序邏輯結(jié)構(gòu),又能描述數(shù)據(jù)結(jié)構(gòu)四、PDL語(yǔ)言(過(guò)程設(shè)計(jì)語(yǔ)言)是一種偽代碼外語(yǔ)法:符合一般程序設(shè)計(jì)語(yǔ)言常用語(yǔ)句的語(yǔ)法規(guī)則內(nèi)語(yǔ)法:自然語(yǔ)言有數(shù)據(jù)說(shuō)明機(jī)制有子程序定義與調(diào)用機(jī)制過(guò)程設(shè)計(jì)語(yǔ)言(ProcessDesignLanguage)PDLPDL語(yǔ)言的主要特點(diǎn):(1)各種定義語(yǔ)句及控制結(jié)構(gòu)的表達(dá)都具有嚴(yán)格的語(yǔ)法形式,使程序結(jié)構(gòu)、數(shù)據(jù)說(shuō)明等更加清晰。(2)提供了數(shù)據(jù)說(shuō)明機(jī)制,可用于定義簡(jiǎn)單及復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。(3)提供了模塊的定義和調(diào)用機(jī)制,方便了程序模塊化的表達(dá)。語(yǔ)法規(guī)則注釋行語(yǔ)句:--*數(shù)據(jù)說(shuō)明DECLARE數(shù)據(jù)類(lèi)型變量名模塊定義PROCEDURE模塊名(參數(shù))

……

RETURN

END控制結(jié)構(gòu)1)順序結(jié)構(gòu)——語(yǔ)句按先后順序執(zhí)行語(yǔ)句序列1

語(yǔ)句序列2

…..

語(yǔ)句序列n

2)選擇型結(jié)構(gòu)

IF<>

ELSEIF<>

ELSE<>

ENDIFCASE表達(dá)式OF

CASE取值1:語(yǔ)句序列S1

CASE取值2:語(yǔ)句序列S2

……

DEFAULT:語(yǔ)句序列Sn

ENDCASE控制結(jié)構(gòu)3)循環(huán)結(jié)構(gòu)FOR結(jié)構(gòu)例“Forx=1ton sum=sum*xEndforWHILE結(jié)構(gòu)例:whilex<=n sum=sum*xEndwhileUNTIL結(jié)構(gòu)例:REPEAT sum=sum*xUTILLx<=n4)輸入輸出輸入:GET(輸入變量表)輸出:PUT(輸出變量表)5)模塊調(diào)用語(yǔ)句CALL模塊名(參數(shù))4.5面向數(shù)據(jù)流的詳細(xì)設(shè)計(jì)方法面向數(shù)據(jù)流的詳細(xì)設(shè)計(jì)方法

面向數(shù)據(jù)流的詳細(xì)設(shè)計(jì)方法,主要指結(jié)構(gòu)化程序設(shè)計(jì)方法,首要思想是,從改善每個(gè)模塊的控制結(jié)構(gòu)入手來(lái)提高程序的清晰度、易讀性、可測(cè)試性和可維護(hù)性。自頂向下,逐步細(xì)分的方法,符合人類(lèi)思維的一般方式,有效地控制復(fù)雜度和難度,大大減少了設(shè)計(jì)過(guò)程中出現(xiàn)錯(cuò)誤的可能,能夠顯著提高軟件開(kāi)發(fā)的可靠性及縮短軟件開(kāi)發(fā)的周期為了保證程序結(jié)構(gòu)的清晰度,通常限制只能采用順序結(jié)構(gòu)、選擇結(jié)構(gòu)(IF-THEN-ELSE型)和循環(huán)結(jié)構(gòu)(DO-WHILE型)三種基本控制結(jié)構(gòu)來(lái)構(gòu)造程序,稱為經(jīng)典的結(jié)構(gòu)程序設(shè)計(jì),其共同特點(diǎn)是所有模塊均只有一個(gè)入口和一個(gè)出口。加入了(DO-UNTIL)和多分支選擇結(jié)構(gòu)(DO-CASE)兩種補(bǔ)充結(jié)構(gòu)的詳細(xì)設(shè)計(jì)則被稱為擴(kuò)展的結(jié)構(gòu)程序設(shè)計(jì)。允許使用BREAK、EXIT這類(lèi)語(yǔ)句的程序設(shè)計(jì)被稱為修正的結(jié)構(gòu)程序設(shè)計(jì)。面向數(shù)據(jù)流的詳細(xì)設(shè)計(jì)方法結(jié)構(gòu)化程序設(shè)計(jì)方法目的:GOTO帶來(lái)的問(wèn)題1963,ALGOL,PeterNaur:取消GOTO1965,E.W.Dijkstra:GOTO與程序質(zhì)量成反比1966,Bohm與Jacopini:經(jīng)典結(jié)構(gòu)程序設(shè)計(jì)1968,爭(zhēng)論結(jié)果:GOTO可適當(dāng)存在首要思想:改善每個(gè)模塊的控制結(jié)構(gòu)——提高程序清晰度關(guān)鍵技術(shù):自頂向下,逐步細(xì)分只采用單入口單出口的三種基本控制結(jié)構(gòu)——經(jīng)典的結(jié)構(gòu)程序設(shè)計(jì)保證每個(gè)程序模塊的清晰的邏輯結(jié)構(gòu)AB順序型PAB選擇型PSFT先判定型循環(huán)WHILE增加DO-UNTILL和DO-CASE的兩種補(bǔ)充結(jié)構(gòu)除以上三種結(jié)構(gòu)外增加了DO-UNTILL和DO-CASE的詳細(xì)設(shè)計(jì)——擴(kuò)充的結(jié)構(gòu)程序設(shè)計(jì)限制GOTO語(yǔ)句的使用面向數(shù)據(jù)流的詳細(xì)設(shè)計(jì)為保證程序的清晰性以存儲(chǔ)容量和運(yùn)行效率的降低為代價(jià)PSFT后判定型循環(huán)DO-UTILLP=1P=2P=n…A1TA2TA3T多情況選擇型CASE結(jié)構(gòu)化程序設(shè)計(jì)的原則使用語(yǔ)言中的順序、選擇、重復(fù)等有限的基本控制結(jié)構(gòu)表示程序邏輯選用的控制結(jié)構(gòu)只許有一個(gè)入口和一個(gè)出口程序語(yǔ)句組成容易識(shí)別的塊,每塊只有一個(gè)入口和一個(gè)出口復(fù)雜結(jié)構(gòu)用基本控制結(jié)構(gòu)嵌套組合而成嚴(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ì)方法根據(jù)軟件所要處理的信息的數(shù)據(jù)結(jié)構(gòu)來(lái)設(shè)計(jì)軟件,它同樣遵循結(jié)構(gòu)程序設(shè)計(jì)和自頂向下、逐步細(xì)分的設(shè)計(jì)原則。面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法的設(shè)計(jì)步驟

1:畫(huà)出系統(tǒng)中輸入、輸出數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu)圖;

2:根據(jù)數(shù)據(jù)結(jié)構(gòu)圖,映射得到相應(yīng)的程序結(jié)構(gòu)圖

3:按照程序結(jié)構(gòu)圖,分析得到程序的詳細(xì)過(guò)程性描述面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法的典型代表是Jackson方法和Warnier方法Jackson方法是由英國(guó)的M.A.Jackson在1975年首先提出的,同時(shí)還提出了與這種方法配套使用的、用于描述系統(tǒng)數(shù)據(jù)結(jié)構(gòu)和程序結(jié)構(gòu)的圖形工具,被稱為Jackson圖。Jackson方法從目標(biāo)系統(tǒng)的輸入、輸出數(shù)據(jù)結(jié)構(gòu)入手,導(dǎo)出程序框架結(jié)構(gòu),再補(bǔ)充其它細(xì)節(jié),就可得到完整的程序結(jié)構(gòu)圖,并采用PDL進(jìn)行程序的詳細(xì)過(guò)程型描述。對(duì)于輸入、輸出數(shù)據(jù)結(jié)構(gòu)之間對(duì)應(yīng)關(guān)系清晰的小規(guī)模數(shù)據(jù)處理問(wèn)題,采用Jackson方法可以很方便地得到系統(tǒng)的處理過(guò)程描述。(以系統(tǒng)中數(shù)據(jù)結(jié)構(gòu)作為設(shè)計(jì)的出發(fā)點(diǎn)目標(biāo):得到詳細(xì)設(shè)計(jì)適合:詳細(xì)設(shè)計(jì)階段算法+數(shù)據(jù)結(jié)構(gòu)算法依賴于數(shù)據(jù)結(jié)構(gòu):重復(fù)出現(xiàn)的數(shù)據(jù)結(jié)構(gòu)采用循環(huán)結(jié)構(gòu)選擇性的數(shù)據(jù)結(jié)構(gòu)采用選擇結(jié)構(gòu)分層的數(shù)據(jù)結(jié)構(gòu)常采用對(duì)應(yīng)的分層調(diào)用程序結(jié)構(gòu)遵循自頂向下,逐步求精面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法數(shù)據(jù)結(jié)構(gòu)圖程序結(jié)構(gòu)圖映射程序的詳細(xì)過(guò)程性描述Jackson圖由方框、連線、特殊含義的字符構(gòu)成ABCDAB。C。D。AB*AB*F*DC*E*順序結(jié)構(gòu)選擇結(jié)構(gòu)重復(fù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)的組合表示Jackson方法面向數(shù)據(jù)結(jié)構(gòu)的的結(jié)構(gòu)程序設(shè)計(jì)方法目標(biāo):分析系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)Jackson偽代碼實(shí)現(xiàn)步驟:STEP1分析問(wèn)題,確定輸入、輸出數(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)姓名職稱工齡工資津貼STEP2找出輸入數(shù)據(jù)結(jié)構(gòu)和輸出數(shù)據(jù)結(jié)構(gòu)中有對(duì)應(yīng)關(guān)系的單元對(duì)應(yīng)單元:在程序中具有因果關(guān)系,可同時(shí)處理的單元為每對(duì)有對(duì)應(yīng)關(guān)系的數(shù)據(jù)單元,在程序結(jié)構(gòu)圖的相應(yīng)層次畫(huà)一個(gè)處理框?yàn)檩斎霐?shù)據(jù)結(jié)構(gòu)中每個(gè)數(shù)據(jù)單元,

若它在輸出數(shù)據(jù)結(jié)構(gòu)中沒(méi)有對(duì)應(yīng)的數(shù)據(jù)單元,

則在程序結(jié)構(gòu)圖的相應(yīng)層次畫(huà)一個(gè)處理框?yàn)檩敵鰯?shù)據(jù)結(jié)構(gòu)中每個(gè)數(shù)據(jù)單元,

若它在輸入數(shù)據(jù)結(jié)構(gòu)中沒(méi)有對(duì)應(yīng)的數(shù)據(jù)單元,

則在程序結(jié)構(gòu)圖的相應(yīng)層次畫(huà)一個(gè)處理框即:對(duì)輸入數(shù)據(jù)結(jié)構(gòu)與輸出數(shù)據(jù)結(jié)構(gòu)中的數(shù)據(jù)單元,每對(duì)有對(duì)應(yīng)關(guān)系的數(shù)據(jù)單元合畫(huà)一個(gè)程序框,對(duì)沒(méi)有對(duì)應(yīng)關(guān)系的數(shù)據(jù)單元,各畫(huà)一個(gè)程序框。產(chǎn)生檔

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論