第九講詳細(xì)設(shè)計(jì)_第1頁(yè)
第九講詳細(xì)設(shè)計(jì)_第2頁(yè)
第九講詳細(xì)設(shè)計(jì)_第3頁(yè)
第九講詳細(xì)設(shè)計(jì)_第4頁(yè)
第九講詳細(xì)設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩59頁(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)介

1、詳細(xì)設(shè)計(jì)一、詳細(xì)設(shè)計(jì)及其任務(wù)二、結(jié)構(gòu)程序設(shè)計(jì)三、人機(jī)界面設(shè)計(jì)四、詳細(xì)設(shè)計(jì)的工具五、 Jackson程序設(shè)計(jì)方法六、程序復(fù)雜度的定量度量什么是詳細(xì)設(shè)計(jì)?n 從軟件開(kāi)發(fā)的工程化觀點(diǎn)來(lái)看,在使用程序設(shè)計(jì)語(yǔ)言編制程序以前,需要對(duì)所采用算法的邏輯關(guān)系進(jìn)行分析,設(shè)計(jì)出全部必要的過(guò)程細(xì)節(jié),并給予清晰的表達(dá)。這就是過(guò)程設(shè)計(jì)的任務(wù)。n 針對(duì)一個(gè)個(gè)模塊的設(shè)計(jì),是過(guò)程設(shè)計(jì)、算法設(shè)計(jì)。n 詳細(xì)設(shè)計(jì)僅僅是設(shè)計(jì)出程序的“藍(lán)圖”,是編碼的先導(dǎo),但不是編寫(xiě)程序。模塊的屬性:功能、邏輯和狀態(tài)模塊的內(nèi)部特性和外部特性詳細(xì)設(shè)計(jì)的任務(wù)n 每個(gè)模塊內(nèi)的數(shù)據(jù)結(jié)構(gòu)n 每個(gè)模塊的控制算法n 內(nèi)部接口描述n 為每一模塊設(shè)計(jì)出一組測(cè)試用例(te

2、st cases) 。n 評(píng)審定義:結(jié)構(gòu)化程序設(shè)計(jì)是一種設(shè)計(jì)程序的技術(shù),它采用自頂向下逐步求精的設(shè)計(jì)方法和單入口單出口的控制結(jié)構(gòu)。結(jié)構(gòu)化程序設(shè)計(jì)的要點(diǎn)n 自頂向下逐步求精n 采用三種基本結(jié)構(gòu),消除goto語(yǔ)句n 設(shè)計(jì)單入口、單出口的模n1965年E. W. Dijkstra指出GO TO 語(yǔ)句對(duì)程序質(zhì)量的負(fù)面影響,建議取消它。nBohm等證明了任何單入口單出口的程序都可以用“順序”、“選擇”和“循環(huán)”三種控制結(jié)構(gòu)實(shí)現(xiàn)。nMills基于在IBM的實(shí)踐,提出程序應(yīng)該只有一個(gè)入口和一個(gè)出口。nWirth通過(guò)對(duì)抽象層次的論述,對(duì)逐步求精方法進(jìn)行了肯定。n經(jīng)典的結(jié)構(gòu)程序設(shè)計(jì)經(jīng)典的結(jié)構(gòu)程序設(shè)計(jì)Seq; i

