第九講詳細(xì)設(shè)計(jì)_第1頁
第九講詳細(xì)設(shè)計(jì)_第2頁
第九講詳細(xì)設(shè)計(jì)_第3頁
第九講詳細(xì)設(shè)計(jì)_第4頁
第九講詳細(xì)設(shè)計(jì)_第5頁
已閱讀5頁,還剩59頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第九講詳細(xì)設(shè)計(jì)本講(第六章)的主要內(nèi)容一、詳細(xì)設(shè)計(jì)及其任務(wù)二、結(jié)構(gòu)程序設(shè)計(jì)三、人機(jī)界面設(shè)計(jì)四、詳細(xì)設(shè)計(jì)的工具五、

Jackson程序設(shè)計(jì)方法六、程序復(fù)雜度的定量度量一、詳細(xì)設(shè)計(jì)及其任務(wù)什么是詳細(xì)設(shè)計(jì)?從軟件開發(fā)的工程化觀點(diǎn)來看,在使用程序設(shè)計(jì)語言編制程序以前,需要對(duì)所采用算法的邏輯關(guān)系進(jìn)行分析,設(shè)計(jì)出全部必要的過程細(xì)節(jié),并給予清晰的表達(dá)。這就是過程設(shè)計(jì)的任務(wù)。針對(duì)一個(gè)個(gè)模塊的設(shè)計(jì),是過程設(shè)計(jì)、算法設(shè)計(jì)。詳細(xì)設(shè)計(jì)僅僅是設(shè)計(jì)出程序的“藍(lán)圖”,是編碼的先導(dǎo),但不是編寫程序。模塊的屬性:功能、邏輯和狀態(tài)模塊的內(nèi)部特性和外部特性詳細(xì)設(shè)計(jì)的任務(wù)每個(gè)模塊內(nèi)的數(shù)據(jù)結(jié)構(gòu)每個(gè)模塊的控制算法內(nèi)部接口描述為每一模塊設(shè)計(jì)出一組測(cè)試用例(testcases)。評(píng)審二、結(jié)構(gòu)程序設(shè)計(jì)定義:結(jié)構(gòu)化程序設(shè)計(jì)是一種設(shè)計(jì)程序的技術(shù),它采用自頂向下逐步求精的設(shè)計(jì)方法和單入口單出口的控制結(jié)構(gòu)。結(jié)構(gòu)化程序設(shè)計(jì)的要點(diǎn)自頂向下逐步求精采用三種基本結(jié)構(gòu),消除goto語句設(shè)計(jì)單入口、單出口的模3.結(jié)構(gòu)程序設(shè)計(jì)的提出1965年E.W.Dijkstra指出GOTO語句對(duì)程序質(zhì)量的負(fù)面影響,建議取消它。Bohm等證明了任何單入口單出口的程序都可以用“順序”、“選擇”和“循環(huán)”三種控制結(jié)構(gòu)實(shí)現(xiàn)。Mills基于在IBM的實(shí)踐,提出程序應(yīng)該只有一個(gè)入口和一個(gè)出口。Wirth通過對(duì)抽象層次的論述,對(duì)逐步求精方法進(jìn)行了肯定。4.結(jié)構(gòu)程序設(shè)計(jì)的類型經(jīng)典的結(jié)構(gòu)程序設(shè)計(jì)

Seq;if-then-else;do-While擴(kuò)展的結(jié)構(gòu)程序設(shè)計(jì)

