軟件工程導(dǎo)論(第五版)第六章_第1頁(yè)
軟件工程導(dǎo)論(第五版)第六章_第2頁(yè)
軟件工程導(dǎo)論(第五版)第六章_第3頁(yè)
軟件工程導(dǎo)論(第五版)第六章_第4頁(yè)
軟件工程導(dǎo)論(第五版)第六章_第5頁(yè)
已閱讀5頁(yè),還剩84頁(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、軟件工程軟件工程( Software Engineering )廣東工業(yè)大學(xué)廣東工業(yè)大學(xué) 計(jì)算機(jī)學(xué)院計(jì)算機(jī)學(xué)院 軟件工程系軟件工程系楊易揚(yáng)楊易揚(yáng)第第6 6章:詳細(xì)設(shè)計(jì)章:詳細(xì)設(shè)計(jì) 目標(biāo)目標(biāo):確定如何具體實(shí)現(xiàn)所要求的系統(tǒng)。:確定如何具體實(shí)現(xiàn)所要求的系統(tǒng)。 不是具體編寫(xiě)程序,而是設(shè)計(jì)程序的不是具體編寫(xiě)程序,而是設(shè)計(jì)程序的“藍(lán)圖藍(lán)圖”。 詳細(xì)設(shè)計(jì)的結(jié)果決定最終程序代碼的詳細(xì)設(shè)計(jì)的結(jié)果決定最終程序代碼的質(zhì)量。質(zhì)量。6.1 6.1 結(jié)構(gòu)程序設(shè)計(jì)結(jié)構(gòu)程序設(shè)計(jì) E.W.Dijkstra 最早提出結(jié)構(gòu)程序設(shè)計(jì):程序質(zhì)量與最早提出結(jié)構(gòu)程序設(shè)計(jì):程序質(zhì)量與程序中包含的程序中包含的Goto語(yǔ)句的數(shù)量成反比(語(yǔ)句的數(shù)

2、量成反比(1965)。)。 1966 ,Bohm, Jacopini ,證明了只用,證明了只用“順序順序”、“選擇選擇”、“循環(huán)循環(huán)”控制結(jié)構(gòu)就能實(shí)現(xiàn)任何單入口單出控制結(jié)構(gòu)就能實(shí)現(xiàn)任何單入口單出口程序??诔绦?。 理論上,最基本的控制結(jié)構(gòu)只有兩種:順序、理論上,最基本的控制結(jié)構(gòu)只有兩種:順序、循環(huán)結(jié)構(gòu)(選擇結(jié)構(gòu)可由其兩者構(gòu)造)。循環(huán)結(jié)構(gòu)(選擇結(jié)構(gòu)可由其兩者構(gòu)造)。 學(xué)界認(rèn)識(shí)到,不是簡(jiǎn)單去掉學(xué)界認(rèn)識(shí)到,不是簡(jiǎn)單去掉Goto語(yǔ)句的問(wèn)題,語(yǔ)句的問(wèn)題,而是要?jiǎng)?chuàng)立一種新的程序設(shè)計(jì)方法。而是要?jiǎng)?chuàng)立一種新的程序設(shè)計(jì)方法。 結(jié)構(gòu)化程序設(shè)計(jì)(結(jié)構(gòu)化程序設(shè)計(jì)(IBM率先成功運(yùn)用)。率先成功運(yùn)用)。結(jié)構(gòu)程序設(shè)計(jì)結(jié)構(gòu)程

3、序設(shè)計(jì): 一種設(shè)計(jì)程序的技術(shù),它采用自頂向下逐步求一種設(shè)計(jì)程序的技術(shù),它采用自頂向下逐步求精的設(shè)計(jì)方法和單入口單出口的控制結(jié)構(gòu)。精的設(shè)計(jì)方法和單入口單出口的控制結(jié)構(gòu)。 使用結(jié)構(gòu)程序設(shè)計(jì)技術(shù)的好處使用結(jié)構(gòu)程序設(shè)計(jì)技術(shù)的好處:1 1)提高軟件開(kāi)發(fā)工程的成功率和生產(chǎn)率;)提高軟件開(kāi)發(fā)工程的成功率和生產(chǎn)率;2 2)系統(tǒng)有清晰的層次結(jié)構(gòu),容易閱讀理解;)系統(tǒng)有清晰的層次結(jié)構(gòu),容易閱讀理解;3 3)單入口單出口的控制結(jié)構(gòu),容易診斷糾正;)單入口單出口的控制結(jié)構(gòu),容易診斷糾正;4 4)模塊化可以使得軟件可以重用;)模塊化可以使得軟件可以重用;5 5)程序邏輯結(jié)構(gòu)清晰,有利于程序正確性證明。)程序邏輯結(jié)構(gòu)清晰

4、,有利于程序正確性證明。經(jīng)典的結(jié)構(gòu)程序設(shè)計(jì)經(jīng)典的結(jié)構(gòu)程序設(shè)計(jì):只允許使用順序、:只允許使用順序、IF_THEN_ELSE選擇和選擇和DO_WHILE循環(huán);循環(huán);擴(kuò)展的結(jié)構(gòu)程序設(shè)計(jì)擴(kuò)展的結(jié)構(gòu)程序設(shè)計(jì):除了三種基本控制結(jié)構(gòu),:除了三種基本控制結(jié)構(gòu),還使用還使用DO_CASE和和DO_UNTIL循環(huán);循環(huán);修正的結(jié)構(gòu)程序設(shè)計(jì)修正的結(jié)構(gòu)程序設(shè)計(jì):除了三種基本控制結(jié)構(gòu):除了三種基本控制結(jié)構(gòu)和兩種擴(kuò)充結(jié)構(gòu),還使用和兩種擴(kuò)充結(jié)構(gòu),還使用BREAK等結(jié)構(gòu)。等結(jié)構(gòu)。 流程圖通常由三種結(jié)點(diǎn)組成:流程圖通常由三種結(jié)點(diǎn)組成:1)函數(shù)結(jié)點(diǎn)函數(shù)結(jié)點(diǎn) 如果一個(gè)結(jié)點(diǎn)有一個(gè)入口線和如果一個(gè)結(jié)點(diǎn)有一個(gè)入口線和一個(gè)出口線,則稱為函