3、f-then-else; do-While n擴(kuò)展的結(jié)構(gòu)程序設(shè)計(jì)擴(kuò)展的結(jié)構(gòu)程序設(shè)計(jì)增加do-case; do-untiln修正的結(jié)構(gòu)程序設(shè)計(jì)修正的結(jié)構(gòu)程序設(shè)計(jì)允許leave; breakn符合人類解決復(fù)雜問(wèn)題的規(guī)律。n自頂向下逐步求精,使得相鄰兩次精化之間變化甚小,不難驗(yàn)證前后內(nèi)容是否一致和有效。使得程序具有清晰的結(jié)構(gòu)層次。n不使用GO TO 語(yǔ)句,避免了“病態(tài)連接”,消除“漣漪效應(yīng)”,提高可理解性、可靠性、可測(cè)試性和可維護(hù)性。n清晰的模塊化程序利于重用和復(fù)用。n利于程序的正確性證明和形式化開(kāi)發(fā)。設(shè)計(jì)問(wèn)題系統(tǒng)響應(yīng)時(shí)間用戶幫助設(shè)施出錯(cuò)信息處理命令交互設(shè)計(jì)過(guò)程(p111)人機(jī)界面設(shè)計(jì)指南(p112

4、)n系統(tǒng)響應(yīng)時(shí)間(p110)n用戶幫助設(shè)施(p110)n出錯(cuò)信息處理(p110)n命令交互(p111)n原型化設(shè)計(jì)與GUI工具n對(duì)GUI 設(shè)計(jì)模型的早期評(píng)價(jià)標(biāo)準(zhǔn)v 系統(tǒng)及其界面的規(guī)格說(shuō)明書(shū)的長(zhǎng)度和復(fù)雜程度決定了用戶學(xué)習(xí)使用該系統(tǒng)所付出的代價(jià)。v 命令或動(dòng)作的數(shù)量、命令的參數(shù)個(gè)數(shù)等對(duì)系統(tǒng)交互時(shí)間和效率的影響。v 命令或動(dòng)作的數(shù)量、系統(tǒng)狀態(tài)的數(shù)量對(duì)用戶操作的影響(如迷航問(wèn)題)。1) 界面風(fēng)格、在線幫助、出錯(cuò)處理協(xié)議等決定了用戶是否能夠順利接受你所設(shè)計(jì)的界面。程序流程圖(Program flow diagram)N-S圖(Nassi和Shneiderman提出)PAD圖(Problem Analys

5、is Diagram)判定表(Decision Table)過(guò)程設(shè)計(jì)語(yǔ)言PDL(Program Design Language, also called or )n程序流程圖也稱為程序框圖,程序流程圖使用五種基本控制結(jié)構(gòu)是: nN-SN-S圖,即盒圖n五種基本控制結(jié)構(gòu)由五種圖形構(gòu)件表示nPAD也設(shè)置了五種基本控制結(jié)構(gòu)的圖式,并允許遞歸使用。對(duì)應(yīng)于增量型循環(huán)結(jié)構(gòu)for i := n1 to n2 step n3 do在PAD中有相應(yīng)的循環(huán)控制結(jié)構(gòu)n判定表用于表示程序的靜態(tài)邏輯n在判定表中的條件部分給出所有的兩分支判斷的列表,動(dòng)作部分給出相應(yīng)的處理n要求將程序流程圖中的多分支判斷都改成兩分支判斷n

6、列出與一個(gè)具體過(guò)程(或模塊)有關(guān)的所有處理。n列出過(guò)程執(zhí)行期間的所有條件(或所有判斷)。n將特定條件取值組合與特定的處理相匹配,消去不可能發(fā)生的條件取值組合。n將右部每一縱列規(guī)定為一個(gè)處理規(guī)則,即對(duì)于某一條件取值組合將有什么動(dòng)作。nPDL是一種用于描述功能模塊的算法設(shè)計(jì)和加工細(xì)節(jié)的語(yǔ)言。稱為設(shè)計(jì)程序用語(yǔ)言。它是一種偽碼。n偽碼的語(yǔ)法規(guī)則分為“外語(yǔ)法”和“內(nèi)語(yǔ)法”。nPDL具有嚴(yán)格的關(guān)鍵字外語(yǔ)法,用于定義控制結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu),同時(shí)它的表示實(shí)際操作和條件的內(nèi)語(yǔ)法又是靈活自由的,可使用自然語(yǔ)言的詞匯。PROCEDURE spellcheck IS BEGIN split document into s

7、ingle words lood up words in dictionary display words which are not in dictionary create a new dictionary END spellcheckn提供全部結(jié)構(gòu)化控制結(jié)構(gòu)、數(shù)據(jù)說(shuō)明和模塊特征。能對(duì)PDL正文進(jìn)行結(jié)構(gòu)分割,使之變得易于理解。n為了區(qū)別關(guān)鍵字,規(guī)定關(guān)鍵字一律大寫(xiě),其它單詞一律小寫(xiě)。或者規(guī)定關(guān)鍵字加下劃線,或者規(guī)定它們?yōu)楹隗w字。n內(nèi)語(yǔ)法使用自然語(yǔ)言來(lái)描述處理特性。內(nèi)語(yǔ)法比較靈活,只要寫(xiě)清楚就可以,不必考慮語(yǔ)法錯(cuò),以利于人們可把主要精力放在描述算法的邏輯上。n有數(shù)據(jù)說(shuō)明機(jī)制,包括簡(jiǎn)單的(如標(biāo)量

8、和數(shù)組)與復(fù)雜的(如鏈表和層次結(jié)構(gòu))的數(shù)據(jù)結(jié)構(gòu)。n有子程序定義與調(diào)用機(jī)制,用以表達(dá)各種方式的接口說(shuō)明。PROCEDURE spellcheckBEGIN-* split document into single wordsLOOP get next word add word to word list in sortorder EXIT WHEN all words processedEND LOOP -* look up words in dictionaryLOOP get word from word list IF word not in dictionary THEN -* disp

