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

下載本文檔

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

文檔簡介

第11章 程序設(shè)計語言與編碼編碼——以詳細設(shè)計說明書為輸入,將該輸入用某種程序設(shè)計語言翻譯成計算機可以理解并最終可運行的代碼的過程。本章介紹程序設(shè)計語言的特點、發(fā)展和分類、開發(fā)時選擇程序設(shè)計語言的標準、編程質(zhì)量與程序設(shè)計語言的關(guān)系、編程標準和編程風(fēng)格,最后簡單介紹目前程序設(shè)計的支持環(huán)境。第11章 程序設(shè)計語言與編碼編碼——以詳細設(shè)計說明書為輸入,111.1程序設(shè)計語言

11.1.1程序設(shè)計語言的特點

語言的幾種特性。1)一致性(Uniformity)指語言中采用的標記(Token)法協(xié)調(diào)一致的程度。例如“”在C語言中即可以在聲明中表示其后的變量為指針變量,又可作間接訪問運算符,還可以作乘法運算符,這種“一詞多用”、一致性不好的語言程序不僅可讀性差,而且在編寫程序的過程中容易出錯。11.1程序設(shè)計語言

11.1.1程序設(shè)計語言的特211.1.1程序設(shè)計語言的特點語言的幾種特性。2)二義性(ambiguity)語言的二義性是指語言是否允許使用具有二義性的語句。允許使用二義性語句的語言在可理解性和可修改性上都要差一些。11.1.1程序設(shè)計語言的特點語言的幾種特性。311.1.1程序設(shè)計語言的特點語言的幾種特性。3)緊致性(compactness)緊致性是指程序員寫程序時必須記憶的關(guān)于語言的信息總量。決定緊致性的指標包括:①語言對結(jié)構(gòu)化的支持程度。②關(guān)鍵字及操作符的數(shù)目,顯然關(guān)鍵字和操作符的數(shù)目越多,則緊致性越差。③標準函數(shù)的個數(shù)及復(fù)雜程度。通常緊致性和一致性是矛盾的。在選擇程序語言時,必須在這兩者之間找到平衡點。11.1.1程序設(shè)計語言的特點語言的幾種特性。411.1.1程序設(shè)計語言的特點語言的幾種特性。4)局部性(locality)局部性是指語言的模塊化和信息隱藏特性。一個局部性差的語言必然會導(dǎo)致程序的復(fù)雜性增加。比如,一種不具有塊機制的語言,那么信息的作用域必然是全局的,程序的走向也是全局的,從而導(dǎo)致程序的復(fù)雜性增加,可讀性、可修改性和可維護性都會相應(yīng)降低。11.1.1程序設(shè)計語言的特點語言的幾種特性。5程序設(shè)計語言其他連帶的特性:1)將設(shè)計翻譯成代碼的難易程度設(shè)計階段的輸出是編碼階段的輸入,因此以設(shè)計說明書為輸入編寫代碼時程序語言對設(shè)計概念的支持程度就決定了翻譯過程的難易。如果在分析階段和設(shè)計階段采用的是面向?qū)ο蟮姆椒?,而在編碼階段采用的是面向過程的語言,那么這種翻譯就比較困難。程序設(shè)計語言其他連帶的特性:1)將設(shè)計翻譯成代碼的難易程度6程序設(shè)計語言其他連帶的特性:2)編譯器所生成代碼的效率對于實時或時間關(guān)鍵性的項目來說,除在設(shè)計和編碼時對效率進行充分的考慮外,高效率的編譯器也是必須的。好的編譯器會對程序作最佳的性能優(yōu)化。不同語言生成的目標系統(tǒng)的效率不同,即使是同一種語言,采用不同的編譯器,目標系統(tǒng)的效率也會不同。程序設(shè)計語言其他連帶的特性:2)編譯器所生成代碼的效率7程序設(shè)計語言其他連帶的特性:3)源代碼的可移植性選擇一種可移植性強的語言可以為代碼的重用和項目的移植奠定好的基礎(chǔ)。源代碼的可移植性也是選擇開發(fā)語言要考慮的因素。4)配套的開發(fā)工具主流的語言都有良好的集成開發(fā)環(huán)境(IDE)。其中不僅包括源代碼的編輯器、編譯和連接器、調(diào)試器,同時還包含配置管理工具、安裝部署工具以及代碼的轉(zhuǎn)換工具。程序設(shè)計語言其他連帶的特性:3)源代碼的可移植性811.1.2程序設(shè)計語言的發(fā)展和分類第一代:機器語言和匯編語言,也稱為低級語言。第二代:第一代和第三代的過渡語言。這代語言是50年代末至60年代初出現(xiàn)的,這些語言應(yīng)用面廣,有大量成熟的程序庫。這代語言包括FORTRAN、COBOL、BASIC等。11.1.2程序設(shè)計語言的發(fā)展和分類第一代:機器語言和匯911.1.2程序設(shè)計語言的發(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è)計的語言;而Forth則用于開發(fā)微處理器軟件。專用語言可移植性和可維護性較差。11.1.2程序設(shè)計語言的發(fā)展和分類第三代語言:高級語言1011.1.2程序設(shè)計語言的發(fā)展和分類第四代語言(4GL)4GL還局限在某些領(lǐng)域內(nèi),如數(shù)據(jù)庫查詢語言。程序生成器代表了更為通用的一類4GL,程序生成器可以將更為自然的語言描述翻譯成第三代語言程序,進而更好地消除設(shè)計和代碼之間的語義斷層。11.1.2程序設(shè)計語言的發(fā)展和分類第四代語言(4GL)1111.1.3程序設(shè)計語言的選擇標準選擇語言時要考慮的因素:1)項目的應(yīng)用領(lǐng)域2)項目中算法和計算的復(fù)雜性3)項目中數(shù)據(jù)結(jié)構(gòu)的復(fù)雜性4)用戶的性能需求5)軟件運行的環(huán)境6)軟件開發(fā)人員開發(fā)水平。7)可用的編譯器和交叉編譯器。11.1.3程序設(shè)計語言的選擇標準選擇語言時要考慮的因素1211.2編程質(zhì)量與程序設(shè)計語言程序的可靠性、可維護性和效率通常由程序設(shè)計語言、源代碼的質(zhì)量、和語言的實現(xiàn)機制決定的。11.2.1程序設(shè)計語言與可靠性

