編碼(zhhf09)_第1頁
編碼(zhhf09)_第2頁
編碼(zhhf09)_第3頁
編碼(zhhf09)_第4頁
編碼(zhhf09)_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、編碼(coding)n編碼的任務(wù)n程序設(shè)計語言n編碼風(fēng)格n兩個相關(guān)概念n實現(xiàn):體現(xiàn)“如何做”的程序文本稱為實現(xiàn)。n規(guī)范:“做什么”的形式化描述通常稱為規(guī)范。n編碼階段的任務(wù):n編寫源程序(source code);n編寫文檔(document);n單元測試(unit testing)。n軟件質(zhì)量主要取決于設(shè)計的質(zhì)量,但不能忽略編碼和程序設(shè)計語言的影響n編碼需要遵循一定的標(biāo)準(zhǔn),形成編碼風(fēng)格。Pseudo codeSource codeDebugTestLinkObject codeExecutable codeCompileCoding nCusumano 和Selby指出微軟軟件開發(fā)過程中,在

2、保留了開發(fā)人員展示自己的創(chuàng)造力和個性的同時切實地融入軟件工程概念。n微軟開發(fā)小組都在各自獨立的地方工作,使用常用的開發(fā)語言,公共的開發(fā)風(fēng)格,標(biāo)準(zhǔn)的開發(fā)工具。n標(biāo)準(zhǔn)有助于交流,討論問題,解決問題。n微軟要求各自的小組收集一系列測試結(jié)果,包括出錯信息和發(fā)現(xiàn)的潛在和修改了的錯誤。當(dāng)繼續(xù)開發(fā)產(chǎn)品時,這些測試結(jié)果指導(dǎo)將來的決策。n標(biāo)準(zhǔn)有助于把設(shè)計轉(zhuǎn)化為代碼和軟件重用。n按照標(biāo)準(zhǔn)把代碼結(jié)構(gòu)化,你可以保留代碼和設(shè)計中的相同部分。因此,設(shè)計的變化很容易在代碼中體現(xiàn)。n機器語言(Machine Language)n匯編(Assemble Language)n高級語言n4GLn基礎(chǔ)語言基礎(chǔ)語言:通用語言,應(yīng)用廣泛

3、,如BASIC、FORTRAN等。n結(jié)構(gòu)化語言結(jié)構(gòu)化語言:現(xiàn)代語言,提供結(jié)構(gòu)化的控制結(jié)構(gòu),支持很強的過程能力和數(shù)據(jù)結(jié)構(gòu)能力。如PASCAL、C、Ada等。n專用語言專用語言:為某種特殊應(yīng)用而設(shè)計的具有獨特語法形式的語言。如APL用于向量運算;LISP、PROLOG用于人工智能。n系統(tǒng)實現(xiàn)語言系統(tǒng)實現(xiàn)語言:利于系統(tǒng)軟件的設(shè)計,靈活的硬件資源管理的硬件資源管理。n靜態(tài)高級語言靜態(tài)高級語言:靜態(tài)地分配存儲。n塊結(jié)構(gòu)高級語言塊結(jié)構(gòu)高級語言:提供有限地動態(tài)存儲分配。n動態(tài)高級語言動態(tài)高級語言:動態(tài)地完成所有存儲管理。參見WORD表格名字說明類型說明初始化程序?qū)ο蟮木植啃猿绦虻哪K特性循環(huán)控制結(jié)構(gòu)分支控制

4、結(jié)構(gòu)異常處理獨立編譯n名字說明的意義和作用n名字(如變量名,函數(shù)名等)說明是指預(yù)先說明程序中所使用對象的名字,使得編譯系統(tǒng)能夠檢查出程序中這些名字使用的合法性。n利于排查錯誤,提高軟件的可靠性。nFortran, Basic語言并不進行顯式的名字說明,會容易出現(xiàn)錯誤,或者錯誤難以診斷。n類型說明的意義n與名字說明的概念是一致的n可以借助于編譯系統(tǒng)檢查錯誤n預(yù)先說明數(shù)據(jù)類型有助于編譯系統(tǒng)的類型檢查,減少歧義性n用戶可以自定義數(shù)據(jù)類型nFortran語言規(guī)定,如果不顯式地說明一個變量,那么,這個變量名字的第一個字母就隱含了該變量的類型。n初始化的意義n減少程序出現(xiàn)錯誤的可能性。n提高系統(tǒng)的可靠性和

5、安全性。n強迫程序員對變量進行初始化n如果引用之前沒有初始化,系統(tǒng)會提示錯誤;n如果初始化之后沒有被引用,系統(tǒng)也會提示錯誤。n程序?qū)ο蟮木植啃缘囊饬xn對變量、常量、函數(shù)等程序?qū)ο蟮恼f明該靠近使用它的地方。n盡量使用局部的變量,以提高程序的可讀性和可修改性。n有關(guān)程序模塊的一些概念n局部變量n全局變量(extern int x,y, 其作用域可以是同一文件的多個函數(shù))n外部函數(shù) (extern int function( ) 可以被其它文件中的函數(shù)調(diào)用)n內(nèi)部函數(shù) (static float function( ) 只能被同一個文件的其它函數(shù)調(diào)用)n循環(huán)控制結(jié)構(gòu)nfor語句nwhile-do語句