9、lay words not in dictionary display word prompt on user terminal IF user response says word OK THEN add word to good word list ELSE add word to bad word list ENDIF ENDIF EXIT WHEN all words processedEND LOOP -* create a new words dictionary dictionary :merge dictionary and good word listEND spellche

10、ck面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法MJSD方法(Michael Jackson Structured Design method),是一種面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法,既可以表達(dá)程序結(jié)構(gòu),也能表達(dá)數(shù)據(jù)結(jié)構(gòu)。Jackson設(shè)計(jì)方法與SD比較v 面向數(shù)據(jù)結(jié)構(gòu)v 一般用于詳細(xì)設(shè)計(jì)階段v 設(shè)計(jì)工具不同問(wèn)題結(jié)構(gòu)(DFD)程序結(jié)構(gòu)(SC)程序的過(guò)程性表示(PDL等)概要設(shè)計(jì) 詳細(xì)設(shè)計(jì) 數(shù)據(jù)結(jié)構(gòu)(Jackson圖)程序結(jié)構(gòu)( Jackson圖 )程序的過(guò)程性表示( Jackson 偽代碼)程序分析 程序設(shè)計(jì) ABCABoCoAB*順序A seq B Cend A 選擇A select cond1 B or cond2 C

11、 end A 重復(fù)A iter whilecond Bend A 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)職工名冊(cè)姓名類別津貼津貼教齡津貼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)生類別產(chǎn)生表體 iter while 小于或等于總?cè)藬?shù)產(chǎn)生

12、行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)生行n分析并確定輸入數(shù)據(jù)和輸出數(shù)據(jù)的邏輯結(jié)構(gòu),并用Jackson圖描繪這些數(shù)據(jù)結(jié)構(gòu)(DS)。n找出輸入DS和輸出DS中有對(duì)應(yīng)關(guān)系的數(shù)據(jù)單元。n用有關(guān)規(guī)則從描繪數(shù)據(jù)結(jié)構(gòu)的Jackson圖導(dǎo)出描繪程序結(jié)構(gòu)的Jackson 圖。n列出所有操作和條件(分支條件和循環(huán)結(jié)束條件),并且把它們分配到程序結(jié)構(gòu)圖的適當(dāng)位置。n用Jackson偽代碼表示程序。(參見(jiàn)P123實(shí)例)n為每對(duì)有對(duì)應(yīng)關(guān)系的數(shù)據(jù)單元,按照其在數(shù)據(jù)結(jié)構(gòu)圖中的層次在程序結(jié)構(gòu)圖的相應(yīng)層次畫(huà)一個(gè)處理框;n根據(jù)輸入數(shù)據(jù)結(jié)構(gòu)中剩余的每個(gè)

13、數(shù)據(jù)單元所處的層次在程序結(jié)構(gòu)圖的相應(yīng)層次分別為它們畫(huà)上對(duì)應(yīng)的處理框。n根據(jù)輸出數(shù)據(jù)結(jié)構(gòu)中剩余的每個(gè)數(shù)據(jù)單元所處的層次在在程序結(jié)構(gòu)圖的相應(yīng)層次分別為它們畫(huà)上對(duì)應(yīng)的處理框。n一個(gè)正文文件由若干個(gè)記錄組成,每個(gè)記錄是一個(gè)字符串。n要求統(tǒng)計(jì)每個(gè)記錄中空格字符的個(gè)數(shù),以及文件中空格字符的總個(gè)數(shù)。n要求的輸出數(shù)據(jù)格式是,每復(fù)制一行輸入字符串之后,另起一行印出其空格數(shù)。最后印出整個(gè)文件的空格總數(shù)。例如,作為輸入數(shù)據(jù)的正文文件為:How are you!Testing is a process of executing a program with the intent of finding an error