程序設(shè)計語言的可靠性是指程序設(shè)計語言本身不出錯或?qū)﹀e誤的糾正能力。如:JAVA由于其拋棄了指針和動態(tài)存儲分配等易于出錯的語言特性。從而具有較高的可靠性。11.2編程質(zhì)量與程序設(shè)計語言程序的可靠性、可維護性和效1311.2.2程序設(shè)計語言與可維護性程序設(shè)計語言的可維護性通常指這種語言編寫的程序被理解,被修改及調(diào)整和改進的難易程度。程序設(shè)計語言的可維護性一般由下面幾個因素決定:①程序設(shè)計語言的一致性和緊致性一致性刻畫了語言標記的語義單義性,因此一致性好的語言的可維護性要好于一致性差的語言。②程序設(shè)計語言的語法規(guī)則語法規(guī)則的嚴格程度也影響語言的可維護性和可讀性,語法要求嚴格的語言要比語法自由的語言的可維護性差些。因為修改和理解語法嚴格的語言要困難些。比如FORTRAN和Perl語言,其語法要求很嚴格。因此其可維護性與C/C++等語法較自由的語言相比要差些。11.2.2程序設(shè)計語言與可維護性程序設(shè)計語言的可維護性1411.2.3程序設(shè)計語言與效率不同程序設(shè)計語言在程序的效率上的差異很大。程序設(shè)計語言的效率由下面因素決定:①程序設(shè)計語言的實現(xiàn)機制;解釋性程序(如解釋BASIC)和編譯成中間語言然后又解釋執(zhí)行的語言(如JAVA)的效率一般要遠遠低于編譯語言。②程序語言對系統(tǒng)底層的訪問和控制能力;設(shè)計良好的低級語言程序效率最高。③編譯器的效率;11.2.3程序設(shè)計語言與效率不同程序設(shè)計語言在程序的效1511.3編程標準編碼的依據(jù)是詳細設(shè)計說明書。編碼的任務(wù)就是按照詳細設(shè)計說明的要求寫出滿足要求的代碼。設(shè)計階段的成果基本上決定了系統(tǒng)的可修改性和可維護性。在編碼階段,遵循下述原則,將有助于編寫清晰、緊湊、高效的程序。從而進一步提高程序的可修改性、可維護性和可測試性。11.3編程標準編碼的依據(jù)是詳細設(shè)計說明書。編碼的任務(wù)就16編碼原則1)編寫易于修改和維護的代碼編碼階段,在設(shè)計基礎(chǔ)上對程序進行進一步的數(shù)據(jù)和操作的分離有利于代碼和數(shù)據(jù)的單獨改變。2)編寫易于測試的代碼在編碼階段對代碼的可測試性進行考慮可以減少測試階段的工作量。以條件編譯和注釋的方法融入源代碼中,是一種有效的增加代碼可測試性的手段。編碼原則1)編寫易于修改和維護的代碼17編碼原則3)編寫詳細的程序文檔程序文檔一般指以注釋的形式嵌入程序中的代碼描述。程序文檔應(yīng)該與程序保持高度一致。程序文檔應(yīng)該包括下列內(nèi)容①代碼的功能;②代碼的完成者;③代碼在整個軟件系統(tǒng)中的位置;④代碼編制、復(fù)審時間;⑤保留代碼的原因;⑥代碼中如何使用數(shù)據(jù)結(jié)構(gòu)和算法。編碼原則3)編寫詳細的程序文檔18程序文檔的例子/************************************************Modualname:gameserverFunction:gameserverforrealtimegameinformationprocessAuthor:chejinhuiCreatedate:2003/11/12Platform:IA32,WindowsModifylist:2003/11/14line28">"shouldbe">="2003/11/15line29......***********************************************/程序文檔的例子/**********************19程序文檔的例子/*----------------------------------------------------------includestdio&socketlibarary-----------------------------------------------------------*/#include<iostream.h>#include<winsock2.h>

