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

下載本文檔

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

文檔簡介

第5章詳細(xì)設(shè)計(jì)詳細(xì)設(shè)計(jì)的基本任務(wù)詳細(xì)設(shè)計(jì)過程詳細(xì)設(shè)計(jì)內(nèi)容結(jié)構(gòu)程序設(shè)計(jì)人機(jī)界面設(shè)計(jì)過程設(shè)計(jì)的工具程序復(fù)雜度的定量度量詳細(xì)設(shè)計(jì)優(yōu)化小結(jié)詳細(xì)設(shè)計(jì)的基本任務(wù)確定應(yīng)該怎樣具體的實(shí)現(xiàn)系統(tǒng)?;設(shè)計(jì)程序的”藍(lán)圖”,但不是編程序;詳細(xì)設(shè)計(jì)的結(jié)果決定了最終的程序代碼的質(zhì)量;結(jié)構(gòu)化程序設(shè)計(jì)是詳細(xì)設(shè)計(jì)的邏輯基礎(chǔ);詳細(xì)設(shè)計(jì)的基本任務(wù)詳細(xì)設(shè)計(jì)也是采用細(xì)化的方法把每個(gè)功能模塊分解為一系列的處理步驟;詳細(xì)設(shè)計(jì)須遵循的原則:模塊的邏輯描述正確可靠,清晰易讀;采用結(jié)構(gòu)化程序設(shè)計(jì)方法,改善控制結(jié)構(gòu),降低程序復(fù)雜度,提高程度的可讀性、可測試性和可維護(hù)性。詳細(xì)設(shè)計(jì)過程Step1:確定每個(gè)模塊的算法;Step2:確定每個(gè)模塊的數(shù)據(jù)組織;Step3:為每個(gè)模塊設(shè)計(jì)一組測試用例;Step4:編寫詳細(xì)設(shè)計(jì)說明書。詳細(xì)設(shè)計(jì)內(nèi)容程序描述功能性能輸入項(xiàng)輸出項(xiàng)算法接口存儲(chǔ)分配注釋設(shè)計(jì)限制條件結(jié)構(gòu)化程序設(shè)計(jì)自頂向下,逐步求精;有限制的使用GOTO語句;單入口,單出口;采用”順序”,”選擇”,”循環(huán)”3種基本的控制結(jié)構(gòu)來詳細(xì)設(shè)計(jì)軟件模塊的結(jié)構(gòu);(注:也可稱是5種,參考書上例子)自頂向下,逐步求精細(xì)化軟件模塊;設(shè)計(jì)功能更加獨(dú)立的模塊;可用層次結(jié)構(gòu)圖或HIPO圖來進(jìn)行描述;自頂向下,逐步求精例,用篩選法求100以內(nèi)的素?cái)?shù)篩選法就是從2到100中去掉2,3,…,9,10的倍數(shù),剩下的就是100以內(nèi)的素?cái)?shù)。為了解決這個(gè)問題,可先按程序功能寫出一個(gè)框架。自頂向下,逐步求精main(){//程序框架

建立2到100的數(shù)組A[],其中A[i]=i;

-----------------------------------1

建立2到10的素?cái)?shù)表B[],其中存放2

到10以內(nèi)的素?cái)?shù);-----------2

若A[i]=i是B[]中任一數(shù)的倍數(shù),則剔除A[i];---------------------3

輸出A[]中所有沒有被剔除的數(shù);

-----------------------------------4}