14、.那么,輸出結(jié)果為:How are you!2Testing is a process of executing a program with the intent of finding an error.1315空格數(shù)輸出表格串信息*表格體空格總數(shù)字符串空格o非空格o正文文件字符串*字符*統(tǒng)計(jì)空格處理字符串*印空格數(shù)程序體印總數(shù)印字符串分析字符串分析字符*處理空格o處理非空格o停止打開(kāi)文件讀入字符串初始化處理字符串*統(tǒng)計(jì)空格印空格數(shù)程序體印總數(shù)印字符串分析字符串分析字符*處理空格o處理非空格o關(guān)閉文件統(tǒng)計(jì)空格 seq 打開(kāi)文件讀入字符串初始化 totalsum:=0程序體iter until

15、 文件結(jié)束處理字符串seq 處理字符串end程序體end 印總數(shù)seq關(guān)閉文件停止統(tǒng)計(jì)空格 endn數(shù)據(jù)合法性檢查和錯(cuò)誤處理n順序沖突n該方法具有一定的局限性和規(guī)模要求nT. McCabe 方法(環(huán)域復(fù)雜度)nHalstead 方法nM. R. Woodward方法(交叉點(diǎn)復(fù)雜度)nCard和Glass(定義了三個(gè)軟件體系結(jié)構(gòu)復(fù)雜度度量:結(jié)構(gòu)復(fù)雜度、數(shù)據(jù)復(fù)雜度和系統(tǒng)復(fù)雜度)nOO度量(C&k度量、Lorenz和Kidd度量、面向操作的度量等)n程序圖是“退化了的”程序流動(dòng)圖,即把程序流動(dòng)圖中每個(gè)處理符號(hào)都退化成一個(gè)點(diǎn),原來(lái)連接不同處理符號(hào)的箭頭變成連接不同點(diǎn)的有向弧。n程序圖是一個(gè)有向

16、圖(參見(jiàn)P128圖6.15)。n入口點(diǎn)與出口點(diǎn)n環(huán)形復(fù)雜度 Cyclomatic Complexity強(qiáng)連通有向圖中線性無(wú)關(guān)的有向環(huán)的個(gè)數(shù)。n對(duì)于強(qiáng)連通的有向圖G,線性無(wú)關(guān)的有向環(huán)個(gè)數(shù)V(G)的計(jì)算公式: V(G) = m - n + p n m 為弧數(shù)n n 為節(jié)點(diǎn)數(shù)n p 為不連通部分的數(shù)目,由于程序圖總是連通的,故 p = 1。n為了使程序圖成為強(qiáng)連通的,須從出口點(diǎn)到入口點(diǎn)添加一條虛弧。74653TT2FX=X/AF1X=X + 1入口出口A1 AND B=0 A=2 OR X1PROC EXPA(A,B,X:REAL); BEGIN IF (A1 AND B=0 ) THEN X=X/A; IF (A=2 OR X1) THEN X=X + 1; END;V(G)=3nV(G)判定結(jié)點(diǎn)數(shù)1nV(G)環(huán)域數(shù)nV(G)m-n+p計(jì)算它的環(huán)形復(fù)雜度計(jì)算它的環(huán)形復(fù)雜度V(G)= 判定數(shù)+1 = 3+1 = 4234576891R1R2R3R4V(G)= 環(huán)域數(shù) = 4V(G)= m n + p = 12 9 + 1nV(G)取決于程序控制流的復(fù)雜度,代表了程序結(jié)構(gòu)的復(fù)雜度。程序內(nèi)分支或循環(huán)數(shù)越大,環(huán)域復(fù)雜度越高。n環(huán)域復(fù)雜度是可加的。n基于環(huán)域復(fù)雜度的度量結(jié)果,可以對(duì)測(cè)試難度和軟件可靠性進(jìn)行預(yù)測(cè)。n 大量實(shí)驗(yàn)表明,V(G) 10 為宜。n多行順序執(zhí)行的語(yǔ)句和一行的復(fù)雜性一樣。

溫馨提示

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