SW06程序編碼.ppt_第1頁(yè)
SW06程序編碼.ppt_第2頁(yè)
SW06程序編碼.ppt_第3頁(yè)
SW06程序編碼.ppt_第4頁(yè)
SW06程序編碼.ppt_第5頁(yè)
已閱讀5頁(yè),還剩70頁(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、,程序編碼,結(jié)構(gòu)化編程風(fēng)格程序效率程序復(fù)雜性度量,程序編碼是軟件工程過(guò)程的一個(gè)步驟,是設(shè)計(jì)的延續(xù)。編程語(yǔ)言的特性和編程風(fēng)格會(huì)嚴(yán)重影響軟件的質(zhì)量和可服務(wù)性。為了確保程序編碼的質(zhì)量,程序員必須深刻理解和熟練掌握程序語(yǔ)言的特性,并正確應(yīng)用。另外,源程序的結(jié)構(gòu)性好,編程風(fēng)格好。結(jié)構(gòu)化編程,結(jié)構(gòu)化編程主要強(qiáng)調(diào)(1)編寫(xiě)程序時(shí)使用一些基本控制結(jié)構(gòu),結(jié)合嵌套形成程序的控制結(jié)構(gòu)。盡量避免使用GOTO語(yǔ)句。(2)在編程過(guò)程中,盡量應(yīng)用自上而下式和漸進(jìn)精細(xì)化的原理,從粗到細(xì)致。結(jié)構(gòu)化編程的主要原理是使用有限的基本控制結(jié)構(gòu)(如語(yǔ)言的順序、選擇、迭代等)表示程序邏輯??蛇x控制結(jié)構(gòu)只允許一個(gè)入口和一個(gè)出口。程序語(yǔ)句構(gòu)成

2、了易于識(shí)別的塊,每個(gè)塊只有一個(gè)入口和一個(gè)出口。復(fù)雜的結(jié)構(gòu)必須作為組合成基本控制結(jié)構(gòu)的嵌套實(shí)現(xiàn)。不在語(yǔ)言中的控制結(jié)構(gòu)可以使用等效的程序段模擬,但程序段在整個(gè)系統(tǒng)中必須一致。嚴(yán)格控制GOTO語(yǔ)句,僅在使用非結(jié)構(gòu)化編程語(yǔ)言實(shí)現(xiàn)結(jié)構(gòu)化結(jié)構(gòu)時(shí)可用。如果不使用GOTO語(yǔ)句,程序功能將變得模糊。在某些情況下,可以在不損害程序可讀性的情況下提高程序可讀性。示例1打印三個(gè)A、B和C中最小者的程序,程序1 if(A B)goto 120;if(B C)goto 110;100 write(c);goto 140;110 write(b);goto 140;120 if(A C)goto 130;goto 100;

3、130 write(a);140 end,程序2 if(a b)and(a c)then write(a)else if(a b)and(b c)then write(b)else write.在b的根上找到f (x)0方程的二分法的過(guò)程,封閉部分a.假設(shè)b的函數(shù)f (x)有唯一的0,則F0=f(a);f1=f(b);/程序1 if(F0 * f1 0)x0=XM;F0=fm;Else x1=xm;finish:printf(“n the root of this equation is % dn”,XM);單個(gè)入口,2出口正常出口是n次循環(huán),非正常出口是到標(biāo)簽清除位置的循環(huán)中間控制移動(dòng),易于

4、閱讀。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(x1x 0)EPS)break;/異常出口if(F0 * fm0)x0=XM;F0=fm;Else x1=xm;F0=f(a);f1=f(b);/程序3 if(F0 * f1=0)x0=a;x1=b;I=1;finished=0;While (i=n由AIAI編寫(xiě);下1ai;這樣把一個(gè)句子分成兩個(gè)句子,會(huì)產(chǎn)生意想不到的問(wèn)題。7 .簡(jiǎn)單優(yōu)化編譯程序。8.如果可能,請(qǐng)使用庫(kù)函數(shù)

5、。9 .避免不必要的轉(zhuǎn)移。同時(shí),如果可以保持程序的可讀性,就不必使用GO TO語(yǔ)句。例如if(x y)GOTO 30 if(y z)GOTO 50 smallz GOTO 70 30 if(x z)GOTO 60 smallz GOTO 70 50 smally GOTO 70 60 smallx 70 continue,s10.僅使用三種可能的基本控制結(jié)構(gòu)編寫(xiě)程序。除了順序結(jié)構(gòu)外,還使用IF-THEN-ELSE實(shí)現(xiàn)選擇結(jié)構(gòu)。要實(shí)現(xiàn)循環(huán)結(jié)構(gòu),請(qǐng)使用DO-UNTIL或DO-WHILE。11。不要使用空的ELSE語(yǔ)句和IF THEN IF語(yǔ)句。這種結(jié)構(gòu)容易引起讀者的誤解。例如,if(chara)t

6、hen if(charz)then PRINT“This is a letter”,ELSE PRINT“This is not a letter”會(huì)引起異議性問(wèn)題。12 .避免使用太復(fù)雜的條件測(cè)試。13.最小化使用“傅晶”條件的條件語(yǔ)句。例如,如果程序?qū)F NOT(char 0)OR(char 9)THEN更改為IF (CHAR0) AND (CHAR9) THEN,請(qǐng)不要讓讀者環(huán)繞。14 .用盡可能容易理解的偽代碼描述程序的流程,然后翻譯成應(yīng)該使用的語(yǔ)言。15.數(shù)據(jù)結(jié)構(gòu)應(yīng)該有助于程序的簡(jiǎn)化。16.為了使模塊功能盡可能統(tǒng)一,模塊之間的組合清晰可見(jiàn)。17.利用信息隱藏確保每個(gè)模塊的獨(dú)立性。1

