版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第5章詳細(xì)設(shè)計詳細(xì)設(shè)計的基本任務(wù)詳細(xì)設(shè)計過程詳細(xì)設(shè)計內(nèi)容結(jié)構(gòu)程序設(shè)計人機(jī)界面設(shè)計過程設(shè)計的工具程序復(fù)雜度的定量度量詳細(xì)設(shè)計優(yōu)化小結(jié)詳細(xì)設(shè)計的基本任務(wù)確定應(yīng)該怎樣具體的實現(xiàn)系統(tǒng)?;設(shè)計程序的”藍(lán)圖”,但不是編程序;詳細(xì)設(shè)計的結(jié)果決定了最終的程序代碼的質(zhì)量;結(jié)構(gòu)化程序設(shè)計是詳細(xì)設(shè)計的邏輯基礎(chǔ);詳細(xì)設(shè)計的基本任務(wù)詳細(xì)設(shè)計也是采用細(xì)化的方法把每個功能模塊分解為一系列的處理步驟;詳細(xì)設(shè)計須遵循的原則:模塊的邏輯描述正確可靠,清晰易讀;采用結(jié)構(gòu)化程序設(shè)計方法,改善控制結(jié)構(gòu),降低程序復(fù)雜度,提高程度的可讀性、可測試性和可維護(hù)性。詳細(xì)設(shè)計過程Step1:確定每個模塊的算法;Step2:確定每個模塊的數(shù)據(jù)組織;Step3:為每個模塊設(shè)計一組測試用例;Step4:編寫詳細(xì)設(shè)計說明書。詳細(xì)設(shè)計內(nèi)容程序描述功能性能輸入項輸出項算法接口存儲分配注釋設(shè)計限制條件結(jié)構(gòu)化程序設(shè)計自頂向下,逐步求精;有限制的使用GOTO語句;單入口,單出口;采用”順序”,”選擇”,”循環(huán)”3種基本的控制結(jié)構(gòu)來詳細(xì)設(shè)計軟件模塊的結(jié)構(gòu);(注:也可稱是5種,參考書上例子)自頂向下,逐步求精細(xì)化軟件模塊;設(shè)計功能更加獨(dú)立的模塊;可用層次結(jié)構(gòu)圖或HIPO圖來進(jìn)行描述;自頂向下,逐步求精例,用篩選法求100以內(nèi)的素數(shù)篩選法就是從2到100中去掉2,3,…,9,10的倍數(shù),剩下的就是100以內(nèi)的素數(shù)。為了解決這個問題,可先按程序功能寫出一個框架。自頂向下,逐步求精main(){//程序框架
建立2到100的數(shù)組A[],其中A[i]=i;
-----------------------------------1
建立2到10的素數(shù)表B[],其中存放2
到10以內(nè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的素數(shù)表B[],其中存放2到
10以內(nè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的素數(shù)表B[],其中存放2到
10以內(nè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)有唯一的一個零點(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)號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è)計定義:盡可能少的使用GOTO語句的程序設(shè)計方法。最好僅在檢測出錯誤時才使用GOTO語句;應(yīng)該總是使用前向的GOTO語句;幾種基本的控制結(jié)構(gòu)過程設(shè)計的工具程序流程圖盒圖PAD圖判定表判定樹PDL語言均要掌握程序流程圖歷史悠久,為最廣泛的人所熟悉;描繪直觀,便于初學(xué)者掌握;總的趨勢越來越多的人不使用它;循環(huán)的標(biāo)準(zhǔn)符號注解的使用多出口判斷程序流程圖主要缺點(diǎn)它本質(zhì)上不是逐步求精的工具;它使得程序員過早的考慮程序的控制結(jié)構(gòu),而忽略程序的全局結(jié)構(gòu);箭頭符號代表控制流,不受程序員控制,有隨意性;它不表示數(shù)據(jù)結(jié)構(gòu);盒圖也稱為N-S圖它的主要特點(diǎn)功能域明確;作用域明確;不能任意轉(zhuǎn)移;易確定作用域;易表現(xiàn)嵌套關(guān)系;比較直觀、易于繪制;有助于程序員養(yǎng)成結(jié)構(gòu)化的設(shè)計思想;缺點(diǎn):算法復(fù)雜,畫圖困難,影響清晰性,靈活性差。A調(diào)用子程序盒圖盒圖N-S圖的嵌套定義形式PAD圖PAD圖是問題分析圖(problemanalysisdiagram)的英文縮寫。它用二維樹型結(jié)構(gòu)的圖來表示程序結(jié)構(gòu),便于將它翻譯為程序代碼。它還允許遞歸使用。PAD圖def分支PAD圖
對應(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è)計要求;結(jié)構(gòu)清晰,層次分明,易讀,易懂,易記;既可表示程序邏輯,又可表示數(shù)據(jù)結(jié)構(gòu);容易將PAD自動轉(zhuǎn)換為高級語言源程序;支持自頂向下、逐步求精的方法。自上而下,從左向右順序執(zhí)行判定表表示復(fù)雜的條件組合與應(yīng)做動作之間的對應(yīng)關(guān)系;判定表并不適用于作為一種通用的設(shè)計工具,通常將之用于輔助測試;要求將程序流程圖中的多分支判斷都改成兩分支判斷;判定表例:
航空行李托運(yùn)費(fèi)的算法
按規(guī)定:重量不超過30公斤的行李可免費(fèi)托運(yùn)。重量超過30公斤時,對超運(yùn)部分,頭等艙國內(nèi)乘客收4元/公斤;其它艙位國內(nèi)乘客收6元/公斤;外國乘客收費(fèi)為國內(nèi)乘客的2倍;殘疾乘客的收費(fèi)為正常乘客的1/2。
判定表缺點(diǎn):含義不清楚;數(shù)據(jù)元素多于兩個時,判定表簡潔性下降;判定樹它是判定表的變種;它的優(yōu)點(diǎn)在于形式簡單,含義明確;它是一種常用的詳細(xì)設(shè)計的工具;判定樹缺點(diǎn):簡潔性很差;分支次序影響判定樹的簡潔度;如把行李重量的判斷作為最后一個分支,會怎樣?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):易于實現(xiàn)由PDL到源代碼的自動轉(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ù)表示能力中差中差中中易驗證性中中中差中中使用頻率高低低高低低程序復(fù)雜性定量度量它可以用來衡量模塊的設(shè)計質(zhì)量。它的價值:把程序的復(fù)雜度乘以適當(dāng)?shù)某?shù)即可估算出軟件中錯誤的數(shù)量以及軟件開發(fā)需要用的工作量。經(jīng)常使用的方法:McCable方法Halstead方法McCabe方法根據(jù)程序控制流的復(fù)雜程度定量度量方法。它分析的基礎(chǔ)是流圖(程序圖)。它的分析過程:過程設(shè)計結(jié)果→流圖→計算→環(huán)路復(fù)雜度流圖圓表示結(jié)點(diǎn),可代表一條或多條語句。流圖中的箭頭稱為邊,代表控制流。邊必須終止于一個結(jié)點(diǎn)。由邊和結(jié)點(diǎn)圍成的面積稱為區(qū)域。任何方法表示的過程設(shè)計結(jié)果都可以翻譯為流圖。處理框和菱形判定框包括圖外面的那個區(qū)域復(fù)合條件的計算復(fù)合條件的含義。把復(fù)合條件分解為若干個簡單條件,注意每一個簡單條件對應(yīng)一個結(jié)點(diǎn)。包含條件的點(diǎn)稱為判定結(jié)點(diǎn)。復(fù)合條件的計算IfaorbthenprocedurexElseprocedureyEndifabxyend順序結(jié)構(gòu)的結(jié)點(diǎn)可以合并abc計算環(huán)形復(fù)雜度的3種方法流圖中的區(qū)域的個數(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ù)程序流程圖計算1234568711910順序結(jié)構(gòu)可以和3合并順序結(jié)構(gòu)可以和5合并該段程序的正常出口該段程序的正常出口整個程序的正常出口環(huán)形復(fù)雜度計算的例子12,34,510689711區(qū)域1區(qū)域2區(qū)域3區(qū)域4區(qū)域個數(shù):4(即復(fù)雜度)判定個數(shù):3(3+1=4)邊:11,節(jié)點(diǎn):9即:11-9+2=4判定1判定2判定3環(huán)形復(fù)雜度計算的例子根據(jù)PDL偽碼計算圖6.16環(huán)形復(fù)雜度的用途程序的分支增加,則環(huán)形復(fù)雜度也隨之增加;它是對程序結(jié)構(gòu)的定量度量,同時也是對測試難度的定量度量;一般,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)算符的個數(shù);n2代表不同操作數(shù)的個數(shù);Halstead方法預(yù)測長度H和實際長度N很接近Halstead還給出了預(yù)測程序中包含錯誤個數(shù)的公式:E=N*log2(n1+n2)/3000實驗證明,預(yù)測的錯誤數(shù)量與實際錯誤數(shù)量的誤差在8%之內(nèi)人機(jī)界面設(shè)計人機(jī)界面(HumanComputerInterface,簡稱HCI)通常也稱為用戶界面;TheoMandel創(chuàng)造了三條黃金原則:置用戶于控制之下減少用戶的記憶負(fù)擔(dān)保持界面一致
人機(jī)界面設(shè)計人機(jī)界面應(yīng)具備的特性:可使用性靈活性可靠性人機(jī)界面設(shè)計可使用性使用的簡單性;術(shù)語標(biāo)準(zhǔn)化的一致性;快速的系統(tǒng)響應(yīng)和低的系統(tǒng)成本;用戶界面具有容錯能力;人機(jī)界面設(shè)計靈活性算法的可隱可顯性;用戶可以根據(jù)需要制定和修改界面方式;足夠的響應(yīng)信息;界面具有一定的靈活性;人機(jī)界面設(shè)計可靠性用戶界面的復(fù)雜性;用戶界面的可靠性;人機(jī)界面設(shè)計人機(jī)界面的設(shè)計質(zhì)量,直接影響用戶對軟件產(chǎn)品的評價。設(shè)計問題系統(tǒng)響應(yīng)時間用戶幫助設(shè)施出錯信息處理命令行交互系統(tǒng)響應(yīng)時間它指從用戶完成某個控制動作,到軟件給出預(yù)期的響應(yīng)之間的這段時間;它有兩個重要屬性:長度;易變性;用戶幫助設(shè)施幫助是必須的。幫助設(shè)施可分為兩類:集成;附加;出錯信息處理系統(tǒng)出現(xiàn)問題了給出的“壞消息”;出錯信息應(yīng)該具備如下的屬性:信息用戶應(yīng)該可以理解;信息有助于從錯誤中恢復(fù);信息應(yīng)該反映錯誤導(dǎo)致的負(fù)面后果;信息應(yīng)該伴隨著聽覺和視覺上的提示;信息不能帶有指責(zé)色彩。命令交互在提供命令交互方式時,必須考慮下列問題:是否每個
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 創(chuàng)新職業(yè)服務(wù)協(xié)議模板(2024年)
- DB11∕T 1705-2019 農(nóng)業(yè)機(jī)械作業(yè)規(guī)范 青飼料收獲機(jī)
- 2024年企業(yè)新員工勞動協(xié)議細(xì)則
- 2024電子商務(wù)平臺服務(wù)居間協(xié)議
- 2024美發(fā)沙龍個人聘用協(xié)議樣本
- 2024挖掘機(jī)購銷協(xié)議范本
- 2024智能家居設(shè)備安裝服務(wù)協(xié)議
- 2024年度紀(jì)錄片后期制作服務(wù)協(xié)議
- 夫妻雙方房產(chǎn)分割自愿離婚協(xié)議格式
- 2024物業(yè)管理室內(nèi)裝修協(xié)議
- 《肉牛營養(yǎng)需要》教學(xué)課件
- 網(wǎng)易云音樂用戶滿意度調(diào)查問卷
- 雪佛蘭愛唯歐說明書
- 經(jīng)營分析報告案例-麥肯錫風(fēng)格
- 煙花爆竹經(jīng)營單位主要負(fù)責(zé)人安全培訓(xùn)
- 2023春國開會計實務(wù)專題形考任務(wù)1-4題庫及答案匯總
- 可疑值的取舍-Q檢驗法
- 生物信息學(xué)(上海海洋大學(xué))知到章節(jié)答案智慧樹2023年
- 核磁共振T臨床應(yīng)用
- 文件與文件夾測試題(含參考答案)
- 電工安全培訓(xùn)課件
評論
0/150
提交評論