版權(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ì)1第六章內(nèi)容概要詳細(xì)設(shè)計(jì)概要結(jié)構(gòu)程序設(shè)計(jì)人機(jī)界面設(shè)計(jì)過(guò)程設(shè)計(jì)技術(shù)和工具面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法程序復(fù)雜程度的定量度量 2詳細(xì)設(shè)計(jì)階段的根本目標(biāo)是確定應(yīng)該怎樣具體地實(shí)現(xiàn)所要求的系統(tǒng)。詳細(xì)設(shè)計(jì)的目標(biāo)不僅僅是邏輯上正確地實(shí)現(xiàn)每個(gè)模塊的功能,更重要的是設(shè)計(jì)出的處理過(guò)程應(yīng)該盡可能的簡(jiǎn)明易懂。結(jié)構(gòu)程序設(shè)計(jì)是實(shí)現(xiàn)上述目標(biāo)的關(guān)鍵技術(shù),是詳細(xì)設(shè)計(jì)的邏輯基礎(chǔ)。詳細(xì)設(shè)計(jì)概要3第六章內(nèi)容概要詳細(xì)設(shè)計(jì)概要結(jié)構(gòu)程序設(shè)計(jì)人機(jī)界面設(shè)計(jì)過(guò)程設(shè)計(jì)技術(shù)和工具面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法程序復(fù)雜程度的定量度量 4結(jié)構(gòu)程序設(shè)計(jì)的概念最早由E.W.Dijkstra在1965年提出,他指出:“可以從高級(jí)語(yǔ)言中取消GOTO語(yǔ)句”,“程
2、序的質(zhì)量與程序中所包含的GOTO語(yǔ)句的數(shù)量成反比”。1966年Bohm和Jacopini證明了,只用3種基本的控制結(jié)構(gòu)就能實(shí)現(xiàn)任何單入口單出口的程序。這3種基本的控制結(jié)構(gòu)是“順序”、“選擇”和“循環(huán)”。1968年Dijkstra再次建議,1971年IBM成功地應(yīng)用結(jié)構(gòu)程序設(shè)計(jì)在紐約時(shí)報(bào)信息庫(kù)管理系統(tǒng)和美國(guó)宇航局飛行模擬實(shí)驗(yàn)中結(jié)構(gòu)程序設(shè)計(jì)5結(jié)構(gòu)程序設(shè)計(jì)結(jié)構(gòu)程序設(shè)計(jì)的經(jīng)典定義如下所述:“如果一個(gè)程序的代碼塊僅僅通過(guò)順序、選擇和循環(huán)這3種基本控制結(jié)構(gòu)進(jìn)行連接,并且每個(gè)代碼塊只有一個(gè)入口和一個(gè)出口,則稱這個(gè)程序是結(jié)構(gòu)化的。” 對(duì)經(jīng)典定義的擴(kuò)充“結(jié)構(gòu)程序設(shè)計(jì)是盡可能少用GOTO語(yǔ)句的程序設(shè)計(jì)方法。最好僅
3、在檢測(cè)出錯(cuò)誤時(shí)才使用GOTO語(yǔ)句,而且應(yīng)該總是使用前向GOTO語(yǔ)句?!?6結(jié)構(gòu)程序設(shè)計(jì)經(jīng)典的結(jié)構(gòu)程序設(shè)計(jì):如果只允許使用順序、IF-THEN-ELSE型分支和DO-WHILE型循環(huán)這3種基本控制結(jié)構(gòu)實(shí)現(xiàn)單入口單出口的程序擴(kuò)展的結(jié)構(gòu)程序設(shè)計(jì):如果除了上述3種基本控制結(jié)構(gòu)之外,還允許使用DO-CASE型多分支結(jié)構(gòu)和DO-UNTIL型循環(huán)結(jié)構(gòu)修正的結(jié)構(gòu)程序設(shè)計(jì):如果再加上允許使用LEAVE(或BREAK)結(jié)構(gòu)7結(jié)構(gòu)程序設(shè)計(jì)8結(jié)構(gòu)程序設(shè)計(jì)9第六章內(nèi)容概要詳細(xì)設(shè)計(jì)概要結(jié)構(gòu)程序設(shè)計(jì)人機(jī)界面設(shè)計(jì)過(guò)程設(shè)計(jì)技術(shù)和工具面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法程序復(fù)雜程度的定量度量 10系統(tǒng)響應(yīng)時(shí)間用戶幫助設(shè)施出錯(cuò)信息處理命令交互設(shè)
4、計(jì)問(wèn)題11系統(tǒng)響應(yīng)時(shí)間:指從用戶完成某個(gè)控制動(dòng)作(例如,按回車鍵或點(diǎn)擊鼠標(biāo)),到軟件給出預(yù)期的響應(yīng)(輸出信息或做動(dòng)作)之間的這段時(shí)間兩個(gè)屬性長(zhǎng)度易變性系統(tǒng)響應(yīng)時(shí)間12幫助設(shè)施分為集成的和附加的兩類具體設(shè)計(jì)幫助設(shè)施時(shí),必須解決的問(wèn)題在用戶與系統(tǒng)交互期間,是否在任何時(shí)候都能獲得關(guān)于系統(tǒng)任何功能的幫助信息?(提供部分功能的幫助信息和提供全部功能的幫助信息)用戶怎樣請(qǐng)求幫助?(幫助菜單、特殊功能鍵和HELP命令)怎樣顯示幫助信息?(在獨(dú)立的窗口中、指出參考某個(gè)文檔和在屏幕固定位置顯示簡(jiǎn)短提示)用戶怎樣返回到正常的交互方式中?(屏幕上的返回按鈕和功能鍵)怎樣組織幫助信息?(平面結(jié)構(gòu),信息的層次結(jié)構(gòu)和超文
5、本結(jié)構(gòu))用戶幫助設(shè)施13交互式系統(tǒng)給出的出錯(cuò)信息或警告信息,應(yīng)具備的屬性:信息應(yīng)該用用戶可以理解的術(shù)語(yǔ)描述問(wèn)題。信息應(yīng)該提供有助于從錯(cuò)誤中恢復(fù)的建設(shè)性意見(jiàn)。信息應(yīng)該指出錯(cuò)誤可能導(dǎo)致哪些負(fù)面后果信息應(yīng)該伴隨著聽覺(jué)上或視覺(jué)上的提示 信息不能帶有指責(zé)色彩出錯(cuò)信息處理14在提供命令交互方式時(shí),必須考慮的設(shè)計(jì)問(wèn)題:是否每個(gè)菜單選項(xiàng)都有對(duì)應(yīng)的命令采用何種命令形式(控制序列(例如,Ctrl+P),功能鍵和鍵入命令)學(xué)習(xí)和記憶命令的難度有多大用戶是否可以定制或縮寫命令命令交互15設(shè)計(jì)過(guò)程創(chuàng)建界面原型n設(shè)計(jì)者研究用戶評(píng)審意見(jiàn)創(chuàng)建界面原型1初步設(shè)計(jì)用戶評(píng)審界面修改設(shè)計(jì)界面設(shè)計(jì)完畢16人機(jī)界面設(shè)計(jì)指南一般交互指南保
6、持一致性提供有意義的反饋在執(zhí)行有較大破壞性的動(dòng)作之前要求用戶確認(rèn)允許取消絕大多數(shù)操作減少在兩次操作之間必須記憶的信息量提高對(duì)話、移動(dòng)和思考的效率允許犯錯(cuò)誤按功能對(duì)動(dòng)作分類,并據(jù)此設(shè)計(jì)屏幕布局提供對(duì)用戶工作內(nèi)容敏感的幫助設(shè)施用簡(jiǎn)單動(dòng)詞或動(dòng)詞短語(yǔ)作為命令名17人機(jī)界面設(shè)計(jì)指南信息顯示指南只顯示與當(dāng)前工作內(nèi)容有關(guān)的信息不要用數(shù)據(jù)淹沒(méi)用戶使用一致的標(biāo)記、標(biāo)準(zhǔn)的縮寫和可預(yù)知的顏色允許用戶保持可視化的語(yǔ)境產(chǎn)生有意義的出錯(cuò)信息使用大小寫、縮進(jìn)和文本分組以幫助理解使用窗口分隔不同類型的信息使用“模擬”顯示方式表示信息高效率地使用顯示屏18人機(jī)界面設(shè)計(jì)指南數(shù)據(jù)輸入指南盡量減少用戶的輸入動(dòng)作保持信息顯示和數(shù)據(jù)輸入
7、之間的一致性允許用戶自定義輸入交互應(yīng)該是靈活的,并且可調(diào)整成用戶最喜歡的輸入方式使在當(dāng)前動(dòng)作語(yǔ)境中不適用的命令不起作用讓用戶控制交互流對(duì)所有輸入動(dòng)作都提供幫助消除冗余的輸入19第六章內(nèi)容概要詳細(xì)設(shè)計(jì)概要結(jié)構(gòu)程序設(shè)計(jì)人機(jī)界面設(shè)計(jì)過(guò)程設(shè)計(jì)技術(shù)和工具面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法程序復(fù)雜程度的定量度量 20過(guò)程設(shè)計(jì)技術(shù)和工具表達(dá)過(guò)程規(guī)格說(shuō)明的工具叫做詳細(xì)設(shè)計(jì)工具:圖形工具表格工具語(yǔ)言工具21過(guò)程設(shè)計(jì)技術(shù)和工具程序流程圖(Program Flow Chart)程序流程圖本質(zhì)上不是逐步求精的好工具,它誘使程序員過(guò)早地考慮程序的控制流程,而不去考慮程序的全局結(jié)構(gòu)。程序流程圖中用箭頭代表控制流,因此程序員不受任何約
8、束,可以完全不顧結(jié)構(gòu)程序設(shè)計(jì)的精神,隨意轉(zhuǎn)移控制。程序流程圖不易表示數(shù)據(jù)結(jié)構(gòu)。 22過(guò)程設(shè)計(jì)技術(shù)和工具必須限制程序流程圖只能使用五種基本的控制結(jié)構(gòu)需要對(duì)流程圖所用的符號(hào)做出確切的規(guī)定2324過(guò)程設(shè)計(jì)技術(shù)和工具盒圖(Box-Diagram)(N-S圖) Nassi和Shneiderman提出第一個(gè)任務(wù)第二個(gè)任務(wù)第三個(gè)任務(wù)(a)TF條件ELSE部分THEN部分(b)CASE條件值2值nCASE 2部分CASE n部分值1CASE 1 部分(c)循環(huán)條件DO_WHILE部分循環(huán)條件DO_UNTIL部分(d)A(e)25示例26N-S圖的嵌套定義形式27過(guò)程設(shè)計(jì)技術(shù)和工具盒圖有下述特點(diǎn):功能域(即某個(gè)
9、特定控制結(jié)構(gòu)的作用域)明確,可以從盒圖上一眼就看出來(lái)。不可能任意轉(zhuǎn)移控制。很容易確定局部和全程數(shù)據(jù)的作用域。很容易表現(xiàn)嵌套關(guān)系,也可以表示模塊的層次結(jié)構(gòu)。 28過(guò)程設(shè)計(jì)技術(shù)和工具PAD(Problem Analysis Diagram)圖:1973年由日本日立公司發(fā)明用二維樹形結(jié)構(gòu)的圖來(lái)表示程序的控制流, 設(shè)置了五種基本控制結(jié)構(gòu)的圖式,并允許遞歸使用。29PAD描述的示例30PAD的擴(kuò)充控制結(jié)構(gòu)31PAD圖的主要優(yōu)點(diǎn):使用表示結(jié)構(gòu)化控制結(jié)構(gòu)的PAD符號(hào)所設(shè)計(jì)出來(lái)的程序必然是結(jié)構(gòu)化程序PAD圖所描繪的程序結(jié)構(gòu)十分清晰用PAD圖表現(xiàn)程序邏輯,易讀、易懂、易記容易將PAD圖轉(zhuǎn)換成高級(jí)語(yǔ)言源程序,這種
10、轉(zhuǎn)換可用軟件工具自動(dòng)完成即可用于表示程序邏輯,也可用于描繪數(shù)據(jù)結(jié)構(gòu)PAD圖的符號(hào)支持自頂向下、逐步求精方法的使用過(guò)程設(shè)計(jì)技術(shù)和工具32課堂練習(xí)畫出下列程序流程圖對(duì)應(yīng)的PAD圖BeginABQPEndNYNY33ABwhile PBQAT34過(guò)程設(shè)計(jì)技術(shù)和工具判定表當(dāng)算法中包含多重嵌套的條件選擇時(shí),使用判定表能夠清晰地表示復(fù)雜的條件組合與應(yīng)做的動(dòng)作之間的對(duì)應(yīng)關(guān)系。 判定表用于表示程序的靜態(tài)邏輯。在判定表中的條件部分給出所有的兩分支判斷的列表,動(dòng)作部分給出相應(yīng)的處理。要求將程序流程圖中的多分支判斷都改成兩分支判斷。35無(wú)多分支判斷結(jié)構(gòu)3637過(guò)程設(shè)計(jì)技術(shù)和工具判定表優(yōu)點(diǎn):能夠簡(jiǎn)潔、無(wú)二義性地描述所
11、有的處理規(guī)則。缺點(diǎn):判定表表示的是靜態(tài)邏輯,是在某種條件取值組合情況下可能的結(jié)果,它不能表達(dá)加工的順序,也不能表達(dá)循環(huán)結(jié)構(gòu),因此判定表不能成為一種通用的設(shè)計(jì)工具。 38以行李托運(yùn)費(fèi)的算法為例說(shuō)明判定表的組織方法。假設(shè)某航空公司規(guī)定,乘客可以免費(fèi)托運(yùn)重量不超過(guò)30kg的行李。當(dāng)行李重量超過(guò)30kg時(shí),對(duì)頭等艙的國(guó)內(nèi)乘客超重部分每公斤收費(fèi)4元,對(duì)其他艙的國(guó)內(nèi)乘客超重部分每公斤收費(fèi)6元,對(duì)外國(guó)乘客超重部分每公斤收費(fèi)比國(guó)內(nèi)乘客多一倍,對(duì)殘疾乘客超重部分每公斤收費(fèi)比正常乘客少一半。過(guò)程設(shè)計(jì)技術(shù)和工具39123456789國(guó)內(nèi)乘客TTTTFFFF頭等艙TFTFTFTF殘疾乘客FFTTFFTT行李重量W30
12、kgTFFFFFFFF免費(fèi)(W-30) 2(W-30) 3(W-30) 4(W-30) 6(W-30) 8(W-30) 1240過(guò)程設(shè)計(jì)技術(shù)和工具判定樹判定樹是判定表的變種。優(yōu)點(diǎn):形式簡(jiǎn)單,比判定表更直觀缺點(diǎn):簡(jiǎn)潔性不如判定表畫判定樹時(shí)分枝的次序可能對(duì)最終畫出的判定樹的簡(jiǎn)潔程度有較大影響 4142過(guò)程設(shè)計(jì)技術(shù)和工具過(guò)程設(shè)計(jì)語(yǔ)言(PDL)是用正文形式表示數(shù)據(jù)和處理過(guò)程的設(shè)計(jì)工具,也被稱為偽代碼。PDL具有嚴(yán)格的關(guān)鍵字外部語(yǔ)法,用于定義控制結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu);另一方面,PDL表示實(shí)際操作和條件的內(nèi)部語(yǔ)法通常又是靈活自由的,可以適應(yīng)各種工程項(xiàng)目的需要。43過(guò)程設(shè)計(jì)技術(shù)和工具PROCEDURE spell
13、check IS 查找錯(cuò)拼的單詞 BEGIN split document into single words 把整個(gè)文檔分離成單詞 look up words in dictionary 在字典中查這些單詞 display words which are not in dictionary 顯示字典中查不到的單詞 create a new dictionary 造一新字典 END spellcheck示例: 拼寫檢查程序44過(guò)程設(shè)計(jì)技術(shù)和工具PDL作為一種設(shè)計(jì)工具有如下一些優(yōu)點(diǎn):可以作為注釋直接插在源程序中間。這樣做能促使維護(hù)人員在修改程序代碼的同時(shí)也相應(yīng)地修改PDL注釋,因此有助于保持文檔
14、和程序的一致性,提高了文檔的質(zhì)量可以使用普通的正文編輯程序或文字處理系統(tǒng),很方便地完成PDL的書寫和編輯工作。已經(jīng)有自動(dòng)處理程序存在,而且可以自動(dòng)由PDL生成程序代碼。 PDL的缺點(diǎn)是不如圖形工具形象直觀,描述復(fù)雜的條件組合與動(dòng)作間的對(duì)應(yīng)關(guān)系時(shí),不如判定表清晰簡(jiǎn)單。 45第六章內(nèi)容概要詳細(xì)設(shè)計(jì)概要結(jié)構(gòu)程序設(shè)計(jì)人機(jī)界面設(shè)計(jì)過(guò)程設(shè)計(jì)技術(shù)和工具面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法程序復(fù)雜程度的定量度量 46Jacson 圖順序結(jié)構(gòu)數(shù)據(jù)由一個(gè)或多個(gè)數(shù)據(jù)元素組成,每個(gè)元素按確定次序出現(xiàn)一次。47Jacson 圖選擇結(jié)構(gòu)數(shù)據(jù)包含兩個(gè)或多個(gè)數(shù)據(jù)元素,每次使用這個(gè)數(shù)據(jù)時(shí)按一定條件從這些數(shù)據(jù)元素中選擇一個(gè)。48Jacson
15、圖重復(fù)結(jié)構(gòu)重復(fù)結(jié)構(gòu)的數(shù)據(jù),根據(jù)使用時(shí)的條件由一個(gè)數(shù)據(jù)元素出現(xiàn)零次或多次構(gòu)成。49改進(jìn)的Jacson 圖。50分析并確定輸入數(shù)據(jù)和輸出數(shù)據(jù)的邏輯結(jié)構(gòu),并用Jackson圖描繪這些數(shù)據(jù)結(jié)構(gòu)。找出輸入數(shù)據(jù)結(jié)構(gòu)和輸出數(shù)據(jù)結(jié)構(gòu)中有對(duì)應(yīng)關(guān)系的數(shù)據(jù)單元。用下述3條規(guī)則從描繪數(shù)據(jù)結(jié)構(gòu)的Jackson圖導(dǎo)出描繪程序結(jié)構(gòu)的Jackson圖Jacson 方法51Jacson 方法為每對(duì)有對(duì)應(yīng)關(guān)系的數(shù)據(jù)單元,按照它們?cè)跀?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ù)單元所處的層次,在程
16、序結(jié)構(gòu)圖的相應(yīng)層次分別為它們畫上對(duì)應(yīng)的處理框。52Jacson 方法列出所有操作和條件(包括分支條件和循環(huán)結(jié)束條件),并且把它們分配到程序結(jié)構(gòu)圖的適當(dāng)位置。用偽碼表示程序。 A seqBCDAend53Jacson 方法 A select cond1Bor cond2C or cond3DA end54Jacson 方法 A iter until(或while) condBA end55 一個(gè)正文文件由若干個(gè)記錄組成,每個(gè)記錄是一個(gè)字符串。要求統(tǒng)計(jì)每個(gè)記錄中空格字符的個(gè)數(shù),以及文件中空格字符的總個(gè)數(shù)。要求的輸出數(shù)據(jù)格式是,每復(fù)制一行輸入字符串之后,另起一行印出這個(gè)字符串中的空格數(shù),最后印出文件
17、中空格的總個(gè)數(shù)。Jacson 方法應(yīng)用實(shí)例一565758列出所有操作和條件:1、停止2、打開文件3、關(guān)閉文件4、印出字符串5、印出空格數(shù)目6、印出空格總數(shù)7、sum:=sum+18、totalsum:=totalsum+sum9、讀入字符串10、sum:=011、totalsum:=012、pointer:=113、pointer:=pointer+1I(1)文件結(jié)束I(2)字符串結(jié)束S(3)字符是空格5960統(tǒng)計(jì)空格 seq 打開文件 讀入字符串 totalsum:=0 程序體 iter until 文件結(jié)束 處理字符串 seq 印字符串 印出字符串 sum:=0; pointer:=1 分
18、析字符串 iter until 字符串結(jié)束 分析字符 select 字符是空格 處理空格 sum:=sum+1; pointer:=pointer+1 分析字符 or 字符不是空格 處理非空格 pointer:=pointer+1 end 分析字符 end 分析字符串 印空格數(shù) 印出空格數(shù)目 totalsum:=totalsum+sum 讀入字符串 end 處理字符串 end 程序體 印總數(shù) 印出空格總數(shù) 關(guān)閉文件;停止end 統(tǒng)計(jì)空格61Jacson 方法應(yīng)用實(shí)例二某商店為了開展“信用卡購(gòu)貨”業(yè)務(wù),建立了兩種帳冊(cè):顧客總帳和付款帳。后者記錄了每一顧客在本季度內(nèi)每次付款的日期和金額。由顧客帳號(hào)
19、、日期和付款額這3項(xiàng)組成;前者則登記顧客在扣除本季度購(gòu)貨款后的余額,正值表示顧客有積余,負(fù)值表示積欠。62Jacson 方法應(yīng)用實(shí)例二PAY FILE(payment file)CNODATEPMTXXXXXXYYYYYYCNOgroupCNOgroupC M F(Customer Master File)CNOBALANCEXXXYYY顧客帳冊(cè)格式63Jacson 方法應(yīng)用實(shí)例二ACCT REPT(accounting report)CNO DATE PMT OLDBAL NEWBAL XXX YYY GRAND TOTAL 64Jacson 方法應(yīng)用實(shí)例二PAY FILECUST REC
20、*PAY REC *CNO GROUP *BALANCEC M F65Jacson 方法應(yīng)用實(shí)例二ACCT REPTCUST DATAMASTER TOTALSTOTAL BALTOTAL PMTCNO * GROUPNEW BALOLD BALPAY RECCUST TOTALBAL DATAREPT * LINECNO66PROCESS PAY-FILE&CMF GIVING ACCT-REPTPROCCUST DATAPROC MASTER TOTALSCOMP FILE-BALCOMP TOT-PMTPROC *CNO GROUPPROC NEW BALPROCOLD BALPROCP
21、AY RECCOMPCUST TOTALCOMPBAL DATAPROC * REPT LINEPROC CNOI1I267列出循環(huán)結(jié)構(gòu)的終止條件I1: EOF-PAY-FILEI2: end of CNO GROUP列出各框的操作和輔助操作 (略)68用Jackson偽代碼寫出過(guò)程表示PROC-ACCT-REPT seq open ACCT-REPT-FILE ; open PAY-FILE ; open C-M-F ; PROC-CUST-DATA iter until EOF-PAY-FILE ; PROC-CNO-GROUP seq read PAY-FILE ; PROC-CNO ;
22、 write CNO line PROC-PAY-REC iter until end of CNO GROUP ; write report line ; add payment ; read PAY-FILE ; end PROC-PAY-REC; COMP-CUST-TOT; COMP-BAL seq PROC-OLD-BAL ; reads C-M-F, finds OLD-BAL COMP-NEW-BAL ; write total line ; end COMP-BAL; end PROC-CNO-GROUP ;end PROC-CUST-DATA ;PROC-MASTER-TOT
23、S seq compute grand payments ; compute grand balance ; write grand total line ;end PROC-MASTER-TOTS ;close PAY-FILE ; close C-M-F ;close ACCT-REPT-FILE ;end PROC-ACCT-REPT69第六章內(nèi)容概要詳細(xì)設(shè)計(jì)概要結(jié)構(gòu)程序設(shè)計(jì)人機(jī)界面設(shè)計(jì)過(guò)程設(shè)計(jì)技術(shù)和工具面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法程序復(fù)雜程度的定量度量 70程序復(fù)雜程度的定量度量 定量度量程序復(fù)雜程度的方法的用途:把程序的復(fù)雜程度乘以適當(dāng)常數(shù)即可估算出軟件中錯(cuò)誤的數(shù)量以及軟件開發(fā)需要用的工作
24、量;定量度量的結(jié)果可以用來(lái)比較兩個(gè)不同的設(shè)計(jì)或兩個(gè)不同算法的優(yōu)劣;程序的定量的復(fù)雜程度可以作為模塊規(guī)模的精確限度。 71McCabe方法McCabe方法根據(jù)程序控制流的復(fù)雜程度定量度量程序的復(fù)雜程度,這樣度量出的結(jié)果稱為程序的環(huán)形復(fù)雜度。 流圖(也稱為程序圖):實(shí)質(zhì)上是“退化了的”程序流程圖,它僅僅描繪程序的控制流程,完全不表現(xiàn)對(duì)數(shù)據(jù)的具體操作以及分支或循環(huán)的具體條件。結(jié)點(diǎn):用圓表示,代表一條或多條語(yǔ)句;邊:用箭頭表示,一邊必須終止于一個(gè)結(jié)點(diǎn);區(qū)域:由邊和結(jié)點(diǎn)圍成的面積 ;72McCabe方法流程圖、流圖以及E、N、V的對(duì)應(yīng)關(guān)系:121442順序型選擇型73McCabe方法流程圖、流圖以及E、
25、N、V的對(duì)應(yīng)關(guān)系:332332WHILE循環(huán)UNTIL循環(huán)74McCabe方法流程圖、流圖以及E、N、V的對(duì)應(yīng)關(guān)系:763示例75McCabe方法9101 3 6 2 4 7 8 5 11( a ) 1 2,3 4,5 1011 9 8 7 6 R3 R2 R1 R4 結(jié)點(diǎn) 邊 區(qū)域 (b)把程序流程圖映射成流圖 76PDL Procedure:sort 1:do while records remain 2 : read record; if record field 1=03 : then process record; store in buffer; incremert counter
26、;4 : elseif record field 2=0 5 : then reset counter;6 : else process record; store in file;7a : endif endif7b : enddo8 : end1 2 3 7b8 7a 5 6 4 圖6.16 由PDL翻譯成的流圖77IF a OR b then procedure x else procedure yENDIFa x y b 判定節(jié)點(diǎn) 包含復(fù)合條件的PDL映射成的流圖IF a AND b then procedure x else procedure yENDIF78McCabe方法有了描
27、繪程序控制流的流圖之后,可以用下述3種方法中的任何一種來(lái)計(jì)算環(huán)形復(fù)雜度。流圖中的區(qū)域數(shù)等于環(huán)形復(fù)雜度。 流圖G的環(huán)形復(fù)雜度V(G)EN+2,其中,E是流圖中邊的條數(shù),N是結(jié)點(diǎn)數(shù)。流圖G的環(huán)形復(fù)雜度V(G)P+1,其中,P是流圖中判斷的數(shù)目。例如,使用上述任何一種方法,都可以計(jì)算出講義76頁(yè)所示流圖的環(huán)形復(fù)雜度為4。 79McCabe方法環(huán)形復(fù)雜度的用途程序的環(huán)形復(fù)雜度取決于程序控制流的復(fù)雜程度,也即是取決于程序結(jié)構(gòu)的復(fù)雜程度。當(dāng)程序內(nèi)分支數(shù)或循環(huán)個(gè)數(shù)增加時(shí),環(huán)形復(fù)雜度也隨之增加,因此它是對(duì)測(cè)試難度的一種定量度量,也能對(duì)軟件最終的可靠性給出某種預(yù)測(cè)。用來(lái)限制模塊的最大行數(shù)。McCabe從大量的調(diào)
28、查中發(fā)現(xiàn),當(dāng)V(G)等于或大于10時(shí),對(duì)模塊進(jìn)行充分的測(cè)試將變得非常困難。他主張將10作為環(huán)域數(shù)的上限,并以此來(lái)限制模塊的最大規(guī)模80McCabe方法幾點(diǎn)說(shuō)明:環(huán)形復(fù)雜度取決于程序控制結(jié)構(gòu)的復(fù)雜度。當(dāng)程序的分支數(shù)目或循環(huán)數(shù)目增加時(shí)其復(fù)雜度也增加。環(huán)形復(fù)雜度與程序中覆蓋的路徑條數(shù)有關(guān)。環(huán)形復(fù)雜度是可加的。例如,模塊A的復(fù)雜度為3,模塊B的復(fù)雜度為4,則模塊A與模塊B的復(fù)雜度是7。McCabe建議,對(duì)于復(fù)雜度超過(guò)10的程序,應(yīng)分成幾個(gè)小程序,以減少程序中的錯(cuò)誤。Walsh用實(shí)例證實(shí)了這個(gè)建議的正確性。在McCabe復(fù)雜度為10的附近,存在出錯(cuò)率的間斷躍變。81McCabe方法這種度量的缺點(diǎn):對(duì)于不
29、同種類的控制流的復(fù)雜性不能區(qū)分;簡(jiǎn)單IF語(yǔ)句與循環(huán)語(yǔ)句的復(fù)雜性同等看待;嵌套IF語(yǔ)句與簡(jiǎn)單CASE語(yǔ)句的復(fù)雜性是一樣的;模塊間接口當(dāng)成一個(gè)簡(jiǎn)單分支一樣處理;一個(gè)具有1000行的順序程序與一行語(yǔ)句的復(fù)雜性相同;82課堂練習(xí)(畫出下列程序流程圖對(duì)應(yīng)的程序圖)StartDO WHILEC1EndCAEDBC283Halstead方法它根據(jù)程序中運(yùn)算符和操作數(shù)的總數(shù)來(lái)度量程序的復(fù)雜程度。 運(yùn)算符包括:算術(shù)運(yùn)算符 賦值符(= 或 := ) 數(shù)組操作符 邏輯運(yùn)算符 分界符(,或 ;或 : ) 子程序調(diào)用符 關(guān)系運(yùn)算符 括號(hào)運(yùn)算符循環(huán)操作符等特別地,成對(duì)的運(yùn)算符,例如“BEGINEND”、“FORTO”、“
30、REPEAT UNTIL”、“WHILEDO”、“IFTHENELSE”、“()”等都當(dāng)做單一運(yùn)算符。 運(yùn)算對(duì)象包括變量名和常數(shù)84Halstead方法 程序長(zhǎng)度,即預(yù)測(cè)的Halstead長(zhǎng)度n1表示程序中不同運(yùn)算符(包括保留字)的個(gè)數(shù),n2表示程序中不同運(yùn)算對(duì)象的個(gè)數(shù),H表示“程序長(zhǎng)度”,則有 H = n1log2n1+ n2log2n285Halstead方法 實(shí)際的Halstead長(zhǎng)度設(shè)N1為程序中實(shí)際出現(xiàn)的運(yùn)算符總個(gè)數(shù),N2為程序中實(shí)際出現(xiàn)的運(yùn)算對(duì)象總個(gè)數(shù),N為實(shí)際的Halstead長(zhǎng)度,則有 N = N1 + N2經(jīng)過(guò)多次驗(yàn)證,預(yù)測(cè)的Halstead長(zhǎng)度與實(shí)際的Halstead長(zhǎng)度是
31、非常接近的。 86Halstead方法 程序的詞匯表Halstead定義程序的詞匯表為不同的運(yùn)算符種類數(shù)和不同的運(yùn)算對(duì)象種類數(shù)的總和。若令n為程序的詞匯表,則有 n = n1 + n2 程序量V,可用下式算得 V = ( N1 + N2 ) log2 ( n1 + n2 ) 87SUBROUTINE SORT(X,N) DIMENSION X(N) IF(N .LT. 2) RETURN DO 20 I = 2, N DO 10 J = 1, I IF (X(I).GE. X(J) GO TO 10 SAVE = X(I) X(I)= X(J) X(J)= SAVE 10 CONTINUE 2
32、0 CONTINUE RETURN END運(yùn)算符計(jì)數(shù)運(yùn)算對(duì)象計(jì)數(shù)可執(zhí)行語(yǔ)句結(jié)束 7X6數(shù)組下標(biāo)6I55J4IF()2N2DO222,2SAVE2程序結(jié)束111.LT.1n2=7 N2=22.GE.1GO TO 101n1=10 N1=28運(yùn)算符運(yùn)算對(duì)象H = 10 log2 10 + 7 log2 7 = 52.87N = N1 + N2 = 28 + 22 = 50 V=( 28 + 22 ) log2 ( 10 + 7 ) = 204 88Halstead方法 程序的潛在錯(cuò)誤Halstead度量可以用來(lái)預(yù)測(cè)程序中的錯(cuò)誤。 認(rèn)為程序中可能存在的差錯(cuò)應(yīng)與程序的容量成正比。因而預(yù)測(cè)公式為 B = ( N1 + N2 ) log2 ( n1 + n2 )3000
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 44624-2024熱環(huán)境的人類工效學(xué)接觸冷熱表面時(shí)人體反應(yīng)評(píng)價(jià)方法
- 工程招標(biāo)設(shè)計(jì)階段合同條件(第二部分)
- 專業(yè)體育教練合作協(xié)議范本
- 企業(yè)資產(chǎn)收購(gòu)合同
- 事業(yè)單位引進(jìn)急需緊缺專業(yè)人才暨2024年
- 2024年最高額反擔(dān)保保證
- 政府采購(gòu)協(xié)議供貨公開招標(biāo)文件2024年
- 農(nóng)家樂(lè)活動(dòng)合作合同
- 快遞合作協(xié)議書樣本
- 2024年如何制定具有法律效力的離婚協(xié)議
- 上海市普陀區(qū)2024-2025學(xué)年六年級(jí)(五四學(xué)制)上學(xué)期期中語(yǔ)文試題
- 小學(xué)學(xué)校信息化管理章程
- 封條模板A4直接打印版
- 倪志欽:年輕有遺憾沒(méi)傷感
- 干辣椒收購(gòu)合同協(xié)議書范本通用版
- 印度英文介紹 india(課堂PPT)
- 旅游線路設(shè)計(jì)實(shí)務(wù) 理論知識(shí)篇
- 工程地質(zhì)學(xué)—地貌
- 應(yīng)聘登記表(CMHR
- 《海報(bào)設(shè)計(jì)》PPT課件(完整版)
- 吉林省義務(wù)教育階段新課程計(jì)劃表(新)
評(píng)論
0/150
提交評(píng)論