第六章 軟件詳細(xì)設(shè)計(jì)_第1頁
第六章 軟件詳細(xì)設(shè)計(jì)_第2頁
第六章 軟件詳細(xì)設(shè)計(jì)_第3頁
第六章 軟件詳細(xì)設(shè)計(jì)_第4頁
第六章 軟件詳細(xì)設(shè)計(jì)_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

軟件工程案例開發(fā)與實(shí)踐第6章軟件詳細(xì)設(shè)計(jì)詳細(xì)設(shè)計(jì)的任務(wù)1.為每個模塊進(jìn)行詳細(xì)的算法設(shè)計(jì)。確定模塊采用的算法,寫出模塊的詳細(xì)過程性描述。即為每個模塊確定采用的算法,選擇某種適當(dāng)?shù)墓ぞ弑磉_(dá)算法的過程,寫出模塊的詳細(xì)過程性描述。2.為模塊內(nèi)的數(shù)據(jù)結(jié)構(gòu)進(jìn)行設(shè)計(jì)。確定每一模塊使用的數(shù)據(jù)結(jié)構(gòu)。3.對數(shù)據(jù)庫進(jìn)行物理設(shè)計(jì),即確定數(shù)據(jù)庫的物理結(jié)構(gòu)。4.網(wǎng)絡(luò)設(shè)計(jì)。5.其它設(shè)計(jì):根據(jù)軟件系統(tǒng)類型,還可能要進(jìn)行用戶界面設(shè)計(jì)、輸入/輸出格式設(shè)計(jì)。包括對系統(tǒng)外部的接口,對系統(tǒng)內(nèi)部其他模塊的接口,以及模塊輸入數(shù)據(jù)、輸出數(shù)據(jù)及局部數(shù)據(jù)的全部細(xì)節(jié)。

接口設(shè)計(jì)注意以下原則:統(tǒng)一性;簡明易學(xué);靈活性;嚴(yán)謹(jǐn)性。6.編寫詳細(xì)設(shè)計(jì)說明書;評審。(1)模塊的邏輯描述要清晰易讀、正確可靠。(2)采用結(jié)構(gòu)化設(shè)計(jì)方法,改善控制結(jié)構(gòu),降低程序的復(fù)雜程度,從而提高程序的可讀性、可測試性、可維護(hù)性。(3)選擇恰當(dāng)描述工具來描述各模塊算法。(4)職能劃分功能化(5)功能劃分流程化.流程劃分單據(jù)化.單據(jù)劃分表格化.表格劃分原子化:6.2詳細(xì)設(shè)計(jì)的原則6.3詳細(xì)設(shè)計(jì)工具6.3.1程序流程圖1.順序結(jié)構(gòu)圖6-1順序結(jié)構(gòu)2.選擇結(jié)構(gòu)3.循環(huán)結(jié)構(gòu)完整的程序流程圖示例?

例如:判定2000—2500年中的每一年是否閏年,將結(jié)果輸出。潤年的條件是:能被4整除,但不能被100整除的年份是閏年,或者能被100整除,又能被400整除的年份是閏年。根據(jù)所給的判斷是否為閏年的條件,畫出的程序流程圖如圖6-4所示。可見程序流程圖可以清晰完整地表達(dá)出處理的全過程。例題1:求10!的流程圖。AA開

始t

1i

2t

i

*ti

=i+1i

<

11結(jié)

束真假輸出t程序流程圖的主要缺點(diǎn)如下:程序流程圖從本質(zhì)上來說不是逐步求精的好工具,它容易使程序員過早地考慮程序的控制流程,而不去考慮程序的全局結(jié)構(gòu)。程序流程圖中用箭頭代表控制流,程序員可以不顧結(jié)構(gòu)程序設(shè)計(jì)的精神,隨意轉(zhuǎn)移控制,而使程序結(jié)構(gòu)過于混亂。程序流程圖在表示數(shù)據(jù)結(jié)構(gòu)方面存在不足。方塊圖(N-S圖)是Nassi和Shneiderman提出的,是一種符合結(jié)構(gòu)化程序設(shè)計(jì)原則的圖形描述工具又稱之為盒圖6.3.2