增加do-case;do-until修正的結(jié)構(gòu)程序設(shè)計(jì) 允許leave;break5.結(jié)構(gòu)程序設(shè)計(jì)的優(yōu)點(diǎn)符合人類解決復(fù)雜問題的規(guī)律。自頂向下逐步求精,使得相鄰兩次精化之間變化甚小,不難驗(yàn)證前后內(nèi)容是否一致和有效。使得程序具有清晰的結(jié)構(gòu)層次。不使用GOTO語句,避免了“病態(tài)連接”,消除“漣漪效應(yīng)”,提高可理解性、可靠性、可測(cè)試性和可維護(hù)性。清晰的模塊化程序利于重用和復(fù)用。利于程序的正確性證明和形式化開發(fā)。三、人機(jī)界面設(shè)計(jì)設(shè)計(jì)問題系統(tǒng)響應(yīng)時(shí)間用戶幫助設(shè)施出錯(cuò)信息處理命令交互設(shè)計(jì)過程(p111)人機(jī)界面設(shè)計(jì)指南(p112)1.設(shè)計(jì)問題系統(tǒng)響應(yīng)時(shí)間(p110)用戶幫助設(shè)施(p110)出錯(cuò)信息處理(p110)命令交互(p111)2.設(shè)計(jì)過程(p111)原型化設(shè)計(jì)與GUI工具對(duì)GUI設(shè)計(jì)模型的早期評(píng)價(jià)標(biāo)準(zhǔn)系統(tǒng)及其界面的規(guī)格說明書的長度和復(fù)雜程度決定了用戶學(xué)習(xí)使用該系統(tǒng)所付出的代價(jià)。命令或動(dòng)作的數(shù)量、命令的參數(shù)個(gè)數(shù)等對(duì)系統(tǒng)交互時(shí)間和效率的影響。命令或動(dòng)作的數(shù)量、系統(tǒng)狀態(tài)的數(shù)量對(duì)用戶操作的影響(如迷航問題)。界面風(fēng)格、在線幫助、出錯(cuò)處理協(xié)議等決定了用戶是否能夠順利接受你所設(shè)計(jì)的界面。3.人機(jī)界面設(shè)計(jì)指南(p112)四、詳細(xì)設(shè)計(jì)的工具(P114)程序流程圖(Programflowdiagram)N-S圖(Nassi和Shneiderman提出)PAD圖(ProblemAnalysisDiagram)判定表(DecisionTable)過程設(shè)計(jì)語言PDL(ProgramDesignLanguage,alsocalledStructuredEnglishorPseudocode)1.程序流程圖程序流程圖也稱為程序框圖,程序流程圖使用五種基本控制結(jié)構(gòu)是:

示例

程序流程圖的標(biāo)準(zhǔn)符號(hào)循環(huán)的標(biāo)準(zhǔn)符號(hào)注解的使用多出口判斷2.N-S圖N-S圖,即盒圖五種基本控制結(jié)構(gòu)由五種圖形構(gòu)件表示示例N-S圖的嵌套定義形式3.問題分析圖(PAD)

PAD也設(shè)置了五種基本控制結(jié)構(gòu)的圖式,并允許遞歸使用。

PAD描述的示例

對(duì)應(yīng)于增量型循環(huán)結(jié)構(gòu)

for

i:=n1to

n2step

n3do

在PAD中有相應(yīng)的循環(huán)控制結(jié)構(gòu)PAD的擴(kuò)充控制結(jié)構(gòu)4.程序流程的判定表判定表用于表示程序的靜態(tài)邏輯在判定表中的條件部分給出所有的兩分支判斷的列表,動(dòng)作部分給出相應(yīng)的處理要求將程序流程圖中的多分支判斷都改成兩分支判斷

無多分支判斷結(jié)構(gòu)

建立判定表的步驟列出與一個(gè)具體過程(或模塊)有關(guān)的所有處理。列出過程執(zhí)行期間的所有條件(或所有判斷)。將特定條件取值組合與特定的處理相匹配,消去不可能發(fā)生的條件取值組合。將右部每一縱列規(guī)定為一個(gè)處理規(guī)則,即對(duì)于某一條件取值組合將有什么動(dòng)作。

