軟件工二程詳細設(shè)計-_第1頁
軟件工二程詳細設(shè)計-_第2頁
軟件工二程詳細設(shè)計-_第3頁
軟件工二程詳細設(shè)計-_第4頁
軟件工二程詳細設(shè)計-_第5頁
已閱讀5頁,還剩46頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第5章

詳細設(shè)計結(jié)構(gòu)程序設(shè)計人機界面設(shè)計過程設(shè)計的工具面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法程序復(fù)雜程度的定量度量小結(jié)習題詳細設(shè)計的任務(wù)確定每個模塊的具體算法;確定每個模塊的內(nèi)部數(shù)據(jù)結(jié)構(gòu)及數(shù)據(jù)庫的物理結(jié)構(gòu);確定模塊接口的具體細節(jié);為每個模塊設(shè)計一組測試用例;編寫文檔,參加復(fù)審。5.3

過程設(shè)計的工具5.3.1

程序流程圖程序流程圖又稱為程序框圖,它是歷史最悠久、使用最廣泛的描述過程設(shè)計的方法,然而它也是用得最混亂的一種方法。圖5.1 程序流程圖中的基本符號(a)一般處理框;(b)輸入/輸出框;(c)判斷框;(d)流程線;(e)起止框結(jié)束輸出:a開始輸入10個整數(shù)到ai=0Ni

<

9Yj

=

i

+

1j

<

10Ya[i]

>

a[j]Ya[i]

a[j]j

++NNi

++N開始輸入m,na=m;b=na

<

b

?b

=

b

-

aYa

<

>

b

?Ya

=

a

-

bN輸出:a結(jié)束X

=

YX

>

Y“輾轉(zhuǎn)相截(減)法”原理:XGCD(

X

,

Y

)

= GCD

(

X

Y

,

Y

)GCD

(

X

,

Y

X

) X

<

Y示例:GCD

(

27

,

18

)

=

GCD

(

9

,

18

)?

=

GCD

(

9

,

9

)?

=

9開始輸入mfound

=

1i

=

2結(jié)束i

=

i+

1NN輸出:是輸出:不是Nfound

=

=

1

?Yi

<

mYm能被i整除?Yfound

=

0入口返回X=X/ATA>15

AND

B=3FX=X+1TA=30

OR

X>5F開始輸入mfound

=

1i

=

2結(jié)束i

=

i

+

1NN輸出:是輸出:不是Nfound

=

=

1

?Yi

<=

(m+1)/2Ym能被i整除?Yfound

=

0開始輸入mfound

=

1i

=

2結(jié)束i

=

i

+

1NN輸出:是輸出:不是Nfound

=

=

1

?Yi

<=

sqrt

(m+1)Ym能被i整除?Yfound

=

0按鈕指示燈電梯按鈕樓層按鈕m112m-2通信通信電梯門電梯控制器控制1

n開始輸入mfound

=

1i

=

2(i

<=

sqrt

(m+1))

and

(found==1)結(jié)束i

=

i

+

1NN輸出:是輸出:不是Nfound

=

=

1

?YYm能被i整除?Yfound

=

0開始輸入mi=2結(jié)束i

=

i

+

1i

<=

sqrt

(m+1)Ym能被i整除?NN輸出:是輸出:不是Ni

>

sqrt(m+1)YY程序流程圖的主要缺點如下:程序流程圖本質(zhì)上不是逐步求精的好工具,它誘使程序員過早地考慮程序的控制流程,而不去考慮程序的全局結(jié)構(gòu);程序流程圖中用箭頭代表控制流,因此程序員不受任何約束,可以完全不顧結(jié)構(gòu)程序設(shè)計的精神,隨意轉(zhuǎn)移控制;程序流程圖不易表示數(shù)據(jù)結(jié)構(gòu)。盒圖是一種不允許違背結(jié)構(gòu)程序設(shè)計精神的圖形工具,又稱為N-S圖,它有下述特點:功能域(即,一個特定控制結(jié)構(gòu)的作用域)明確,可以從盒圖上一眼就看出來;不可能任意轉(zhuǎn)移控制;很容易確定局部和全程數(shù)據(jù)的作用域;很容易表現(xiàn)嵌套關(guān)系,也可以表示模塊的層次結(jié)構(gòu)。5.3.2