main(){

/*建立2到100的數(shù)組A[],其中A[i]=i*/

for(i=2;i<=100;i++)A[i]=i;

/*建立2到10的素?cái)?shù)表B[],其中存放2到

10以內(nèi)的素?cái)?shù)*/

B[1]=2;B[2]=3;B[3]=5;B[4]=7;

/*若A[i]=i是B[]中任一數(shù)的倍數(shù),則剔除A[i]*/

for(j=1;j<=4;j++)

檢查A[]所有的數(shù)能否被B[j]整除并將能被整除的數(shù)從A[]中剔除;-----3.1

自頂向下,逐步求精

/*輸出A[]中所有沒有被剔除的數(shù)*/for(i=2;i<=100;i++)

若A[i]沒有被剔除,則輸出之---4.1}main(){

/*建立2到100的數(shù)組A[],其中A[i]=i*/

for(i=2;i<=100;i++)A[i]=i;

/*建立2到10的素?cái)?shù)表B[],其中存放2到

10以內(nèi)的素?cái)?shù)*/

B[1]=2;B[2]=3;B[3]=5;B[4]=7;

/*若A[i]=i是B[]中任一數(shù)的倍數(shù),則剔除

A[i]*/

for(j=1;j<=4;j++)

/*檢查A[]所有的數(shù)能否被B[j]整除并將能被整除的數(shù)從A[]中剔除*/

for(i=2;i<=100;i++)

if(A[i]/B[j]*B[j]==A[i])

A[i]=0;

/*輸出A[]中所有沒有被剔除的數(shù)*/

for(i=2;

i<=100;i++)

/*若A[i]沒有被剔除,則輸出之*/

if(A[i]!=0)

printf(“A[%d]=%d\n”,I,A[i]);

}

有限制的使用GOTO語句不要破壞程序的可讀性;盡量少的使用它;BREAK語句也是一種特殊的GOTO語句;有限制的使用GOTO語句例1打印A,B,C三數(shù)中最小者程序有限制的使用GOTO語句

if(A<B)

goto120;

if(B<C)goto110;100write(C);

goto140;

110write(B);

goto140;120if(A<C)goto130;

goto100;130write(A);140end

有限制的使用GOTO語句

if(A<B)and(A<C)thenwrite(A)

else if(AB)and(B<C)then

write(B)

else

write(C)endifendif單入口,單出口降低模塊接口的復(fù)雜性;提高模塊的獨(dú)立性;單入口含義:從頂部進(jìn)行模塊;單出口含義:從底部退出模塊;例2用二分法求方程f(x)=0在區(qū)間[a..b]中的根的程序

假設(shè)在閉區(qū)間[a..b]上函數(shù)f(x)有唯一的一個(gè)零點(diǎn)f0=f(a);f1=f(b); //程序1if(f0*f1<=0){x0=a;x1=b;

for(i=1;i<=n;i++){

xm=(x0+x1)/2;fm=f(xm);

if(abs(fm)<eps||abs(x1-x0)<eps)

gotofinish;

if(f0*fm>0){x0=xm;f0=fm;}

elsex1=xm;

}

finish:printf(“\nTherootofthisequationis%d\n”,xm);}非正常出口正常出口單入口,兩出口正常出口是循環(huán)達(dá)到n次非正常出口是循環(huán)中途控制轉(zhuǎn)出到標(biāo)號(hào)finish

所在位置可讀性好f0=f(a);f1=f(b);//程序2

if(f0*f1<=0){

x0=a;x1=b;

for(i=1;i<=n;i++){

xm=(x0+x1)/2;fm=f(xm);

if(abs(fm)<eps||abs(x1-x0)<eps)break;

if(f0*fm>0)

{x0=xm;f0=fm;}

else

x1=xm;

}}f0=f(a);f1=f(b);//程序3if(f0*f1<=0){

x0=a;x1=b;i=1;finished=0;