5.PDL(ProgramDesignLanguage)PDL是一種用于描述功能模塊的算法設(shè)計(jì)和加工細(xì)節(jié)的語言。稱為設(shè)計(jì)程序用語言。它是一種偽碼。偽碼的語法規(guī)則分為“外語法”和“內(nèi)語法”。PDL具有嚴(yán)格的關(guān)鍵字外語法,用于定義控制結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu),同時(shí)它的表示實(shí)際操作和條件的內(nèi)語法又是靈活自由的,可使用自然語言的詞匯。示例:拼詞檢查程序PROCEDURE

spellcheck

IS

BEGIN

splitdocumentintosinglewords

loodupwordsindictionary

displaywordswhicharenotindictionary

createanewdictionary

END

spellcheck

PDL的特點(diǎn)提供全部結(jié)構(gòu)化控制結(jié)構(gòu)、數(shù)據(jù)說明和模塊特征。能對(duì)PDL正文進(jìn)行結(jié)構(gòu)分割,使之變得易于理解。為了區(qū)別關(guān)鍵字,規(guī)定關(guān)鍵字一律大寫,其它單詞一律小寫?;蛘咭?guī)定關(guān)鍵字加下劃線,或者規(guī)定它們?yōu)楹隗w字。內(nèi)語法使用自然語言來描述處理特性。內(nèi)語法比較靈活,只要寫清楚就可以,不必考慮語法錯(cuò),以利于人們可把主要精力放在描述算法的邏輯上。有數(shù)據(jù)說明機(jī)制,包括簡(jiǎn)單的(如標(biāo)量和數(shù)組)與復(fù)雜的(如鏈表和層次結(jié)構(gòu))的數(shù)據(jù)結(jié)構(gòu)。有子程序定義與調(diào)用機(jī)制,用以表達(dá)各種方式的接口說明。使用PDL語言,逐步求精:PROCEDUREspellcheckBEGIN

--*splitdocumentintosinglewords

LOOP

getnextword

addwordtowordlistinsortorder

EXITWHEN

allwordsprocessed

ENDLOOP--*lookupwordsindictionary

LOOP

getwordfromwordlist

IF

wordnotindictionary

THEN

--*displaywordsnotindictionary

displayword

promptonuserterminal

IF

userresponsesayswordOK

THEN

addwordtogoodwordlist

ELSE

addwordtobadwordlist

ENDIF

ENDIF

EXITWHEN

allwordsprocessed

ENDLOOP

--*createanewwordsdictionary

dictionary:=

mergedictionaryandgoodwordlistEND

spellcheck五、面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法MJSD方法(MichaelJacksonStructuredDesignmethod),是一種面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法,既可以表達(dá)程序結(jié)構(gòu),也能表達(dá)數(shù)據(jù)結(jié)構(gòu)。Jackson設(shè)計(jì)方法與SD比較面向數(shù)據(jù)結(jié)構(gòu)一般用于詳細(xì)設(shè)計(jì)階段設(shè)計(jì)工具不同Jackson方法與SD比較問題結(jié)構(gòu)(DFD)程序結(jié)構(gòu)(SC)程序的過程性表示(PDL等)概要設(shè)計(jì)

詳細(xì)設(shè)計(jì)

數(shù)據(jù)結(jié)構(gòu)(Jackson圖)程序結(jié)構(gòu)(Jackson圖)程序的過程性表示(Jackson偽代碼)程序分析

程序設(shè)計(jì)

4.Jackson圖與Jackson偽代碼ABCABoCoAB*順序Aseq

BCend A選擇Aselectcond1B

orcond2C

end A重復(fù)Aiter

{while}cond