7、8.從數(shù)據(jù)構(gòu)建程序。19.不要修補(bǔ)不好的程序,重寫(xiě)。不要盲目追求代碼的重復(fù)使用,要重組。20.對(duì)于太大的程序,需要逐塊寫(xiě)入、測(cè)試,然后重新集成。21.對(duì)遞歸定義的數(shù)據(jù)結(jié)構(gòu)盡可能使用遞歸過(guò)程。輸入和輸出以及輸入和輸出信息與用戶的使用直接相關(guān)。輸入和輸出方法和格式應(yīng)盡可能方便地使用。應(yīng)避免由于設(shè)計(jì)不當(dāng)而給用戶帶來(lái)的問(wèn)題。因此,在軟件要求分析階段和設(shè)計(jì)階段,必須基本確定輸入和輸出樣式。有時(shí),系統(tǒng)是否同意取決于輸入和輸出樣式。無(wú)論是批處理的輸入和輸出方式還是交互式輸入和輸出方式,在設(shè)計(jì)和程序編碼時(shí)都必須考慮以下原則:1.檢查所有輸入數(shù)據(jù)并標(biāo)識(shí)無(wú)效輸入,以確保每個(gè)數(shù)據(jù)的有效性。2.確認(rèn)輸入要素的各種重要

8、組合的合理性,并在必要時(shí)報(bào)告輸入狀態(tài)信息。3.盡可能簡(jiǎn)化輸入的步驟和操作,并保持簡(jiǎn)單的輸入格式。4 .輸入數(shù)據(jù)時(shí),必須允許自由格式輸入。必須允許默認(rèn)值。6.輸入數(shù)據(jù)批時(shí),Oracle建議用戶使用結(jié)束輸入標(biāo)志,而不是指定輸入數(shù)據(jù)的數(shù)量。7.交互輸入時(shí),在屏幕上使用提示明確指示交叉輸入請(qǐng)求,以指明可選項(xiàng)目的種類(lèi)和值范圍。您還必須在數(shù)據(jù)錄入流程和輸入結(jié)束時(shí)在屏幕上提供狀態(tài)信息。8 .如果編程語(yǔ)言對(duì)輸入和輸出格式有嚴(yán)格的要求,那么必須保持輸入格式和輸入語(yǔ)句的要求一致。9.注釋所有輸出并設(shè)計(jì)輸出報(bào)告格式。輸入和輸出樣式受許多其他因素的影響。輸入和輸出設(shè)備(例如端子的類(lèi)型、圖形設(shè)備、數(shù)字轉(zhuǎn)換設(shè)備等)、用戶