方塊圖(N-S圖)在N-S圖中,為了表示五種基本結(jié)構(gòu),規(guī)定了五種圖形結(jié)構(gòu),具體如下:例如,將上述例題1和例題2使用N-S圖表示如下特點(diǎn):功能域(即,一個特定控制結(jié)構(gòu)的作用域)明確,用圖形表示,非常清晰。必須遵守結(jié)構(gòu)化程序設(shè)計(jì)的要求,不能任意轉(zhuǎn)移控制。很容易確定局部和全程數(shù)據(jù)的作用域。很容易表現(xiàn)嵌套關(guān)系,也可以表示模塊的層次結(jié)構(gòu)。5.3.3

PAD圖PAD是問題分析圖,它用二維樹型結(jié)構(gòu)的圖來表示程序的控制流,PAD圖也使用五種基本控制結(jié)構(gòu),具體如下:練習(xí)(畫出PAD圖)求g(x)=0

x=0-1

x<0S=1+3+5+…+999。1

x>0求f(x)=-1

x<=01

x>0s=0i=1While

i<=999i=i+2s=s+iPrint

sInput

xF(X)=1X>0T輸出F(X)FInput

xG(x)=1xX>0X=0

G(x)=0F(X)=-1X<0G(x)=-1輸出g(X)PAD圖的主要優(yōu)點(diǎn)如下:使用表示結(jié)構(gòu)化控制結(jié)構(gòu)的PAD符號所設(shè)計(jì)出來的程序必然是結(jié)構(gòu)化程序。PAD圖所描繪的程序結(jié)構(gòu)十分清晰。用PAD圖表現(xiàn)程序邏輯,易讀、易懂、易記。容易將PAD圖轉(zhuǎn)換成高級語言源程序,這種轉(zhuǎn)換可用軟件工具自動完成,從而可省去人工編碼的工作,有利于提高軟件可靠性和軟件生產(chǎn)率。即可用于表示程序邏輯,也可用于描繪數(shù)據(jù)結(jié)構(gòu)。PAD圖的符號支持自頂向下、逐步求精方法的使用。例2.4求規(guī)律:①第1項(xiàng)的分子分母都是1②第2項(xiàng)的分母是2,以后每一項(xiàng)的分母子都是前一項(xiàng)的分母加1③笫2項(xiàng)前的運(yùn)算符為“-”,后一項(xiàng)前面的運(yùn)算符都與前一項(xiàng)前的運(yùn)算符相反例2.4求sign—當(dāng)前項(xiàng)符號

term—當(dāng)前項(xiàng)的值

sum—當(dāng)前各項(xiàng)的和

deno—當(dāng)前項(xiàng)分母S1:sign=1S2:sum=1S3:deno=2S4:sign=(-1)*sig-n1S5:term=sign*(1/deno)S6:sum=sum+termS7:deno=deno+1-1/21-1/2S8:若deno≤100返回S4;否則3

算法滿結(jié)足束,返回S4例2.4求sign—當(dāng)前項(xiàng)符號

term—當(dāng)前項(xiàng)的值

sum—當(dāng)前各項(xiàng)的和

deno—當(dāng)前項(xiàng)分母S1:sign=1S2:sum=1S3:deno=2S4:sign=(-1)*sig1nS5:term=sign*(1/deno)S6:sum=sum+termS7:deno=deno+11/31-1/2+1/3S8:若deno≤100返回S4;否則4

算法滿結(jié)足束,返回S4例2.4求S1:sign=1S2:sum=1S3:deno=2S4:sign=(-1)*signS5:term=sign*(1/deno)S6:sum=sum+termS7:deno=deno+1S8:若deno≤100返回S4;否則算法結(jié)束99次循環(huán)后sum的值就是所要求的結(jié)果例2.5給出一個大于或等于3的正整數(shù),判斷它是不是一個素?cái)?shù)。所謂素?cái)?shù)(prime),是指除了1和該數(shù)本身之外,不能被其他任何 整數(shù)整除的數(shù)例如,13是素?cái)?shù),因?yàn)樗荒鼙?,3,4,…,12整除。判斷一個數(shù)n(n≥3)是否素?cái)?shù):將n作為被除數(shù), 將2到(n-1)各個整數(shù)先后作為除數(shù),如果都不 能被整除,則n為素?cái)?shù)S1:輸入n的值S2:i=2

(i作為除數(shù))S3:n被i除,得余數(shù)rS4:如果r=0,表示n能被i整除,則輸出n“不是素?cái)?shù)”,算法結(jié)束;否則執(zhí)行S5S5:i+1