/*----------------------------------------------------------Globalvararea-----------------------------------------------------------*/

intiUserCount;程序文檔的例子/*---------------------20程序文檔的例子/*---------------------------------------------------InitializeSocketSubsysteminput:noneoutput:DLLinitializeresult0:faultother:success---------------------------------------------------*/程序文檔的例子/*---------------------21程序文檔的例子intInitSockInterface(){WORDwVersionRequested;WSADATAwsaData;interr;wVersionRequested=MAKEWORD(2,2);//startsocketsubsystemerr=WSAStartup(wVersionRequested,&wsaData);if(err!=0){return0;}程序文檔的例子intInitSockInterface(22程序文檔的例子//seeifsocketversionmeetourrequest(mustbe2.2)if(LOBYTE(wsaData.wVersion)!=2||HIBYTE(wsaData.wVersion)!=2){WSACleanup();return0;}}/*---thisistheendofprogramdocumentdemo---*/程序文檔的例子//seeifsocketversion23編碼原則4)編程中采用統(tǒng)一的標準和約定,降低程序的復(fù)雜性軟件組織通常會制定一份“編碼規(guī)范”,程序員在編寫代碼時。必須嚴格按照“編碼規(guī)范”編寫代碼。表13-1是軟件組織“編碼規(guī)范”的通用格式和內(nèi)容。編碼原則4)編程中采用統(tǒng)一的標準和約定,降低程序的復(fù)雜性24表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)存操作越界”表13-1編碼規(guī)范規(guī)范項規(guī)范內(nèi)容1排版排版格式,如縮進25編碼原則5)分離功能獨立的代碼塊形成新的模塊將功能獨立的代碼塊獨立出來形成新的模塊,增加模塊的內(nèi)聚度,有利于代碼的重用和可修改性。編碼原則5)分離功能獨立的代碼塊形成新的模塊2611.4編程風(fēng)格不同的程序員可能具有不同的編程風(fēng)格,有時候很難說哪種風(fēng)格好,哪種風(fēng)格不好,比如在分支語句之后的語句塊,一些程序員可能習(xí)慣這樣:if(a>b){.......}而另外的程序員喜歡這樣:if(a>b){......}11.4編程風(fēng)格不同的程序員可能具有不同的編程風(fēng)格,有時2711.4編程風(fēng)格一般的軟件組織允許程序員在不影響代碼的可讀性、可修改性、可測試性、可維護性的基礎(chǔ)上使用自己的風(fēng)格編寫程序。但是有些規(guī)則則是所有程序員必須遵守的。11.4編程風(fēng)格一般的軟件組織允許程序員在不影響代碼的可28好的編程風(fēng)格應(yīng)遵循的規(guī)則1)節(jié)簡化(economy)①不使用不必要的變量和函數(shù)②避免變量重名,變量重名可導(dǎo)致很難被發(fā)現(xiàn)的錯誤。③盡量減小代碼量。④盡量減少代碼的執(zhí)行時間,提高執(zhí)行效率。⑤避免功能冗余的模塊。⑥盡量不使用全局變量。好的編程風(fēng)格應(yīng)遵循的規(guī)則1)節(jié)簡化(economy)29好的編程風(fēng)格應(yīng)遵循的規(guī)則2)模塊化(Modularity)①確保物理和邏輯功能密切相關(guān)。②限定一個模塊完成一個獨立的功能,提高模塊的內(nèi)聚度。③檢查代碼的重復(fù)率,重復(fù)多的代碼,要抽出來作為一個單獨的模塊。好的編程風(fēng)格應(yīng)遵循的規(guī)則2)模塊化(Modularity)30好的編程風(fēng)格應(yīng)遵循的規(guī)則3)簡單化(Simplicity)①采用直接了當?shù)乃惴?,避免使用技巧性高和難懂的代碼。②使用簡單的數(shù)據(jù)結(jié)構(gòu),避免使用多維數(shù)組、指針和復(fù)雜的表。③注意對象命名的一致性。④以手工的方式簡化算術(shù)和邏輯表達式。好的編程風(fēng)格應(yīng)遵循的規(guī)則3)簡單化(Simplicity)31好的編程風(fēng)格應(yīng)遵循的規(guī)則4)結(jié)構(gòu)化①按標準化的次序說明數(shù)據(jù);②按字母順序說明對象名③使用讀者明了的結(jié)構(gòu)化程序部件;④采用直截了當?shù)乃惴?;⑤根?jù)應(yīng)用背景排列程序各個部分;好的編程風(fēng)格應(yīng)遵循的規(guī)則4)結(jié)構(gòu)化32好的編程風(fēng)格應(yīng)遵循的規(guī)則4)結(jié)構(gòu)化(structure)⑥不隨意為效率而犧牲程序的清晰度和可讀性;⑦讓機器多做煩瑣的工作,如重復(fù)、庫函數(shù);⑧用公共函數(shù)調(diào)用代替重復(fù)出現(xiàn)的表達式;⑨避免循環(huán)、分支的嵌套層數(shù)過高;⑩單入口單出口。好的編程風(fēng)格應(yīng)遵循的規(guī)則4)結(jié)構(gòu)化(structure)33好的編程風(fēng)格應(yīng)遵循的規(guī)則5)文檔化(documentation)①有效、適當?shù)厥褂米⑨?。②協(xié)調(diào)使用程序塊注釋和程序行注釋。③保持文檔和程序的同步。好的編程風(fēng)格應(yīng)遵循的規(guī)則5)文檔化(documentatio34好的編程風(fēng)格應(yīng)遵循的規(guī)則6)格式化(layout)①始終采用統(tǒng)一縮進規(guī)則;②適當插入括號表明運算次序、排除二義性;③有效地使用空格符以區(qū)別程序的不同意群。好的編程風(fēng)格應(yīng)遵循的規(guī)則6)格式化(layout)3511.5程序設(shè)計支持環(huán)境(PSE)PSE,programmingsupportenvironment即編程所使用的集成開發(fā)環(huán)境:IDE,integrateddevelopmentenvironmentPSE完成程序編輯、編譯、調(diào)試、配置管理、項目管理等一組任務(wù)。11.5程序設(shè)計支持環(huán)境(PSE)PSE,program3611.5程序設(shè)計支持環(huán)境(PSE)好的PSE應(yīng)該具有如下的特性:1)通用性。適用于不同的語言、不同的應(yīng)用領(lǐng)域和開發(fā)方法。2)適應(yīng)性。通過設(shè)置,可以配置出滿足不同需要的PSE實例。3)開放性。能方便的增加新工具。4)支持重用。能支持可重用組件的查詢、存儲和使用。11.5程序設(shè)計支持環(huán)境(PSE)好的PSE應(yīng)該具有如下3711.5程序設(shè)計支持環(huán)境(PSE)5)自控性。保證自身操作的正確性和協(xié)調(diào)。6)自帶數(shù)據(jù)庫。提供數(shù)據(jù)庫用于管理已開發(fā)軟件產(chǎn)品7)保證質(zhì)量。有助于提高所開發(fā)軟件的質(zhì)量。8)吸引用戶。用戶愿意使用。9)有競爭力。PSE能真正提高軟件的生產(chǎn)率。11.5程序設(shè)計支持環(huán)境(PSE)5)自控性。保證自身操38微軟的VS.Net微軟的VS.Net集成了上述全部的特性,該環(huán)境不僅包含了開發(fā)軟件所需的全部工具,還包括項目安裝部署工具。通用性:VS.Net可以使用的語言包括C/C++,C#VB.Net等,它不僅支持面向?qū)ο蟮拈_發(fā)方法,也支持面向過程的開發(fā)方法。如圖13-5-1所示。微軟的VS.Net微軟的VS.Net集成了上述全部的特性,該39圖13-5-1VS.Net的通用性圖13-5-1VS.Net的通用性40適應(yīng)性:VS.Net可提供多種界面和操作風(fēng)格以迎合具有不同編程背景的程序員。圖13-5-2VS.Net的適應(yīng)性適應(yīng)性:VS.Net可提供多種界面和操作風(fēng)格以迎合具有不41開放性:VS.Net提供了開放工具的方法圖13-5-3VS.Net的開放性開放性:VS.Net提供了開放工具的方法圖13-5-342支持重用:VS.Net對組件的操作提供了完全的支持圖13-5-4VS.Net的支持重用開放性支持重用:VS.Net對組件的操作提供了完全的支持圖1343第11章 程序設(shè)計語言與編碼編碼——以詳細設(shè)計說明書為輸入,將該輸入用某種程序設(shè)計語言翻譯成計算機可以理解并最終可運行的代碼的過程。本章介紹程序設(shè)計語言的特點、發(fā)展和分類、開發(fā)時選擇程序設(shè)計語言的標準、編程質(zhì)量與程序設(shè)計語言的關(guān)系、編程標準和編程風(fēng)格,最后簡單介紹目前程序設(shè)計的支持環(huán)境。第11章 程序設(shè)計語言與編碼編碼——以詳細設(shè)計說明書為輸入,4411.1程序設(shè)計語言

