軟件工程課件:第11章 軟件實(shí)現(xiàn)_第1頁
軟件工程課件:第11章 軟件實(shí)現(xiàn)_第2頁
軟件工程課件:第11章 軟件實(shí)現(xiàn)_第3頁
軟件工程課件:第11章 軟件實(shí)現(xiàn)_第4頁
軟件工程課件:第11章 軟件實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、1第11章 軟件實(shí)現(xiàn)2什么是軟件編碼?(補(bǔ)充)3什么是軟件編碼? (補(bǔ)充)4軟件編碼的工作(P176引言)5軟件編碼的工作(P176引言)代碼設(shè)計(jì)理解軟件的需求說明和設(shè)計(jì)模型補(bǔ)充遺漏的或剩余的詳細(xì)設(shè)計(jì)設(shè)計(jì)程序代碼的結(jié)構(gòu)設(shè)計(jì)審查檢查設(shè)計(jì)結(jié)果記錄發(fā)現(xiàn)的設(shè)計(jì)缺陷(類型、來源、嚴(yán)重性)代碼編寫應(yīng)用編碼規(guī)范進(jìn)行代碼編寫所編寫代碼應(yīng)該是易驗(yàn)證的6軟件編碼的工作(P176引言)代碼檢查確認(rèn)所寫代碼完成了所要求的工作記錄發(fā)現(xiàn)的代碼缺陷(類型、來源、嚴(yán)重性)代碼編譯修改代碼的語法錯誤測試所寫代碼對代碼進(jìn)行單元測試調(diào)試代碼修改錯誤7軟件實(shí)現(xiàn)過程與文檔流(補(bǔ)充)811.1 程序設(shè)計(jì)語言:11.1.2選擇高級語言還是

2、匯編語言:一般情況下,高級語言明顯優(yōu)于匯編語言和機(jī)器語言,采用高級語言有利于產(chǎn)生可讀性強(qiáng)、易測試和易維護(hù)的程序代碼。對于一些特殊情況,程序的執(zhí)行時(shí)間和使用的空間要求十分嚴(yán)格,這時(shí)程序設(shè)計(jì)的關(guān)鍵是提高執(zhí)行效率和節(jié)省內(nèi)存空間,顯然采用匯編語言進(jìn)行設(shè)計(jì)更為合適。 911.1 程序設(shè)計(jì)語言:選擇哪一種高級語言?系統(tǒng)用戶的要求。 程序員的知識。 軟件可移植性要求。 軟件的應(yīng)用領(lǐng)域。C語言更適用于系統(tǒng)軟件開發(fā)C+效率,速度占優(yōu)勢,windows程序設(shè)計(jì),PC游戲,嵌入式。實(shí)時(shí)性要求高的系統(tǒng)。很多算法描述語言都是C+ 。 Java語言和 C# 語言,WEB企業(yè)級的應(yīng)用1011.1 程序設(shè)計(jì)語言:選擇哪一種面

3、向?qū)ο笳Z言?(1)將來能否占主導(dǎo)地位為了使自己的產(chǎn)品在若干年后仍然具有很強(qiáng)的生命力。根據(jù)目前占有的市場份額以及專業(yè)書刊和學(xué)術(shù)會議所做的分析、評價(jià),人們往往能夠?qū)ξ磥砟姆N面向?qū)ο笳Z言將占據(jù)主導(dǎo)地位做出預(yù)測。但是,最終決定選用哪種面向?qū)ο笳Z言往往是諸如成本之類的經(jīng)濟(jì)因素而不是技術(shù)因素。(2)可重用性采用面向?qū)ο蠓椒ㄩ_發(fā)軟件的基本目的和主要優(yōu)點(diǎn),是通過重用提高軟件生產(chǎn)率。因此,應(yīng)該優(yōu)先選用能夠最完整、最準(zhǔn)確地表達(dá)問題域語義的面向?qū)ο笳Z言。 1111.1 程序設(shè)計(jì)語言:選擇哪一種面向?qū)ο笳Z言?(3)類庫和開發(fā)環(huán)境考慮類庫的時(shí)候,不僅應(yīng)該考慮是否提供了類庫,還應(yīng)該考慮類庫中提供了哪些有價(jià)值的類。開發(fā)環(huán)境