5、數(shù)結(jié)點(diǎn)。一個(gè)出口線,則稱為函數(shù)結(jié)點(diǎn)。 由于函數(shù)結(jié)點(diǎn)一般對(duì)應(yīng)于賦值由于函數(shù)結(jié)點(diǎn)一般對(duì)應(yīng)于賦值語(yǔ)句,所以語(yǔ)句,所以 F 也表示了這一個(gè)結(jié)點(diǎn)也表示了這一個(gè)結(jié)點(diǎn)對(duì)應(yīng)的函數(shù)關(guān)系。對(duì)應(yīng)的函數(shù)關(guān)系。 F函數(shù)結(jié)點(diǎn)函數(shù)結(jié)點(diǎn)6.1.1 結(jié)構(gòu)化程序結(jié)構(gòu)化程序6.1.1.1 控制結(jié)構(gòu)控制結(jié)構(gòu)2)謂詞結(jié)點(diǎn)謂詞結(jié)點(diǎn) 如果一個(gè)結(jié)點(diǎn)有一個(gè)入口線和兩個(gè)出口線,如果一個(gè)結(jié)點(diǎn)有一個(gè)入口線和兩個(gè)出口線,而且它不改變程序的數(shù)據(jù)項(xiàng)的值,則稱為謂詞而且它不改變程序的數(shù)據(jù)項(xiàng)的值,則稱為謂詞結(jié)點(diǎn)。結(jié)點(diǎn)。 P是一個(gè)謂詞,根據(jù)是一個(gè)謂詞,根據(jù)P的邏輯值(的邏輯值(T或或F),),結(jié)點(diǎn)有不同的出口。結(jié)點(diǎn)有不同的出口。 P謂詞結(jié)點(diǎn)謂詞結(jié)點(diǎn)3 3)匯點(diǎn)

6、匯點(diǎn) 如果一個(gè)結(jié)點(diǎn)有兩個(gè)或多個(gè)入口線和一個(gè)出如果一個(gè)結(jié)點(diǎn)有兩個(gè)或多個(gè)入口線和一個(gè)出口線,而且它不執(zhí)行任何運(yùn)算,則稱為匯點(diǎn)口線,而且它不執(zhí)行任何運(yùn)算,則稱為匯點(diǎn) 。匯點(diǎn)匯點(diǎn) 匯點(diǎn)的簡(jiǎn)略表示匯點(diǎn)的簡(jiǎn)略表示1)順序結(jié)構(gòu)順序結(jié)構(gòu):相當(dāng)于:相當(dāng)于“A、B” 2. 三種基本控制結(jié)構(gòu)三種基本控制結(jié)構(gòu)AB(a)順序結(jié)構(gòu)順序結(jié)構(gòu)2)選擇結(jié)構(gòu)選擇結(jié)構(gòu) 相當(dāng)于相當(dāng)于“If exp then A else B endif ” ABexp(b)選擇結(jié)構(gòu)選擇結(jié)構(gòu)3)循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu):相當(dāng)于:相當(dāng)于“While exp do A” A(c)循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu)exp1)多分支結(jié)構(gòu)多分支結(jié)構(gòu) 相當(dāng)于相當(dāng)于“Case I of I

7、=1:C1; I=2:C2; I=3:C3; ; I=n:Cn” 3. 擴(kuò)充兩種控制結(jié)構(gòu)擴(kuò)充兩種控制結(jié)構(gòu) CnC3C1C2( (d)d)多分支結(jié)構(gòu)多分支結(jié)構(gòu)I=?2)UNTIL循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu) 相當(dāng)于相當(dāng)于“Repeat A Until exp” A(e)UNTIL循環(huán)循環(huán)exp6.1.1.2 6.1.1.2 正規(guī)程序正規(guī)程序 定義定義1 1:一個(gè)流程圖程序如果滿足下面兩個(gè):一個(gè)流程圖程序如果滿足下面兩個(gè)條件,稱為正規(guī)程序:條件,稱為正規(guī)程序: 1 1)具有一個(gè)入口線和一個(gè)出口線;)具有一個(gè)入口線和一個(gè)出口線; 2 2)對(duì)每一個(gè)結(jié)點(diǎn),都有一條從入口線到)對(duì)每一個(gè)結(jié)點(diǎn),都有一條從入口線到出口線的