11.1.1程序設(shè)計語言的特點

語言的幾種特性。1)一致性(Uniformity)指語言中采用的標記(Token)法協(xié)調(diào)一致的程度。例如“”在C語言中即可以在聲明中表示其后的變量為指針變量,又可作間接訪問運算符,還可以作乘法運算符,這種“一詞多用”、一致性不好的語言程序不僅可讀性差,而且在編寫程序的過程中容易出錯。11.1程序設(shè)計語言

11.1.1程序設(shè)計語言的特4511.1.1程序設(shè)計語言的特點語言的幾種特性。2)二義性(ambiguity)語言的二義性是指語言是否允許使用具有二義性的語句。允許使用二義性語句的語言在可理解性和可修改性上都要差一些。11.1.1程序設(shè)計語言的特點語言的幾種特性。4611.1.1程序設(shè)計語言的特點語言的幾種特性。3)緊致性(compactness)緊致性是指程序員寫程序時必須記憶的關(guān)于語言的信息總量。決定緊致性的指標包括:①語言對結(jié)構(gòu)化的支持程度。②關(guān)鍵字及操作符的數(shù)目,顯然關(guān)鍵字和操作符的數(shù)目越多,則緊致性越差。③標準函數(shù)的個數(shù)及復(fù)雜程度。通常緊致性和一致性是矛盾的。在選擇程序語言時,必須在這兩者之間找到平衡點。11.1.1程序設(shè)計語言的特點語言的幾種特性。4711.1.1程序設(shè)計語言的特點語言的幾種特性。4)局部性(locality)局部性是指語言的模塊化和信息隱藏特性。一個局部性差的語言必然會導(dǎo)致程序的復(fù)雜性增加。比如,一種不具有塊機制的語言,那么信息的作用域必然是全局的,程序的走向也是全局的,從而導(dǎo)致程序的復(fù)雜性增加,可讀性、可修改性和可維護性都會相應(yīng)降低。11.1.1程序設(shè)計語言的特點語言的幾種特性。48程序設(shè)計語言其他連帶的特性:1)將設(shè)計翻譯成代碼的難易程度設(shè)計階段的輸出是編碼階段的輸入,因此以設(shè)計說明書為輸入編寫代碼時程序語言對設(shè)計概念的支持程度就決定了翻譯過程的難易。如果在分析階段和設(shè)計階段采用的是面向?qū)ο蟮姆椒ǎ诰幋a階段采用的是面向過程的語言,那么這種翻譯就比較困難。程序設(shè)計語言其他連帶的特性:1)將設(shè)計翻譯成代碼的難易程度49程序設(shè)計語言其他連帶的特性:2)編譯器所生成代碼的效率對于實時或時間關(guān)鍵性的項目來說,除在設(shè)計和編碼時對效率進行充分的考慮外,高效率的編譯器也是必須的。好的編譯器會對程序作最佳的性能優(yōu)化。不同語言生成的目標系統(tǒng)的效率不同,即使是同一種語言,采用不同的編譯器,目標系統(tǒng)的效率也會不同。程序設(shè)計語言其他連帶的特性:2)編譯器所生成代碼的效率50程序設(shè)計語言其他連帶的特性:3)源代碼的可移植性選擇一種可移植性強的語言可以為代碼的重用和項目的移植奠定好的基礎(chǔ)。源代碼的可移植性也是選擇開發(fā)語言要考慮的因素。4)配套的開發(fā)工具主流的語言都有良好的集成開發(fā)環(huán)境(IDE)。其中不僅包括源代碼的編輯器、編譯和連接器、調(diào)試器,同時還包含配置管理工具、安裝部署工具以及代碼的轉(zhuǎn)換工具。程序設(shè)計語言其他連帶的特性:3)源代碼的可移植性5111.1.2程序設(shè)計語言的發(fā)展和分類第一代:機器語言和匯編語言,也稱為低級語言。第二代:第一代和第三代的過渡語言。這代語言是50年代末至60年代初出現(xiàn)的,這些語言應(yīng)用面廣,有大量成熟的程序庫。這代語言包括FORTRAN、COBOL、BASIC等。11.1.2程序設(shè)計語言的發(fā)展和分類第一代:機器語言和匯5211.1.2程序設(shè)計語言的發(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è)計的語言;而Forth則用于開發(fā)微處理器軟件。專用語言可移植性和可維護性較差。11.1.2程序設(shè)計語言的發(fā)展和分類第三代語言:高級語言5311.1.2程序設(shè)計語言的發(fā)展和分類第四代語言(4GL)4GL還局限在某些領(lǐng)域內(nèi),如數(shù)據(jù)庫查詢語言。程序生成器代表了更為通用的一類4GL,程序生成器可以將更為自然的語言描述翻譯成第三代語言程序,進而更好地消除設(shè)計和代碼之間的語義斷層。11.1.2程序設(shè)計語言的發(fā)展和分類第四代語言(4GL)5411.1.3程序設(shè)計語言的選擇標準選擇語言時要考慮的因素:1)項目的應(yīng)用領(lǐng)域2)項目中算法和計算的復(fù)雜性3)項目中數(shù)據(jù)結(jié)構(gòu)的復(fù)雜性4)用戶的性能需求5)軟件運行的環(huán)境6)軟件開發(fā)人員開發(fā)水平。7)可用的編譯器和交叉編譯器。11.1.3程序設(shè)計語言的選擇標準選擇語言時要考慮的因素5511.2編程質(zhì)量與程序設(shè)計語言程序的可靠性、可維護性和效率通常由程序設(shè)計語言、源代碼的質(zhì)量、和語言的實現(xiàn)機制決定的。11.2.1程序設(shè)計語言與可靠性