4、中是否提供使用方便的類庫編輯工具和瀏覽工具。其中的類庫瀏覽工具應(yīng)該具有強(qiáng)大的聯(lián)想功能。1211.1 程序設(shè)計(jì)語言:選擇哪一種面向?qū)ο笳Z言?(4)其他因素對用戶學(xué)習(xí)面向?qū)ο蠓治?、設(shè)計(jì)和編碼技術(shù)所能提供的培訓(xùn)服務(wù);在使用這個面向?qū)ο笳Z言期間能提供的技術(shù)支持;能提供給開發(fā)人員使用的開發(fā)工具、開發(fā)平臺、發(fā)行平臺,對機(jī)器性能和內(nèi)存的需求,集成已有軟件的容易程度等。1311.2 編碼風(fēng)格-軟件編碼規(guī)范編碼風(fēng)格是指編程時(shí)表現(xiàn)出來的特點(diǎn)、習(xí)慣、邏輯思維等。軟件編碼更多地是一種工程,而不是一種個人藝術(shù)。如果不統(tǒng)一編程規(guī)范,最終寫出的程序,其可讀性將較差,這不僅給代碼的理解帶來障礙,增加維護(hù)階段的工作量,同時(shí)不規(guī)

5、范的代碼隱含錯誤的可能性也比較大。 軟件編碼規(guī)范與特定語言相關(guān)的描寫如何編寫代碼的規(guī)則集合現(xiàn)實(shí)軟件全生命周期的 70% 成本是維護(hù)軟件在其生命周期中很少由原編寫人員進(jìn)行維護(hù)目的提高編碼質(zhì)量,避免不必要的程序錯誤增強(qiáng)程序代碼的可讀性、可重用性和可移植性1411.2 編碼風(fēng)格-軟件編碼規(guī)范基本要求程序結(jié)構(gòu)清析且簡單易懂,單個函數(shù)的行數(shù)一般不要超過 100行(特殊情況例外)。算法設(shè)計(jì)應(yīng)該簡單且直接了當(dāng),代碼要精簡,避免出現(xiàn)垃圾 程序。盡量使用標(biāo)準(zhǔn)庫函數(shù)(類方法)和公共函數(shù)(類方法)。最好使用括號以避免二義性。問題:以下示例有什么問題?如何修改?if (cond1 & cond2 | cond3 &

6、cond4 | cond5 & cond6)doSomethings();1511.2 編碼風(fēng)格-軟件編碼規(guī)范可讀性要求:可讀性第一,效率第二。源程序文件應(yīng)有文件頭說明,函數(shù)應(yīng)有函數(shù)頭說明。主要變量(結(jié)構(gòu)、聯(lián)合、類或?qū)ο螅┒x或引用時(shí),注釋要 能夠反映其含義。常量定義有相應(yīng)說明。處理過程的每個階段都有相關(guān)注釋說明。在典型算法前都有注釋。一目了然的語句不加注釋。應(yīng)保持注釋與代碼完全一致。利用縮進(jìn)來顯示程序的邏輯結(jié)構(gòu),縮進(jìn)量統(tǒng)一為 4 個字節(jié),不得使用 Tab 鍵的方式。對于嵌套的循環(huán)和分支程序,層次不要超過五層。1611.2 編碼風(fēng)格-軟件編碼規(guī)范舉例:JAVA 程序的標(biāo)準(zhǔn)格式文件結(jié)構(gòu)說明版權(quán)和

