軟件工程第11章_第1頁
軟件工程第11章_第2頁
軟件工程第11章_第3頁
軟件工程第11章_第4頁
軟件工程第11章_第5頁
已閱讀5頁,還剩38頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第11章 程序設(shè)計語言與編碼編碼——以詳細設(shè)計說明書為輸入,將該輸入用某種程序設(shè)計語言翻譯成計算機可以理解并最終可運行的代碼的過程。本章介紹程序設(shè)計語言的特點、發(fā)展和分類、開發(fā)時選擇程序設(shè)計語言的標準、編程質(zhì)量與程序設(shè)計語言的關(guān)系、編程標準和編程風格,最后簡單介紹目前程序設(shè)計的支持環(huán)境。11.1程程序設(shè)計計語言11.1.1程序設(shè)計計語言的的特點語言的幾幾種特性性。1)一致性性(Uniformity)指語言中中采用的的標記(Token)法協(xié)調(diào)一一致的程程度。例如“”在C語言中即即可以在在聲明中中表示其其后的變變量為指指針變量量,又可可作間接接訪問運運算符,,還可以以作乘法法運算符符,這種種“一詞詞多用””、一一致性不不好的語語言程序序不僅可可讀性差差,而且且在編寫寫程序的的過程中中容易出出錯。11.1.1程序設(shè)計計語言的的特點語言的幾幾種特性性。2)二義性性(ambiguity)語言的二二義性是是指語言言是否允允許使用用具有二二義性的的語句。。允許使使用二義義性語句句的語言言在可理理解性和和可修改改性上都都要差一一些。11.1.1程序設(shè)計計語言的的特點語言的幾幾種特性性。3)緊致性性(compactness)緊致性是是指程序序員寫程程序時必必須記憶憶的關(guān)于于語言的的信息總總量。決決定緊致致性的指指標包括括:①語言對對結(jié)構(gòu)化化的支持持程度。。②關(guān)鍵字字及操作作符的數(shù)數(shù)目,顯顯然關(guān)鍵鍵字和操操作符的的數(shù)目越越多,則則緊致性性越差。。③標準函函數(shù)的個個數(shù)及復復雜程度度。通常緊致致性和一一致性是是矛盾的的。在選選擇程序序語言時時,必須須在這兩兩者之間間找到平平衡點。。11.1.1程序設(shè)計計語言的的特點語言的幾幾種特性性。4)局部性性(locality))局部性是是指語言言的模塊塊化和信信息隱藏藏特性。。一個局局部性差差的語言言必然會會導致程程序的復復雜性增增加。比比如,一一種不具具有塊機機制的語語言,那那么信息息的作用用域必然然是全局局的,程程序的走走向也是是全局的的,從而而導致程程序的復復雜性增增加,可可讀性、、可修改改性和可可維護性性都會相相應降低低。程序設(shè)計計語言其其他連帶帶的特性性:1)將設(shè)計計翻譯成成代碼的的難易程程度設(shè)計階段段的輸出出是編碼碼階段的的輸入,,因此以以設(shè)計說說明書為為輸入編編寫代碼碼時程序序語言對對設(shè)計概概念的支支持程度度就決定定了翻譯譯過程的的難易。。如果在分分析階段段和設(shè)計計階段采采用的是是面向?qū)ο蟮姆椒椒?,而而在編碼碼階段采采用的是是面向過過程的語語言,那那么這種種翻譯就就比較困困難。程序設(shè)計計語言其其他連帶帶的特性性:2)編譯器器所生成成代碼的的效率對于實時時或時間間關(guān)鍵性性的項目目來說,,除在設(shè)設(shè)計和編編碼時對對效率進進行充分分的考慮慮外,高高效率的的編譯器器也是必必須的。。好的編編譯器會會對程序序作最佳佳的性能能優(yōu)化。。不同語語言生成成的目標標系統(tǒng)的的效率不不同,即即使是同同一種語語言,采采用不同同的編譯譯器,目目標系統(tǒng)統(tǒng)的效率率也會不不同。程序設(shè)計計語言其其他連帶帶的特性性:3)源代碼碼的可移移植性選擇一種種可移植植性強的的語言可可以為代代碼的重重用和項項目的移移植奠定定好的基基礎(chǔ)。源源代碼的的可移植植性也是是選擇開開發(fā)語言言要考慮慮的因素素。4)配套的的開發(fā)工工具主流的語語言都有有良好的的集成開開發(fā)環(huán)境境(IDE)。其中不僅僅包括源源代碼的的編輯器器、編譯譯和連接接器、調(diào)調(diào)試器,,同時還還包含配配置管理理工具、、安裝部部署工具具以及代代碼的轉(zhuǎn)轉(zhuǎn)換工具具。11.1.2程程序序設(shè)計語語言的發(fā)發(fā)展和分分類第一代::機器語語言和匯匯編語言言,也稱稱為低級級語言。。第二代::第一代代和第三三代的過過渡語言言。這代代語言是是50年代末至至60年代初出出現(xiàn)的,,這些語語言應用用面廣,,有大量量成熟的的程序庫庫。這代代語言包包括FORTRAN、COBOL、BASIC等。11.1.2程程序序設(shè)計語語言的發(fā)發(fā)展和分分類第三代語語言:高高級語言言。高級語言言通常被被分成三三類:1)通用高高級語言言。Algol60,C、Pascal,PL/1,Modula--2和Ada等。2)面向?qū)ο蟮恼Z語言,如如C++、Java、Smalltalk等。3)專用語語言,專專用語言言只用于于特定的的領(lǐng)域。。LISP和Prolog適用于人人工智能能領(lǐng)域;;APL是為數(shù)組組和向量量運算設(shè)設(shè)計的語語言;而Forth則用于開開發(fā)微處處理器軟軟件。專用語言言可移植植性和可可維護性性較差。。11.1.2程程序序設(shè)計語語言的發(fā)發(fā)展和分分類第四代語語言(4GL)4GL還局限在在某些領(lǐng)領(lǐng)域內(nèi),,如數(shù)據(jù)據(jù)庫查詢詢語言。。程序生成成器代表表了更為為通用的的一類4GL,程序生成成器可以以將更為為自然的的語言描描述翻譯譯成第三三代語言言程序,,進而更更好地消消除設(shè)計計和代碼碼之間的的語義斷斷層。11.1.3程程序序設(shè)計語語言的選選擇標準準選擇語言言時要考考慮的因因素:1)項目的的應用領(lǐng)領(lǐng)域2)項目中中算法和和計算的的復雜性性3)項目中中數(shù)據(jù)結(jié)結(jié)構(gòu)的復復雜性4)用戶的的性能需需求5)軟件運運行的環(huán)環(huán)境6)軟件開開發(fā)人員員開發(fā)水水平。7)可用的的編譯器器和交叉叉編譯器器。11.2編編程質(zhì)量量與程序序設(shè)計語語言程序的可可靠性、、可維護護性和效效率通常常由程序序設(shè)計語語言、源源代碼的的質(zhì)量、、和語言言的實現(xiàn)現(xiàn)機制決決定的。。11.2.1程序設(shè)計計語言與與可靠性性程序設(shè)計計語言的的可靠性性是指程程序設(shè)計計語言本本身不出出錯或?qū)﹀e誤的的糾正能能力。如:JAVA由于其拋拋棄了指指針和動動態(tài)存儲儲分配等等易于出出錯的語語言特性性。從而而具有較較高的可可靠性。。11.2.2程程序序設(shè)計語語言與可可維護性性程序設(shè)計計語言的的可維護護性通常常指這種種語言編編寫的程程序被理理解,被被修改及及調(diào)整和和改進的的難易程程度。程序設(shè)計計語言的的可維護護性一般般由下面面幾個因因素決定定:①程序設(shè)設(shè)計語言言的一致致性和緊緊致性一致性刻刻畫了語語言標記記的語義義單義性性,因此此一致性性好的語語言的可可維護性性要好于于一致性性差的語語言。②程序設(shè)設(shè)計語言言的語法法規(guī)則語法規(guī)則則的嚴格格程度也也影響語語言的可可維護性性和可讀讀性,語語法要求求嚴格的的語言要要比語法法自由的的語言的的可維護護性差些些。因為為修改和和理解語語法嚴格格的語言言要困難難些。比比如FORTRAN和Perl語言,其其語法要要求很嚴嚴格。因因此其可可維護性性與C/C+++等語法較較自由的的語言相相比要差差些。11.2.3程程序序設(shè)計語語言與效效率不同程序序設(shè)計語語言在程程序的效效率上的的差異很很大。程程序設(shè)計計語言的的效率由由下面因因素決定定:①程序設(shè)設(shè)計語言言的實現(xiàn)現(xiàn)機制;;解釋性程程序(如如解釋BASIC)和編譯成成中間語語言然后后又解釋釋執(zhí)行的的語言((如JAVA)的效率一一般要遠遠遠低于于編譯語語言。②程序語語言對系系統(tǒng)底層層的訪問問和控制制能力;;設(shè)計良好好的低級級語言程程序效率率最高。。③編譯器器的效率率;11.3編編程標準準編碼的依依據(jù)是詳詳細設(shè)計計說明書書。編碼碼的任務務就是按按照詳細細設(shè)計說說明的要要求寫出出滿足要要求的代代碼。設(shè)設(shè)計階段段的成果果基本上上決定了了系統(tǒng)的的可修改改性和可可維護性性。在編碼階階段,遵遵循下述述原則,,將有助助于編寫寫清晰、、緊湊、、高效的的程序。。從而進進一步提提高程序序的可修修改性、、可維護護性和可可測試性性。編碼原則則1)編寫易易于修改改和維護護的代碼碼編碼階段段,在設(shè)設(shè)計基礎(chǔ)礎(chǔ)上對程程序進行行進一步步的數(shù)據(jù)據(jù)和操作作的分離離有利于于代碼和和數(shù)據(jù)的的單獨改改變。2)編寫易易于測試試的代碼碼在編碼階階段對代代碼的可可測試性性進行考考慮可以以減少測測試階段段的工作作量。以以條件編編譯和注注釋的方方法融入入源代碼碼中,是是一種有有效的增增加代碼碼可測試試性的手手段。編碼原則則3)編寫詳詳細的程程序文檔檔程序文檔檔一般指指以注釋釋的形式式嵌入程程序中的的代碼描描述。程程序文檔檔應該與與程序保保持高度度一致。。程序文檔檔應該包包括下列列內(nèi)容①代碼的的功能;;②代碼的的完成者者;③代碼在在整個軟軟件系統(tǒng)統(tǒng)中的位位置;④代碼編編制、復復審時間間;⑤保留代代碼的原原因;⑥代碼中中如何使使用數(shù)據(jù)據(jù)結(jié)構(gòu)和和算法。。程序文檔檔的例子子/****************************************************************Modualname:gameserverFunction:gameserverforrealtimegameinformationprocessAuthor::chejinhuiCreatedate:2003//11//12Platform:IA32,,WindowsModifylist:2003/11/14line28"">""shouldbe"">=""2003/11/15line29.........**************************************************************/程序文檔檔的例子子/*-----------------------------------------------------------------------------includestdio&socketlibarary------------------------------------------------------------------------------*//#include<<iostream..h>#include<<winsock2..h>