8、通路通過(guò)該結(jié)點(diǎn)。出口線的通路通過(guò)該結(jié)點(diǎn)。 由于正規(guī)程序有一個(gè)入口線和一個(gè)出口線,由于正規(guī)程序有一個(gè)入口線和一個(gè)出口線,因而一個(gè)正規(guī)程序總可以抽象為一個(gè)因而一個(gè)正規(guī)程序總可以抽象為一個(gè)函數(shù)結(jié)點(diǎn)函數(shù)結(jié)點(diǎn)。 F函數(shù)結(jié)點(diǎn)函數(shù)結(jié)點(diǎn)定義定義2 2:如果一個(gè)正規(guī)程序的某個(gè)部分仍然是正規(guī)程序,:如果一個(gè)正規(guī)程序的某個(gè)部分仍然是正規(guī)程序,那么稱它為該正規(guī)程序的正規(guī)子程序。那么稱它為該正規(guī)程序的正規(guī)子程序。 先給出一個(gè)概念:先給出一個(gè)概念:封閉結(jié)構(gòu)封閉結(jié)構(gòu)定義定義3 3:流程圖中,兩個(gè)結(jié)點(diǎn)之間所有沒(méi)有重復(fù)結(jié)點(diǎn):流程圖中,兩個(gè)結(jié)點(diǎn)之間所有沒(méi)有重復(fù)結(jié)點(diǎn)的通路組成的結(jié)構(gòu)稱為封閉結(jié)構(gòu)。的通路組成的結(jié)構(gòu)稱為封閉結(jié)構(gòu)。6.1

9、.1.3 基本程序基本程序 如圖:封閉結(jié)構(gòu)為如圖:封閉結(jié)構(gòu)為 a - b1 - b2 - b3 ; c1 - c2 ; d1 - d2 - d3 ; e - f ab1b2b3c2c1d1d2d3ef1 1)不包括多于一個(gè)結(jié)點(diǎn)的正規(guī)子程序,即它是一)不包括多于一個(gè)結(jié)點(diǎn)的正規(guī)子程序,即它是一種不可再分解的正規(guī)程序;(程序自身不可視為種不可再分解的正規(guī)程序;(程序自身不可視為正規(guī)子程序)正規(guī)子程序) 2 2)如果存在封閉結(jié)構(gòu),封閉結(jié)構(gòu)都是正規(guī)程序。)如果存在封閉結(jié)構(gòu),封閉結(jié)構(gòu)都是正規(guī)程序。 6.1.1.3 基本程序基本程序 定義定義4:一個(gè)正規(guī)程序,如果滿足以下兩個(gè)條件,:一個(gè)正規(guī)程序,如果滿足以

10、下兩個(gè)條件,則稱之為則稱之為基本程序基本程序: 基本程序形式有多種,前面提到的三種基本控制結(jié)基本程序形式有多種,前面提到的三種基本控制結(jié)構(gòu)(構(gòu)(順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu))和兩個(gè)擴(kuò)充控制結(jié))和兩個(gè)擴(kuò)充控制結(jié)構(gòu)(構(gòu)(多分支結(jié)構(gòu)、多分支結(jié)構(gòu)、UNTIL循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu))都是基本程序。)都是基本程序。 定義定義5: 用以構(gòu)造程序的基本程序的集合稱為用以構(gòu)造程序的基本程序的集合稱為基集合基集合。 如:如:順序,順序,if-then-else,while do 順序,順序,if-then-else,repeat-until 都是基集合。都是基集合。 定義定義6:如果一個(gè)基本

11、程序的函數(shù)結(jié)點(diǎn)用另一:如果一個(gè)基本程序的函數(shù)結(jié)點(diǎn)用另一個(gè)基本函數(shù)程序替換,產(chǎn)生的新的正規(guī)程序稱個(gè)基本函數(shù)程序替換,產(chǎn)生的新的正規(guī)程序稱為為復(fù)合程序復(fù)合程序。 A復(fù)合程序復(fù)合程序expBexpA: 循環(huán)結(jié)構(gòu)的循環(huán)結(jié)構(gòu)的A函數(shù)結(jié)點(diǎn)用另一循環(huán)結(jié)構(gòu)代替,即嵌函數(shù)結(jié)點(diǎn)用另一循環(huán)結(jié)構(gòu)代替,即嵌套循環(huán),就產(chǎn)生了復(fù)合程序。套循環(huán),就產(chǎn)生了復(fù)合程序。 由于復(fù)合程序是由一些基本程序組成,因此,由于復(fù)合程序是由一些基本程序組成,因此,無(wú)論從總體上看或是從每個(gè)組成部分看,都滿足無(wú)論從總體上看或是從每個(gè)組成部分看,都滿足“一個(gè)入口,一個(gè)出口一個(gè)入口,一個(gè)出口”的原則,這樣的程序就的原則,這樣的程序就是通常說(shuō)的好結(jié)構(gòu)程序

12、,或者結(jié)構(gòu)化程序。是通常說(shuō)的好結(jié)構(gòu)程序,或者結(jié)構(gòu)化程序。 定義定義7 7:由基本程序的一個(gè)固定的基集合構(gòu)造出的復(fù)合:由基本程序的一個(gè)固定的基集合構(gòu)造出的復(fù)合程序,稱為程序,稱為結(jié)構(gòu)化程序結(jié)構(gòu)化程序。結(jié)構(gòu)化定理結(jié)構(gòu)化定理:任一正規(guī)程序都可以函數(shù)等價(jià)于:任一正規(guī)程序都可以函數(shù)等價(jià)于一個(gè)由基集合一個(gè)由基集合順序,順序,If-else-then,While-do產(chǎn)生的結(jié)構(gòu)化程序。產(chǎn)生的結(jié)構(gòu)化程序。 實(shí)際上,只要能證明可以將任一正規(guī)程序轉(zhuǎn)實(shí)際上,只要能證明可以將任一正規(guī)程序轉(zhuǎn)換成等價(jià)的結(jié)構(gòu)化程序就可以證明這個(gè)結(jié)構(gòu)化換成等價(jià)的結(jié)構(gòu)化程序就可以證明這個(gè)結(jié)構(gòu)化定理。定理。 6.1.2 結(jié)構(gòu)化定理結(jié)構(gòu)化定理證明

