




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、6.3 過(guò)程設(shè)計(jì)的工具過(guò)程設(shè)計(jì)的工具 過(guò)程設(shè)計(jì)工具過(guò)程設(shè)計(jì)工具 n過(guò)程設(shè)計(jì)的任務(wù):在使用程序設(shè)計(jì)語(yǔ)言編制過(guò)程設(shè)計(jì)的任務(wù):在使用程序設(shè)計(jì)語(yǔ)言編制 程序以前,需要對(duì)所采用算法的邏輯關(guān)系進(jìn)程序以前,需要對(duì)所采用算法的邏輯關(guān)系進(jìn) 行分析,設(shè)計(jì)出全部必要的過(guò)程細(xì)節(jié),并給行分析,設(shè)計(jì)出全部必要的過(guò)程細(xì)節(jié),并給 予清晰的表達(dá)。予清晰的表達(dá)。 圖形工具圖形工具 表格工具表格工具 語(yǔ)言工具語(yǔ)言工具 6.3.1 程序流程圖程序流程圖 程序流程圖中常用的符號(hào)程序流程圖中常用的符號(hào) 起止端點(diǎn) 數(shù)據(jù) 處理 準(zhǔn)備或預(yù)處理 預(yù)先定義的處理 條件判斷 循環(huán)上界限 循環(huán)下界限 文檔 流線 虛線 省略符 并行方式 注釋 也稱為程
2、序框圖,是歷史最悠久、使用最廣泛,也稱為程序框圖,是歷史最悠久、使用最廣泛, 獨(dú)立于任何一種程序設(shè)計(jì)語(yǔ)言。獨(dú)立于任何一種程序設(shè)計(jì)語(yǔ)言。 優(yōu)點(diǎn):對(duì)控制流程的描繪較直觀,便于掌握。優(yōu)點(diǎn):對(duì)控制流程的描繪較直觀,便于掌握。 1 1、循環(huán)符號(hào)的使用、循環(huán)符號(hào)的使用 循環(huán)名 進(jìn)入循環(huán)條件 循環(huán)體 循環(huán)名 S=S+i S=0 S=S+i S=0,i=1 i=i+1 循環(huán)體循環(huán)體 A=B AB x=1 x=2 x=3 x=4 =1 =2 =3 =4 =5 2 2、多出口判斷流程符號(hào)的使用、多出口判斷流程符號(hào)的使用 請(qǐng)利用程序流程圖描述下列問(wèn)題的程序結(jié)構(gòu) 某汽車修配廠,有一個(gè)存有汽車零件的 倉(cāng)庫(kù),其中存有若干
3、種零件,請(qǐng)編寫一個(gè)查 詢程序,用于查詢?cè)搸?kù)中某零件的庫(kù)存量為 多少。 設(shè)該模塊為查詢模塊。請(qǐng)?jiān)O(shè)計(jì)該模塊的 程序結(jié)構(gòu)。具體要求: 1、應(yīng)具有重復(fù)查詢功能; 2、應(yīng)具有數(shù)據(jù)檢測(cè)功能; 3、請(qǐng)利用程序流程圖描述該模塊的算法。 零件號(hào)零件號(hào)10001 10002 10003 10004 10005 10006 庫(kù)存量庫(kù)存量100012508866920203450 i+ i=0 開(kāi)始 輸入零件庫(kù)存輸入零件庫(kù)存 S 數(shù)組數(shù)組 輸入零件號(hào)X 輸出S0i和S1i Y F 提示輸入錯(cuò)誤 結(jié)束 程序流程圖的程序流程圖的隨意性和靈活性隨意性和靈活性使它存使它存 在一些缺點(diǎn):在一些缺點(diǎn): (1)并不是逐步求精的好工
4、具:誘使程序)并不是逐步求精的好工具:誘使程序 員過(guò)早地考慮程序的具體控制流程,而忽略了程員過(guò)早地考慮程序的具體控制流程,而忽略了程 序的全局結(jié)構(gòu);序的全局結(jié)構(gòu); (2)用箭頭代表控制流,這樣使得程序員)用箭頭代表控制流,這樣使得程序員 不受任何約束,可以完全不顧結(jié)構(gòu)程序設(shè)計(jì)的精不受任何約束,可以完全不顧結(jié)構(gòu)程序設(shè)計(jì)的精 神,隨意轉(zhuǎn)移控制;神,隨意轉(zhuǎn)移控制; (3)程序流程圖在表示數(shù)據(jù)結(jié)構(gòu)方面存在)程序流程圖在表示數(shù)據(jù)結(jié)構(gòu)方面存在 不足。不足。 6.3.2 盒圖(盒圖(N-S圖)圖) 不允許違背結(jié)構(gòu)程序設(shè)計(jì)精神的圖形工不允許違背結(jié)構(gòu)程序設(shè)計(jì)精神的圖形工 具。它有下述特點(diǎn):具。它有下述特點(diǎn): (
5、1) 功能域功能域(即,一個(gè)特定控制結(jié)構(gòu)的作即,一個(gè)特定控制結(jié)構(gòu)的作 用域用域)明確,可以從盒圖上一眼就看出來(lái)。明確,可以從盒圖上一眼就看出來(lái)。 (2) 不可能任意轉(zhuǎn)移控制。不可能任意轉(zhuǎn)移控制。 (3) 很容易確定局部和全程數(shù)據(jù)的作用很容易確定局部和全程數(shù)據(jù)的作用 域。域。 (4) 很容易表現(xiàn)嵌套關(guān)系,也可以表示很容易表現(xiàn)嵌套關(guān)系,也可以表示 模塊的層次結(jié)構(gòu)。模塊的層次結(jié)構(gòu)。 值 1 Case1 部分 Case條件 第一個(gè)任務(wù) 第二個(gè)任務(wù) 第三個(gè)任務(wù) (a) 順序結(jié)構(gòu) F 條件 T ELSE 部分 THEN 部分 (b) 選擇結(jié)構(gòu) (c) 多分支結(jié)構(gòu) 循環(huán)條件 DO_WHILE 部分 循環(huán)條件
6、 DO_UNTIL 部分 (d) 循環(huán)結(jié)構(gòu) A (e) 調(diào)用子程序 A 值 2 Case2 部分 值 n Casen 部分 N-S圖的基本符號(hào) 請(qǐng)利用N-S描述下列問(wèn)題的程序結(jié)構(gòu) 某汽車修配廠,有一個(gè)存有汽車零件的 倉(cāng)庫(kù),其中存有若干種零件,請(qǐng)編寫一個(gè)查 詢程序,用于查詢?cè)搸?kù)中某零件的庫(kù)存量為 多少。 設(shè)該模塊為查詢模塊。請(qǐng)?jiān)O(shè)計(jì)該模塊的 程序結(jié)構(gòu)。具體要求: 1、應(yīng)具有重復(fù)查詢功能; 2、應(yīng)具有數(shù)據(jù)檢測(cè)功能; 3、請(qǐng)利用N-S圖描述該模塊的算法。 零件號(hào)零件號(hào)100011000210003100041000510006 庫(kù)存量庫(kù)存量100012508866920203450 建立零件庫(kù)建立零件
7、庫(kù) (s數(shù)組數(shù)組), i=0 輸入零件號(hào)輸入零件號(hào) x do while(x!=s0i) i+ i+x=s0i) Y N s0i 輸出輸出 s1i 輸入錯(cuò)誤輸入錯(cuò)誤! ! 繼續(xù)查詢繼續(xù)查詢? Y N 跳出循環(huán)跳出循環(huán) n問(wèn)題分析圖(問(wèn)題分析圖(Problem Analysis Diagram) 采用二維樹形結(jié)構(gòu)圖表示程序的控制流。采用二維樹形結(jié)構(gòu)圖表示程序的控制流。 6.3.3 PAD圖圖 A B (a)順序結(jié)構(gòu)順序結(jié)構(gòu) A B P (b)選擇結(jié)構(gòu)選擇結(jié)構(gòu) PAD圖的基本符號(hào) WHILE P S UNTIL P S (c) WHILE型循環(huán)結(jié)構(gòu)型循環(huán)結(jié)構(gòu) (d) UNTIL型循環(huán)結(jié)構(gòu)型循環(huán)結(jié)構(gòu)
8、 A1 A2 P= An P1 P2 Pn (e) 多分支結(jié)構(gòu) (f)語(yǔ)句標(biāo)號(hào)語(yǔ)句標(biāo)號(hào) (g)定義定義 s17s22=0 while num(1-1000) 輸入輸入 age s17+ s18+ s19+ s20+ s21+ s22+ while i(17-22) 輸出輸出 si begin end PAD圖的主要優(yōu)點(diǎn)如下: ( (1) 1) 使用表示結(jié)構(gòu)化控制結(jié)構(gòu)的使用表示結(jié)構(gòu)化控制結(jié)構(gòu)的PADPAD符號(hào)所設(shè)符號(hào)所設(shè) 計(jì)出來(lái)的程序必然是結(jié)構(gòu)化程序。計(jì)出來(lái)的程序必然是結(jié)構(gòu)化程序。 (2) PAD(2) PAD圖所描繪的程序結(jié)構(gòu)十分清晰,圖中圖所描繪的程序結(jié)構(gòu)十分清晰,圖中 豎線的總條數(shù)就是程序
9、的層次數(shù)。豎線的總條數(shù)就是程序的層次數(shù)。 (3) (3) 用用PADPAD圖二維樹形結(jié)構(gòu)表現(xiàn)程序邏輯易讀、圖二維樹形結(jié)構(gòu)表現(xiàn)程序邏輯易讀、 易懂。程序從圖中最左豎線上端的結(jié)點(diǎn)開(kāi)始易懂。程序從圖中最左豎線上端的結(jié)點(diǎn)開(kāi)始 執(zhí)行,自上而下,從左向右順序執(zhí)行,遍歷執(zhí)行,自上而下,從左向右順序執(zhí)行,遍歷 所有結(jié)點(diǎn)。所有結(jié)點(diǎn)。 (4) 容易將容易將PAD圖轉(zhuǎn)換成高級(jí)語(yǔ)言源程序,這圖轉(zhuǎn)換成高級(jí)語(yǔ)言源程序,這 種轉(zhuǎn)換可用軟件工具自動(dòng)完成,有利于提高種轉(zhuǎn)換可用軟件工具自動(dòng)完成,有利于提高 軟件可靠性和軟件生產(chǎn)率。軟件可靠性和軟件生產(chǎn)率。 (5) 既可用于表示程序邏輯,也可用于描繪數(shù)既可用于表示程序邏輯,也可用于
10、描繪數(shù) 據(jù)結(jié)構(gòu)。據(jù)結(jié)構(gòu)。 (6) 支持逐步求精方法的使用。開(kāi)始時(shí)設(shè)計(jì)者支持逐步求精方法的使用。開(kāi)始時(shí)設(shè)計(jì)者 可以定義一個(gè)抽象的程序,使用可以定義一個(gè)抽象的程序,使用def符號(hào)逐符號(hào)逐 步增加細(xì)節(jié),直至完成詳細(xì)設(shè)計(jì)。步增加細(xì)節(jié),直至完成詳細(xì)設(shè)計(jì)。 圖6.6 使用PAD圖提供的定義功能 來(lái)逐步求精的例子 建立判定表的步驟建立判定表的步驟 n左上部左上部:過(guò)程執(zhí)行期間的所有條件:過(guò)程執(zhí)行期間的所有條件(或所有判或所有判 斷斷)。 n左下部左下部:與一個(gè)具體過(guò)程:與一個(gè)具體過(guò)程(或模塊或模塊)有關(guān)的所有有關(guān)的所有 處理。處理。 n右上部:各種可能的條件組合右上部:各種可能的條件組合。 n右下部:每一種
11、條件組合所對(duì)應(yīng)的應(yīng)做的工作右下部:每一種條件組合所對(duì)應(yīng)的應(yīng)做的工作。 6.3.4 判定表判定表 假設(shè)某航空公司規(guī)定,乘客可以免費(fèi)托運(yùn)重量假設(shè)某航空公司規(guī)定,乘客可以免費(fèi)托運(yùn)重量 不超過(guò)不超過(guò)30kg的行李。當(dāng)行李重量超過(guò)的行李。當(dāng)行李重量超過(guò)30kg時(shí),時(shí), 對(duì)頭等艙的國(guó)內(nèi)乘客超重部分每公斤收費(fèi)對(duì)頭等艙的國(guó)內(nèi)乘客超重部分每公斤收費(fèi)4元,元, 對(duì)其他艙的國(guó)內(nèi)乘客超重部分每公斤收費(fèi)對(duì)其他艙的國(guó)內(nèi)乘客超重部分每公斤收費(fèi)6元,元, 對(duì)外國(guó)乘客超重部分每公斤收費(fèi)比國(guó)內(nèi)乘客多對(duì)外國(guó)乘客超重部分每公斤收費(fèi)比國(guó)內(nèi)乘客多 一倍,對(duì)殘疾乘客超重部分每公斤收費(fèi)比正常一倍,對(duì)殘疾乘客超重部分每公斤收費(fèi)比正常 乘客少一
12、半。用判定表可以清楚地表示與上述乘客少一半。用判定表可以清楚地表示與上述 每種條件組合相對(duì)應(yīng)的計(jì)算行李費(fèi)的算法,如每種條件組合相對(duì)應(yīng)的計(jì)算行李費(fèi)的算法,如 表表6.1所示。所示。 下面以行李托運(yùn)費(fèi)的算法為例:下面以行李托運(yùn)費(fèi)的算法為例: 用判定表表示計(jì)算行李費(fèi)的算法用判定表表示計(jì)算行李費(fèi)的算法 所有條件所有條件 所有可能做的動(dòng)作所有可能做的動(dòng)作 表示做它左 邊那項(xiàng)動(dòng)作 表示左邊那 個(gè)條件成立 表示條件成立 與否不影響對(duì) 動(dòng)作的選擇 n當(dāng)算法中包含多重嵌套的條件選擇時(shí),用判定表可以當(dāng)算法中包含多重嵌套的條件選擇時(shí),用判定表可以 清晰地表示復(fù)雜的條件組合與應(yīng)做的動(dòng)作之間的對(duì)應(yīng)清晰地表示復(fù)雜的條件組
13、合與應(yīng)做的動(dòng)作之間的對(duì)應(yīng) 關(guān)系。關(guān)系。 判定表不適于作為判定表不適于作為 一種通用的設(shè)計(jì)工具,沒(méi)有一種簡(jiǎn)單的方法使它能同一種通用的設(shè)計(jì)工具,沒(méi)有一種簡(jiǎn)單的方法使它能同 時(shí)清晰地表示順序和重復(fù)等處理特性。時(shí)清晰地表示順序和重復(fù)等處理特性。 n是判定表的變種,也能清晰地表示復(fù)雜是判定表的變種,也能清晰地表示復(fù)雜 的條件組合與應(yīng)做的動(dòng)作之間的對(duì)應(yīng)關(guān)的條件組合與應(yīng)做的動(dòng)作之間的對(duì)應(yīng)關(guān) 系。系。 n形式簡(jiǎn)單,易于掌握和使用。形式簡(jiǎn)單,易于掌握和使用。 n分支的次序可能對(duì)最終的判定樹的簡(jiǎn)潔分支的次序可能對(duì)最終的判定樹的簡(jiǎn)潔 程度有較大的影響。程度有較大的影響。 6.3.5 判定樹判定樹 用判定樹計(jì)算行李費(fèi)
14、的算法用判定樹計(jì)算行李費(fèi)的算法 某校制定了教師的講課課時(shí)津貼標(biāo)準(zhǔn)。對(duì)于各某校制定了教師的講課課時(shí)津貼標(biāo)準(zhǔn)。對(duì)于各 種性質(zhì)的講座,無(wú)論教師是什么職稱,每課時(shí)津貼種性質(zhì)的講座,無(wú)論教師是什么職稱,每課時(shí)津貼 費(fèi)一律是費(fèi)一律是50元;而對(duì)于一般的授課,則根據(jù)教師的元;而對(duì)于一般的授課,則根據(jù)教師的 職稱來(lái)決定每課時(shí)津貼費(fèi):教授職稱來(lái)決定每課時(shí)津貼費(fèi):教授30元,副教授元,副教授25 元,講師元,講師20元,助教元,助教15元。元。 用判定表和判定樹表示課時(shí)費(fèi)的計(jì)算方法。用判定表和判定樹表示課時(shí)費(fèi)的計(jì)算方法。 12345 教授 TFFF 副教授 FTFF 講師 FFTF 助教 FFFT 講座TFFFF
15、 50 30 25 20 15 教師課時(shí)津貼判定樹 課時(shí)津貼 一般授課 講座 教授 副教授 講師 助教 30 25 20 15 50 是一種用于描述功能模塊的算法設(shè)計(jì)和是一種用于描述功能模塊的算法設(shè)計(jì)和 加工細(xì)節(jié)的語(yǔ)言,使用自然語(yǔ)言的詞匯,同時(shí)加工細(xì)節(jié)的語(yǔ)言,使用自然語(yǔ)言的詞匯,同時(shí) 使用程序設(shè)計(jì)語(yǔ)言的語(yǔ)法,稱為設(shè)計(jì)程序用語(yǔ)使用程序設(shè)計(jì)語(yǔ)言的語(yǔ)法,稱為設(shè)計(jì)程序用語(yǔ) 言。它是一種偽代碼言。它是一種偽代碼(Pseudo code) -關(guān)鍵詞關(guān)鍵詞+自然語(yǔ)言自然語(yǔ)言 偽代碼偽代碼-文字形式的表達(dá)工具,不能在計(jì)算機(jī)上執(zhí)行,文字形式的表達(dá)工具,不能在計(jì)算機(jī)上執(zhí)行, 但形式上與代碼相似。用它來(lái)描述程序的結(jié)
16、構(gòu),工作量但形式上與代碼相似。用它來(lái)描述程序的結(jié)構(gòu),工作量 要比畫圖小,又比較容易轉(zhuǎn)換真正的代碼。要比畫圖小,又比較容易轉(zhuǎn)換真正的代碼。 6.3.6 過(guò)程設(shè)計(jì)語(yǔ)言過(guò)程設(shè)計(jì)語(yǔ)言 結(jié)構(gòu)化語(yǔ)言的結(jié)構(gòu)分為外層和內(nèi)層:結(jié)構(gòu)化語(yǔ)言的結(jié)構(gòu)分為外層和內(nèi)層: n外層:外層: 具有嚴(yán)格的關(guān)鍵字外語(yǔ)法,用于定義控制具有嚴(yán)格的關(guān)鍵字外語(yǔ)法,用于定義控制 結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu)。包括有簡(jiǎn)單陳述句、判定和結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu)。包括有簡(jiǎn)單陳述句、判定和 重復(fù)結(jié)構(gòu)等三種。重復(fù)結(jié)構(gòu)等三種。 n內(nèi)層:內(nèi)層: 采用自然語(yǔ)言短語(yǔ)表示實(shí)際操作和條件。采用自然語(yǔ)言短語(yǔ)表示實(shí)際操作和條件。 使用數(shù)據(jù)詞典中定義的名字和有限的自定義詞,使用數(shù)據(jù)詞典中定義的
17、名字和有限的自定義詞, 還可以使用一些簡(jiǎn)單的算術(shù)運(yùn)算和邏輯運(yùn)算符還可以使用一些簡(jiǎn)單的算術(shù)運(yùn)算和邏輯運(yùn)算符 號(hào)。號(hào)。 下面是商店業(yè)務(wù)處理系統(tǒng)中檢 查發(fā)貨單的例子 nIF 發(fā)貨單金額超過(guò)$500 THEN IF 欠款超過(guò)60天 THEN 在償還欠款前不予批準(zhǔn) ELSE (欠款未超期) 發(fā)批準(zhǔn)書及發(fā)貨單 ENDIF ELSE (發(fā)貨單金額未超過(guò)$500) IF 欠款超過(guò)60天 THEN 發(fā)批準(zhǔn)書,發(fā)貨單及催款通知 ELSE (欠款未超期) 發(fā)批準(zhǔn)書及發(fā)貨單 ENDIF ENDIF (1)(1)、數(shù)據(jù)說(shuō)明數(shù)據(jù)說(shuō)明: 格式格式: TYPE AS 其功能是定義數(shù)據(jù)的類型和作用域其功能是定義數(shù)據(jù)的類型和作用
18、域 說(shuō)明:1.變量名:是一個(gè)模塊內(nèi)部使用的變量或模塊間共用 的全局變量名。 2.限定詞1:標(biāo)明數(shù)據(jù)類型 3.限定詞2:標(biāo)明該變量的作用域 TYPEnumberASSTRINGLENGTH(12) (2)(2)、程序塊程序塊: PDL的過(guò)程成分是由塊結(jié)構(gòu)構(gòu)成的,而塊將作為的過(guò)程成分是由塊結(jié)構(gòu)構(gòu)成的,而塊將作為 一個(gè)單個(gè)的實(shí)體來(lái)執(zhí)行。一個(gè)單個(gè)的實(shí)體來(lái)執(zhí)行。 BEGIN END (3)(3)、子、子程序結(jié)構(gòu)程序結(jié)構(gòu): 把把 PDL 中的過(guò)程稱為子程序。中的過(guò)程稱為子程序。 PROCEDURE INTERFACE END (4)(4)、基本控制結(jié)構(gòu)、基本控制結(jié)構(gòu): IF THEN ; ELSE ; E
19、NDIF - - 選擇型結(jié)構(gòu)選擇型結(jié)構(gòu) DO WHILE ; ENDDO REPEAT UNTIL ; ENDREP - - 重復(fù)型結(jié)構(gòu)重復(fù)型結(jié)構(gòu) DO LOOP ; EXIT WHEN ENDLOOP DO FOR ; ENDFOR - - 重復(fù)型結(jié)構(gòu)重復(fù)型結(jié)構(gòu) - - 多路選擇結(jié)構(gòu)多路選擇結(jié)構(gòu) CASE OF ; WHEN SELECT ; WHEN SELECT ; DEFAULT: 缺省或錯(cuò)誤缺省或錯(cuò)誤case: ; ENDCASE READ/WRITE TO - - 輸入輸入/ /輸出結(jié)構(gòu)輸出結(jié)構(gòu) PDL語(yǔ)言具有下述優(yōu)點(diǎn):語(yǔ)言具有下述優(yōu)點(diǎn): (1) PDL描述可以直接作為注釋插在源程
20、序描述可以直接作為注釋插在源程序 中,有助于保持文檔和程序的一致性。中,有助于保持文檔和程序的一致性。 (2)用)用PDL寫出的程序,可抽象可具體,易寫出的程序,可抽象可具體,易 實(shí)現(xiàn)自頂向下逐步求精的設(shè)計(jì)原則。實(shí)現(xiàn)自頂向下逐步求精的設(shè)計(jì)原則。 (3)同自然語(yǔ)言很接近易于理解??墒褂闷眨┩匀徽Z(yǔ)言很接近易于理解??墒褂闷?通的文字處理系統(tǒng)完成通的文字處理系統(tǒng)完成PDL的書寫和編輯工作。的書寫和編輯工作。 (4) PDL描述與程序結(jié)構(gòu)相似,可以利用自描述與程序結(jié)構(gòu)相似,可以利用自 動(dòng)處理程序自動(dòng)由動(dòng)處理程序自動(dòng)由PDL生成程序代碼。生成程序代碼。 PDL的缺點(diǎn)是不如圖形描述形象直觀,因此人的缺點(diǎn)
21、是不如圖形描述形象直觀,因此人 們常常將們常常將PDL描述與一種圖形描述結(jié)合起來(lái)使用。描述與一種圖形描述結(jié)合起來(lái)使用。 6.4 面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法 程序復(fù)雜性主要是指模塊內(nèi)部程序的復(fù)雜性程序復(fù)雜性主要是指模塊內(nèi)部程序的復(fù)雜性 。它直接關(guān)系到軟件開(kāi)發(fā)費(fèi)用的多少,開(kāi)發(fā)周期。它直接關(guān)系到軟件開(kāi)發(fā)費(fèi)用的多少,開(kāi)發(fā)周期 的長(zhǎng)短和軟件內(nèi)部潛伏錯(cuò)誤的多少。同時(shí)它也是的長(zhǎng)短和軟件內(nèi)部潛伏錯(cuò)誤的多少。同時(shí)它也是 軟件可理解性的另一種度量。軟件可理解性的另一種度量。 6.5 程序復(fù)雜程度的定量度量 n程序的復(fù)雜程度乘以適當(dāng)常數(shù)即可估算出程序的復(fù)雜程度乘以適當(dāng)常數(shù)即可估算出 軟件中故障的數(shù)
22、量以及軟件開(kāi)發(fā)需要的工軟件中故障的數(shù)量以及軟件開(kāi)發(fā)需要的工 作量。作量。 n可以比較兩個(gè)不同的設(shè)計(jì)和算法的優(yōu)劣??梢员容^兩個(gè)不同的設(shè)計(jì)和算法的優(yōu)劣。 n定量的復(fù)雜程度可作為模塊規(guī)模的精確限定量的復(fù)雜程度可作為模塊規(guī)模的精確限 度。度。 程序復(fù)雜程度定量度量意義:程序復(fù)雜程度定量度量意義: 原理原理: :程序的復(fù)雜性很大程度上取決程序的復(fù)雜性很大程度上取決 于程序控制流的復(fù)雜程度。單一的順序結(jié)于程序控制流的復(fù)雜程度。單一的順序結(jié) 構(gòu)最簡(jiǎn)單,循環(huán)和選擇構(gòu)成的環(huán)路越多,構(gòu)最簡(jiǎn)單,循環(huán)和選擇構(gòu)成的環(huán)路越多, 程序就越復(fù)雜。程序就越復(fù)雜。 6.5.16.5.1、McCabe McCabe 度量法度量法
23、該方法是利用程序模塊的程序圖中環(huán)該方法是利用程序模塊的程序圖中環(huán) 路的個(gè)數(shù),來(lái)計(jì)算程序的復(fù)雜性的。為此路的個(gè)數(shù),來(lái)計(jì)算程序的復(fù)雜性的。為此 ,該方法也稱為環(huán)路復(fù)雜度計(jì)算法。,該方法也稱為環(huán)路復(fù)雜度計(jì)算法。 1. 流圖(程序圖)流圖(程序圖) 一種退化了的程序流程圖。用圓表示結(jié)點(diǎn),一種退化了的程序流程圖。用圓表示結(jié)點(diǎn), 一個(gè)圓代表一條或多條語(yǔ)句。程序流程圖中的一一個(gè)圓代表一條或多條語(yǔ)句。程序流程圖中的一 個(gè)順序的處理框序列和一個(gè)菱形判定框,可以映個(gè)順序的處理框序列和一個(gè)菱形判定框,可以映 射成流圖中的一個(gè)結(jié)點(diǎn)。射成流圖中的一個(gè)結(jié)點(diǎn)。 流圖中的箭頭線稱為邊,它和程序流程圖中流圖中的箭頭線稱為邊,它
24、和程序流程圖中 的箭頭線類似,代表控制流。的箭頭線類似,代表控制流。 在流圖中一條邊必須終止于一個(gè)結(jié)點(diǎn),即使在流圖中一條邊必須終止于一個(gè)結(jié)點(diǎn),即使 這個(gè)結(jié)點(diǎn)并不代表任何語(yǔ)句這個(gè)結(jié)點(diǎn)并不代表任何語(yǔ)句(實(shí)際上相當(dāng)于一個(gè)空實(shí)際上相當(dāng)于一個(gè)空 語(yǔ)句語(yǔ)句)。 由邊和結(jié)點(diǎn)圍成的面積稱為區(qū)域,當(dāng)計(jì)算區(qū)由邊和結(jié)點(diǎn)圍成的面積稱為區(qū)域,當(dāng)計(jì)算區(qū) 域數(shù)時(shí)應(yīng)該包括圖外部未被圍起來(lái)的那個(gè)區(qū)域。域數(shù)時(shí)應(yīng)該包括圖外部未被圍起來(lái)的那個(gè)區(qū)域。 (1)(1)程序圖符號(hào)程序圖符號(hào) T C1 C2 CAB ED (2)(2)從流程圖導(dǎo)出程序圖從流程圖導(dǎo)出程序圖 A 開(kāi)始開(kāi)始 C1 BC ED 結(jié)束結(jié)束 C2 T A B C D E
25、F G H K L J 由點(diǎn)和邊圍成的面積稱為區(qū)域。由點(diǎn)和邊圍成的面積稱為區(qū)域。 圖6.16 由PDL翻譯成的流圖 用任何方法表示的過(guò)程設(shè)計(jì)結(jié)果,都可以翻譯成流圖:用任何方法表示的過(guò)程設(shè)計(jì)結(jié)果,都可以翻譯成流圖: 圖6.17 由包含復(fù)合條件的PDL映射成的流圖 把復(fù)合條件把復(fù)合條件 分解為若干個(gè)簡(jiǎn)分解為若干個(gè)簡(jiǎn) 單條件,每個(gè)簡(jiǎn)單條件,每個(gè)簡(jiǎn) 單條件對(duì)應(yīng)流圖單條件對(duì)應(yīng)流圖 中一個(gè)判定結(jié)點(diǎn)。中一個(gè)判定結(jié)點(diǎn)。 從每個(gè)判定結(jié)點(diǎn)從每個(gè)判定結(jié)點(diǎn) 引出兩條或多條引出兩條或多條 邊。邊。 當(dāng)過(guò)程設(shè)計(jì)中包含復(fù)合條件,即在條件中包含當(dāng)過(guò)程設(shè)計(jì)中包含復(fù)合條件,即在條件中包含 了一個(gè)或多個(gè)布爾運(yùn)算符了一個(gè)或多個(gè)布爾運(yùn)
26、算符(邏輯邏輯OR,AND, NAND,NOR)時(shí):時(shí): 環(huán)形復(fù)雜度定量度量程序的邏輯復(fù)雜度。環(huán)形復(fù)雜度定量度量程序的邏輯復(fù)雜度。 可用下述可用下述3種方法來(lái)計(jì)算環(huán)形復(fù)雜度種方法來(lái)計(jì)算環(huán)形復(fù)雜度: (1) 流圖中的區(qū)域數(shù)等于環(huán)形復(fù)雜度。流圖中的區(qū)域數(shù)等于環(huán)形復(fù)雜度。 (2) 流圖流圖G的環(huán)形復(fù)雜度的環(huán)形復(fù)雜度V(G)=E-N+2,其中,其中, E是流圖中邊的條數(shù),是流圖中邊的條數(shù),N是結(jié)點(diǎn)數(shù)。是結(jié)點(diǎn)數(shù)。 (3) 流圖流圖G的環(huán)形復(fù)雜度的環(huán)形復(fù)雜度V(G)=P+1,其中,其中,P 是流圖中判定結(jié)點(diǎn)的數(shù)目。是流圖中判定結(jié)點(diǎn)的數(shù)目。 2. 計(jì)算環(huán)形復(fù)雜度的方法計(jì)算環(huán)形復(fù)雜度的方法 A B C D E
27、 F G H K L I V(G)=E-N+2 =12-11+2=3 V(G)=P+1=3 當(dāng)程序內(nèi)分支數(shù)或循環(huán)個(gè)數(shù)增加時(shí),環(huán)形復(fù) 雜度也隨之增加,因此它是對(duì)測(cè)試難度的一種定 量度量,也能對(duì)軟件最終的可靠性給出某種預(yù)測(cè)。 3. 環(huán)形復(fù)雜度的用途環(huán)形復(fù)雜度的用途 nMcCabe研究大量程序后發(fā)現(xiàn),環(huán)形復(fù)雜研究大量程序后發(fā)現(xiàn),環(huán)形復(fù)雜 度高的程序往往是最困難、最容易出問(wèn)題度高的程序往往是最困難、最容易出問(wèn)題 的程序。的程序。 n McCabe用實(shí)例證實(shí)了在用實(shí)例證實(shí)了在McCabe復(fù)雜度為復(fù)雜度為 10的附近,存在出錯(cuò)率的間斷躍變。的附近,存在出錯(cuò)率的間斷躍變。他他建建 議,議,對(duì)于復(fù)雜度超過(guò)對(duì)于
28、復(fù)雜度超過(guò)10的程序,應(yīng)分成幾的程序,應(yīng)分成幾 個(gè)小程序,以減少程序中的錯(cuò)誤。個(gè)小程序,以減少程序中的錯(cuò)誤。 用3種方法計(jì)算下圖所示流圖的環(huán)形復(fù)雜度 原理:原理:根據(jù)程序中運(yùn)算符和操作數(shù)的總數(shù)來(lái)度量根據(jù)程序中運(yùn)算符和操作數(shù)的總數(shù)來(lái)度量 程序的復(fù)雜程度。程序的復(fù)雜程度。 n令令N1為運(yùn)算符出現(xiàn)的總次數(shù),為運(yùn)算符出現(xiàn)的總次數(shù),N2為操作數(shù)為操作數(shù) 出現(xiàn)的總次數(shù),程序長(zhǎng)度出現(xiàn)的總次數(shù),程序長(zhǎng)度N定義為:定義為:N=N1+N2 nHalstead給出預(yù)測(cè)程序長(zhǎng)度的公式如下:給出預(yù)測(cè)程序長(zhǎng)度的公式如下: H=n1 log2 n1+n2 log2 n2。 n1為不同運(yùn)算為不同運(yùn)算 符符(包括關(guān)鍵字包括關(guān)鍵
29、字)的個(gè)數(shù),的個(gè)數(shù), n2為不同操作數(shù)為不同操作數(shù)(變量變量 和常數(shù)和常數(shù))的個(gè)數(shù)。的個(gè)數(shù)。 多次驗(yàn)證都表明,預(yù)測(cè)的長(zhǎng)度多次驗(yàn)證都表明,預(yù)測(cè)的長(zhǎng)度H與實(shí)際長(zhǎng)度與實(shí)際長(zhǎng)度 N非常接近。非常接近。 6.5.2 Halstead方法方法 Z=0; While X0 Z=Z+Y; X=X-1; End_while; Print(Z); H=n1 log2 n1+n2 log2 n28 log2 85log25=35.6 N=N1+N2=26 Z=0; While X0 Z=Z+Y; X=X-1; End_while; Print(Z); Halstead還給出了預(yù)測(cè)程序中包含錯(cuò)誤的 個(gè)數(shù)的公式如下: E=N log2 (n1+n2)/3000 有人曾對(duì)從300條到12000條語(yǔ)句范圍內(nèi) 的程序核實(shí)了上述公式,發(fā)現(xiàn)預(yù)測(cè)的錯(cuò)誤 數(shù)與實(shí)際錯(cuò)誤數(shù)相比誤差在8%之內(nèi)。 6.6 小結(jié) n詳細(xì)設(shè)計(jì)階段的關(guān)鍵任務(wù)是確定怎樣具體詳細(xì)設(shè)計(jì)階段的關(guān)鍵任務(wù)是確定怎樣具體 地實(shí)現(xiàn)用戶需要的軟件系統(tǒng),也就是要設(shè)計(jì)地實(shí)現(xiàn)用戶
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學(xué)生作文我的夢(mèng)想征文
- 云南省怒江傈僳族自治州福貢縣聯(lián)考2024-2025學(xué)年高一上學(xué)期1月期末生物學(xué)試題(含答案)
- 國(guó)際貿(mào)易實(shí)務(wù)中的結(jié)算方式知識(shí)考點(diǎn)
- 個(gè)人自助圖書館借閱服務(wù)合同
- 現(xiàn)代服務(wù)業(yè)服務(wù)質(zhì)量評(píng)價(jià)標(biāo)準(zhǔn)知識(shí)考點(diǎn)
- 互聯(lián)網(wǎng)產(chǎn)品策劃題
- 辦公空間能源消耗表格:能耗統(tǒng)計(jì)、節(jié)能減排
- 金融投資行業(yè)市場(chǎng)波動(dòng)風(fēng)險(xiǎn)免責(zé)聲明
- 醫(yī)學(xué)知識(shí)視頻培訓(xùn)課件
- 工作計(jì)劃完成情況統(tǒng)計(jì)表格
- 智能化模塑研發(fā)與制造中心項(xiàng)目生產(chǎn)經(jīng)營(yíng)方案
- 2023版押品考試題庫(kù)必考點(diǎn)含答案
- 電力建設(shè)工程施工技術(shù)管理導(dǎo)則
- E4A使用手冊(cè)資料
- 國(guó)家自然科學(xué)基金預(yù)算模板
- 高一物理必修一綜合測(cè)試題含答案
- 內(nèi)科學(xué)系統(tǒng)性紅斑狼瘡題庫(kù)
- 萬(wàn)達(dá)廣場(chǎng)室內(nèi)步行街裝設(shè)計(jì)任務(wù)書
- 人音版五年級(jí)下冊(cè)音樂(lè)《巴塘連北京》課件
- GB/T 775.1-2006絕緣子試驗(yàn)方法第1部分:一般試驗(yàn)方法
- GB/T 39965-2021節(jié)能量前評(píng)估計(jì)算方法
評(píng)論
0/150
提交評(píng)論