第6章-詳細(xì)設(shè)計(jì)-2_第1頁(yè)
第6章-詳細(xì)設(shè)計(jì)-2_第2頁(yè)
第6章-詳細(xì)設(shè)計(jì)-2_第3頁(yè)
第6章-詳細(xì)設(shè)計(jì)-2_第4頁(yè)
第6章-詳細(xì)設(shè)計(jì)-2_第5頁(yè)
已閱讀5頁(yè),還剩47頁(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、2021-10-240回顧回顧q詳細(xì)設(shè)計(jì)的內(nèi)容詳細(xì)設(shè)計(jì)的內(nèi)容q過(guò)程設(shè)計(jì)工具過(guò)程設(shè)計(jì)工具1程序流程圖程序流程圖2 盒圖盒圖(N_S圖圖)3 PAD圖圖4 判定表判定表5 判定樹(shù)判定樹(shù)6 過(guò)程設(shè)計(jì)語(yǔ)言過(guò)程設(shè)計(jì)語(yǔ)言(PDL)2021-10-241過(guò)程設(shè)計(jì)的工具過(guò)程設(shè)計(jì)的工具n 判定表判定表n 當(dāng)算法中包含多重嵌套的條件選擇時(shí),用程序流程圖、盒圖、PAD圖或后面即將介紹的過(guò)程設(shè)計(jì)語(yǔ)言(PDL)都不易清楚地描述。n 然而判定表卻能夠清晰地表示復(fù)雜的條件組合與應(yīng)做的動(dòng)作之間的對(duì)應(yīng)關(guān)系。n 判定表用于以緊湊的形式描述復(fù)雜的邏輯。判定表與if-else、switch-case語(yǔ)句類似,將條件判斷與執(zhí)行的動(dòng)作聯(lián)

2、系起來(lái)。2021-10-242過(guò)程設(shè)計(jì)的工具過(guò)程設(shè)計(jì)的工具n 判定表判定表n 一張判定表由4部分組成。n 左上部列出所有條件,左下部是所有可能的動(dòng)作。n 右上部是表示各種條件組合的一個(gè)矩陣,右下部是和每種條件組合相對(duì)應(yīng)的動(dòng)作。n 判定表右半部的每一列實(shí)質(zhì)上是一條規(guī)則,規(guī)定了與特定的條件組合相對(duì)應(yīng)的操作。2021-10-243操作條目操作條目條件條目條件條目2021-10-244過(guò)程設(shè)計(jì)的工具過(guò)程設(shè)計(jì)的工具n 判定表:舉例判定表:舉例1n 問(wèn)題描述:?jiǎn)栴}描述:“某公司規(guī)定,對(duì)于大于某公司規(guī)定,對(duì)于大于70馬力的機(jī)馬力的機(jī)器或已運(yùn)行器或已運(yùn)行15年以上的機(jī)器,應(yīng)給予優(yōu)先維修處年以上的機(jī)器,應(yīng)給予優(yōu)

3、先維修處理理”。用判定表可以清楚地表示與上述每種條件組。用判定表可以清楚地表示與上述每種條件組合相對(duì)應(yīng)的維修處理的算法,如下表所示。合相對(duì)應(yīng)的維修處理的算法,如下表所示。 1234功率大于功率大于70馬力馬力FTTT運(yùn)行超過(guò)運(yùn)行超過(guò)15年年FFFT優(yōu)先維修處理優(yōu)先維修處理作其他處理作其他處理2021-10-245n 判定表:舉例判定表:舉例2n 假設(shè)某航空公司規(guī)定,乘客可以免費(fèi)托運(yùn)重量假設(shè)某航空公司規(guī)定,乘客可以免費(fèi)托運(yùn)重量不超過(guò)不超過(guò)3030公斤的行李。公斤的行李。n 當(dāng)行李重量超過(guò)當(dāng)行李重量超過(guò)3030公斤時(shí):公斤時(shí):n 對(duì)頭等艙的國(guó)內(nèi)乘客超重部分每公斤收費(fèi)對(duì)頭等艙的國(guó)內(nèi)乘客超重部分每公斤