7、版本信息的文件頭注釋package 和 import 語句類和接口說明語句Section 結(jié)構(gòu)Class / interface 的注釋Class / interface 聲明語句Class / interface 實(shí)現(xiàn)注釋(必要時(shí))Class(static)變量Instance 變量(public, protected, package, private)ConstructorsMethods(以功能進(jìn)行分組)1711.2 編碼風(fēng)格-軟件編碼規(guī)范命名規(guī)則要求(11.2.1)標(biāo)識符的命名應(yīng)當(dāng)直觀,可以望文知義,最好采用英文單詞或其組合;標(biāo)識符的長度應(yīng)當(dāng)符合“最小長度下的最大信息”原則,過長的

8、英文單詞應(yīng)該采用一些通用而合理的縮寫或者應(yīng)用領(lǐng)域?qū)I(yè)術(shù)語的縮寫;程序中不要出現(xiàn)僅依靠大小寫來區(qū)分的相似標(biāo)識符;程序中不要出現(xiàn)局部變量和全局變量同名的現(xiàn)象,免得引起誤解;變量名應(yīng)當(dāng)使用“名詞”或者“形容詞名詞”的形式;函數(shù)名應(yīng)當(dāng)使用“動詞”或者“動詞名詞”的形式。1811.2 編碼風(fēng)格-軟件編碼規(guī)范命名規(guī)則要求(11.2.1,例如:Java的命名規(guī)則)類和接口的命名采用以大寫字母開頭的單詞組合而成;常量名采用全大寫的單詞組合而成,并在單詞之間用單下劃線分隔,但是首尾最好不使用下劃線;變量名和參數(shù)名采用第一個單詞首字母小寫而后面的單詞首 字母大寫的單詞組合;可以使用前綴s_(表示 static)區(qū)

9、別靜態(tài)變量,在不得以使用 全局變量時(shí)可以加前綴g_(表示 global),類的成員變量加前 綴m_(表示 member)可避免成員變量與成員函數(shù)參數(shù)同名;函數(shù)名采用第一個單詞首字母小寫而后面的單詞首字母大寫 的單詞組合,同時(shí)使用 get、set和 is表示訪問器函數(shù)。1911.2 編碼風(fēng)格-軟件編碼規(guī)范注釋要求(11.2.2)注釋一般分為序言性注釋和功能性注釋。通常在每個模塊開始處有一段序言性的注釋,簡要描述模塊的功能、主要算法、接口持點(diǎn)、重要數(shù)據(jù)以及開發(fā)簡史。功能性注釋嵌入在源程序內(nèi)部,說明程序段或語句的功能以及數(shù)據(jù)的狀態(tài)。 注意事項(xiàng)程序中的注釋不能過多不必要注釋含義已經(jīng)十分清楚的代碼修改代

10、碼時(shí)應(yīng)該同時(shí)修改注釋,以保證注釋和代碼的一致性注釋應(yīng)當(dāng)準(zhǔn)確易懂,防止出現(xiàn)二義性注釋的位置應(yīng)該與被描述的代碼相鄰,應(yīng)該寫在程序代碼的上方 并且和代碼左對齊變量定義和分支語句(條件分支、循環(huán)語句等)必須寫注釋,因 為這些語句往往是程序?qū)崿F(xiàn)某一特定功能的關(guān)鍵。例11.2 Java注釋實(shí)例2011.2 編碼風(fēng)格-軟件編碼規(guī)范源代碼板式要求(11.2.3)1.適當(dāng)?shù)目招性谠创a中適度地使用空行可以使程序的結(jié)構(gòu)更加清晰源文件中的各個節(jié)之間;源文件中的類與類、類與接口之間;方法定義之間;局部變量定義和第一個語句之間;注釋塊或注釋行之前;語句的不同邏輯分段之間。2111.2 編碼風(fēng)格-軟件編碼規(guī)范源代碼板式要