9、的熟練程度、通信環(huán)境等。程序復(fù)雜性度量,程序復(fù)雜性主要表示模塊中的程序復(fù)雜性。這直接關(guān)系到軟件開(kāi)發(fā)成本的多少和開(kāi)發(fā)周期的長(zhǎng)度,以及軟件內(nèi)部潛在錯(cuò)誤的數(shù)量。降低程序復(fù)雜性可以提高軟件的簡(jiǎn)易性和可理解性,降低軟件開(kāi)發(fā)成本,縮短開(kāi)發(fā)周期,減少軟件內(nèi)部隱藏的錯(cuò)誤。復(fù)雜性度量必須滿足的假設(shè),衡量程序復(fù)雜性的要求:可用于計(jì)算所有程序的復(fù)雜性;對(duì)于長(zhǎng)度動(dòng)態(tài)增加的程序或原則上不能錯(cuò)誤放置的程序等不合理的程序,將渡邊杏用于計(jì)算復(fù)雜性。程序中的命令欄數(shù)、額外存儲(chǔ)容量和計(jì)算時(shí)間的增加不會(huì)降低程序的復(fù)雜性。代碼行測(cè)量方法、源代碼行數(shù)測(cè)量基于兩個(gè)前提,即隨著程序規(guī)模的增加,程序復(fù)雜性不成比例地增加??刂瞥绦蛞?guī)模的方法最

10、好采用分割和管理方法。將一個(gè)大程序分解成幾個(gè)簡(jiǎn)單易懂的程序段。該方法的基本考慮是計(jì)算一個(gè)程序模塊的源代碼行數(shù),并使用源代碼行數(shù)作為程序復(fù)雜性的度量。將每行代碼的錯(cuò)誤率設(shè)置為每100行源代碼可能的錯(cuò)誤數(shù)。Thayer指出,程序錯(cuò)誤率的估計(jì)范圍為0.047。也就是說(shuō),每個(gè)源程序100行可能有0.047個(gè)錯(cuò)誤。還指出,每行代碼的錯(cuò)誤率和源代碼行數(shù)之間沒(méi)有簡(jiǎn)單的線性關(guān)系。,Lipow指出,對(duì)于applet,每行代碼的錯(cuò)誤率為1.31.8。對(duì)于大型程序,每行代碼的錯(cuò)誤率增加到2.73.2,只考慮程序的執(zhí)行部分,不包括程序的說(shuō)明部分。Lipow和其他研究人員得出結(jié)論,對(duì)于語(yǔ)句少于100條的applet,源

11、代碼行數(shù)與錯(cuò)誤率線性相關(guān)。隨著程序的增加,錯(cuò)誤發(fā)生率以非線性方式增加。McCabe測(cè)量方法也稱為McCabe測(cè)量、循環(huán)復(fù)雜性測(cè)量,是基于程序控制流的復(fù)雜性測(cè)量方法。由于基于程序模塊的程序圖中的道路數(shù),因此先打印程序打印。流程圖是降級(jí)的流程圖。流程圖中的每個(gè)過(guò)程都轉(zhuǎn)換為一個(gè)節(jié)點(diǎn),流線胡歌連接其他節(jié)點(diǎn)的轉(zhuǎn)向。程序圖僅說(shuō)明程序內(nèi)部的控制過(guò)程,完全不表示數(shù)據(jù)的特定操作以及分支和循環(huán)的特定條件。計(jì)算循環(huán)復(fù)雜度的方法:根據(jù)圖論,在強(qiáng)連接的直接圖g中,通過(guò)以下公式給出循環(huán)數(shù):V(G)mnp其中V(G)是直接圖形G的中心道路數(shù),m是圖形G的圓弧數(shù),n是圖形G的節(jié)點(diǎn)數(shù),p是圖形G的強(qiáng)連接分量數(shù)。Myers建議對(duì)

12、復(fù)合決定做出三個(gè)決定,例如(A0)(CD)(XA)。要使圖形成為強(qiáng)連接圖,請(qǐng)?zhí)砑訌膱D形的入口點(diǎn)到出口點(diǎn)的虛線垂直邊,使圖形成為強(qiáng)連接圖。這樣,您可以使用頂面計(jì)算回路復(fù)雜性。示例中的節(jié)點(diǎn)數(shù)為n11,圓弧數(shù)為M13,P1為v (g) mnp1113。等于程序圖中圓弧封閉的區(qū)域數(shù)。一些說(shuō)明是循環(huán)復(fù)雜性取決于程序控制結(jié)構(gòu)的復(fù)雜性。隨著進(jìn)程的分支或周期數(shù)的增加,復(fù)雜性也增加?;芈窂?fù)雜性與程序中應(yīng)用的路徑欄數(shù)有關(guān)?;芈窂?fù)雜性是可以添加的。例如,如果模塊a的復(fù)雜性為3,模塊b的復(fù)雜性為4,則模塊a和模塊b的復(fù)雜性為7。McCabe建議將復(fù)雜程度超過(guò)10的程序分為幾個(gè)較小的程序,以減少程序中的錯(cuò)誤。沃爾什舉例證明了這個(gè)建議的正確性。McCabe復(fù)

溫馨提示

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