盒圖(N-S圖)圖5.2盒圖的基本符號優(yōu)點:表達出的程序結(jié)構(gòu)必然符合結(jié)構(gòu)化程序設(shè)計的思想,有利于培養(yǎng)軟件設(shè)計人員的良好設(shè)計風格。缺點:程序嵌套層次較多時,N-S圖的內(nèi)層方框會越畫越小,不僅影響可讀性而且不易修改。PAD是問題分析圖(problem

analysis

diagram)的英文縮寫,它用二維樹形結(jié)構(gòu)的圖來表示程序的控制流,將這種圖翻譯成程序代碼比較容易。PAD圖的主要優(yōu)點如下:(1)使用表示結(jié)構(gòu)化控制結(jié)構(gòu)的PAD符號所設(shè)計出來的程序必然是結(jié)構(gòu)化程序。5.3.3

PAD圖圖5.3

PAD圖的基本符號主要優(yōu)點如下:使用表示結(jié)構(gòu)化控制結(jié)構(gòu)的PAD符號所設(shè)計出來的程序必然是結(jié)構(gòu)化程序。PAD圖所描繪的程序結(jié)構(gòu)十分清晰。圖中最左面的豎線是程序的主線,即第一層結(jié)構(gòu)。隨著程序?qū)哟蔚脑黾樱琍AD圖逐漸向右延伸,每增加一個層次,圖形向右擴展一條豎線。PAD圖中豎線的總條數(shù)就是程序的層次數(shù)。用PAD圖表現(xiàn)程序邏輯,易讀、易懂、易記。

PAD圖是二維樹形結(jié)構(gòu)的圖形,程序從圖中最左豎線上端的結(jié)點開始執(zhí)行,自上而下,從左向右順序執(zhí)行,遍歷所有結(jié)點。容易將PAD圖轉(zhuǎn)換成高級語言源程序,這種轉(zhuǎn)換可用軟件工具自動完成,從而可省去人工編碼的工作,有利于提高軟件可靠性和軟件生產(chǎn)率。即可用于表示程序邏輯,也可用于描繪數(shù)據(jù)結(jié)構(gòu)。PAD圖的符號支持自頂向下、逐步求精方法的使用。開始時設(shè)計者可以定義一個抽象的程序,隨著設(shè)計工作的深入而使用def符號逐步增加細節(jié),直至完成詳細設(shè)計。圖5.4使用PAD圖提供的定義功能來逐步求精的例子本節(jié)先介紹Jackson方法的工具——Jackson圖,然后介紹Jackson程序設(shè)計方法的基本步驟。5.4

面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計方法(1)順序結(jié)構(gòu)順序結(jié)構(gòu)的數(shù)據(jù)由一個或多個數(shù)據(jù)元素組成,每個元素按確定次序出現(xiàn)一次。圖5.5是表示順序結(jié)構(gòu)的Jackson圖的一個例子。5.4.1

Jackson圖圖5.5

A由B、C、D

3個元素順序組成(2)選擇結(jié)構(gòu)選擇結(jié)構(gòu)的數(shù)據(jù)包含兩個或多個數(shù)據(jù)元素,每次使用這個數(shù)據(jù)時按一定條件從這些數(shù)據(jù)元素中選擇一個。圖5.6根據(jù)條件A是B或C或D中的某一個(3)重復(fù)結(jié)構(gòu)重復(fù)結(jié)構(gòu)的數(shù)據(jù),根據(jù)使用時的條件由一個數(shù)據(jù)元素出現(xiàn)零次或多次構(gòu)成。圖5.7是表示重復(fù)結(jié)構(gòu)的Jackson圖。圖5.7