13、證明:(分三步進(jìn)行結(jié)構(gòu)化程序的轉(zhuǎn)換):(分三步進(jìn)行結(jié)構(gòu)化程序的轉(zhuǎn)換)步驟一:從程序入口處開(kāi)始步驟一:從程序入口處開(kāi)始給程序的函數(shù)結(jié)給程序的函數(shù)結(jié)點(diǎn)和謂詞結(jié)點(diǎn)編號(hào)點(diǎn)和謂詞結(jié)點(diǎn)編號(hào):1,2,3,n,同時(shí),同時(shí),將每個(gè)函數(shù)和謂詞結(jié)點(diǎn)的出口線用它后面的結(jié)將每個(gè)函數(shù)和謂詞結(jié)點(diǎn)的出口線用它后面的結(jié)點(diǎn)的號(hào)碼進(jìn)行編號(hào),如果出口線后面沒(méi)有結(jié)點(diǎn),點(diǎn)的號(hào)碼進(jìn)行編號(hào),如果出口線后面沒(méi)有結(jié)點(diǎn),也就是說(shuō)該結(jié)點(diǎn)的出口線與程序的出口線相連也就是說(shuō)該結(jié)點(diǎn)的出口線與程序的出口線相連時(shí),出口線編號(hào)為時(shí),出口線編號(hào)為0。 步驟二:對(duì)原程序中每一個(gè)編號(hào)為步驟二:對(duì)原程序中每一個(gè)編號(hào)為i, 出口線出口線編號(hào)為編號(hào)為j的函數(shù)結(jié)點(diǎn)的函數(shù)結(jié)點(diǎn)

14、H,構(gòu)造一個(gè)新的序列程構(gòu)造一個(gè)新的序列程序序Gi,如圖:如圖: HGi =HL:= jiij 類似地,對(duì)于每個(gè)編號(hào)為類似地,對(duì)于每個(gè)編號(hào)為i,出口線分別出口線分別為為j和和k的謂詞結(jié)點(diǎn),構(gòu)造一個(gè)新的選擇程序的謂詞結(jié)點(diǎn),構(gòu)造一個(gè)新的選擇程序Gi,如圖:如圖: PjkiGi =PiL := jL := k步驟三:步驟三:利用已經(jīng)得到的一些利用已經(jīng)得到的一些Gi程序(程序(i=1,2,3,n),),按下圖的形式構(gòu)造一個(gè)按下圖的形式構(gòu)造一個(gè)While-do循環(huán)。循環(huán)。 圖中的循環(huán)體是一圖中的循環(huán)體是一個(gè)對(duì)個(gè)對(duì)L從從1到到n的嵌套的嵌套選擇(選擇(if-then-else)程序,轉(zhuǎn)換后的程序程序,轉(zhuǎn)換后

15、的程序與原程序是等價(jià)的,與原程序是等價(jià)的,是由基集合是由基集合順序、順序、選擇、循環(huán)選擇、循環(huán) 所復(fù)合所復(fù)合成的結(jié)構(gòu)化程序。成的結(jié)構(gòu)化程序。L:=1L0L=1L=nL=2GnL:=0G2G1TTTTFFFF 這種方法并不是唯一的把程序轉(zhuǎn)變?yōu)榻Y(jié)構(gòu)化這種方法并不是唯一的把程序轉(zhuǎn)變?yōu)榻Y(jié)構(gòu)化程序的方法,所得的程序也不一定是最好的。程序的方法,所得的程序也不一定是最好的。 它的目的是為了證明結(jié)構(gòu)化定理。它的目的是為了證明結(jié)構(gòu)化定理。例例1 1:把圖示的非結(jié)構(gòu)化程序轉(zhuǎn)換成結(jié)構(gòu)化程:把圖示的非結(jié)構(gòu)化程序轉(zhuǎn)換成結(jié)構(gòu)化程序(用結(jié)構(gòu)化定理證明過(guò)程提供的方法轉(zhuǎn)換)序(用結(jié)構(gòu)化定理證明過(guò)程提供的方法轉(zhuǎn)換) 6.1.3

16、 非結(jié)構(gòu)化程序到結(jié)構(gòu)化程序的轉(zhuǎn)換非結(jié)構(gòu)化程序到結(jié)構(gòu)化程序的轉(zhuǎn)換P1P2AB非結(jié)構(gòu)化程序例圖非結(jié)構(gòu)化程序例圖1 1)進(jìn)行結(jié)點(diǎn)及其出口線的編號(hào);)進(jìn)行結(jié)點(diǎn)及其出口線的編號(hào); 1340202341P1P2AB非結(jié)構(gòu)化程序例圖非結(jié)構(gòu)化程序例圖P1321G1=P11L := 3L := 22)將圖中的四個(gè)結(jié)點(diǎn)構(gòu)造新的程序)將圖中的四個(gè)結(jié)點(diǎn)構(gòu)造新的程序G1、G2、G3、G4; BG2 =BL:= 0220P2403G3 =P23L := 4L := 0AG4 =AL:= 14413)利用得到的)利用得到的G1、G2、G3、G4按介紹的方法構(gòu)造一個(gè)按介紹的方法構(gòu)造一個(gè)While-do循環(huán),最終結(jié)果如圖:循環(huán)