4、收費(fèi)4 4元;元;n 對(duì)其他艙的國(guó)內(nèi)乘客超重部分每公斤收費(fèi)對(duì)其他艙的國(guó)內(nèi)乘客超重部分每公斤收費(fèi)6 6元;元;n 對(duì)外國(guó)乘客超重部分每公斤收費(fèi)比國(guó)內(nèi)乘客多對(duì)外國(guó)乘客超重部分每公斤收費(fèi)比國(guó)內(nèi)乘客多一倍;一倍;n 對(duì)殘疾乘客超重部分每公斤收費(fèi)比正常乘客少對(duì)殘疾乘客超重部分每公斤收費(fèi)比正常乘客少一半。一半。 過(guò)程設(shè)計(jì)的工具過(guò)程設(shè)計(jì)的工具2021-10-246規(guī)則規(guī)則 規(guī)則數(shù)規(guī)則數(shù) 條件條件 動(dòng)作動(dòng)作過(guò)程設(shè)計(jì)的工具過(guò)程設(shè)計(jì)的工具2021-10-247判定表:舉例判定表:舉例3 :一圖書(shū)銷售系統(tǒng),其中一加工為:一圖書(shū)銷售系統(tǒng),其中一加工為“優(yōu)惠處優(yōu)惠處理理”,條件是:顧客的營(yíng)業(yè)額大于,條件是:顧客的營(yíng)業(yè)額

5、大于10001000元,同時(shí)必須信譽(yù)好,元,同時(shí)必須信譽(yù)好,或者雖然信譽(yù)不好,但是或者雖然信譽(yù)不好,但是2020年以上的老主顧。年以上的老主顧。1 2 3 41 2 3 4 10001000元元 Y Y Y Y N Y Y N 信譽(yù)好信譽(yù)好 Y N N - Y N N - 20 20 年年 - Y N - - Y N - 優(yōu)優(yōu) 惠惠 X XX X 正正 常常 X XX X 化簡(jiǎn)后化簡(jiǎn)后 1 2 3 4 5 6 7 81 2 3 4 5 6 7 8 10001000元元 Y Y Y Y Y N N N N Y Y Y N N N N 信譽(yù)好信譽(yù)好 Y Y N N Y Y N NY Y N N Y

6、 Y N N 20 20 年年 Y N Y N Y N Y NY N Y N Y N Y N優(yōu)優(yōu) 惠惠 X X XX X X正正 常常 X X X X XX X X X XY-Y-滿足條件滿足條件 N-N-不滿足條件不滿足條件 X-X-選中判定的結(jié)論選中判定的結(jié)論過(guò)程設(shè)計(jì)的工具過(guò)程設(shè)計(jì)的工具2021-10-248n 判定樹(shù)判定樹(shù)n 判定樹(shù)是判定表的變種,也能清晰地表示復(fù)雜的條件組合與應(yīng)做的動(dòng)作之間的對(duì)應(yīng)關(guān)系。n 判定樹(shù)的優(yōu)點(diǎn)在于,它的形式簡(jiǎn)單到不需任何說(shuō)明,一眼就可以看出其含義,因此易于掌握和使用。n 多年來(lái)判定樹(shù)一直受到人們的重視,是一種比較常用的系統(tǒng)分析和設(shè)計(jì)的工具。過(guò)程設(shè)計(jì)的工具過(guò)程設(shè)計(jì)

7、的工具2021-10-249過(guò)程設(shè)計(jì)的工具過(guò)程設(shè)計(jì)的工具行李費(fèi)行李費(fèi)算法算法行李重量行李重量W 30行李重量行李重量W 30免費(fèi)免費(fèi)國(guó)內(nèi)乘客國(guó)內(nèi)乘客外國(guó)乘客外國(guó)乘客頭等艙頭等艙其他艙其他艙殘疾乘客殘疾乘客正常乘客正常乘客(W-30) 2(W-30) 4殘疾乘客殘疾乘客正常乘客正常乘客(W-30) 3(W-30) 6頭等艙頭等艙其他艙其他艙殘疾乘客殘疾乘客正常乘客正常乘客(W-30) 4(W-30) 8殘疾乘客殘疾乘客正常乘客正常乘客(W-30) 6(W-30) 12用判定樹(shù)表示計(jì)算行李費(fèi)的算法用判定樹(shù)表示計(jì)算行李費(fèi)的算法例22021-10-2410營(yíng)業(yè)額營(yíng)業(yè)額 10001000元元 1000

8、1000元元 正常處理正常處理好的支付信譽(yù)好的支付信譽(yù) 優(yōu)惠處理優(yōu)惠處理壞的支付信譽(yù)壞的支付信譽(yù) 20 20年年 優(yōu)惠處理優(yōu)惠處理 20 20年年 正常處理正常處理判定樹(shù):舉例判定樹(shù):舉例3:一圖書(shū)銷售系統(tǒng),其中一加工為一圖書(shū)銷售系統(tǒng),其中一加工為“優(yōu)惠處優(yōu)惠處理理”,條件是:顧客的營(yíng)業(yè)額大于,條件是:顧客的營(yíng)業(yè)額大于10001000元,同時(shí)必須信譽(yù)元,同時(shí)必須信譽(yù)好,或者雖然信譽(yù)不好,但是好,或者雖然信譽(yù)不好,但是2020年以上的老主顧。年以上的老主顧。過(guò)程設(shè)計(jì)的工具過(guò)程設(shè)計(jì)的工具2021-10-2411課堂練習(xí)課堂練習(xí) 某校制定了教師的講課課時(shí)津貼標(biāo)準(zhǔn)。某校制定了教師的講課課時(shí)津貼標(biāo)準(zhǔn)。對(duì)