/*-----------------------------------------------------------------------------Globalvararea------------------------------------------------------------------------------*//intiUserCount;程序文檔檔的例子子/*--------------------------------------------------------------------InitializeSocketSubsysteminput:noneoutput::DLLinitializeresult0:faultother:success-------------------------------------------------------------------**/程序文檔檔的例子子intInitSockInterface((){WORDwVersionRequested;WSADATAwsaData;;interr;wVersionRequested==MAKEWORD(2,2);;//startsocketsubsystemerr==WSAStartup(wVersionRequested,&&wsaData));if((err!!=0){return0;}程序文檔檔的例子子//seeifsocketversionmeetourrequest(mustbe2..2))if((LOBYTE(wsaData.wVersion))!==2||HIBYTE((wsaData..wVersion))!!=2){WSACleanup();;return0;}}/*---thisistheendofprogramdocumentdemo---*/編碼原則則4)編程中中采用統(tǒng)統(tǒng)一的標標準和約約定,降降低程序序的復雜雜性軟件組織織通常會會制定一一份“編編碼規(guī)范范”,程程序員在在編寫代代碼時。。必須嚴嚴格按照照“編碼碼規(guī)范””編寫代代碼。表表13-1是軟件組組織“編編碼規(guī)范范”的通通用格式式和內(nèi)容容。表13-1編碼規(guī)范范規(guī)范項規(guī)范內(nèi)容1排版排版格式,如縮進、塊語句、分行等2注釋規(guī)范注釋的格式3標識符命名規(guī)范標識符的命名規(guī)則4可讀性為提高可讀性所作的規(guī)范,如禁止使用技巧性高的語句5變量、結(jié)構(gòu)規(guī)范變量和結(jié)構(gòu)的定義,如禁止局部與全局變量同名等6函數(shù)、過程規(guī)范函數(shù)的定義,如“不要設(shè)計多用途面面俱到的函數(shù)”7可測性為提高可測性的規(guī)范,如“用斷言確認函數(shù)的參數(shù)”等8程序效率為程序效率所作的規(guī)范,如“循環(huán)體內(nèi)工作量最小化”9質(zhì)量保證為提高軟件質(zhì)量所作的規(guī)范,如“防止內(nèi)存操作越界”編碼原則則5)分離功功能獨立立的代碼碼塊形成成新的模模塊將功能獨獨立的代代碼塊獨獨立出來來形成新新的模塊塊,增加加模塊的的內(nèi)聚度度,有利利于代碼碼的重用用和可修修改性。。11.4編編程風格格不同的程程序員可可能具有有不同的的編程風風格,有有時候很很難說哪哪種風格格好,哪哪種風格格不好,,比如在在分支語語句之后后的語句句塊,一一些程序序員可能能習慣這這樣:if(a>b)){.........}而另外的的程序員員喜歡這這樣:if(a>b)){.......}11.4編編程風格格一般的軟軟件組織織允許程程序員在在不影響響代碼的的可讀性性、可修修改性、、可測試試性、可可維護性性的基礎(chǔ)礎(chǔ)上使用用自己的的風格編編寫程序序。但是是有些規(guī)規(guī)則則是是所有程程序員必必須遵守守的。好的編程程風格應應遵循的的規(guī)則1)節(jié)簡化化(economy)①不使用不不必要的的變量和和函數(shù)②避免變變量重名名,變量量重名可可導致很很難被發(fā)發(fā)現(xiàn)的錯錯誤。③盡量減減小代碼碼量。④盡量減減少代碼碼的執(zhí)行行時間,,提高執(zhí)執(zhí)行效率率。⑤避免功功能冗余余的模塊塊。⑥盡量不不使用全全局變量量。好的編程程風格應應遵循的的規(guī)則2)模塊化化(Modularity)①確保物理理和邏輯輯功能密密切相關(guān)關(guān)。②限定一一個模塊塊完成一一個獨立立的功能能,提高模塊塊的內(nèi)聚聚度。③檢查代代碼的重重復率,,重復多多的代碼碼,要抽出來來作為一一個單獨獨的模塊塊。好的編程程風格應應遵循的的規(guī)則3)簡單化化(Simplicity)①采用直接接了當?shù)牡乃惴?,,避免使使用技巧巧性高和難難懂的代代碼。②使用簡簡單的數(shù)數(shù)據(jù)結(jié)構(gòu)構(gòu),避免免使用多多維數(shù)組、指指針和復復雜的表表。③注意對對象命名名的一致致性。④以手工工的方式式簡化算算術(shù)和邏邏輯表達達式。好的編程程風格應應遵循的的規(guī)則4)結(jié)構(gòu)化化①按標準準化的次次序說明明數(shù)據(jù);;②按字母母順序說說明對象象名③使用讀讀者明了了的結(jié)構(gòu)構(gòu)化程序序部件;;④采用直直截了當當?shù)乃惴ǚǎ虎莞鶕?jù)應應用背景景排列程程序各個個部分;;好的編程程風格應應遵循的的規(guī)則4)結(jié)構(gòu)化化(structure)⑥不隨意為為效率而而犧牲程程序的清清晰度和和可讀性性;⑦讓機器器多做煩煩瑣的工工作,如如重復、、庫函數(shù)數(shù);⑧用公共共函數(shù)調(diào)調(diào)用代替替重復出出現(xiàn)的表表達式;;⑨避免循循環(huán)、分分支的嵌嵌套層數(shù)數(shù)過高;;⑩單入口口單出口口。好的編程程風格應應遵循的的規(guī)則5)文檔化化(documentation)①有效、適適當?shù)厥故褂米⑨屷?。②協(xié)調(diào)使使用程序序塊注釋釋和程序序行注釋釋。③保持文文檔和程程序的同同步。好的編程程風格應應遵循的的規(guī)則6)格式化化(layout))①始終采用用統(tǒng)一縮縮進規(guī)則則;②適當插插入括號號表明運運算次序序、排除除二義性性;③有效地地使用空空格符以以區(qū)別程程序的不不同意群群。11.5程程序設(shè)計計支持環(huán)環(huán)境(PSE))PSE,programmingsupportenvironment即編程所所使用的的集成開開發(fā)環(huán)境境

溫馨提示

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

評論

0/150

提交評論