程序設(shè)計語言的可靠性是指程序設(shè)計語言本身不出錯或?qū)﹀e誤的糾正能力。如:JAVA由于其拋棄了指針和動態(tài)存儲分配等易于出錯的語言特性。從而具有較高的可靠性。11.2編程質(zhì)量與程序設(shè)計語言程序的可靠性、可維護性和效5611.2.2程序設(shè)計語言與可維護性程序設(shè)計語言的可維護性通常指這種語言編寫的程序被理解,被修改及調(diào)整和改進的難易程度。程序設(shè)計語言的可維護性一般由下面幾個因素決定:①程序設(shè)計語言的一致性和緊致性一致性刻畫了語言標記的語義單義性,因此一致性好的語言的可維護性要好于一致性差的語言。②程序設(shè)計語言的語法規(guī)則語法規(guī)則的嚴格程度也影響語言的可維護性和可讀性,語法要求嚴格的語言要比語法自由的語言的可維護性差些。因為修改和理解語法嚴格的語言要困難些。比如FORTRAN和Perl語言,其語法要求很嚴格。因此其可維護性與C/C++等語法較自由的語言相比要差些。11.2.2程序設(shè)計語言與可維護性程序設(shè)計語言的可維護性5711.2.3程序設(shè)計語言與效率不同程序設(shè)計語言在程序的效率上的差異很大。程序設(shè)計語言的效率由下面因素決定:①程序設(shè)計語言的實現(xiàn)機制;解釋性程序(如解釋BASIC)和編譯成中間語言然后又解釋執(zhí)行的語言(如JAVA)的效率一般要遠遠低于編譯語言。②程序語言對系統(tǒng)底層的訪問和控制能力;設(shè)計良好的低級語言程序效率最高。③編譯器的效率;11.2.3程序設(shè)計語言與效率不同程序設(shè)計語言在程序的效5811.3編程標準編碼的依據(jù)是詳細設(shè)計說明書。編碼的任務(wù)就是按照詳細設(shè)計說明的要求寫出滿足要求的代碼。設(shè)計階段的成果基本上決定了系統(tǒng)的可修改性和可維護性。在編碼階段,遵循下述原則,將有助于編寫清晰、緊湊、高效的程序。從而進一步提高程序的可修改性、可維護性和可測試性。11.3編程標準編碼的依據(jù)是詳細設(shè)計說明書。編碼的任務(wù)就59編碼原則1)編寫易于修改和維護的代碼編碼階段,在設(shè)計基礎(chǔ)上對程序進行進一步的數(shù)據(jù)和操作的分離有利于代碼和數(shù)據(jù)的單獨改變。2)編寫易于測試的代碼在編碼階段對代碼的可測試性進行考慮可以減少測試階段的工作量。以條件編譯和注釋的方法融入源代碼中,是一種有效的增加代碼可測試性的手段。編碼原則1)編寫易于修改和維護的代碼60編碼原則3)編寫詳細的程序文檔程序文檔一般指以注釋的形式嵌入程序中的代碼描述。程序文檔應(yīng)該與程序保持高度一致。程序文檔應(yīng)該包括下列內(nèi)容①代碼的功能;②代碼的完成者;③代碼在整個軟件系統(tǒng)中的位置;④代碼編制、復(fù)審時間;⑤保留代碼的原因;⑥代碼中如何使用數(shù)據(jù)結(jié)構(gòu)和算法。編碼原則3)編寫詳細的程序文檔61程序文檔的例子/************************************************Modualname:gameserverFunction:gameserverforrealtimegameinformationprocessAuthor:chejinhuiCreatedate:2003/11/12Platform:IA32,WindowsModifylist:2003/11/14line28">"shouldbe">="2003/11/15line29......***********************************************/程序文檔的例子/**********************62程序文檔的例子/*----------------------------------------------------------includestdio&socketlibarary-----------------------------------------------------------*/#include<iostream.h>#include<winsock2.h>