Bend A有關(guān)Jackson圖的提示Jackson圖既能表示數(shù)據(jù)結(jié)構(gòu),又能表示程序結(jié)構(gòu)。表示數(shù)據(jù)結(jié)構(gòu)時(shí),用于表示數(shù)據(jù)元素彼此間的三種邏輯關(guān)系(順序、選擇和重復(fù))。表示程序結(jié)構(gòu)時(shí),Jackson圖表現(xiàn)的不是調(diào)用關(guān)系,一個(gè)方框中所包括的操作僅僅由它下層方框中的那些操作組成。一個(gè)方框也不能代表一個(gè)模塊。改進(jìn)的Jackson圖(p121)實(shí)例:用Jackson圖表示二維表格職工名冊(cè)姓名類別津貼表示數(shù)據(jù)結(jié)構(gòu)津貼教齡津貼o工齡津貼o名冊(cè)表頭表體行*表名行欄名行姓名類別產(chǎn)生津貼產(chǎn)生教齡津貼o產(chǎn)生工齡津貼o產(chǎn)生名冊(cè)產(chǎn)生表頭產(chǎn)生表體產(chǎn)生行*產(chǎn)生表名行產(chǎn)生欄名行產(chǎn)生姓名產(chǎn)生類別表示程序結(jié)構(gòu)Jackson偽代碼(過程性表示)產(chǎn)生表體

iter

while

小于或等于總?cè)藬?shù) 產(chǎn)生行end

產(chǎn)生表體產(chǎn)生行seq

產(chǎn)生姓名 產(chǎn)生類別 產(chǎn)生津貼end

產(chǎn)生行產(chǎn)生名冊(cè)seq

產(chǎn)生表頭 產(chǎn)生表體end

產(chǎn)生行5.Jackson程序設(shè)計(jì)步驟(P122)分析并確定輸入數(shù)據(jù)和輸出數(shù)據(jù)的邏輯結(jié)構(gòu),并用Jackson圖描繪這些數(shù)據(jù)結(jié)構(gòu)(DS)。找出輸入DS和輸出DS中有對(duì)應(yīng)關(guān)系的數(shù)據(jù)單元。用有關(guān)規(guī)則從描繪數(shù)據(jù)結(jié)構(gòu)的Jackson圖導(dǎo)出描繪程序結(jié)構(gòu)的Jackson圖。列出所有操作和條件(分支條件和循環(huán)結(jié)束條件),并且把它們分配到程序結(jié)構(gòu)圖的適當(dāng)位置。用Jackson偽代碼表示程序。(參見P123實(shí)例)三條映射規(guī)則為每對(duì)有對(duì)應(yīng)關(guān)系的數(shù)據(jù)單元,按照其在數(shù)據(jù)結(jié)構(gòu)圖中的層次在程序結(jié)構(gòu)圖的相應(yīng)層次畫一個(gè)處理框;根據(jù)輸入數(shù)據(jù)結(jié)構(gòu)中剩余的每個(gè)數(shù)據(jù)單元所處的層次在程序結(jié)構(gòu)圖的相應(yīng)層次分別為它們畫上對(duì)應(yīng)的處理框。根據(jù)輸出數(shù)據(jù)結(jié)構(gòu)中剩余的每個(gè)數(shù)據(jù)單元所處的層次在在程序結(jié)構(gòu)圖的相應(yīng)層次分別為它們畫上對(duì)應(yīng)的處理框。一個(gè)簡(jiǎn)單例子一個(gè)正文文件由若干個(gè)記錄組成,每個(gè)記錄是一個(gè)字符串。要求統(tǒng)計(jì)每個(gè)記錄中空格字符的個(gè)數(shù),以及文件中空格字符的總個(gè)數(shù)。要求的輸出數(shù)據(jù)格式是,每復(fù)制一行輸入字符串之后,另起一行印出其空格數(shù)。最后印出整個(gè)文件的空格總數(shù)。Cont.例如,作為輸入數(shù)據(jù)的正文文件為:Howareyou!Testingisaprocessofexecutingaprogramwiththeintentoffindinganerror.那么,輸出結(jié)果為:Howareyou!2Testingisaprocessofexecutingaprogramwiththeintentoffindinganerror.1315①分析并確定輸入數(shù)據(jù)和輸出數(shù)據(jù)的邏輯結(jié)構(gòu),并用Jackson圖描繪這些數(shù)據(jù)結(jié)構(gòu)空格數(shù)輸出表格串信息*表格體空格總數(shù)字符串空格o非空格o正文文件字符串*字符*②找出輸入DS和輸出DS中有對(duì)應(yīng)關(guān)系的數(shù)據(jù)單元。③從描繪DS的Jackson圖導(dǎo)出描繪PS的Jackson圖。首先為每對(duì)有對(duì)應(yīng)關(guān)系的數(shù)據(jù)單元,按照其在DS圖中的層次在PS圖的相應(yīng)層次畫一個(gè)處理框;根據(jù)輸入DS中剩余的每個(gè)數(shù)據(jù)單元所處的層次在PS圖的相應(yīng)層次分別為它們畫上對(duì)應(yīng)的處理框。根據(jù)輸出DS中剩余的每個(gè)數(shù)據(jù)單元所處的層次在PS圖的相應(yīng)層次分別為它們畫上對(duì)應(yīng)的處理框。統(tǒng)計(jì)空格處理字符串*印空格數(shù)程序體印總數(shù)印字符串分析字符串分析字符*處理空格o處理非空格o④列出所有的操作和文件停止打開文件讀入字符串初始化處理字符串*統(tǒng)計(jì)空格印空格數(shù)程序體印總數(shù)印字符串分析字符串分析字符*處理空格o處理非空格o關(guān)閉文件⑤偽碼表示統(tǒng)計(jì)空格seq