17、,最終結(jié)果如圖: L:=1L0L=1L=4L=2L:=0P1L := 3L := 2BL:= 0L=3P2L := 4L := 0AL:= 1轉(zhuǎn)化后的結(jié)構(gòu)化程序圖轉(zhuǎn)化后的結(jié)構(gòu)化程序圖FFFFFTTTTT6.2 6.2 人機(jī)界面設(shè)計(jì)人機(jī)界面設(shè)計(jì)6.2.1 6.2.1 設(shè)計(jì)問(wèn)題設(shè)計(jì)問(wèn)題 1. 1. 系統(tǒng)響應(yīng)時(shí)間;系統(tǒng)響應(yīng)時(shí)間; 2. 2. 用戶幫助;用戶幫助; 3. 3. 出錯(cuò)信息處理;出錯(cuò)信息處理; 4. 4. 命令交互命令交互6.2.2 6.2.2 設(shè)計(jì)過(guò)程設(shè)計(jì)過(guò)程6.2.3 6.2.3 人機(jī)界面設(shè)計(jì)指南人機(jī)界面設(shè)計(jì)指南 1. 1. 一般交互指南;一般交互指南; 2. 2. 信息顯示指南;信息

18、顯示指南; 3. 3. 數(shù)據(jù)輸入指南。數(shù)據(jù)輸入指南。6.3 6.3 過(guò)程設(shè)計(jì)的工具過(guò)程設(shè)計(jì)的工具 6.3.1 程序流程圖程序流程圖 程序流程圖程序流程圖:是一種描述程序的控制結(jié):是一種描述程序的控制結(jié)構(gòu)流程和指令執(zhí)行情況的有向圖。構(gòu)流程和指令執(zhí)行情況的有向圖。 歷史悠久、使用廣泛、直觀描繪控制流歷史悠久、使用廣泛、直觀描繪控制流程、便于初學(xué)者掌握。程、便于初學(xué)者掌握。ASP檢索程序流程圖:檢索程序流程圖:開(kāi) 始加載Include文件定義記數(shù)變量、作物變量創(chuàng)建數(shù)據(jù)庫(kù)鏈接對(duì)象、記錄集對(duì)象打開(kāi)數(shù)據(jù)庫(kù)用客戶提交的值對(duì)作物變量賦值SQL查詢語(yǔ)句賦值通過(guò)記錄集對(duì)象打開(kāi)SQL語(yǔ)句設(shè)定的記錄記錄集末端?記數(shù)變

19、量加1,輸出記錄字段值及圖像轉(zhuǎn)跳下一記錄關(guān)閉數(shù)據(jù)庫(kù)鏈接對(duì)象、記錄集對(duì)象,并釋放資源輸出記錄數(shù)和提示結(jié) 束YN2 2)程序流程圖中用箭頭代表控制流,因)程序流程圖中用箭頭代表控制流,因此程序員不受任何約束,可以完全不顧結(jié)此程序員不受任何約束,可以完全不顧結(jié)構(gòu)程序設(shè)計(jì)的精神,隨意轉(zhuǎn)移控制。構(gòu)程序設(shè)計(jì)的精神,隨意轉(zhuǎn)移控制。3 3)程序流程圖不易表示數(shù)據(jù)結(jié)構(gòu)。)程序流程圖不易表示數(shù)據(jù)結(jié)構(gòu)。程序流程圖的程序流程圖的缺點(diǎn)缺點(diǎn):1)程序流程圖本質(zhì)上不是逐步求精的好工具,)程序流程圖本質(zhì)上不是逐步求精的好工具,它誘使程序員過(guò)早地考慮程序的控制流程,它誘使程序員過(guò)早地考慮程序的控制流程,而不去考慮程序的全局結(jié)構(gòu)

20、。而不去考慮程序的全局結(jié)構(gòu)。6.3.2 盒圖(盒圖(N-S圖)圖) ABC條件條件FTElseBThenACase條件條件Case1ACase2BCasenN循環(huán)條件循環(huán)條件循環(huán)條件循環(huán)條件Do-While部分部分Do-Until部分部分Aa.順序結(jié)構(gòu)順序結(jié)構(gòu)b.選擇結(jié)構(gòu)選擇結(jié)構(gòu)c.多分支結(jié)構(gòu)多分支結(jié)構(gòu)d.當(dāng)型循環(huán)結(jié)構(gòu)當(dāng)型循環(huán)結(jié)構(gòu)e.直到型循環(huán)結(jié)構(gòu)直到型循環(huán)結(jié)構(gòu)f.調(diào)用子程序調(diào)用子程序A圖圖6.4 盒圖的基本符號(hào)盒圖的基本符號(hào)盒圖的特點(diǎn)有:盒圖的特點(diǎn)有: 1 1)功能域明確,可以從盒圖上一眼就看出)功能域明確,可以從盒圖上一眼就看出來(lái);來(lái); 2 2)不可能任意轉(zhuǎn)移控制;)不可能任意轉(zhuǎn)移控制;

21、3 3)很容易確定局部和全程數(shù)據(jù)的作用域;)很容易確定局部和全程數(shù)據(jù)的作用域; 4 4)很容易表現(xiàn)嵌套關(guān)系,也可以表示模塊的)很容易表現(xiàn)嵌套關(guān)系,也可以表示模塊的層次結(jié)構(gòu)。層次結(jié)構(gòu)。 FTBCDACase1E2F3G4HA:盒圖例子盒圖例子 PAD(Problem Analysis Diagram)是問(wèn)是問(wèn)題分析圖。題分析圖。 日立公司發(fā)明和推廣(日立公司發(fā)明和推廣(1973)。)。 6.3.3 PAD圖圖P1P2WHILE CUNTIL CPPP2P1CP1P2PnX=L1L2Lndefa.順序結(jié)構(gòu)順序結(jié)構(gòu)b.當(dāng)型循環(huán)結(jié)構(gòu)當(dāng)型循環(huán)結(jié)構(gòu)c.直到型循環(huán)結(jié)構(gòu)直到型循環(huán)結(jié)構(gòu)d.選擇結(jié)構(gòu)選擇結(jié)構(gòu)e.多