while(i<=n&&finished==0){

xm=(x0+x1)/2;fm=f(xm);

if(abs(fm)<eps||abs(x1-x0)<eps)finished=1;

if(finished==0)

if(f0*fm>0){x0=xm;f0=fm;}

else

x1=xm;

}}結(jié)構(gòu)程序設(shè)計(jì)定義:盡可能少的使用GOTO語句的程序設(shè)計(jì)方法。最好僅在檢測出錯(cuò)誤時(shí)才使用GOTO語句;應(yīng)該總是使用前向的GOTO語句;幾種基本的控制結(jié)構(gòu)過程設(shè)計(jì)的工具程序流程圖盒圖PAD圖判定表判定樹PDL語言均要掌握程序流程圖歷史悠久,為最廣泛的人所熟悉;描繪直觀,便于初學(xué)者掌握;總的趨勢越來越多的人不使用它;循環(huán)的標(biāo)準(zhǔn)符號(hào)注解的使用多出口判斷程序流程圖主要缺點(diǎn)它本質(zhì)上不是逐步求精的工具;它使得程序員過早的考慮程序的控制結(jié)構(gòu),而忽略程序的全局結(jié)構(gòu);箭頭符號(hào)代表控制流,不受程序員控制,有隨意性;它不表示數(shù)據(jù)結(jié)構(gòu);盒圖也稱為N-S圖它的主要特點(diǎn)功能域明確;作用域明確;不能任意轉(zhuǎn)移;易確定作用域;易表現(xiàn)嵌套關(guān)系;比較直觀、易于繪制;有助于程序員養(yǎng)成結(jié)構(gòu)化的設(shè)計(jì)思想;缺點(diǎn):算法復(fù)雜,畫圖困難,影響清晰性,靈活性差。A調(diào)用子程序盒圖盒圖N-S圖的嵌套定義形式PAD圖PAD圖是問題分析圖(problemanalysisdiagram)的英文縮寫。它用二維樹型結(jié)構(gòu)的圖來表示程序結(jié)構(gòu),便于將它翻譯為程序代碼。它還允許遞歸使用。PAD圖def分支PAD圖

對(duì)應(yīng)于增量型循環(huán)結(jié)構(gòu)

fori:=n1ton2stepn3do

在PAD中有相應(yīng)的循環(huán)控制結(jié)構(gòu)PAD圖P1P2P3P4P5CP2P6P7P8CUNTILC2UNTILC3P9P10defPAD圖它的主要優(yōu)點(diǎn):符合結(jié)構(gòu)化程序設(shè)計(jì)要求;結(jié)構(gòu)清晰,層次分明,易讀,易懂,易記;既可表示程序邏輯,又可表示數(shù)據(jù)結(jié)構(gòu);容易將PAD自動(dòng)轉(zhuǎn)換為高級(jí)語言源程序;支持自頂向下、逐步求精的方法。自上而下,從左向右順序執(zhí)行判定表表示復(fù)雜的條件組合與應(yīng)做動(dòng)作之間的對(duì)應(yīng)關(guān)系;判定表并不適用于作為一種通用的設(shè)計(jì)工具,通常將之用于輔助測試;要求將程序流程圖中的多分支判斷都改成兩分支判斷;判定表例:

航空行李托運(yùn)費(fèi)的算法

按規(guī)定:重量不超過30公斤的行李可免費(fèi)托運(yùn)。重量超過30公斤時(shí),對(duì)超運(yùn)部分,頭等艙國內(nèi)乘客收4元/公斤;其它艙位國內(nèi)乘客收6元/公斤;外國乘客收費(fèi)為國內(nèi)乘客的2倍;殘疾乘客的收費(fèi)為正常乘客的1/2。

判定表缺點(diǎn):含義不清楚;數(shù)據(jù)元素多于兩個(gè)時(shí),判定表簡潔性下降;判定樹它是判定表的變種;它的優(yōu)點(diǎn)在于形式簡單,含義明確;它是一種常用的詳細(xì)設(shè)計(jì)的工具;判定樹缺點(diǎn):簡潔性很差;分支次序影響判定樹的簡潔度;如把行李重量的判斷作為最后一個(gè)分支,會(huì)怎樣?PDL語言它也稱為偽碼,它是一種“混雜”語言;關(guān)鍵字有固定的語法,稱為外語法;處理用自然語言描述,稱為內(nèi)語法;有數(shù)據(jù)說明;有子程序定義與調(diào)用機(jī)制;示例:拼詞檢查程序PROCEDURE

spellcheck

IS

BEGIN

--*1

splitdocumentintosinglewords

--*2

lookupwordsindictionary

--*3

displaywordswhicharenotindictionary

--*4 createanewdictionary

END

spellcheck

PROCEDURE

spellcheckBEGIN