/*----------------------------------------------------------Globalvararea-----------------------------------------------------------*/

intiUserCount;程序文檔的例子/*---------------------63程序文檔的例子/*---------------------------------------------------InitializeSocketSubsysteminput:noneoutput:DLLinitializeresult0:faultother:success---------------------------------------------------*/程序文檔的例子/*---------------------64程序文檔的例子intInitSockInterface(){WORDwVersionRequested;WSADATAwsaData;interr;wVersionRequested=MAKEWORD(2,2);//startsocketsubsystemerr=WSAStartup(wVersionRequested,&wsaData);if(err!=0){return0;}程序文檔的例子intInitSockInterface(65程序文檔的例子//seeifsocketversionmeetourrequest(mustbe2.2)if(LOBYTE(wsaData.wVersion)!=2||HIBYTE(wsaData.wVersion)!=2){WSACleanup();return0;}}/*---thisistheendofprogramdocumentdemo---*/程序文檔的例子//seeifsocketversion66編碼原則4)編程中采用統(tǒng)一的標準和約定,降低程序的復(fù)雜性軟件組織通常會制定一份“編碼規(guī)范”,程序員在編寫代碼時。必須嚴格按照“編碼規(guī)范”編寫代碼。表13-1是軟件組織“編碼規(guī)范”的通用格式和內(nèi)容。編碼原則4)編程中采用統(tǒng)一的標準和約定,降低程序的復(fù)雜性67表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)存操作越界”表13-1編碼規(guī)范規(guī)范項規(guī)范內(nèi)容1排版排版格式,如縮進68編碼原則5)分離功能獨立的代碼塊形成新的模塊將功能獨立的代碼塊獨立出來形成新的模塊,增加模塊的內(nèi)聚度,有利于代碼的重用和可修改性。編碼原則5)分離功能獨立的代碼塊形成新的模塊6911.4編程風(fēng)格不同的程序員可能具有不同的編程風(fēng)格,有時候很難說哪種風(fēng)格好,哪種風(fēng)格不好,比如在分支語句之后的語句塊,一些程序員可能習(xí)慣這樣:if(a>b){.......}而另外的程序員喜歡這樣:if(a>b){......}11.4編程風(fēng)格不同的程序員可能具有不同的編程風(fēng)格,有時7011.4編程風(fēng)格一般的軟件組織允許程序員在不影響代碼的可讀性、可修改性、可測試性、可維護性的基礎(chǔ)上使用自己的風(fēng)格編寫程序。但是有些規(guī)則則是所有程序員必須遵守的。11.4編程風(fēng)格一般的軟件組織允許程序員在不影響代碼的可71好的編程風(fēng)格應(yīng)遵循的規(guī)則1)節(jié)簡化(economy)①不使用不必要的變量和函數(shù)②避免變量重名,變量重名可導(dǎo)致很難被發(fā)現(xiàn)的錯誤。③盡量減小代碼量。④盡量減少代碼的執(zhí)行時間,提高執(zhí)行效率。⑤避免功能冗余的模塊。⑥盡量不使用全局變量。好的編程風(fēng)格應(yīng)遵循的規(guī)則1)節(jié)簡化(economy)72好的編程風(fēng)格應(yīng)遵循的規(guī)則2)模塊化(Modularity)①確保物理和邏輯功能密切相關(guān)。②限定一個模塊完成一個獨立的功能,提高模塊的內(nèi)聚度。③檢查代碼的重復(fù)率,重復(fù)多的代碼,要抽出來作為一個單獨的模塊。好的編程風(fēng)格應(yīng)遵循的規(guī)則2)模塊化(Modularity)73好的編程風(fēng)格應(yīng)遵循的規(guī)則3)簡單化(Simplicity)①采用直接了當

溫馨提示

  • 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)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論