




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、第六章詳細(xì)設(shè)計1第六章內(nèi)容概要詳細(xì)設(shè)計概要結(jié)構(gòu)程序設(shè)計人機界面設(shè)計過程設(shè)計技術(shù)和工具面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法程序復(fù)雜程度的定量度量 2詳細(xì)設(shè)計階段的根本目標(biāo)是確定應(yīng)該怎樣具體地實現(xiàn)所要求的系統(tǒng)。詳細(xì)設(shè)計的目標(biāo)不僅僅是邏輯上正確地實現(xiàn)每個模塊的功能,更重要的是設(shè)計出的處理過程應(yīng)該盡可能的簡明易懂。結(jié)構(gòu)程序設(shè)計是實現(xiàn)上述目標(biāo)的關(guān)鍵技術(shù),是詳細(xì)設(shè)計的邏輯基礎(chǔ)。詳細(xì)設(shè)計概要3第六章內(nèi)容概要詳細(xì)設(shè)計概要結(jié)構(gòu)程序設(shè)計人機界面設(shè)計過程設(shè)計技術(shù)和工具面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法程序復(fù)雜程度的定量度量 4結(jié)構(gòu)程序設(shè)計的概念最早由E.W.Dijkstra在1965年提出,他指出:“可以從高級語言中取消GOTO語句”,“程
2、序的質(zhì)量與程序中所包含的GOTO語句的數(shù)量成反比”。1966年Bohm和Jacopini證明了,只用3種基本的控制結(jié)構(gòu)就能實現(xiàn)任何單入口單出口的程序。這3種基本的控制結(jié)構(gòu)是“順序”、“選擇”和“循環(huán)”。1968年Dijkstra再次建議,1971年IBM成功地應(yīng)用結(jié)構(gòu)程序設(shè)計在紐約時報信息庫管理系統(tǒng)和美國宇航局飛行模擬實驗中結(jié)構(gòu)程序設(shè)計5結(jié)構(gòu)程序設(shè)計結(jié)構(gòu)程序設(shè)計的經(jīng)典定義如下所述:“如果一個程序的代碼塊僅僅通過順序、選擇和循環(huán)這3種基本控制結(jié)構(gòu)進行連接,并且每個代碼塊只有一個入口和一個出口,則稱這個程序是結(jié)構(gòu)化的?!?對經(jīng)典定義的擴充“結(jié)構(gòu)程序設(shè)計是盡可能少用GOTO語句的程序設(shè)計方法。最好僅
3、在檢測出錯誤時才使用GOTO語句,而且應(yīng)該總是使用前向GOTO語句?!?6結(jié)構(gòu)程序設(shè)計經(jīng)典的結(jié)構(gòu)程序設(shè)計:如果只允許使用順序、IF-THEN-ELSE型分支和DO-WHILE型循環(huán)這3種基本控制結(jié)構(gòu)實現(xiàn)單入口單出口的程序擴展的結(jié)構(gòu)程序設(shè)計:如果除了上述3種基本控制結(jié)構(gòu)之外,還允許使用DO-CASE型多分支結(jié)構(gòu)和DO-UNTIL型循環(huán)結(jié)構(gòu)修正的結(jié)構(gòu)程序設(shè)計:如果再加上允許使用LEAVE(或BREAK)結(jié)構(gòu)7結(jié)構(gòu)程序設(shè)計8結(jié)構(gòu)程序設(shè)計9第六章內(nèi)容概要詳細(xì)設(shè)計概要結(jié)構(gòu)程序設(shè)計人機界面設(shè)計過程設(shè)計技術(shù)和工具面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法程序復(fù)雜程度的定量度量 10系統(tǒng)響應(yīng)時間用戶幫助設(shè)施出錯信息處理命令交互設(shè)
4、計問題11系統(tǒng)響應(yīng)時間:指從用戶完成某個控制動作(例如,按回車鍵或點擊鼠標(biāo)),到軟件給出預(yù)期的響應(yīng)(輸出信息或做動作)之間的這段時間兩個屬性長度易變性系統(tǒng)響應(yīng)時間12幫助設(shè)施分為集成的和附加的兩類具體設(shè)計幫助設(shè)施時,必須解決的問題在用戶與系統(tǒng)交互期間,是否在任何時候都能獲得關(guān)于系統(tǒng)任何功能的幫助信息?(提供部分功能的幫助信息和提供全部功能的幫助信息)用戶怎樣請求幫助?(幫助菜單、特殊功能鍵和HELP命令)怎樣顯示幫助信息?(在獨立的窗口中、指出參考某個文檔和在屏幕固定位置顯示簡短提示)用戶怎樣返回到正常的交互方式中?(屏幕上的返回按鈕和功能鍵)怎樣組織幫助信息?(平面結(jié)構(gòu),信息的層次結(jié)構(gòu)和超文
5、本結(jié)構(gòu))用戶幫助設(shè)施13交互式系統(tǒng)給出的出錯信息或警告信息,應(yīng)具備的屬性:信息應(yīng)該用用戶可以理解的術(shù)語描述問題。信息應(yīng)該提供有助于從錯誤中恢復(fù)的建設(shè)性意見。信息應(yīng)該指出錯誤可能導(dǎo)致哪些負(fù)面后果信息應(yīng)該伴隨著聽覺上或視覺上的提示 信息不能帶有指責(zé)色彩出錯信息處理14在提供命令交互方式時,必須考慮的設(shè)計問題:是否每個菜單選項都有對應(yīng)的命令采用何種命令形式(控制序列(例如,Ctrl+P),功能鍵和鍵入命令)學(xué)習(xí)和記憶命令的難度有多大用戶是否可以定制或縮寫命令命令交互15設(shè)計過程創(chuàng)建界面原型n設(shè)計者研究用戶評審意見創(chuàng)建界面原型1初步設(shè)計用戶評審界面修改設(shè)計界面設(shè)計完畢16人機界面設(shè)計指南一般交互指南保
6、持一致性提供有意義的反饋在執(zhí)行有較大破壞性的動作之前要求用戶確認(rèn)允許取消絕大多數(shù)操作減少在兩次操作之間必須記憶的信息量提高對話、移動和思考的效率允許犯錯誤按功能對動作分類,并據(jù)此設(shè)計屏幕布局提供對用戶工作內(nèi)容敏感的幫助設(shè)施用簡單動詞或動詞短語作為命令名17人機界面設(shè)計指南信息顯示指南只顯示與當(dāng)前工作內(nèi)容有關(guān)的信息不要用數(shù)據(jù)淹沒用戶使用一致的標(biāo)記、標(biāo)準(zhǔn)的縮寫和可預(yù)知的顏色允許用戶保持可視化的語境產(chǎn)生有意義的出錯信息使用大小寫、縮進和文本分組以幫助理解使用窗口分隔不同類型的信息使用“模擬”顯示方式表示信息高效率地使用顯示屏18人機界面設(shè)計指南數(shù)據(jù)輸入指南盡量減少用戶的輸入動作保持信息顯示和數(shù)據(jù)輸入
7、之間的一致性允許用戶自定義輸入交互應(yīng)該是靈活的,并且可調(diào)整成用戶最喜歡的輸入方式使在當(dāng)前動作語境中不適用的命令不起作用讓用戶控制交互流對所有輸入動作都提供幫助消除冗余的輸入19第六章內(nèi)容概要詳細(xì)設(shè)計概要結(jié)構(gòu)程序設(shè)計人機界面設(shè)計過程設(shè)計技術(shù)和工具面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法程序復(fù)雜程度的定量度量 20過程設(shè)計技術(shù)和工具表達過程規(guī)格說明的工具叫做詳細(xì)設(shè)計工具:圖形工具表格工具語言工具21過程設(shè)計技術(shù)和工具程序流程圖(Program Flow Chart)程序流程圖本質(zhì)上不是逐步求精的好工具,它誘使程序員過早地考慮程序的控制流程,而不去考慮程序的全局結(jié)構(gòu)。程序流程圖中用箭頭代表控制流,因此程序員不受任何約
8、束,可以完全不顧結(jié)構(gòu)程序設(shè)計的精神,隨意轉(zhuǎn)移控制。程序流程圖不易表示數(shù)據(jù)結(jié)構(gòu)。 22過程設(shè)計技術(shù)和工具必須限制程序流程圖只能使用五種基本的控制結(jié)構(gòu)需要對流程圖所用的符號做出確切的規(guī)定2324過程設(shè)計技術(shù)和工具盒圖(Box-Diagram)(N-S圖) Nassi和Shneiderman提出第一個任務(wù)第二個任務(wù)第三個任務(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過程設(shè)計技術(shù)和工具盒圖有下述特點:功能域(即某個
9、特定控制結(jié)構(gòu)的作用域)明確,可以從盒圖上一眼就看出來。不可能任意轉(zhuǎn)移控制。很容易確定局部和全程數(shù)據(jù)的作用域。很容易表現(xiàn)嵌套關(guān)系,也可以表示模塊的層次結(jié)構(gòu)。 28過程設(shè)計技術(shù)和工具PAD(Problem Analysis Diagram)圖:1973年由日本日立公司發(fā)明用二維樹形結(jié)構(gòu)的圖來表示程序的控制流, 設(shè)置了五種基本控制結(jié)構(gòu)的圖式,并允許遞歸使用。29PAD描述的示例30PAD的擴充控制結(jié)構(gòu)31PAD圖的主要優(yōu)點:使用表示結(jié)構(gòu)化控制結(jié)構(gòu)的PAD符號所設(shè)計出來的程序必然是結(jié)構(gòu)化程序PAD圖所描繪的程序結(jié)構(gòu)十分清晰用PAD圖表現(xiàn)程序邏輯,易讀、易懂、易記容易將PAD圖轉(zhuǎn)換成高級語言源程序,這種
10、轉(zhuǎn)換可用軟件工具自動完成即可用于表示程序邏輯,也可用于描繪數(shù)據(jù)結(jié)構(gòu)PAD圖的符號支持自頂向下、逐步求精方法的使用過程設(shè)計技術(shù)和工具32課堂練習(xí)畫出下列程序流程圖對應(yīng)的PAD圖BeginABQPEndNYNY33ABwhile PBQAT34過程設(shè)計技術(shù)和工具判定表當(dāng)算法中包含多重嵌套的條件選擇時,使用判定表能夠清晰地表示復(fù)雜的條件組合與應(yīng)做的動作之間的對應(yīng)關(guān)系。 判定表用于表示程序的靜態(tài)邏輯。在判定表中的條件部分給出所有的兩分支判斷的列表,動作部分給出相應(yīng)的處理。要求將程序流程圖中的多分支判斷都改成兩分支判斷。35無多分支判斷結(jié)構(gòu)3637過程設(shè)計技術(shù)和工具判定表優(yōu)點:能夠簡潔、無二義性地描述所
11、有的處理規(guī)則。缺點:判定表表示的是靜態(tài)邏輯,是在某種條件取值組合情況下可能的結(jié)果,它不能表達加工的順序,也不能表達循環(huán)結(jié)構(gòu),因此判定表不能成為一種通用的設(shè)計工具。 38以行李托運費的算法為例說明判定表的組織方法。假設(shè)某航空公司規(guī)定,乘客可以免費托運重量不超過30kg的行李。當(dāng)行李重量超過30kg時,對頭等艙的國內(nèi)乘客超重部分每公斤收費4元,對其他艙的國內(nèi)乘客超重部分每公斤收費6元,對外國乘客超重部分每公斤收費比國內(nèi)乘客多一倍,對殘疾乘客超重部分每公斤收費比正常乘客少一半。過程設(shè)計技術(shù)和工具39123456789國內(nèi)乘客TTTTFFFF頭等艙TFTFTFTF殘疾乘客FFTTFFTT行李重量W30
12、kgTFFFFFFFF免費(W-30) 2(W-30) 3(W-30) 4(W-30) 6(W-30) 8(W-30) 1240過程設(shè)計技術(shù)和工具判定樹判定樹是判定表的變種。優(yōu)點:形式簡單,比判定表更直觀缺點:簡潔性不如判定表畫判定樹時分枝的次序可能對最終畫出的判定樹的簡潔程度有較大影響 4142過程設(shè)計技術(shù)和工具過程設(shè)計語言(PDL)是用正文形式表示數(shù)據(jù)和處理過程的設(shè)計工具,也被稱為偽代碼。PDL具有嚴(yán)格的關(guān)鍵字外部語法,用于定義控制結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu);另一方面,PDL表示實際操作和條件的內(nèi)部語法通常又是靈活自由的,可以適應(yīng)各種工程項目的需要。43過程設(shè)計技術(shù)和工具PROCEDURE spell
13、check IS 查找錯拼的單詞 BEGIN split document into single words 把整個文檔分離成單詞 look up words in dictionary 在字典中查這些單詞 display words which are not in dictionary 顯示字典中查不到的單詞 create a new dictionary 造一新字典 END spellcheck示例: 拼寫檢查程序44過程設(shè)計技術(shù)和工具PDL作為一種設(shè)計工具有如下一些優(yōu)點:可以作為注釋直接插在源程序中間。這樣做能促使維護人員在修改程序代碼的同時也相應(yīng)地修改PDL注釋,因此有助于保持文檔
14、和程序的一致性,提高了文檔的質(zhì)量可以使用普通的正文編輯程序或文字處理系統(tǒng),很方便地完成PDL的書寫和編輯工作。已經(jīng)有自動處理程序存在,而且可以自動由PDL生成程序代碼。 PDL的缺點是不如圖形工具形象直觀,描述復(fù)雜的條件組合與動作間的對應(yīng)關(guān)系時,不如判定表清晰簡單。 45第六章內(nèi)容概要詳細(xì)設(shè)計概要結(jié)構(gòu)程序設(shè)計人機界面設(shè)計過程設(shè)計技術(shù)和工具面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法程序復(fù)雜程度的定量度量 46Jacson 圖順序結(jié)構(gòu)數(shù)據(jù)由一個或多個數(shù)據(jù)元素組成,每個元素按確定次序出現(xiàn)一次。47Jacson 圖選擇結(jié)構(gòu)數(shù)據(jù)包含兩個或多個數(shù)據(jù)元素,每次使用這個數(shù)據(jù)時按一定條件從這些數(shù)據(jù)元素中選擇一個。48Jacson
15、圖重復(fù)結(jié)構(gòu)重復(fù)結(jié)構(gòu)的數(shù)據(jù),根據(jù)使用時的條件由一個數(shù)據(jù)元素出現(xiàn)零次或多次構(gòu)成。49改進的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)中有對應(yīng)關(guān)系的數(shù)據(jù)單元。用下述3條規(guī)則從描繪數(shù)據(jù)結(jié)構(gòu)的Jackson圖導(dǎo)出描繪程序結(jié)構(gòu)的Jackson圖Jacson 方法51Jacson 方法為每對有對應(yīng)關(guān)系的數(shù)據(jù)單元,按照它們在數(shù)據(jù)結(jié)構(gòu)圖中的層次在程序結(jié)構(gòu)圖的相應(yīng)層次畫一個處理框根據(jù)輸入數(shù)據(jù)結(jié)構(gòu)中剩余的每個數(shù)據(jù)單元所處的層次,在程序結(jié)構(gòu)圖的相應(yīng)層次分別為它們畫上對應(yīng)的處理框;根據(jù)輸出數(shù)據(jù)結(jié)構(gòu)中剩余的每個數(shù)據(jù)單元所處的層次,在程
16、序結(jié)構(gòu)圖的相應(yīng)層次分別為它們畫上對應(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 一個正文文件由若干個記錄組成,每個記錄是一個字符串。要求統(tǒng)計每個記錄中空格字符的個數(shù),以及文件中空格字符的總個數(shù)。要求的輸出數(shù)據(jù)格式是,每復(fù)制一行輸入字符串之后,另起一行印出這個字符串中的空格數(shù),最后印出文件
17、中空格的總個數(shù)。Jacson 方法應(yīng)用實例一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)計空格 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)計空格61Jacson 方法應(yīng)用實例二某商店為了開展“信用卡購貨”業(yè)務(wù),建立了兩種帳冊:顧客總帳和付款帳。后者記錄了每一顧客在本季度內(nèi)每次付款的日期和金額。由顧客帳號
19、、日期和付款額這3項組成;前者則登記顧客在扣除本季度購貨款后的余額,正值表示顧客有積余,負(fù)值表示積欠。62Jacson 方法應(yīng)用實例二PAY FILE(payment file)CNODATEPMTXXXXXXYYYYYYCNOgroupCNOgroupC M F(Customer Master File)CNOBALANCEXXXYYY顧客帳冊格式63Jacson 方法應(yīng)用實例二ACCT REPT(accounting report)CNO DATE PMT OLDBAL NEWBAL XXX YYY GRAND TOTAL 64Jacson 方法應(yīng)用實例二PAY FILECUST REC
20、*PAY REC *CNO GROUP *BALANCEC M F65Jacson 方法應(yīng)用實例二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偽代碼寫出過程表示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è)計概要結(jié)構(gòu)程序設(shè)計人機界面設(shè)計過程設(shè)計技術(shù)和工具面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法程序復(fù)雜程度的定量度量 70程序復(fù)雜程度的定量度量 定量度量程序復(fù)雜程度的方法的用途:把程序的復(fù)雜程度乘以適當(dāng)常數(shù)即可估算出軟件中錯誤的數(shù)量以及軟件開發(fā)需要用的工作
24、量;定量度量的結(jié)果可以用來比較兩個不同的設(shè)計或兩個不同算法的優(yōu)劣;程序的定量的復(fù)雜程度可以作為模塊規(guī)模的精確限度。 71McCabe方法McCabe方法根據(jù)程序控制流的復(fù)雜程度定量度量程序的復(fù)雜程度,這樣度量出的結(jié)果稱為程序的環(huán)形復(fù)雜度。 流圖(也稱為程序圖):實質(zhì)上是“退化了的”程序流程圖,它僅僅描繪程序的控制流程,完全不表現(xiàn)對數(shù)據(jù)的具體操作以及分支或循環(huán)的具體條件。結(jié)點:用圓表示,代表一條或多條語句;邊:用箭頭表示,一邊必須終止于一個結(jié)點;區(qū)域:由邊和結(jié)點圍成的面積 ;72McCabe方法流程圖、流圖以及E、N、V的對應(yīng)關(guān)系:121442順序型選擇型73McCabe方法流程圖、流圖以及E、
25、N、V的對應(yīng)關(guān)系:332332WHILE循環(huán)UNTIL循環(huán)74McCabe方法流程圖、流圖以及E、N、V的對應(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é)點 邊 區(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é)點 包含復(fù)合條件的PDL映射成的流圖IF a AND b then procedure x else procedure yENDIF78McCabe方法有了描
27、繪程序控制流的流圖之后,可以用下述3種方法中的任何一種來計算環(huán)形復(fù)雜度。流圖中的區(qū)域數(shù)等于環(huán)形復(fù)雜度。 流圖G的環(huán)形復(fù)雜度V(G)EN+2,其中,E是流圖中邊的條數(shù),N是結(jié)點數(shù)。流圖G的環(huán)形復(fù)雜度V(G)P+1,其中,P是流圖中判斷的數(shù)目。例如,使用上述任何一種方法,都可以計算出講義76頁所示流圖的環(huán)形復(fù)雜度為4。 79McCabe方法環(huán)形復(fù)雜度的用途程序的環(huán)形復(fù)雜度取決于程序控制流的復(fù)雜程度,也即是取決于程序結(jié)構(gòu)的復(fù)雜程度。當(dāng)程序內(nèi)分支數(shù)或循環(huán)個數(shù)增加時,環(huán)形復(fù)雜度也隨之增加,因此它是對測試難度的一種定量度量,也能對軟件最終的可靠性給出某種預(yù)測。用來限制模塊的最大行數(shù)。McCabe從大量的調(diào)
28、查中發(fā)現(xiàn),當(dāng)V(G)等于或大于10時,對模塊進行充分的測試將變得非常困難。他主張將10作為環(huán)域數(shù)的上限,并以此來限制模塊的最大規(guī)模80McCabe方法幾點說明:環(huán)形復(fù)雜度取決于程序控制結(jié)構(gòu)的復(fù)雜度。當(dāng)程序的分支數(shù)目或循環(huán)數(shù)目增加時其復(fù)雜度也增加。環(huán)形復(fù)雜度與程序中覆蓋的路徑條數(shù)有關(guān)。環(huán)形復(fù)雜度是可加的。例如,模塊A的復(fù)雜度為3,模塊B的復(fù)雜度為4,則模塊A與模塊B的復(fù)雜度是7。McCabe建議,對于復(fù)雜度超過10的程序,應(yīng)分成幾個小程序,以減少程序中的錯誤。Walsh用實例證實了這個建議的正確性。在McCabe復(fù)雜度為10的附近,存在出錯率的間斷躍變。81McCabe方法這種度量的缺點:對于不
29、同種類的控制流的復(fù)雜性不能區(qū)分;簡單IF語句與循環(huán)語句的復(fù)雜性同等看待;嵌套IF語句與簡單CASE語句的復(fù)雜性是一樣的;模塊間接口當(dāng)成一個簡單分支一樣處理;一個具有1000行的順序程序與一行語句的復(fù)雜性相同;82課堂練習(xí)(畫出下列程序流程圖對應(yīng)的程序圖)StartDO WHILEC1EndCAEDBC283Halstead方法它根據(jù)程序中運算符和操作數(shù)的總數(shù)來度量程序的復(fù)雜程度。 運算符包括:算術(shù)運算符 賦值符(= 或 := ) 數(shù)組操作符 邏輯運算符 分界符(,或 ;或 : ) 子程序調(diào)用符 關(guān)系運算符 括號運算符循環(huán)操作符等特別地,成對的運算符,例如“BEGINEND”、“FORTO”、“
30、REPEAT UNTIL”、“WHILEDO”、“IFTHENELSE”、“()”等都當(dāng)做單一運算符。 運算對象包括變量名和常數(shù)84Halstead方法 程序長度,即預(yù)測的Halstead長度n1表示程序中不同運算符(包括保留字)的個數(shù),n2表示程序中不同運算對象的個數(shù),H表示“程序長度”,則有 H = n1log2n1+ n2log2n285Halstead方法 實際的Halstead長度設(shè)N1為程序中實際出現(xiàn)的運算符總個數(shù),N2為程序中實際出現(xiàn)的運算對象總個數(shù),N為實際的Halstead長度,則有 N = N1 + N2經(jīng)過多次驗證,預(yù)測的Halstead長度與實際的Halstead長度是
31、非常接近的。 86Halstead方法 程序的詞匯表Halstead定義程序的詞匯表為不同的運算符種類數(shù)和不同的運算對象種類數(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運算符計數(shù)運算對象計數(shù)可執(zhí)行語句結(jié)束 7X6數(shù)組下標(biāo)6I55J4IF()2N2DO222,2SAVE2程序結(jié)束111.LT.1n2=7 N2=22.GE.1GO TO 101n1=10 N1=28運算符運算對象H = 10 log2 10 + 7 log2 7 = 52.87N = N1 + N2 = 28 + 22 = 50 V=( 28 + 22 ) log2 ( 10 + 7 ) = 204 88Halstead方法 程序的潛在錯誤Halstead度量可以用來預(yù)測程序中的錯誤。 認(rèn)為程序中可能存在的差錯應(yīng)與程序的容量成正比。因而預(yù)測公式為 B = ( N1 + N2 ) log2 ( n1 + n2 )3000
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- T-ZZB 3683-2024 水松紙卷筒料圓壓圓燙金機
- 二零二五年度房屋租賃合同(含瑜伽館)
- 2025年度肥料產(chǎn)品包裝設(shè)計及印刷合同
- 2025年度綠色生態(tài)果園轉(zhuǎn)讓協(xié)議書
- 二零二五年度智慧城市建設(shè)項目業(yè)績提成合同
- 天津市2025年度勞動合同解除經(jīng)濟補償金支付與發(fā)放合同
- 二零二五年度科研機構(gòu)與高校人才合作就業(yè)協(xié)議書范本
- 二零二五年度臨時協(xié)議書:智慧社區(qū)建設(shè)與物業(yè)管理合作
- 2025年度智能車庫租賃與智慧城市建設(shè)項目合同
- 2025年度裝配行業(yè)人才培養(yǎng)終止合同協(xié)議
- FOCUS-PDCA改善案例-提高術(shù)前手術(shù)部位皮膚準(zhǔn)備合格率醫(yī)院品質(zhì)管理成果匯報
- 2024解析:第五章透鏡及其應(yīng)用-基礎(chǔ)練(解析版)
- 河南省第二屆職業(yè)技能大賽健康和社會照護項(世賽)項目技術(shù)工作文件
- 《護士禮儀與溝通》課件
- 專題05標(biāo)點符號考點專訓(xùn)(01)(含答案)2025年新高考語文一輪復(fù)習(xí)考點滿分寶典
- 保密法實施條例培訓(xùn)
- 鉗工工藝學(xué)(第6版)完整全套教學(xué)課件
- DB11T 1035-2013 城市軌道交通能源消耗評價方法
- 老年科護士進修匯報
- 2024新能源光伏電站運行規(guī)程和檢修規(guī)程
- 同等學(xué)力英語申碩考試詞匯(第六版大綱)電子版
評論
0/150
提交評論