A由B出現(xiàn)N次(N≥0)組成圖5.8改進的Jackson圖5.4.2 改進的Jackson圖Jackson結(jié)構(gòu)程序設(shè)計方法基本上由下述5個步驟組成:分析并確定輸入數(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圖:5.4.3

Jackson方法第一,為每對有對應(yīng)關(guān)系的數(shù)據(jù)單元,按照它們在數(shù)據(jù)結(jié)構(gòu)圖中的層次在程序結(jié)構(gòu)圖的相應(yīng)層次畫一個處理框(如果這對數(shù)據(jù)單元在輸入數(shù)據(jù)結(jié)構(gòu)和輸出數(shù)據(jù)結(jié)構(gòu)中所處的層次不同,則和它們對應(yīng)的處理框在程序結(jié)構(gòu)圖中所處的層次與它們之中的在數(shù)據(jù)結(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ù)單元所處的層次,在程序結(jié)構(gòu)圖的相應(yīng)層次分別為它們畫上對應(yīng)的處理框。列出所有操作和條件(包括分支條件和循環(huán)結(jié)束條件),并且把它們分配到程序結(jié)構(gòu)圖的適當位置。用偽碼表示程序。Jackson方法中使用的偽碼和Jackson圖是完全對應(yīng)的,下面是和3種基本結(jié)構(gòu)對應(yīng)的偽碼。和圖5.8(a)所示的順序結(jié)構(gòu)對應(yīng)的偽碼,其中‘seq’和‘end’是關(guān)鍵字:AA

seqB

C

Dend和圖5.8(b)所示的選擇結(jié)構(gòu)對應(yīng)的偽碼,其中

‘select’、‘or’和‘end’是關(guān)鍵字,cond1、cond2和cond3分別是執(zhí)行B、C或D的條件:AselectBcond1Aorcond2CAorcond3DAend和圖5.8(d)所示重復(fù)結(jié)構(gòu)對應(yīng)的偽碼,其中‘iter’、

‘until’、‘while’和‘end’是關(guān)鍵字,cond是條

件:A

iter

until(或while)condBA

end[例]一個正文文件由若干個記錄組成,每個記錄是一個字符串。要求統(tǒng)計每個記錄中空格字符的個數(shù),以及文件中空格字符的總個數(shù)。要求的輸出數(shù)據(jù)格式是,每復(fù)制一行輸入字符串之后,另起一行印出這個字符串中的空格數(shù),最后印出文件中空格的總個數(shù)。圖5.9表示輸入輸出數(shù)據(jù)結(jié)構(gòu)的Jackson圖圖5.10描繪統(tǒng)計空格程序結(jié)構(gòu)的Jackson圖基本操作:(1)停止;(2)打開文件;(3)關(guān)閉文件;(4)打印字符串;(5)打印行空格數(shù);(6)打印空格總數(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é)束;I(2)字符串結(jié)束;

S(3)字符是空格。圖5.11把操作和條件分配到程序結(jié)構(gòu)圖的適當位置統(tǒng)計空格seq打開文件讀入字符串totalsum∶=0程序體iter

until文件結(jié)束處理字符串seq印字符串seq印出字符串印字符串endsum∶=0pointer∶=1分析字符串iter

until字符串結(jié)束分析字符select字符是空格處理空格seqsum∶=sum+1pointer∶=pointer+1處理空格end分析字符or字符不是空格處理非空格seqpointer∶=pointer+1處理非空格end分析字符end分析字符串end印空格數(shù)seq印出空格數(shù)目印空格數(shù)endtotalsum∶=totalsum+sum讀入字符串處理字符串end程序體end印總數(shù)seq印出空格總數(shù)印總數(shù)end關(guān)閉文件停止統(tǒng)計空格end著重介紹使用得比較廣泛的McCabe方法和

Halstead方法。5.5

程序復(fù)雜程度的定量度量(1)流圖McCabe方法根據(jù)程序控制流的復(fù)雜程度定量度量程序的復(fù)雜程度,這樣度量出的結(jié)果稱為程序的環(huán)形復(fù)雜度。為了突出表示程序的控制流,人們通常使用流圖

(也稱為程序圖)。所謂流圖實質(zhì)上是“退化了的”程序流程圖,它僅僅描繪程序的控制流程,完全不表

現(xiàn)對數(shù)據(jù)的具體操作以及分支或循環(huán)的具體條件。5.5.1

McCabe方法圖5.16由PDL翻譯成的流圖(2)計算環(huán)形復(fù)雜度的方法①流圖中的區(qū)域數(shù)等于環(huán)形復(fù)雜度。②流圖G的環(huán)形復(fù)雜度V(G)=E-N+2,其中,E是流圖中邊的條數(shù),N是結(jié)點數(shù)。③流圖G的環(huán)形復(fù)雜度V(G)=P+1,其中,P是流圖中判定結(jié)點的數(shù)目。Halstead方法是另一個著名的方法,它根據(jù)程序中運算符和操作數(shù)的總數(shù)來度量程序的復(fù)雜程度。令N1為程序中運算符出現(xiàn)的總次數(shù),N2為操作數(shù)出現(xiàn)的總次數(shù),程序長度N定義為:N=N1+N2詳細設(shè)計完成之后,可以知道程序中使用的不同運算

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論