軟件工程課件:第11章 軟件實現_第1頁
軟件工程課件:第11章 軟件實現_第2頁
軟件工程課件:第11章 軟件實現_第3頁
軟件工程課件:第11章 軟件實現_第4頁
軟件工程課件:第11章 軟件實現_第5頁
已閱讀5頁,還剩22頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

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

3、向對象語言?(1)將來能否占主導地位為了使自己的產品在若干年后仍然具有很強的生命力。根據目前占有的市場份額以及專業書刊和學術會議所做的分析、評價,人們往往能夠對未來哪種面向對象語言將占據主導地位做出預測。但是,最終決定選用哪種面向對象語言往往是諸如成本之類的經濟因素而不是技術因素。(2)可重用性采用面向對象方法開發軟件的基本目的和主要優點,是通過重用提高軟件生產率。因此,應該優先選用能夠最完整、最準確地表達問題域語義的面向對象語言。 1111.1 程序設計語言:選擇哪一種面向對象語言?(3)類庫和開發環境考慮類庫的時候,不僅應該考慮是否提供了類庫,還應該考慮類庫中提供了哪些有價值的類。開發環境

4、中是否提供使用方便的類庫編輯工具和瀏覽工具。其中的類庫瀏覽工具應該具有強大的聯想功能。1211.1 程序設計語言:選擇哪一種面向對象語言?(4)其他因素對用戶學習面向對象分析、設計和編碼技術所能提供的培訓服務;在使用這個面向對象語言期間能提供的技術支持;能提供給開發人員使用的開發工具、開發平臺、發行平臺,對機器性能和內存的需求,集成已有軟件的容易程度等。1311.2 編碼風格-軟件編碼規范編碼風格是指編程時表現出來的特點、習慣、邏輯思維等。軟件編碼更多地是一種工程,而不是一種個人藝術。如果不統一編程規范,最終寫出的程序,其可讀性將較差,這不僅給代碼的理解帶來障礙,增加維護階段的工作量,同時不規

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

6、cond4 | cond5 & cond6)doSomethings();1511.2 編碼風格-軟件編碼規范可讀性要求:可讀性第一,效率第二。源程序文件應有文件頭說明,函數應有函數頭說明。主要變量(結構、聯合、類或對象)定義或引用時,注釋要 能夠反映其含義。常量定義有相應說明。處理過程的每個階段都有相關注釋說明。在典型算法前都有注釋。一目了然的語句不加注釋。應保持注釋與代碼完全一致。利用縮進來顯示程序的邏輯結構,縮進量統一為 4 個字節,不得使用 Tab 鍵的方式。對于嵌套的循環和分支程序,層次不要超過五層。1611.2 編碼風格-軟件編碼規范舉例:JAVA 程序的標準格式文件結構說明版權和

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

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

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

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

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

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

13、?如何修改?p = (char *)malloc(300);if (cond1 0) strcpy(p, str); else return; free(p); 2511.2 編碼風格-軟件編碼規范正確性與容錯性要求程序首先是正確,其次是考慮優美和效率。對所有的用戶輸入,必須進行合法性和有效性檢查。所有變量在調用前必須被初始化。改一個錯誤時可能產生新的錯誤,因此在修改前首先考慮對 其它程序的影響。單元測試也是編程的一部分,提交聯調測試的程序必須通過 單元測試。單元測試時,必須針對類里的每一個public方法進行測試,測 試其正確的輸入,是否得到正確的輸出;錯誤的輸入是否得 到相應的容錯處理(如異常捕捉處理,返回錯誤提示等)。2611.2 編碼風格-軟件編碼規范可重用與可移植性要求重復使用的且完成相對獨立功能的算法或接口,應該考慮封裝成公共的控件或類,如時間、日期處理,字符串格式處理,數據庫連接,文件讀寫等,以提高系統中程序的復用或協同開發過程中程序的可重用。相對固定和獨立的程序實現方式和過程,應考慮做成程序模板,增強對程序實現方式的復用,如對符合一定規范的 XML 數據的解析等過程。對于 JAVA 程序來說,應當盡量使用標準的 JDK 提供的類, 避免使用第三方提供的接口,以確保程序不受具體的運行環境影響,而且和平臺無

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論