9、于各種性質(zhì)的對(duì)于各種性質(zhì)的講座講座,無(wú)論教師是什么,無(wú)論教師是什么職稱,每課時(shí)津貼費(fèi)一律是職稱,每課時(shí)津貼費(fèi)一律是50元元;而對(duì);而對(duì)于一般的于一般的授課,則根據(jù)教師的職稱來(lái)決授課,則根據(jù)教師的職稱來(lái)決定每課時(shí)津貼費(fèi):教授定每課時(shí)津貼費(fèi):教授30元,副教授元,副教授25元,講師元,講師20元,助教元,助教15元。元。請(qǐng)用判定樹(shù)和判定表表示請(qǐng)用判定樹(shù)和判定表表示。2021-10-2412判定樹(shù)判定樹(shù) 教師課時(shí)津貼判定樹(shù)教師課時(shí)津貼判定樹(shù) 課時(shí)津貼 一般授課 講座 教授 副教授 講師 助教 30 25 20 15 50 2021-10-2413 12345教授 TFFF副教授 FTFF講師 FFT

10、F助教 FFFT講座TFFFF50 30 25 20 15 判定表判定表 2021-10-2414n 過(guò)程設(shè)計(jì)語(yǔ)言(過(guò)程設(shè)計(jì)語(yǔ)言(PDLPDL)n PDL也稱為偽碼,這是一個(gè)籠統(tǒng)的名稱,它是用正文形式表示數(shù)據(jù)和處理過(guò)程的設(shè)計(jì)工具。n 一般說(shuō)來(lái)PDL是一種“混雜”語(yǔ)言,它使用一種語(yǔ)言(通常是某種自然語(yǔ)言)的詞匯,同時(shí)卻使用另一種語(yǔ)言(某種結(jié)構(gòu)化的程序設(shè)計(jì)語(yǔ)言)的語(yǔ)法。 過(guò)程設(shè)計(jì)的工具過(guò)程設(shè)計(jì)的工具2021-10-2415PDL程序的構(gòu)成程序的構(gòu)成類型類型子類型子類型數(shù)據(jù)說(shuō)明數(shù)據(jù)說(shuō)明declareas具體的數(shù)據(jù)結(jié)構(gòu):具體的數(shù)據(jù)結(jié)構(gòu):scalararraylistcharstructure子程序結(jié)構(gòu)

11、子程序結(jié)構(gòu)procedureinterfacereturnend分程序結(jié)構(gòu)分程序結(jié)構(gòu)beginend過(guò)程設(shè)計(jì)的工具過(guò)程設(shè)計(jì)的工具2021-10-2416順序結(jié)構(gòu)順序結(jié)構(gòu)選擇型選擇型if thenelseend ifif thenelse if thenelseend ifWHILE循環(huán)型循環(huán)型loop while end loopUNTIL循環(huán)型循環(huán)型loop until end loopCASE型型case of,default :end case過(guò)程設(shè)計(jì)的工具過(guò)程設(shè)計(jì)的工具2021-10-2417n 舉例n procedure 判定質(zhì)數(shù)ndeclare x,n,j as 整型簡(jiǎn)單變量n從鍵

12、盤讀入xn將變量n賦值為x1/2n將變量i賦值為2nloop while i=n+1n輸出:x是質(zhì)數(shù)nelsen輸出:x不是質(zhì)數(shù)nend ifn End 判定質(zhì)數(shù)過(guò)程設(shè)計(jì)的工具過(guò)程設(shè)計(jì)的工具2021-10-2418流程圖圖圖語(yǔ)言決策表(樹(shù))容易使用好好好很好尚好邏輯表示尚好好好好很好易編碼尚好好好很好好易維護(hù)不好不好尚好好好自動(dòng)處理不好不好尚好很好很好結(jié)構(gòu)化構(gòu)造不好很好好好不適用數(shù)據(jù)表示不好不好不好好不好塊結(jié)構(gòu)不好好尚好好不適用邏輯驗(yàn)證不好尚好尚好尚好很好使用頻率高低低中等低過(guò)程設(shè)計(jì)工具比較過(guò)程設(shè)計(jì)工具比較過(guò)程設(shè)計(jì)的工具過(guò)程設(shè)計(jì)的工具2021-10-2419本章要點(diǎn)本章要點(diǎn)q一、詳細(xì)設(shè)計(jì)的概述

13、 q二、界面設(shè)計(jì)二、界面設(shè)計(jì)q三、結(jié)構(gòu)程序設(shè)計(jì)三、結(jié)構(gòu)程序設(shè)計(jì)q四、過(guò)程設(shè)計(jì)工具四、過(guò)程設(shè)計(jì)工具q五、案例講解五、案例講解q六、程序復(fù)雜度度量六、程序復(fù)雜度度量2021-10-2420案例分析案例分析還書(shū)總控模塊流程圖 還書(shū)界面處理流程圖 n 程序流程圖程序流程圖2021-10-2421還書(shū)數(shù)據(jù)輸入及驗(yàn)證模塊流程圖還書(shū)數(shù)據(jù)輸入及驗(yàn)證模塊流程圖 案例分析案例分析2021-10-2422還書(shū)處理模塊流程圖還書(shū)處理模塊流程圖 案例分析案例分析2021-10-2423案例講解案例講解n 登錄模塊的設(shè)計(jì)登錄模塊的設(shè)計(jì)它對(duì)權(quán)限控制、系統(tǒng)安全有著重要的作用!它對(duì)權(quán)限控制、系統(tǒng)安全有著重要的作用!步驟:步驟:

14、、界面顯示、界面顯示、接收用戶名及密碼、接收用戶名及密碼、檢查用戶名和密碼的正確性、檢查用戶名和密碼的正確性、正確,進(jìn)入主界面、正確,進(jìn)入主界面、錯(cuò)誤,提示錯(cuò)誤信息,否則,轉(zhuǎn)入第步。、錯(cuò)誤,提示錯(cuò)誤信息,否則,轉(zhuǎn)入第步。2021-10-2424案例講解案例講解p如何防止密碼被跟蹤破解?如何防止密碼被跟蹤破解?使用使用MID5加密算法加密算法p如何防止窮舉登錄?如何防止窮舉登錄?隨機(jī)數(shù)驗(yàn)證方式增加窮舉的代價(jià)隨機(jī)數(shù)驗(yàn)證方式增加窮舉的代價(jià)在在isual Studio中,有專門的控件。中,有專門的控件。p如何防止錯(cuò)誤的輸入?如何防止錯(cuò)誤的輸入?在編程語(yǔ)言的控件中、在編程語(yǔ)言中、在數(shù)據(jù)在編程語(yǔ)言的控件中

15、、在編程語(yǔ)言中、在數(shù)據(jù)庫(kù)中用庫(kù)中用Check進(jìn)行數(shù)據(jù)完整性設(shè)定。進(jìn)行數(shù)據(jù)完整性設(shè)定。2021-10-2425本章要點(diǎn)本章要點(diǎn)q一、詳細(xì)設(shè)計(jì)的概述 q二、界面設(shè)計(jì)二、界面設(shè)計(jì)q三、結(jié)構(gòu)程序設(shè)計(jì)三、結(jié)構(gòu)程序設(shè)計(jì)q四、過(guò)程設(shè)計(jì)工具四、過(guò)程設(shè)計(jì)工具q五、案例講解五、案例講解q六、程序復(fù)雜度度量六、程序復(fù)雜度度量2021-10-2426程序復(fù)雜度度量程序復(fù)雜度度量n 經(jīng)過(guò)詳細(xì)設(shè)計(jì)之后每個(gè)模塊的內(nèi)容都非常具體了,經(jīng)過(guò)詳細(xì)設(shè)計(jì)之后每個(gè)模塊的內(nèi)容都非常具體了,人們希望能夠定量度量軟件人們希望能夠定量度量軟件的性質(zhì)。的性質(zhì)。n 定量度量程序復(fù)雜程度的價(jià)值定量度量程序復(fù)雜程度的價(jià)值: (1) (1) 把程序的復(fù)雜

16、程度乘以適當(dāng)常數(shù)即可估算出把程序的復(fù)雜程度乘以適當(dāng)常數(shù)即可估算出軟件中錯(cuò)誤的數(shù)量以及軟件開(kāi)發(fā)需要用的工作量;軟件中錯(cuò)誤的數(shù)量以及軟件開(kāi)發(fā)需要用的工作量; (2) (2) 定量度量的結(jié)果可以用來(lái)比較兩個(gè)不同的設(shè)定量度量的結(jié)果可以用來(lái)比較兩個(gè)不同的設(shè)計(jì)或兩個(gè)不同算法的優(yōu)劣;計(jì)或兩個(gè)不同算法的優(yōu)劣; (3) (3) 程序的定量的復(fù)雜程度可以作為模塊規(guī)模的程序的定量的復(fù)雜程度可以作為模塊規(guī)模的精確限度。精確限度。2021-10-2427n 程序復(fù)雜性程序復(fù)雜性?n 主要指主要指模塊內(nèi)程序的復(fù)雜性模塊內(nèi)程序的復(fù)雜性。它直接關(guān)聯(lián)到。它直接關(guān)聯(lián)到軟件開(kāi)發(fā)費(fèi)用的多少,開(kāi)發(fā)周期的長(zhǎng)短和軟軟件開(kāi)發(fā)費(fèi)用的多少,開(kāi)發(fā)

17、周期的長(zhǎng)短和軟件內(nèi)部潛伏錯(cuò)誤的多少。件內(nèi)部潛伏錯(cuò)誤的多少。n 減少程序復(fù)雜性,可提高軟件的簡(jiǎn)單性和可減少程序復(fù)雜性,可提高軟件的簡(jiǎn)單性和可理解性,并使軟件開(kāi)發(fā)費(fèi)用減少,開(kāi)發(fā)周期理解性,并使軟件開(kāi)發(fā)費(fèi)用減少,開(kāi)發(fā)周期縮短,軟件內(nèi)部潛藏錯(cuò)誤減少??s短,軟件內(nèi)部潛藏錯(cuò)誤減少。程序復(fù)雜度度量程序復(fù)雜度度量2021-10-2428為了度量程序復(fù)雜性,要求復(fù)雜性度為了度量程序復(fù)雜性,要求復(fù)雜性度量應(yīng)滿足以下假設(shè):量應(yīng)滿足以下假設(shè): 對(duì)于不合理的程序,例如對(duì)于長(zhǎng)度動(dòng)態(tài)增對(duì)于不合理的程序,例如對(duì)于長(zhǎng)度動(dòng)態(tài)增長(zhǎng)的程序,或者對(duì)于原則上無(wú)法排錯(cuò)的程序,長(zhǎng)的程序,或者對(duì)于原則上無(wú)法排錯(cuò)的程序,不應(yīng)當(dāng)使用它進(jìn)行復(fù)雜性計(jì)

18、算;不應(yīng)當(dāng)使用它進(jìn)行復(fù)雜性計(jì)算; 它可以用來(lái)計(jì)算任何一個(gè)程序的復(fù)雜性;它可以用來(lái)計(jì)算任何一個(gè)程序的復(fù)雜性; 如果程序中指令條數(shù)、附加存儲(chǔ)量、如果程序中指令條數(shù)、附加存儲(chǔ)量、計(jì)算時(shí)間增多,不會(huì)減少程序的復(fù)雜性。計(jì)算時(shí)間增多,不會(huì)減少程序的復(fù)雜性。程序復(fù)雜度度量程序復(fù)雜度度量2021-10-2429程序復(fù)雜度度量程序復(fù)雜度度量1 代碼行代碼行2 McCode2 McCode方法方法3 Halstead3 Halstead方法方法2021-10-24301 1、代碼行度量法:、代碼行度量法: 統(tǒng)計(jì)程序中的源代碼的行數(shù)統(tǒng)計(jì)程序中的源代碼的行數(shù)較小的程序較小的程序 -1.3%1.3%1.8%/1.8%/

19、行行較大的程序較大的程序 -2.7%2.7%3.2%/3.2%/行行如果設(shè)每行代碼的出錯(cuò)率為每如果設(shè)每行代碼的出錯(cuò)率為每100100行行源程序中源程序中可能的錯(cuò)誤數(shù)目。例如,每行代碼的出錯(cuò)率為可能的錯(cuò)誤數(shù)目。例如,每行代碼的出錯(cuò)率為 1%1%,也就是說(shuō),每,也就是說(shuō),每 100 100 行源程序中就可能有行源程序中就可能有一個(gè)錯(cuò)誤。一個(gè)錯(cuò)誤。程序復(fù)雜度度量程序復(fù)雜度度量存在問(wèn)題:程序的復(fù)雜性與語(yǔ)句行數(shù)并非呈線性增長(zhǎng)。存在問(wèn)題:程序的復(fù)雜性與語(yǔ)句行數(shù)并非呈線性增長(zhǎng)。評(píng)價(jià)缺乏準(zhǔn)確性。評(píng)價(jià)缺乏準(zhǔn)確性。2021-10-24312、環(huán)形復(fù)雜度、環(huán)形復(fù)雜度-McCode方法n McCabe方法根據(jù)程序控制

20、流的復(fù)雜程度定量方法根據(jù)程序控制流的復(fù)雜程度定量度量程序的復(fù)雜程度,這樣度量出的結(jié)果稱為度量程序的復(fù)雜程度,這樣度量出的結(jié)果稱為程序的環(huán)形復(fù)雜度。程序的環(huán)形復(fù)雜度。n 流圖流圖: n 為了突出表示程序的控制流,人們通常使用流為了突出表示程序的控制流,人們通常使用流圖圖(也稱為程序圖也稱為程序圖)。所謂流圖實(shí)質(zhì)上是。所謂流圖實(shí)質(zhì)上是“退化退化了的了的”程序流程圖,它僅僅描繪程序的控制流程序流程圖,它僅僅描繪程序的控制流程,完全不表現(xiàn)對(duì)數(shù)據(jù)的具體操作以及分支或程,完全不表現(xiàn)對(duì)數(shù)據(jù)的具體操作以及分支或循環(huán)的具體條件。循環(huán)的具體條件。程序復(fù)雜度度量程序復(fù)雜度度量2021-10-24322、環(huán)形復(fù)雜度、

21、環(huán)形復(fù)雜度-McCode方法n 在流圖中用圓表示結(jié)點(diǎn),一個(gè)圓代表一條或多條語(yǔ)句。在流圖中用圓表示結(jié)點(diǎn),一個(gè)圓代表一條或多條語(yǔ)句。n 程序流程圖中的一個(gè)順序的處理框序列和一個(gè)菱形判程序流程圖中的一個(gè)順序的處理框序列和一個(gè)菱形判定框,可以映射成流圖中的一個(gè)結(jié)點(diǎn)。定框,可以映射成流圖中的一個(gè)結(jié)點(diǎn)。n 流圖中的箭頭線稱為邊,它和程序流程圖中的箭頭線流圖中的箭頭線稱為邊,它和程序流程圖中的箭頭線類似,代表控制流。類似,代表控制流。n 在流圖中一條邊必須終止于一個(gè)結(jié)點(diǎn),即使這個(gè)結(jié)點(diǎn)在流圖中一條邊必須終止于一個(gè)結(jié)點(diǎn),即使這個(gè)結(jié)點(diǎn)并不代表任何語(yǔ)句并不代表任何語(yǔ)句(實(shí)際上相當(dāng)于一個(gè)空語(yǔ)句實(shí)際上相當(dāng)于一個(gè)空語(yǔ)句)

22、。n 由邊和結(jié)點(diǎn)圍成的面積稱為區(qū)域,當(dāng)計(jì)算區(qū)域數(shù)時(shí)應(yīng)由邊和結(jié)點(diǎn)圍成的面積稱為區(qū)域,當(dāng)計(jì)算區(qū)域數(shù)時(shí)應(yīng)該包括圖外部未被圍起來(lái)的那個(gè)區(qū)域。該包括圖外部未被圍起來(lái)的那個(gè)區(qū)域。程序復(fù)雜度度量程序復(fù)雜度度量2021-10-2433程序圖符號(hào)程序圖符號(hào)程序復(fù)雜度度量程序復(fù)雜度度量2、環(huán)形復(fù)雜度、環(huán)形復(fù)雜度-McCode方法2021-10-2434程序復(fù)雜度度量程序復(fù)雜度度量2、環(huán)形復(fù)雜度、環(huán)形復(fù)雜度-McCode方法2021-10-2435程序復(fù)雜度度量程序復(fù)雜度度量n 由程序流程圖導(dǎo)出程序圖TOTAL=TOTAL+AK+輸入輸入A輸出輸出K, L, TOTAL停止停止T開(kāi)始開(kāi)始K=0L=0TOTAL=0輸

23、入輸入ADo While TOTAL0TL+Fa(開(kāi)始)(開(kāi)始)b(入口)(入口)cdefghij(出口)(出口)k(停止)(停止)導(dǎo)導(dǎo)出出2、環(huán)形復(fù)雜度、環(huán)形復(fù)雜度-McCode方法2021-10-2436計(jì)算環(huán)形復(fù)雜度計(jì)算環(huán)形復(fù)雜度V(G)V(G)的方法的方法 環(huán)形復(fù)雜度定量度量程序的環(huán)形復(fù)雜度定量度量程序的邏輯復(fù)雜度。有了描繪程序控制邏輯復(fù)雜度。有了描繪程序控制流的流圖流的流圖G G之后,可以用下述之后,可以用下述3 3種種方法中的任何一種來(lái)計(jì)算環(huán)形復(fù)方法中的任何一種來(lái)計(jì)算環(huán)形復(fù)雜度。雜度。(1) (1) 流圖中的區(qū)域數(shù)等于環(huán)形復(fù)流圖中的區(qū)域數(shù)等于環(huán)形復(fù)雜度雜度區(qū)域:區(qū)域:由邊和結(jié)點(diǎn)圍由

24、邊和結(jié)點(diǎn)圍成的面積稱為區(qū)域,成的面積稱為區(qū)域,當(dāng)計(jì)算區(qū)域數(shù)時(shí)應(yīng)該當(dāng)計(jì)算區(qū)域數(shù)時(shí)應(yīng)該包括圖外部未被圍起包括圖外部未被圍起來(lái)的那個(gè)區(qū)域。來(lái)的那個(gè)區(qū)域。V(G) = 42021-10-2437(2) 流圖G的環(huán)形復(fù)雜度V(G)= E N + 2 其中,E是流圖中邊的條數(shù),N是結(jié)點(diǎn)數(shù)。(3) 流圖G的環(huán)形復(fù)雜度V(G)= P + 1 其中,P是流圖中判定結(jié)點(diǎn)的數(shù)目。計(jì)算環(huán)形復(fù)雜度計(jì)算環(huán)形復(fù)雜度V(G)V(G)的方法的方法V(G) = 42021-10-2438程序復(fù)雜度度量程序復(fù)雜度度量n McCode方法方法n 實(shí)例計(jì)算實(shí)例計(jì)算a(開(kāi)始)(開(kāi)始)b(入口)(入口)cdefghij(出口)(出口)k(

25、停止)(停止)31911V(G)2021-10-2439程序復(fù)雜度度量程序復(fù)雜度度量n 計(jì)算環(huán)形復(fù)雜度小結(jié)n 可以用下列任何一種方法計(jì)算環(huán)形復(fù)雜度1、流圖中的區(qū)域數(shù)等于環(huán)形復(fù)雜度2、流圖G的環(huán)形復(fù)雜度V(G)=E-N+2,其中,E是流圖中邊的條數(shù),N是結(jié)點(diǎn)數(shù)。3、流圖G的環(huán)形復(fù)雜度V(G)=P+1,其中,P是流圖中判定結(jié)點(diǎn)的數(shù)目。2021-10-2440startpABQendFFT課堂練習(xí):計(jì)算課堂練習(xí):計(jì)算它的它的McCabe復(fù)雜復(fù)雜性度量。性度量。2021-10-2441n n=6n m=7n v(G)=m-n+2=3n 答答 McCabe復(fù)雜性度量都為復(fù)雜性度量都為3 2021-10-

26、24422、環(huán)形復(fù)雜度、環(huán)形復(fù)雜度-McCode方法環(huán)形復(fù)雜度的用途環(huán)形復(fù)雜度的用途n 程序的環(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è)。n 實(shí)踐表明,模塊規(guī)模以V(G)10為宜,也就是說(shuō),V(G)10是模塊規(guī)模的一個(gè)更科學(xué)更精確的上限。 程序復(fù)雜度度量程序復(fù)雜度度量2021-10-2443n Halstead方法又稱為文本復(fù)雜性度量又稱為文本復(fù)雜性度量方法方法, ,是另一個(gè)著名的方法,它根據(jù)程序中運(yùn)算符和操作數(shù)的總數(shù)來(lái)度量程序的復(fù)雜程度。令令:

27、 N1: N1為程序中運(yùn)算符出現(xiàn)的總次數(shù),為程序中運(yùn)算符出現(xiàn)的總次數(shù),N2N2為操作數(shù)出現(xiàn)的總次數(shù),為操作數(shù)出現(xiàn)的總次數(shù),程序?qū)嶋H長(zhǎng)度程序?qū)嶋H長(zhǎng)度N N定定義為:義為: N = N1 + N2N = N1 + N23、Halstead方法方法程序復(fù)雜度度量程序復(fù)雜度度量2021-10-2444詳細(xì)設(shè)計(jì)完成之后,可以知道程序中使用的詳細(xì)設(shè)計(jì)完成之后,可以知道程序中使用的不同運(yùn)算符不同運(yùn)算符( (包括關(guān)鍵字包括關(guān)鍵字) )的個(gè)數(shù)的個(gè)數(shù)n1n1,以及不,以及不同操作數(shù)同操作數(shù)( (變量和常數(shù)變量和常數(shù)) )的個(gè)數(shù)的個(gè)數(shù)n2n2。HalsteadHalstead給出給出預(yù)測(cè)程序長(zhǎng)度預(yù)測(cè)程序長(zhǎng)度H H的