22、分支結(jié)構(gòu)多分支結(jié)構(gòu)f.語(yǔ)句標(biāo)號(hào)語(yǔ)句標(biāo)號(hào)g.定義定義圖圖6.5 PAD圖的基本符號(hào)圖的基本符號(hào)例子:例子: P1P2UNTIL C2P7P4P3Cdefa.初始的初始的PAD圖圖圖圖6.6 PAD圖例子圖例子b.使用使用def符號(hào)細(xì)化處理框符號(hào)細(xì)化處理框P2P5P2P8C1UNTIL C2P9P10P6PAD圖的優(yōu)點(diǎn):圖的優(yōu)點(diǎn):1)使用表示結(jié)構(gòu)化控制結(jié)構(gòu)的)使用表示結(jié)構(gòu)化控制結(jié)構(gòu)的PAD符號(hào)所設(shè)計(jì)符號(hào)所設(shè)計(jì)出來(lái)的程序必然是結(jié)構(gòu)化程序;出來(lái)的程序必然是結(jié)構(gòu)化程序;2)PAD圖所描繪的程序結(jié)構(gòu)十分清晰。圖所描繪的程序結(jié)構(gòu)十分清晰。 圖中最左面的豎線是程序的主線,即第一層圖中最左面的豎線是程序的主線,

23、即第一層結(jié)構(gòu)。隨著程序?qū)哟蔚脑黾?,結(jié)構(gòu)。隨著程序?qū)哟蔚脑黾?,PAD圖逐漸向右延圖逐漸向右延伸,每增加一個(gè)層次,圖形向右擴(kuò)展一條豎線。伸,每增加一個(gè)層次,圖形向右擴(kuò)展一條豎線。PAD圖中豎線的總條數(shù)就是程序的層次數(shù);圖中豎線的總條數(shù)就是程序的層次數(shù); 3)用)用PAD圖表現(xiàn)程序,通俗易懂,程序從圖表現(xiàn)程序,通俗易懂,程序從圖中最左豎線上端的結(jié)點(diǎn)開(kāi)始執(zhí)行,自上而圖中最左豎線上端的結(jié)點(diǎn)開(kāi)始執(zhí)行,自上而下,從左向右順序執(zhí)行,遍歷所有結(jié)點(diǎn);下,從左向右順序執(zhí)行,遍歷所有結(jié)點(diǎn);4)容易將)容易將PAD圖轉(zhuǎn)換成高級(jí)語(yǔ)言源程序,圖轉(zhuǎn)換成高級(jí)語(yǔ)言源程序,這種轉(zhuǎn)換可以用軟件工具自動(dòng)完成;這種轉(zhuǎn)換可以用軟件工具自動(dòng)

24、完成;5)可用于表示程序邏輯,也可用于描繪)可用于表示程序邏輯,也可用于描繪數(shù)據(jù)結(jié)構(gòu);數(shù)據(jù)結(jié)構(gòu);6)PAD圖的符號(hào)支持自頂向下、逐步求圖的符號(hào)支持自頂向下、逐步求精的方法。精的方法。判定表由四部分組成:判定表由四部分組成: 左上部列出所有左上部列出所有條件條件 左下部是所有可能做的左下部是所有可能做的動(dòng)作動(dòng)作 右上部表示各種右上部表示各種條件組合條件組合 右下部是和每種條件組合相右下部是和每種條件組合相對(duì)應(yīng)的動(dòng)作對(duì)應(yīng)的動(dòng)作 6.3.4 判定表判定表 123456789國(guó)內(nèi)乘客國(guó)內(nèi)乘客 TTTTFFFF頭等艙頭等艙 TFTFTFTF殘疾乘客殘疾乘客 FFTTFFTT行李重量行李重量W30 TFF

25、FFFFFF 免費(fèi)免費(fèi) (W-30)2 (W-30)3 (W-30)4 (W-30)6 (W-30)8 (W-30)12 6.3.5 判定樹(shù)判定樹(shù) 判定樹(shù)是判定表的變種。判定樹(shù)是判定表的變種。 行李重量行李重量W30行李重量行李重量W30國(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免費(fèi)免費(fèi)圖圖6.7 用判定樹(shù)表示計(jì)算行李

26、費(fèi)的算法用判定樹(shù)表示計(jì)算行李費(fèi)的算法行李費(fèi)算法行李費(fèi)算法 PDL也稱為偽碼。也稱為偽碼。 如:如:if I0 then 執(zhí)行訂單數(shù)據(jù)輸入模塊執(zhí)行訂單數(shù)據(jù)輸入模塊 else 報(bào)告出錯(cuò)信息報(bào)告出錯(cuò)信息 end if 6.3.6 過(guò)程設(shè)計(jì)語(yǔ)言(過(guò)程設(shè)計(jì)語(yǔ)言(PDL)PDL的優(yōu)點(diǎn)的優(yōu)點(diǎn):1)可以作為注釋直接插在源程序中間;)可以作為注釋直接插在源程序中間;2)可以使用普通的正文編輯程序或文字)可以使用普通的正文編輯程序或文字處理系統(tǒng)來(lái)完成處理系統(tǒng)來(lái)完成PDL的書(shū)寫(xiě)和編輯工作;的書(shū)寫(xiě)和編輯工作;3)現(xiàn)在已經(jīng)有一些自動(dòng)處理程序可以自)現(xiàn)在已經(jīng)有一些自動(dòng)處理程序可以自動(dòng)地把動(dòng)地把PDL生成程序代碼。生成程序