11、求(11.2.3)2.代碼行及行內(nèi)空格一行代碼只寫一條語句;避免使用復(fù)雜的語句行;行內(nèi)空格一般出現(xiàn)在:關(guān)鍵字和括號之間、參數(shù)列表中逗號之后、二元運(yùn)算符之間、語句中的表達(dá)式之間以及賦值符號之后。2211.2 編碼風(fēng)格-軟件編碼規(guī)范源代碼板式要求(11.2.3)3.分行、對齊與縮進(jìn)代碼行最大長度最好控制在70或80個字符之內(nèi),超過這個范圍應(yīng)當(dāng)分成多行;分行應(yīng)在逗號之后、操作符之前;長表達(dá)式應(yīng)在低優(yōu)先級的操作符處拆分成新行,操作符放在新行之首;拆分出的新行要進(jìn)行適當(dāng)?shù)目s進(jìn),建議采用8個空格縮進(jìn),使排版整齊,語句可讀。2311.2 編碼風(fēng)格-軟件編碼規(guī)范異常處理要求(11.2.4)P186所示的C+中

12、Catch語句處理異常程序中有一個錯誤,找出錯誤并改加以正。錯誤原因:catch捕捉到異常,處理異常后,不再返回主程序,需要釋放用參數(shù)傳入的新對象占用的空間,否則有可能導(dǎo)致系統(tǒng)內(nèi)存問題??偨Y(jié)異常處理機(jī)制相當(dāng)有用,但同時(shí)也容易被誤用而導(dǎo)致代碼結(jié)構(gòu)混亂在使用異常處理的過程中,小心其中可能存在的內(nèi)存問題有必要認(rèn)真把握異常處理中的跳轉(zhuǎn)和嵌套機(jī)制2411.2 編碼風(fēng)格-軟件編碼規(guī)范結(jié)構(gòu)化要求禁止使用 GOTO( C 語言)語句。用 IF 語句來強(qiáng)調(diào)只執(zhí)行兩組語句中的一組,禁止 ELSE GOTO和 ELSE RETURN。避免從循環(huán)中引出多個出口,應(yīng)保留函數(shù)(方法)只有一個出口。問題:以下示例有什么問題

13、?如何修改?p = (char *)malloc(300);if (cond1 0) strcpy(p, str); else return; free(p); 2511.2 編碼風(fēng)格-軟件編碼規(guī)范正確性與容錯性要求程序首先是正確,其次是考慮優(yōu)美和效率。對所有的用戶輸入,必須進(jìn)行合法性和有效性檢查。所有變量在調(diào)用前必須被初始化。改一個錯誤時(shí)可能產(chǎn)生新的錯誤,因此在修改前首先考慮對 其它程序的影響。單元測試也是編程的一部分,提交聯(lián)調(diào)測試的程序必須通過 單元測試。單元測試時(shí),必須針對類里的每一個public方法進(jìn)行測試,測 試其正確的輸入,是否得到正確的輸出;錯誤的輸入是否得 到相應(yīng)的容錯處理(如異常捕捉處理,返回錯誤提示等)。2611.2 編碼風(fēng)格-軟件編碼規(guī)范可重用與可移植性要求重復(fù)使用的且完成相對獨(dú)立功能的算法或接口,應(yīng)該考慮封裝成公共的控件或類,如時(shí)間、日期處理,字符串格式處理,數(shù)據(jù)庫連接,文件讀寫等,以提高系統(tǒng)中程序的復(fù)用或協(xié)同開發(fā)過程中程序的可重用。相對固定和獨(dú)立的程序?qū)崿F(xiàn)方式和過程,應(yīng)考慮做成程序模板,增強(qiáng)對程序?qū)崿F(xiàn)方式的復(fù)用,如對符合一定規(guī)范的 XML 數(shù)據(jù)的解析等過程。對于 JAVA 程序來說,應(yīng)當(dāng)盡量使用標(biāo)準(zhǔn)的 JDK 提供的類, 避免使用第三方提供的接口,以確保程序不受具體的運(yùn)行環(huá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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論