打開文件 讀入字符串 初始化totalsum:=0

程序體iteruntil文件結(jié)束 處理字符串seq

……

處理字符串end

程序體end

印總數(shù)seq

關(guān)閉文件 停止統(tǒng)計(jì)空格end基于數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)的問題數(shù)據(jù)合法性檢查和錯(cuò)誤處理順序沖突該方法具有一定的局限性和規(guī)模要求六、程序復(fù)雜度的定量度量T.McCabe方法(環(huán)域復(fù)雜度)Halstead方法M.R.Woodward方法(交叉點(diǎn)復(fù)雜度)Card和Glass(定義了三個(gè)軟件體系結(jié)構(gòu)復(fù)雜度度量:結(jié)構(gòu)復(fù)雜度、數(shù)據(jù)復(fù)雜度和系統(tǒng)復(fù)雜度)OO度量(C&k度量、Lorenz和Kidd度量、面向操作的度量等)McCabe方法的基本概念程序圖——是“退化了的”程序流動(dòng)圖,即把程序流動(dòng)圖中每個(gè)處理符號(hào)都退化成一個(gè)點(diǎn),原來連接不同處理符號(hào)的箭頭變成連接不同點(diǎn)的有向弧。程序圖是一個(gè)有向圖(參見P128圖6.15)。入口點(diǎn)與出口點(diǎn)環(huán)形復(fù)雜度

CyclomaticComplexity——強(qiáng)連通有向圖中線性無關(guān)的有向環(huán)的個(gè)數(shù)。環(huán)域復(fù)雜度的計(jì)算方法對(duì)于強(qiáng)連通的有向圖G,線性無關(guān)的有向環(huán)個(gè)數(shù)V(G)的計(jì)算公式:

V(G)=m-n+pm為弧數(shù)

n為節(jié)點(diǎn)數(shù)

p為不連通部分的數(shù)目,由于程序圖總是連通的,故

p=1。為了使程序圖成為強(qiáng)連通的,須從出口點(diǎn)到入口點(diǎn)添加一條虛弧。74653TT2FX=X/AF1X=X+1入口出口A>1ANDB=0

A=2ORX>1PROCEXPA(A,B,X:REAL); BEGIN IF(A>1ANDB=0) THENX=X/A; IF(A=2ORX>1) THENX=X+

溫馨提示

  • 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)論