27、代碼。 PDL的缺點(diǎn)的缺點(diǎn):不如圖形工具形象直觀。:不如圖形工具形象直觀。6.4 6.4 面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法 1 1)順序結(jié)構(gòu))順序結(jié)構(gòu) ABCD圖圖6.8 A由由B、C、D三個(gè)三個(gè)元素順序組成元素順序組成6.4.1 Jackson圖圖2 2)選擇結(jié)構(gòu))選擇結(jié)構(gòu) ABCD圖圖6.9 根據(jù)條件根據(jù)條件A選擇選擇B、C、D中的某一個(gè)中的某一個(gè)3)重復(fù)結(jié)構(gòu))重復(fù)結(jié)構(gòu) AB*圖圖6.10 A由由B出出現(xiàn)現(xiàn)N次組成次組成6.4.2 6.4.2 改進(jìn)的改進(jìn)的JacksonJackson圖圖 ABCD圖圖6.11 改進(jìn)的改進(jìn)的Jackson圖圖ABCDAB-AB*S(i)S(i)I

28、(i)(a)(b)(c)(d)JacksonJackson方法的目標(biāo)是:方法的目標(biāo)是: 得出對(duì)程序處理過(guò)程的詳細(xì)描述。得出對(duì)程序處理過(guò)程的詳細(xì)描述。 6.4.3 Jackson方法方法Jackson結(jié)構(gòu)程序設(shè)計(jì)方法由五個(gè)步驟組成:結(jié)構(gòu)程序設(shè)計(jì)方法由五個(gè)步驟組成:1)分析并確定輸入數(shù)據(jù)和輸出數(shù)據(jù)的邏輯結(jié))分析并確定輸入數(shù)據(jù)和輸出數(shù)據(jù)的邏輯結(jié)構(gòu),并用構(gòu),并用Jackson圖描繪這些數(shù)據(jù)結(jié)構(gòu);圖描繪這些數(shù)據(jù)結(jié)構(gòu);2)找出輸入數(shù)據(jù)結(jié)構(gòu)和輸出數(shù)據(jù)結(jié)構(gòu)中有對(duì))找出輸入數(shù)據(jù)結(jié)構(gòu)和輸出數(shù)據(jù)結(jié)構(gòu)中有對(duì)應(yīng)關(guān)系的數(shù)據(jù)單元;應(yīng)關(guān)系的數(shù)據(jù)單元; 3)用三條規(guī)則從描繪數(shù)據(jù)結(jié)構(gòu)的)用三條規(guī)則從描繪數(shù)據(jù)結(jié)構(gòu)的Jackson圖

29、圖導(dǎo)出描繪程序結(jié)構(gòu)的導(dǎo)出描繪程序結(jié)構(gòu)的Jackson圖:圖: A為每對(duì)有對(duì)應(yīng)關(guān)系的數(shù)據(jù)單元,按照為每對(duì)有對(duì)應(yīng)關(guān)系的數(shù)據(jù)單元,按照它們?cè)跀?shù)據(jù)結(jié)構(gòu)圖中的層次在程序結(jié)構(gòu)圖的它們?cè)跀?shù)據(jù)結(jié)構(gòu)圖中的層次在程序結(jié)構(gòu)圖的相應(yīng)層次畫(huà)一個(gè)處理框;相應(yīng)層次畫(huà)一個(gè)處理框; B根據(jù)輸入數(shù)據(jù)結(jié)構(gòu)中剩余的每個(gè)數(shù)據(jù)根據(jù)輸入數(shù)據(jù)結(jié)構(gòu)中剩余的每個(gè)數(shù)據(jù)單元所處的層次,在程序結(jié)構(gòu)圖的相應(yīng)層單元所處的層次,在程序結(jié)構(gòu)圖的相應(yīng)層次分別為它們畫(huà)上對(duì)應(yīng)的處理框;次分別為它們畫(huà)上對(duì)應(yīng)的處理框;C根據(jù)輸出數(shù)據(jù)結(jié)構(gòu)中剩余的每個(gè)數(shù)據(jù)根據(jù)輸出數(shù)據(jù)結(jié)構(gòu)中剩余的每個(gè)數(shù)據(jù)單元所處的層次,在程序結(jié)構(gòu)圖的相應(yīng)層單元所處的層次,在程序結(jié)構(gòu)圖的相應(yīng)層次分別為它們畫(huà)

30、上對(duì)應(yīng)的處理框;次分別為它們畫(huà)上對(duì)應(yīng)的處理框;4 4)列出所有操作和條件(包括分支條件)列出所有操作和條件(包括分支條件和循環(huán)結(jié)束條件),并且把它們分配到程和循環(huán)結(jié)束條件),并且把它們分配到程序結(jié)構(gòu)圖的適當(dāng)位置;序結(jié)構(gòu)圖的適當(dāng)位置;5 5)用偽碼表示程序。)用偽碼表示程序。順序結(jié)構(gòu)順序結(jié)構(gòu):A seq B C DA end 與三種基本結(jié)構(gòu)對(duì)應(yīng)的偽碼是:與三種基本結(jié)構(gòu)對(duì)應(yīng)的偽碼是:選擇結(jié)構(gòu)選擇結(jié)構(gòu)A select cond1 BA or cond2 CA or cond3 DA end重復(fù)結(jié)構(gòu)重復(fù)結(jié)構(gòu)A iter until (或或while) cond BA end例例:一個(gè)正文文件由若干記錄

31、組成,每個(gè)記錄是:一個(gè)正文文件由若干記錄組成,每個(gè)記錄是一個(gè)字符串。一個(gè)字符串。如:如:Record 1Record 1:How many stages are there in the traditional How many stages are there in the traditional software development model?software development model?Record 2Record 2: After entering the room, walk to the person After entering the room, walk to