28、公式如下:的公式如下: H = n1 logH = n1 log2 2 n1 + n2 log n1 + n2 log2 2 n2 n2程序復(fù)雜度度量程序復(fù)雜度度量3、Halstead方法方法2021-10-2445n 經(jīng)過(guò)多次驗(yàn)證,預(yù)測(cè)的經(jīng)過(guò)多次驗(yàn)證,預(yù)測(cè)的Halstead長(zhǎng)度與實(shí)長(zhǎng)度與實(shí)際的際的Halstead長(zhǎng)度是非常接近的。長(zhǎng)度是非常接近的。3、Halstead方法方法程序復(fù)雜度度量程序復(fù)雜度度量2021-10-2446程序的潛在錯(cuò)誤程序的潛在錯(cuò)誤HalsteadHalstead度量還可以用來(lái)預(yù)測(cè)程序中可能存在的錯(cuò)度量還可以用來(lái)預(yù)測(cè)程序中可能存在的錯(cuò)誤誤E E。預(yù)測(cè)公式為。預(yù)測(cè)公式為

29、E E = ( = (N N1+1+N N2)2) log2(log2(n n1+1+n n2) / 30002) / 3000例如,一個(gè)程序?qū)?,一個(gè)程序?qū)?575個(gè)數(shù)據(jù)庫(kù)項(xiàng)共訪問(wèn)個(gè)數(shù)據(jù)庫(kù)項(xiàng)共訪問(wèn)13001300次,次,對(duì)對(duì)150150個(gè)運(yùn)算符共使用了個(gè)運(yùn)算符共使用了12001200次,那么預(yù)測(cè)該程次,那么預(yù)測(cè)該程序的錯(cuò)誤數(shù):序的錯(cuò)誤數(shù): E E = (1200+1300)= (1200+1300) log2(75+150)/3000 log2(75+150)/3000 6.56.5 即預(yù)測(cè)該程序中可能包含即預(yù)測(cè)該程序中可能包含6 67 7個(gè)錯(cuò)誤個(gè)錯(cuò)誤3、Halstead方法方法程序復(fù)雜度