--*splitdocumentintosinglewords

LOOP

getnextword

addwordtowordlistinsortorder

EXITWHEN

allwordsprocessed

ENDLOOP

--*lookupwordsindictionary

LOOP

getwordfromwordlist

IF

wordnotindictionary

THEN

--*displaywordsnotindictionary

displayword promptonuserterminal

IF

userresponsesayswordOK

THEN

addwordtogoodwordlist

ELSE

addwordtobadwordlist

ENDIF

ENDIF

EXITWHEN

allwordsprocessed

ENDLOOP

--*createanewwordsdictionary

dictionary:=

mergedictionaryandgoodwordlistEND

spellcheckPDL語言它的優(yōu)點(diǎn):易于實(shí)現(xiàn)由PDL到源代碼的自動(dòng)轉(zhuǎn)換;可作為注釋直接插在源程序中間;編輯簡單,使用方便;它的缺點(diǎn):直觀性很差;(比圖,表的直觀性差)各種工具的比較表示法準(zhǔn)則偽碼IPO判定樹(表)流程圖N-S圖PAD易用性優(yōu)中中優(yōu)良良邏輯表達(dá)能力良良優(yōu)中良良機(jī)器可讀性中差差中中中易轉(zhuǎn)換程序代碼優(yōu)差良良良良結(jié)構(gòu)化良中差差優(yōu)優(yōu)易修改性良中良差良差數(shù)據(jù)表示能力中差中差中中易驗(yàn)證性中中中差中中使用頻率高低低高低低程序復(fù)雜性定量度量它可以用來衡量模塊的設(shè)計(jì)質(zhì)量。它的價(jià)值:把程序的復(fù)雜度乘以適當(dāng)?shù)某?shù)即可估算出軟件中錯(cuò)誤的數(shù)量以及軟件開發(fā)需要用的工作量。經(jīng)常使用的方法:McCable方法Halstead方法McCabe方法根據(jù)程序控制流的復(fù)雜程度定量度量方法。它分析的基礎(chǔ)是流圖(程序圖)。它的分析過程:過程設(shè)計(jì)結(jié)果→流圖→計(jì)算→環(huán)路復(fù)雜度流圖圓表示結(jié)點(diǎn),可代表一條或多條語句。流圖中的箭頭稱為邊,代表控制流。邊必須終止于一個(gè)結(jié)點(diǎn)。由邊和結(jié)點(diǎn)圍成的面積稱為區(qū)域。任何方法表示的過程設(shè)計(jì)結(jié)果都可以翻譯為流圖。處理框和菱形判定框包括圖外面的那個(gè)區(qū)域復(fù)合條件的計(jì)算復(fù)合條件的含義。把復(fù)合條件分解為若干個(gè)簡單條件,注意每一個(gè)簡單條件對(duì)應(yīng)一個(gè)結(jié)點(diǎn)。包含條件的點(diǎn)稱為判定結(jié)點(diǎn)。復(fù)合條件的計(jì)算IfaorbthenprocedurexElseprocedureyEndifabxyend順序結(jié)構(gòu)的結(jié)點(diǎn)可以合并abc計(jì)算環(huán)形復(fù)雜度的3種方法流圖中的區(qū)域的個(gè)數(shù)等于環(huán)形復(fù)雜度。公式V(G)=E-N+2,E代表流圖中邊的數(shù)目,N是結(jié)點(diǎn)數(shù)目。公式V(G)=P+1,P是流圖中判定結(jié)點(diǎn)的數(shù)目。環(huán)形復(fù)雜度計(jì)算的例子根據(jù)程序流程圖計(jì)算1234568711910順序結(jié)構(gòu)可以和3合并順序結(jié)構(gòu)可以和5合并該段程序的正常出口該段程序的正常出口整個(gè)程序的正常出口環(huán)形復(fù)雜度計(jì)算的例子12,34,510689711區(qū)域1區(qū)域2區(qū)域3區(qū)域4區(qū)域個(gè)數(shù):4(即復(fù)雜度)判定個(gè)數(shù):3(3+1=4)邊:11,節(jié)點(diǎn):9即:11-9+2=4判定1判定2判定3環(huán)形復(fù)雜度計(jì)算的例子根據(jù)PDL偽碼計(jì)算圖6.16環(huán)形復(fù)雜度的用途程序的分支增加,則環(huán)形復(fù)雜度也隨之增加;它是對(duì)程序結(jié)構(gòu)的定量度量,同時(shí)也是對(duì)測試難度的定量度量;一般,V(G)<=10為宜?;窘Y(jié)構(gòu)的環(huán)形復(fù)雜度順序結(jié)構(gòu):1雙分支選擇結(jié)構(gòu):2While結(jié)構(gòu):2Until結(jié)構(gòu):2多分支選擇結(jié)構(gòu):n(代表分支數(shù))Halstead方法它根據(jù)程序中運(yùn)算符和操作數(shù)的總數(shù)來度量程序的復(fù)雜程度。N=N1+N2,N為程序長度,N1為程序中運(yùn)算符出現(xiàn)的總次數(shù),N2為操作數(shù)出現(xiàn)的總次數(shù)。H=n1log2n1+n2log2n2H代表預(yù)測程序長度;n1代表不同運(yùn)算符的個(gè)數(shù);n2代表不同操作數(shù)的個(gè)數(shù);Halstead方法預(yù)測長度H和實(shí)際長度N很接近Halstead還給出了預(yù)測程序中包含錯(cuò)誤個(gè)數(shù)的公式:E=N*log2(n1+n2)/3000實(shí)驗(yàn)證明,預(yù)測的錯(cuò)誤數(shù)量與實(shí)際錯(cuò)誤數(shù)量的誤差在8%之內(nèi)人機(jī)界面設(shè)計(jì)人機(jī)界面(HumanComputerInterface,簡稱HCI)通常也稱為用戶界面;TheoMandel創(chuàng)造了三條黃金原則:置用戶于控制之下減少用戶的記憶負(fù)擔(dān)保持界面一致