6、n需要在循環(huán)體內(nèi)任意一點測試循環(huán)結(jié)束條件(可以用if-then-else實現(xiàn);Ada提供了exit語句,exit when )n分支控制結(jié)構(gòu)nif then elsencase (表達式)的兩個問題:一是表達式的值不在預(yù)定范圍內(nèi);二是由表達式的值所選擇的分支取決于執(zhí)行語句的排列次序。ncase (表達式),由表達式的值匹配case標(biāo)號選擇執(zhí)行分支,與排列次序無關(guān)。允許缺省標(biāo)號( C語言的default)或補缺標(biāo)號(Ada語言的other)。n異常:程序執(zhí)行過程中發(fā)生的錯誤或意外事件。n異常處理n是設(shè)計語言為程序員提供的一組處理異常情況的功能。例如,PL/1、Ada語言提供了相應(yīng)的異常處理機制,

7、當(dāng)子程序或函數(shù)多層嵌套調(diào)用時,可以將異常信息從一個函數(shù)方便地傳送到另一個函數(shù)。n獨立編譯的意義n獨立編譯是指能夠分別編譯各個程序單元,然后再把他們集成為一個完整的程序。n只需要重新編譯修改了的模塊,然后重新連接即可。例如對模塊的修改,如果不影響到其它的模塊,僅僅需要對模塊重新編譯即可。n對于大型軟件來說,獨立編譯非常重要n匯編語言n高級語言n總的要求n利于提高軟件質(zhì)量n降低開發(fā)成本n便于測試和維護n獨立編譯等n具體的實用標(biāo)準(zhǔn)n系統(tǒng)用戶的要求,對效率的考慮。n可以使用的編譯系統(tǒng),目標(biāo)系統(tǒng)的運行環(huán)境等。n可以利用的軟件開發(fā)平臺和開發(fā)工具。n軟件工程的規(guī)模,算法和計算以及數(shù)據(jù)結(jié)構(gòu)復(fù)雜性。n程序員的知

8、識水平和喜好n軟件的應(yīng)用領(lǐng)域n軟件可移植性要求程序內(nèi)部的文檔數(shù)據(jù)說明的次序標(biāo)準(zhǔn)化語句結(jié)構(gòu)應(yīng)該簡潔明了效 率滿足human-engineering的I/O風(fēng)格其它的風(fēng)格n程序內(nèi)部的文檔包括意義明確的標(biāo)識符、適當(dāng)?shù)淖⑨尯蜆?biāo)準(zhǔn)化的書寫格式等。n變量名、函數(shù)名、數(shù)據(jù)結(jié)構(gòu)名等具有明顯的意義,可以提高程序的可讀性,便于測試、維護。n注釋要簡明、適當(dāng)和正確。序言性注釋主要描述模塊的功能、主要算法、接口特點,重要的數(shù)據(jù)結(jié)構(gòu)說明等;與程序代碼有關(guān)的注釋要插在程序中對應(yīng)的位置,解釋有關(guān)代碼的作用和必要性。n程序清單的布局要有層次性,要求結(jié)構(gòu)清晰。n按照數(shù)據(jù)結(jié)構(gòu)或數(shù)據(jù)類型確定說明的次序n對多個變量說明應(yīng)該按照字母順

9、序排列n盡量使用三種基本結(jié)構(gòu),允許使用擴展的結(jié)構(gòu)化設(shè)計,盡量不用GOTO語句(或局部性使用)。n每行只寫一條語句。n盡量避免復(fù)雜的條件判斷和對“非”條件的判斷。n避免大量使用循環(huán)嵌套和條件嵌套。n善于使用括號使表達式次序清晰直觀。n程序運行時間(P139)n存儲器效率n輸入/輸出的效率n從效率第一到清晰第一(對大多數(shù)模塊清晰第一,個別模塊效率第一)n對輸入數(shù)據(jù)進行有效性檢驗,防止對程序的破壞n對多個相關(guān)輸入項進行組合檢查,剔除似是而非的輸入值。n使用數(shù)據(jù)結(jié)束標(biāo)記,不要要求用戶用數(shù)據(jù)的數(shù)目來控制。n交互式輸入的提示清楚,盡量說明可用的選擇或邊界數(shù)值。n程序設(shè)計語言對格式有嚴格要求時,應(yīng)保持輸入格

10、式一致。n為輸出數(shù)據(jù)加標(biāo)志或加以必要的說明以提醒讀者n保持輸入格式簡單;設(shè)計良好的輸出報表。n對用戶提供在線幫助。n對可能產(chǎn)生重大后果請求給出醒目提示,待用戶再次確認。n使程序具有“防彈bulletproof”功能,不至于因用戶的偶然錯誤使程序發(fā)生非正常的中斷。n自頂向下n先實現(xiàn)軟件結(jié)構(gòu)的高層模塊,再設(shè)計較低層次的模塊n程序可讀性較好,可靠性高n自底向上n先實現(xiàn)軟件結(jié)構(gòu)的低層模塊,再設(shè)計較高層次的模塊,直至實現(xiàn)所有的模塊n往往局部是優(yōu)化的,但系統(tǒng)的整體結(jié)構(gòu)較差。可以較早發(fā)現(xiàn)關(guān)鍵算法的可行性,以避免較大的返工n由用戶需求定義直接生成程序代碼n利用各種通用模塊進行組裝n基于領(lǐng)域n模塊獨立性好(可理解性、功能可以預(yù)測,強內(nèi)聚,低耦合等n接口定義簡單明了n模塊庫(構(gòu)件庫)豐富n擴展的自動化程序設(shè)計范型n基于知識的表達n非形式化規(guī)范到形式化規(guī)范n結(jié)合原

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論