iS6:如果i≤n-1,返回S3;否則輸出n“是素?cái)?shù)”,然后結(jié)束。2.3算法的特性一個有效算法應(yīng)該具有以下特點(diǎn):有窮性。一個算法應(yīng)包含有限的操作步驟,而不能是無限的。確定性。算法中的每一個步驟都應(yīng)當(dāng)是確定的,而不應(yīng)當(dāng)是含糊的、模棱兩可的。5.3.4

過程設(shè)計(jì)語言(PDL)PDL具有二重性,一方面具有嚴(yán)格的關(guān)鍵字外部語法,用于定義控制和數(shù)據(jù)結(jié)構(gòu);另一方面,PDL表示實(shí)際操作和條件的內(nèi)部語法通常又是不太嚴(yán)格的,以便可以靈活使用,從而適應(yīng)各種項(xiàng)目的需要。因此,一般說來PDL是一種“混雜”語言,它通常使用一種自然語言的詞匯,但同時卻使用另一種結(jié)構(gòu)化的程序設(shè)計(jì)語言的語法。PDL(結(jié)構(gòu)化語言)PDL(Program

design

Language)是一種用于描述功能模塊的算法設(shè)計(jì)和加工細(xì)節(jié)的語言,也稱為過程設(shè)計(jì)語言。

它是一種偽碼,一方面具有嚴(yán)格的外語法,語法應(yīng)符合一般程序設(shè)計(jì)語言的語法規(guī)則;另一方面,

其內(nèi)語法表示實(shí)際操作和條件,可以用自然語言中一些簡單的句子、短語和通用的數(shù)學(xué)符號,比較靈活自由。PDL語言的主要定義語句及基本控制結(jié)構(gòu)的表達(dá)如下所示:定義語句數(shù)據(jù)定義:DECLARE屬性變量名,…屬性包括:整型、實(shí)型、雙精度型、字符型、指針、數(shù)組及結(jié)構(gòu)等類型。模塊定義:PROCEDURE模塊名(參數(shù))……RETURNEND基本控制結(jié)構(gòu)(1)順序結(jié)構(gòu):語句序列S1語句序列S2…語句序列Sn(2)選擇結(jié)構(gòu):順序結(jié)構(gòu)的語句序列采用自①IF-ELSE結(jié)構(gòu)然語言進(jìn)行描述。IF條件IF條件語句序列S1或語句序列SELSEENDIF語句序列S2ENDIF②多分支IF結(jié)構(gòu)

IF條件1語句序列S1ELSEIF條件2語句序列S2ELSE語句序列SnENDIF…③CASE結(jié)構(gòu)CASE表達(dá)式OFCASE取值1語句序列S1CASE取值2語句序列S2…CASE語句序列SnENDCASE(3)循環(huán)結(jié)構(gòu):①FOR結(jié)構(gòu)FOR循環(huán)變量=初值TO終值循環(huán)體SEND

FOR②WHILE結(jié)構(gòu)WHILE條件循環(huán)體SENDWHILE③UNTIL結(jié)構(gòu)

REPEAT循環(huán)體SUNTIL條件輸入/輸出語句①輸入語句:

GET(輸入變量表)②輸出語句:

PUT(輸出變量表)模塊調(diào)用語句CALL模塊名(參數(shù))1引言2編寫目的3項(xiàng)目背景與需求概述4定義5參考資料6軟件結(jié)構(gòu)7程序描述8接口9存儲結(jié)構(gòu)10.?dāng)?shù)據(jù)庫設(shè)計(jì)11.限制條件12.測試要點(diǎn):給出測試模塊的主要測試要求。13.尚未解決的問題6.4詳細(xì)設(shè)計(jì)說明書格式6.5詳細(xì)設(shè)計(jì)實(shí)例6.5.1圖書管理子系統(tǒng)菜單設(shè)計(jì)6.5.2系統(tǒng)模塊(1)讀者查詢:可以通過本模塊對讀者信息按編號、 卡號、姓名、類別、有效否等字段進(jìn)行查詢。(2)圖書查詢:本模塊可以從圖書分類號、條形碼、 書名、作者、出版社等方面進(jìn)行圖書信息的查詢。(3)綜合查詢:通過查詢模塊,可以進(jìn)行所有圖 書、所有借出圖書、今日借出圖書、今日歸還圖 書、今日

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論