32、the person sitting nearest to you and greet him/her with a “high sitting nearest to you and greet him/her with a “high five”.five”.Record 3Record 3: What are encapsulated into an object?What are encapsulated into an object?Record 4Record 4: What diagram is the following diagram? Simply What diagram

33、is the following diagram? Simply describe the meaning of it.describe the meaning of it. 要求:要求:1 1)設(shè)計(jì)程序統(tǒng)計(jì)每個(gè)記錄中空格字符的個(gè)數(shù),)設(shè)計(jì)程序統(tǒng)計(jì)每個(gè)記錄中空格字符的個(gè)數(shù),輸出數(shù)據(jù)的格式是,每讀入一個(gè)記錄(字符輸出數(shù)據(jù)的格式是,每讀入一個(gè)記錄(字符串)之后,另起一行打印出這個(gè)字符串及其串)之后,另起一行打印出這個(gè)字符串及其空格數(shù);空格數(shù);2 2)最后打印出文件中空格的總個(gè)數(shù)。)最后打印出文件中空格的總個(gè)數(shù)。 正文文件正文文件字符串字符串*字符字符*空格空格非空格非空格輸出表格輸出表格表格體表格

34、體空格總數(shù)空格總數(shù)串信息串信息*字符串字符串空格數(shù)空格數(shù)IISI(a)輸入數(shù)據(jù)結(jié)構(gòu)輸入數(shù)據(jù)結(jié)構(gòu)(b)輸出數(shù)據(jù)結(jié)構(gòu)輸出數(shù)據(jù)結(jié)構(gòu)圖圖6.12 表示輸入表示輸入/輸出數(shù)據(jù)結(jié)構(gòu)的輸出數(shù)據(jù)結(jié)構(gòu)的Jackson圖圖 分析輸入、輸出數(shù)據(jù)結(jié)構(gòu),用分析輸入、輸出數(shù)據(jù)結(jié)構(gòu),用Jackson圖描繪,并找出兩圖描繪,并找出兩者對(duì)應(yīng)的數(shù)據(jù)單元:者對(duì)應(yīng)的數(shù)據(jù)單元:統(tǒng)計(jì)空格統(tǒng)計(jì)空格程序體程序體印總數(shù)印總數(shù)處理字符串處理字符串*分析字符串分析字符串印空格數(shù)印空格數(shù)印字符串印字符串分析字符分析字符*處理空格處理空格處理非空格處理非空格IIS圖圖6.13 描繪統(tǒng)計(jì)空格程序結(jié)構(gòu)的描繪統(tǒng)計(jì)空格程序結(jié)構(gòu)的Jackson圖圖導(dǎo)出描繪程序

35、結(jié)構(gòu)的導(dǎo)出描繪程序結(jié)構(gòu)的Jackson圖:圖:(1)停止)停止 (2)打開(kāi)文件)打開(kāi)文件(3)關(guān)閉文件)關(guān)閉文件 (4)印出字符串)印出字符串(5)印出空格數(shù)目)印出空格數(shù)目 (6)印出空格總數(shù))印出空格總數(shù)(7)sum := sum +1 (8)totalsum := totalsum + sum(9)讀入字符串讀入字符串 (10)sum := 0(11)totalsum : = 0 (12)pointer := 1(13)pointer := pointer + 1 I(1) 文件結(jié)束文件結(jié)束 I(2) 字符串結(jié)束字符串結(jié)束 S(3) 字符是空格字符是空格 列出所有操作和條件:列出所有操作

36、和條件: 統(tǒng)計(jì)空格統(tǒng)計(jì)空格程序體程序體印總數(shù)印總數(shù)處理字符串處理字符串*分析字符串分析字符串印空格數(shù)印空格數(shù)印字符串印字符串分析字符分析字符*處理空格處理空格處理非空格處理非空格I(1)I(2)S(3)圖圖6.14 最終分配好操作和條件的最終分配好操作和條件的Jackson圖圖311192610124589713136.5 6.5 程序復(fù)雜度的定量度量程序復(fù)雜度的定量度量 定量度量程序復(fù)雜度的作用:定量度量程序復(fù)雜度的作用: (1 1)可估算軟件中錯(cuò)誤的數(shù)量及軟件開(kāi)發(fā))可估算軟件中錯(cuò)誤的數(shù)量及軟件開(kāi)發(fā)工作量;工作量; (2 2)度量的結(jié)果可用來(lái)比較不同設(shè)計(jì)或不)度量的結(jié)果可用來(lái)比較不同設(shè)計(jì)或不同算法的優(yōu)劣;同算法的優(yōu)劣; (3 3)程序的復(fù)雜度可作為模塊規(guī)模的限度。)程序的復(fù)雜度可作為模塊規(guī)模的限度。 1. 1. 流圖流圖 “ “退化退化”的程序流程圖,僅描繪程序的控制流程,的程序流程圖,僅描繪程序的控制流程,不表現(xiàn)對(duì)數(shù)據(jù)的具體操作及循環(huán)、選擇的條件。不表現(xiàn)對(duì)數(shù)據(jù)的具體操作及循環(huán)、選擇的條件。 6.5.1 McCabe方法方法一個(gè)圓代表一條或多條語(yǔ)句;一個(gè)圓代表一條或多條語(yǔ)句;一個(gè)順序結(jié)構(gòu)可以合并成一個(gè)結(jié)點(diǎn);一個(gè)順序結(jié)構(gòu)可以合并成一個(gè)結(jié)點(diǎn);匯點(diǎn)也是結(jié)點(diǎn);匯點(diǎn)也是結(jié)點(diǎn);一個(gè)順序處理框序列和一個(gè)判斷框可一個(gè)順序處理框序列和一個(gè)判斷框可映射成一個(gè)

溫馨提示

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