人機(jī)界面設(shè)計(jì)人機(jī)界面應(yīng)具備的特性:可使用性靈活性可靠性人機(jī)界面設(shè)計(jì)可使用性使用的簡單性;術(shù)語標(biāo)準(zhǔn)化的一致性;快速的系統(tǒng)響應(yīng)和低的系統(tǒng)成本;用戶界面具有容錯(cuò)能力;人機(jī)界面設(shè)計(jì)靈活性算法的可隱可顯性;用戶可以根據(jù)需要制定和修改界面方式;足夠的響應(yīng)信息;界面具有一定的靈活性;人機(jī)界面設(shè)計(jì)可靠性用戶界面的復(fù)雜性;用戶界面的可靠性;人機(jī)界面設(shè)計(jì)人機(jī)界面的設(shè)計(jì)質(zhì)量,直接影響用戶對(duì)軟件產(chǎn)品的評(píng)價(jià)。設(shè)計(jì)問題系統(tǒng)響應(yīng)時(shí)間用戶幫助設(shè)施出錯(cuò)信息處理命令行交互系統(tǒng)響應(yīng)時(shí)間它指從用戶完成某個(gè)控制動(dòng)作,到軟件給出預(yù)期的響應(yīng)之間的這段時(shí)間;它有兩個(gè)重要屬性:長度;易變性;用戶幫助設(shè)施幫助是必須的。幫助設(shè)施可分為兩類:集成;附加;出錯(cuò)信息處理系統(tǒng)出現(xiàn)問題了給出的“壞消息”;出錯(cuò)信息應(yīng)該具備如下的屬性:信息用戶應(yīng)該可以理解;信息有助于從錯(cuò)誤中恢復(fù);信息應(yīng)該反映錯(cuò)誤導(dǎo)致的負(fù)面后果;信息應(yīng)該伴隨著聽覺和視覺上的提示;信息不能帶有指責(zé)色彩。命令交互在提供命令交互方式時(shí),必須考慮下列問題:是否每個(gè)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論