30、度量程序復(fù)雜度度量2021-10-2447有人曾對(duì)從有人曾對(duì)從300300條到條到1200012000條語(yǔ)句范圍內(nèi)的程序核實(shí)了上條語(yǔ)句范圍內(nèi)的程序核實(shí)了上述公式,發(fā)現(xiàn)預(yù)測(cè)的錯(cuò)誤數(shù)與實(shí)際錯(cuò)誤數(shù)相比誤差在述公式,發(fā)現(xiàn)預(yù)測(cè)的錯(cuò)誤數(shù)與實(shí)際錯(cuò)誤數(shù)相比誤差在8%8%之內(nèi)。之內(nèi)。3、Halstead方法方法程序的潛在錯(cuò)誤程序的潛在錯(cuò)誤程序復(fù)雜度度量程序復(fù)雜度度量2021-10-2448小結(jié)小結(jié)n 學(xué)生的掌握情況學(xué)生的掌握情況n計(jì)算機(jī)系的學(xué)生熟悉常用的數(shù)據(jù)結(jié)構(gòu)與算法,但是很計(jì)算機(jī)系的學(xué)生熟悉常用的數(shù)據(jù)結(jié)構(gòu)與算法,但是很多學(xué)生沒(méi)有學(xué)過(guò)多學(xué)生沒(méi)有學(xué)過(guò)“科學(xué)計(jì)算算法科學(xué)計(jì)算算法”,面對(duì)具有數(shù)學(xué)難,面對(duì)具有數(shù)學(xué)難度的軟件,根本無(wú)從下手。度的軟件,根本無(wú)從下手。n測(cè)試這樣的小題目:請(qǐng)編寫浮點(diǎn)變量測(cè)試這樣的小題目:請(qǐng)編寫浮點(diǎn)變量x x與零值比較的與零值比較的ifif語(yǔ)句,竟然有語(yǔ)句,竟然有5050以上的程序員這樣寫以上的程序員這樣寫if(x=0)if(x=0) DoSomething(); DoSomething(); 他們根本沒(méi)有意識(shí)到浮點(diǎn)變量有精度限制,他們根本沒(méi)有意識(shí)到浮點(diǎn)變量有精度限制,x x不能不能用用“=”=”或者或者“!=”!=”直接與數(shù)值比較。很多程序員在直接與數(shù)值比較。很多程序員在

溫馨提示

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