版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第九講詳細(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ì)語言編制程序以前,需要對所采用算法的邏輯關(guān)系進(jìn)行分析,設(shè)計(jì)出全部必要的過程細(xì)節(jié),并給予清晰的表達(dá)。這就是過程設(shè)計(jì)的任務(wù)。針對一個(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ì)出一組測試用例(testcases)。評審二、結(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語句對程序質(zhì)量的負(fù)面影響,建議取消它。Bohm等證明了任何單入口單出口的程序都可以用“順序”、“選擇”和“循環(huán)”三種控制結(jié)構(gòu)實(shí)現(xiàn)。Mills基于在IBM的實(shí)踐,提出程序應(yīng)該只有一個(gè)入口和一個(gè)出口。Wirth通過對抽象層次的論述,對逐步求精方法進(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)”,提高可理解性、可靠性、可測試性和可維護(hù)性。清晰的模塊化程序利于重用和復(fù)用。利于程序的正確性證明和形式化開發(fā)。三、人機(jī)界面設(shè)計(jì)設(shè)計(jì)問題系統(tǒng)響應(yīng)時(shí)間用戶幫助設(shè)施出錯信息處理命令交互設(shè)計(jì)過程(p111)人機(jī)界面設(shè)計(jì)指南(p112)1.設(shè)計(jì)問題系統(tǒng)響應(yīng)時(shí)間(p110)用戶幫助設(shè)施(p110)出錯信息處理(p110)命令交互(p111)2.設(shè)計(jì)過程(p111)原型化設(shè)計(jì)與GUI工具對GUI設(shè)計(jì)模型的早期評價(jià)標(biāo)準(zhǔn)系統(tǒng)及其界面的規(guī)格說明書的長度和復(fù)雜程度決定了用戶學(xué)習(xí)使用該系統(tǒng)所付出的代價(jià)。命令或動作的數(shù)量、命令的參數(shù)個(gè)數(shù)等對系統(tǒng)交互時(shí)間和效率的影響。命令或動作的數(shù)量、系統(tǒng)狀態(tài)的數(shù)量對用戶操作的影響(如迷航問題)。界面風(fēng)格、在線幫助、出錯處理協(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)符號循環(huán)的標(biāo)準(zhǔn)符號注解的使用多出口判斷2.N-S圖N-S圖,即盒圖五種基本控制結(jié)構(gòu)由五種圖形構(gòu)件表示示例N-S圖的嵌套定義形式3.問題分析圖(PAD)
PAD也設(shè)置了五種基本控制結(jié)構(gòu)的圖式,并允許遞歸使用。
PAD描述的示例
對應(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)邏輯在判定表中的條件部分給出所有的兩分支判斷的列表,動作部分給出相應(yīng)的處理要求將程序流程圖中的多分支判斷都改成兩分支判斷
無多分支判斷結(jié)構(gòu)
建立判定表的步驟列出與一個(gè)具體過程(或模塊)有關(guān)的所有處理。列出過程執(zhí)行期間的所有條件(或所有判斷)。將特定條件取值組合與特定的處理相匹配,消去不可能發(fā)生的條件取值組合。將右部每一縱列規(guī)定為一個(gè)處理規(guī)則,即對于某一條件取值組合將有什么動作。
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ù)說明和模塊特征。能對PDL正文進(jìn)行結(jié)構(gòu)分割,使之變得易于理解。為了區(qū)別關(guān)鍵字,規(guī)定關(guān)鍵字一律大寫,其它單詞一律小寫。或者規(guī)定關(guān)鍵字加下劃線,或者規(guī)定它們?yōu)楹隗w字。內(nèi)語法使用自然語言來描述處理特性。內(nèi)語法比較靈活,只要寫清楚就可以,不必考慮語法錯,以利于人們可把主要精力放在描述算法的邏輯上。有數(shù)據(jù)說明機(jī)制,包括簡單的(如標(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圖表示二維表格職工名冊姓名類別津貼表示數(shù)據(jù)結(jié)構(gòu)津貼教齡津貼o工齡津貼o名冊表頭表體行*表名行欄名行姓名類別產(chǎn)生津貼產(chǎn)生教齡津貼o產(chǎn)生工齡津貼o產(chǎn)生名冊產(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)生名冊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中有對應(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ī)則為每對有對應(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)層次分別為它們畫上對應(yīng)的處理框。根據(jù)輸出數(shù)據(jù)結(jié)構(gòu)中剩余的每個(gè)數(shù)據(jù)單元所處的層次在在程序結(jié)構(gòu)圖的相應(yīng)層次分別為它們畫上對應(yīng)的處理框。一個(gè)簡單例子一個(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中有對應(yīng)關(guān)系的數(shù)據(jù)單元。③從描繪DS的Jackson圖導(dǎo)出描繪PS的Jackson圖。首先為每對有對應(yīng)關(guān)系的數(shù)據(jù)單元,按照其在DS圖中的層次在PS圖的相應(yīng)層次畫一個(gè)處理框;根據(jù)輸入DS中剩余的每個(gè)數(shù)據(jù)單元所處的層次在PS圖的相應(yīng)層次分別為它們畫上對應(yīng)的處理框。根據(jù)輸出DS中剩余的每個(gè)數(shù)據(jù)單元所處的層次在PS圖的相應(yīng)層次分別為它們畫上對應(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ù)合法性檢查和錯誤處理順序沖突該方法具有一定的局限性和規(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方法的基本概念程序圖——是“退化了的”程序流動圖,即把程序流動圖中每個(gè)處理符號都退化成一個(gè)點(diǎn),原來連接不同處理符號的箭頭變成連接不同點(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ì)算方法對于強(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等.壓縮文件請下載最新的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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 錫劇觀影報(bào)告范文
- 成人高考語文復(fù)習(xí) 歷年真題及答案分析
- 2025年楚雄貨運(yùn)上崗證考試題答案
- 提高急診醫(yī)生技術(shù)水平的培訓(xùn)途徑
- 2025年北京貨運(yùn)從業(yè)資格證模擬考試0題答案
- 2025年貨運(yùn)從業(yè)資格證哪里考
- 【大學(xué)課件】 安全保衛(wèi)工作概述
- 2025DV機(jī)租賃合同范本
- 手術(shù)室院感預(yù)防
- 2025保潔服務(wù)承包合同樣書
- 2024年人教版初二語文上冊期末考試卷(附答案)
- 2024年病理醫(yī)師三基考試試題
- 文物普查合同
- 校園食品安全知識競賽考試題庫(200多題)
- 抖音火花合同電子版獲取教程
- DZ∕T 0323-2018 硅灰石、透輝石、透閃石、長石礦產(chǎn)地質(zhì)勘查規(guī)范(附修改單)(正式版)
- 電影賞析綠皮書課件(內(nèi)容詳細(xì))
- GB/T 43969-2024智能語音控制器通用安全技術(shù)要求
- 在線網(wǎng)課知慧《大學(xué)生極簡經(jīng)濟(jì)學(xué)(山石化)》單元測試考核答案
- 中藥房整改計(jì)劃方案
- 2024年-新生兒復(fù)蘇參考課件
評論
0/150
提交評論