版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
9.1程序設(shè)計(jì)語言的發(fā)展與分類9.2程序設(shè)計(jì)語言的選擇9.3程序設(shè)計(jì)風(fēng)格9.4程序設(shè)計(jì)算法與效率9.5容錯(cuò)程序設(shè)計(jì)9.6《程序說明書》的書寫格式第9章軟件編程9.1程序設(shè)計(jì)風(fēng)格9.1.1程序設(shè)計(jì)語言的發(fā)展自20世紀(jì)60年代以來,計(jì)算機(jī)學(xué)者們不斷推出新的計(jì)算機(jī)語言以適應(yīng)新的時(shí)代要求,到目前為止,世界上公布的程序設(shè)計(jì)語言已有上千種之多,其中很多用于特定項(xiàng)目的開發(fā),只有一少部分得到了廣泛的推廣和應(yīng)用。按照語言的發(fā)展歷程分類,程序設(shè)計(jì)語言的發(fā)展大致分為四代(四個(gè)階段),它們分別是機(jī)器語言、匯編語言、高級(jí)語言和第四代語言,如圖9-1所示。1.機(jī)器語言機(jī)器語言是隨著計(jì)算機(jī)的發(fā)明而產(chǎn)生的第一代計(jì)算機(jī)語言,是一種直接和機(jī)器打交道的語言。其指令代碼由操作碼和操作數(shù)的絕對(duì)地址構(gòu)成,指令(由0和1組成)無須翻譯和解釋,可以直接執(zhí)行,所以程序執(zhí)行速度很快。2.匯編語言匯編語言是第二代語言,屬于低級(jí)程序設(shè)計(jì)語言。它是為了改善機(jī)器語言的不直觀性而發(fā)展起來的基于助記符的語言,每個(gè)操作指令通過特定的易于理解的助記符來表達(dá)。匯編語言與機(jī)器指令之間基本上是一一對(duì)應(yīng)的關(guān)系,某些宏匯編語言的宏指令可以與一串特定的機(jī)器指令相對(duì)應(yīng),以表達(dá)某些常用的操作。匯編語言也是面向具體機(jī)器的,但是機(jī)器又不能直接識(shí)別,因此程序要經(jīng)過翻譯,轉(zhuǎn)換成機(jī)器可以識(shí)別的機(jī)器語言才能運(yùn)行。3.高級(jí)語言高級(jí)語言在運(yùn)行時(shí)需要有一種特殊的程序來解釋其每一個(gè)語句的含義,即解釋程序,或是把高級(jí)語言翻譯成機(jī)器語言程序,即編譯程序。目前開發(fā)工具的發(fā)展趨勢(shì)具體有如下幾個(gè)方向:(1)統(tǒng)一的接口,提供可移植性。(2)更注重用戶界面的設(shè)計(jì)。(3)更多考慮維護(hù)要求。4.第四代語言(簡(jiǎn)稱4GL)4GL是非過程化語言,編碼時(shí)只需說明“做什么”,不需描述算法細(xì)節(jié)。第四代程序設(shè)計(jì)語言是面向應(yīng)用,為最終用戶設(shè)計(jì)的一類程序設(shè)計(jì)語言。它具有縮短應(yīng)用開發(fā)過程、降低維護(hù)代價(jià)、最大限度地減少調(diào)試過程中出現(xiàn)的問題以及對(duì)用戶友好等優(yōu)點(diǎn)。9.1.2程序設(shè)計(jì)語言的分類高級(jí)語言種類繁多,可以從應(yīng)用特點(diǎn)和對(duì)客觀系統(tǒng)的描述兩個(gè)方面對(duì)其進(jìn)一步分類。1.從應(yīng)用角度分類從應(yīng)用角度來看,高級(jí)語言可以分為基礎(chǔ)語言、結(jié)構(gòu)化語言和專用語言。2.根據(jù)客觀系統(tǒng)的描述分類根據(jù)描述客觀系統(tǒng)方式的不同,程序設(shè)計(jì)語言可以分為面向過程語言和面向?qū)ο笳Z言。9.2程序設(shè)計(jì)語言的選擇1.應(yīng)用領(lǐng)域各種程序設(shè)計(jì)語言都有自己適用的領(lǐng)域,在選擇時(shí)應(yīng)根據(jù)應(yīng)用的領(lǐng)域發(fā)揮各種語言的專長(zhǎng)。如COBOL、Basic適用于事務(wù)處理;C語言適合系統(tǒng)軟件開發(fā);Ada適用于實(shí)時(shí)并號(hào)系統(tǒng);FoxBase、SQL在大量的數(shù)據(jù)庫操作方面有優(yōu)勢(shì);LISP、PROLOG適合于人工智能應(yīng)用領(lǐng)域。在互聯(lián)網(wǎng)領(lǐng)域,HTML?+?CSS?+?JavaScript、Java、PHP、C#都是不錯(cuò)的選擇。2.過程與算法的復(fù)雜程度有些語言如COBOL、數(shù)據(jù)庫語言SQL、FoxBase只能支持簡(jiǎn)單的數(shù)值運(yùn)算,而Fortran、Basic等在算法上有優(yōu)勢(shì)。3.?dāng)?shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)類型的考慮C語言和Ada有較完備的數(shù)據(jù)結(jié)構(gòu)和豐富的數(shù)據(jù)類型,而Fortran、Basic只提供簡(jiǎn)單的數(shù)據(jù)結(jié)構(gòu),且數(shù)據(jù)類型較少。4.編碼及維護(hù)的工作量與成本一般選用適當(dāng)?shù)膶S谜Z言可以導(dǎo)致較少的編碼工作量,但編碼量少,有時(shí)會(huì)使程序的可讀性下降,造成維護(hù)困難。5.軟件兼容性的要求一般情況,用戶可能擁有不同的機(jī)器、不同的系統(tǒng),這樣就存在不同系統(tǒng)之間的兼容問題,一定要盡量選擇兼容性好的語言來開發(fā)新的系統(tǒng)。6.有多少可用的支撐軟件不同的程序設(shè)計(jì)語言所具有的支持軟件設(shè)計(jì)與開發(fā)的工具有所不同,有的語言有眾多編碼支持工具以使編程工作量減少,有的語言有支持軟件開發(fā)周期多個(gè)階段的軟件工具。7.系統(tǒng)用戶的需求如果程序的維護(hù)由用戶負(fù)責(zé),用戶一般會(huì)要求開發(fā)者用用戶熟悉的語言來編寫程序,這個(gè)要求具有它的合理性。8.程序設(shè)計(jì)人員的知識(shí)水平要考慮程序設(shè)計(jì)人員對(duì)語言的熟練程度和實(shí)踐經(jīng)驗(yàn),即程序員對(duì)該語言的駕馭能力,否則往往會(huì)適得其反。9.程序設(shè)計(jì)語言的特性要對(duì)程序設(shè)計(jì)語言的各方面特性進(jìn)行全面的分析和比較,以揚(yáng)長(zhǎng)避短,充分利用語言優(yōu)勢(shì)。10.系統(tǒng)規(guī)模有些程序設(shè)計(jì)語言不適合于開發(fā)大規(guī)模的系統(tǒng),對(duì)于某些極大規(guī)模的系統(tǒng),也許設(shè)計(jì)一種面向這個(gè)系統(tǒng)的專用語言更有效且成本更低。11.系統(tǒng)的效率要求高級(jí)語言易學(xué)易用,編碼速度快,且易于維護(hù),但這種軟件編碼生產(chǎn)率提高的代價(jià)可能是使系統(tǒng)運(yùn)行效率降低,即運(yùn)行時(shí)間長(zhǎng),占用存儲(chǔ)空間大。如果系統(tǒng)在運(yùn)行效率上確實(shí)有某種特殊要求,如實(shí)時(shí)系統(tǒng),則可以考慮用選定的高級(jí)語言與高效率的匯編語言、C語言等進(jìn)行混合編寫,從而滿足系統(tǒng)的效率要求。程序設(shè)計(jì)沒有絕對(duì)好與絕對(duì)差之分,每種語言都有自己的特點(diǎn)和適應(yīng)范圍,開發(fā)人員應(yīng)根據(jù)軟件開發(fā)項(xiàng)目的特點(diǎn)和實(shí)際需要,選擇最適用的語言,以編寫出符合需要的程序。9.3程序設(shè)計(jì)風(fēng)格編寫程序除了能夠執(zhí)行外,很多時(shí)候還要提供給有關(guān)項(xiàng)目人員(如程序員、測(cè)試工程師、系統(tǒng)分析師、項(xiàng)目經(jīng)理)去閱讀。所以為了提高程序的可讀性,在程序設(shè)計(jì)風(fēng)格方面應(yīng)養(yǎng)成一個(gè)好的習(xí)慣。這里給出Java語言程序的編寫風(fēng)格的建議,供讀者參考。(1)類名首字母應(yīng)該大寫。字段、方法以及對(duì)象(句柄)的首字母應(yīng)小寫。對(duì)于所有標(biāo)識(shí)符,其中包含的所有單詞都應(yīng)緊靠在一起,而且大寫中間單詞的首字母。(2)對(duì)于自己創(chuàng)建的每一個(gè)類,都考慮置入一個(gè)main(),其中包含了用于測(cè)試那個(gè)類的代碼。(3)應(yīng)將方法設(shè)計(jì)成簡(jiǎn)要的、功能性單元,用它描述和實(shí)現(xiàn)一個(gè)不連續(xù)的類接口部分。(4)設(shè)計(jì)一個(gè)類時(shí),應(yīng)設(shè)身處地地為客戶和程序員考慮一下。然后,再設(shè)身處地地為管理代碼的人員考慮一下。(5)讓一切東西都盡可能地“私有”(private),這樣可使類庫的某一部分(一個(gè)方法、類或者一個(gè)字段等)“公共化”。(6)警惕“巨大對(duì)象綜合征”。(7)盡可能細(xì)致地加上注釋,并用javadoc注釋文檔語法生成自己的程序文檔。(8)當(dāng)客戶程序員用完對(duì)象以后,若你的類要求進(jìn)行任何清除工作,可考慮將清除代碼置于一個(gè)良好定義的方法里,采用類似于cleanup()這樣的名字,明確表明自己的用途。(9)若在初始化過程中需要覆蓋(取消)finalize(),請(qǐng)記住調(diào)用super.finalize()(若Object屬于用戶的直接超類,則無此必要)。(10)盡量使用接口interfaces,不要使用抽象類abstract。(11)用繼承及方法覆蓋來表示行為間的差異,而用字段表示狀態(tài)間的區(qū)別。(12)不要“過早優(yōu)化”。首先讓程序運(yùn)行起來,再考慮使其變得更快—但只有在自己必須這樣做、而且經(jīng)證實(shí)在某部分代碼中的確存在一個(gè)性能瓶頸的時(shí)候,才應(yīng)進(jìn)行優(yōu)化。(13)閱讀代碼的時(shí)間比寫代碼的時(shí)間多得多。思路清晰的設(shè)計(jì)可獲得易于理解的程序,但注釋、細(xì)致的解釋以及一些示例往往具有不可估量的價(jià)值。(14)良好的設(shè)計(jì)能帶來最大的回報(bào)。簡(jiǎn)言之,對(duì)于一個(gè)特定的問題,通常會(huì)花較長(zhǎng)的時(shí)間才能找到一種最恰當(dāng)?shù)慕鉀Q方案。但一旦找到了正確的方法,以后的工作就輕松多了,再也不用經(jīng)歷數(shù)小時(shí)、數(shù)天或者數(shù)月的痛苦掙扎。9.4程序設(shè)計(jì)算法與效率9.4.1程序設(shè)計(jì)算法任何事情都有一定的步驟,為解決一個(gè)問題而采取的方法和步驟就稱為算法。任何項(xiàng)目的邏輯都應(yīng)該有個(gè)好的算法,并符合算法的特點(diǎn):有窮性、確定性、有輸入輸出、有效性。解決同樣的問題,采用不同的算法,會(huì)使程序的運(yùn)行效率有所不同。對(duì)于程序設(shè)計(jì)人員,采用對(duì)計(jì)算機(jī)運(yùn)行來講正確、高效的程序算法,是進(jìn)行有效率的程序設(shè)計(jì)的關(guān)鍵。9.4.2程序的運(yùn)行效率效率主要指計(jì)算機(jī)運(yùn)行時(shí)間和存儲(chǔ)空間兩個(gè)方面。時(shí)間效率主要體現(xiàn)在響應(yīng)時(shí)間上,從接受操作者的命令到輸出結(jié)果所需的時(shí)間稱為系統(tǒng)對(duì)該項(xiàng)操作的響應(yīng)時(shí)間,這段時(shí)間越短越好。響應(yīng)時(shí)間主要取決于數(shù)據(jù)的組織和算法的優(yōu)劣??臻g效率主要體現(xiàn)在有效利用存儲(chǔ)設(shè)備上。程序設(shè)計(jì)時(shí)在保證程序可讀性的前提下,提高效率應(yīng)注意以下幾點(diǎn):(1)追求效率建立在不損害程序可讀性或可靠性基礎(chǔ)之上,要先使程序正確,再提高程序效率。(2)盡量選用好的算法。(3)仔細(xì)研究循環(huán)嵌套,確定是否有語句可以從內(nèi)層移到循環(huán)體外。(4)盡量避免使用多維數(shù)組。(5)盡量避免使用指針和復(fù)雜的表。(6)充分利用語言環(huán)境提供的函數(shù)。(7)使用有良好優(yōu)化特性的編譯程序,以生產(chǎn)高效的目標(biāo)代碼。9.5容錯(cuò)程序設(shè)計(jì)軟件系統(tǒng)的質(zhì)量很大程度上受編程質(zhì)量的影響,編程的質(zhì)量不僅體現(xiàn)在源程序語法的正確性上,還受源程序是否具有良好的結(jié)構(gòu)性,是否具有良好的程序設(shè)計(jì)風(fēng)格的影響。目前,編程的質(zhì)量主要從以下幾個(gè)方面衡量:正確性、可讀性、可維護(hù)性、可靠性。提高軟件質(zhì)量和可靠性的技術(shù)大致可分為兩類:(1)避開錯(cuò)誤技術(shù),即在開發(fā)的過程中不讓差錯(cuò)潛入軟件的技術(shù);(2)容錯(cuò)技術(shù),即對(duì)某些無法避開的差錯(cuò),使其影響減至最小的技術(shù)。避開錯(cuò)誤技術(shù)是進(jìn)行質(zhì)量管理,實(shí)現(xiàn)產(chǎn)品應(yīng)有質(zhì)量所必不可少的技術(shù),也就是軟件工程中所討論的先進(jìn)的軟件分析和開發(fā)技術(shù)與管理技術(shù)。實(shí)現(xiàn)容錯(cuò)的主要手段是:冗余程序設(shè)計(jì)和防錯(cuò)程序設(shè)計(jì)。容錯(cuò)系統(tǒng)的設(shè)計(jì)過程包括以下設(shè)計(jì)步驟:(1)按設(shè)計(jì)任務(wù)要求進(jìn)行常規(guī)設(shè)計(jì),盡量保證設(shè)計(jì)的正確性。(2)對(duì)可能出現(xiàn)的錯(cuò)誤分類,確定實(shí)現(xiàn)容錯(cuò)的范圍。(3)按照成本—效益最優(yōu)原則,選用某種冗余手段來實(shí)現(xiàn)對(duì)各類錯(cuò)誤的屏蔽。(4)分析或驗(yàn)證上述冗余結(jié)構(gòu)的容錯(cuò)效果。如果效果沒有達(dá)到預(yù)期的程度,則應(yīng)重新進(jìn)行冗余結(jié)構(gòu)設(shè)計(jì)。如此重復(fù),直到有一個(gè)滿意的結(jié)果為止。9.5.1冗余程序設(shè)計(jì)1.結(jié)構(gòu)冗余結(jié)構(gòu)冗余是常用的冗余技術(shù)。按其工作方式,又分為靜態(tài)冗余、動(dòng)態(tài)冗余和混合冗余三種。2.信息冗余信息冗余為檢查或糾正信息在運(yùn)算或傳輸中的錯(cuò)誤而外加一部分信息,這種現(xiàn)象稱為信息冗余。3.時(shí)間冗余時(shí)間冗余是指以重復(fù)執(zhí)行指令(指令復(fù)執(zhí))或程序(程序復(fù)算)來消除瞬時(shí)錯(cuò)誤帶來的影響。4.冗余附加技術(shù)冗余附加技術(shù)是指為實(shí)現(xiàn)上述冗余技術(shù)所需的資源和技術(shù),包括程序、指令、數(shù)據(jù)、存放和調(diào)動(dòng)它們的空間和通道等。9.5.2防錯(cuò)程序設(shè)計(jì)防錯(cuò)程序設(shè)計(jì)可分為主動(dòng)式和被動(dòng)式兩種。1.主動(dòng)式防錯(cuò)程序設(shè)計(jì)主動(dòng)式防錯(cuò)程序設(shè)計(jì)是指周期性地對(duì)整個(gè)程序或數(shù)據(jù)庫進(jìn)行搜查或在空閑時(shí)搜查異常情況。主動(dòng)式程序設(shè)計(jì)既可在處理輸入信息期間使用,也可在系統(tǒng)空閑時(shí)間或等待下一個(gè)輸入時(shí)使用。以下所列出的檢查均適合于主動(dòng)式防錯(cuò)程序設(shè)計(jì):內(nèi)存檢查、標(biāo)志檢查、反向檢查、狀態(tài)檢查、連接檢查、時(shí)間檢查、其它檢查。2.被動(dòng)式防錯(cuò)程序設(shè)計(jì)被動(dòng)式防錯(cuò)程序設(shè)計(jì)思想是指必須等到某個(gè)輸入之后才能進(jìn)行檢查,也就是達(dá)到檢查點(diǎn)時(shí),才能對(duì)程序的某些部分進(jìn)行檢查。在被動(dòng)式防錯(cuò)程序設(shè)計(jì)中所要進(jìn)行的檢查項(xiàng)目如下:(1)來自外部設(shè)備的輸入數(shù)據(jù),包括范圍、屬性是否正確;(2)由其它程序所提供的數(shù)據(jù)是否正確;(3)數(shù)據(jù)庫中的數(shù)據(jù),包括數(shù)組、文件、結(jié)構(gòu)、記錄是否正確;(4)操作員的輸入,包括輸入的性質(zhì)、順序是否正確;(5)棧的深度是否正確;(6)數(shù)組界限是否正確;(7)表達(dá)式中是否出現(xiàn)零分母情況;(8)正在運(yùn)行的程序版本是否是所期望的(包括最后系統(tǒng)重新組合的日期);(9)通過其它程序或外部設(shè)備的輸出數(shù)據(jù)是否正確。9.6《程序說明書》的書寫格式雖然軟件設(shè)計(jì)給出了各個(gè)模塊—函數(shù)或過程(或者類)的結(jié)構(gòu),但是實(shí)際軟件編程完畢后,可能與原設(shè)計(jì)不完全一致,或者說更加詳細(xì)了。從軟件維護(hù)的角度出發(fā),在軟件編程完畢后,應(yīng)該寫出《程序說明書》,該說明書用于公司或者開發(fā)單位內(nèi)部將來對(duì)軟件的修改維護(hù),不提供給客戶,它與《系統(tǒng)維護(hù)說明書》或者《使用說明書》不同,因?yàn)樗膬?nèi)容對(duì)客戶是保密的。
1.結(jié)構(gòu)化程序的說明書對(duì)于使用結(jié)構(gòu)化程序設(shè)計(jì)方法設(shè)計(jì)的程序,程序說明書的內(nèi)容有:
1)程序總體結(jié)構(gòu)描述
(1)主程序名稱。
(2)系統(tǒng)中劃分的函數(shù)或者過程名清單,如表9-1所示。表9-1模塊清單注:一個(gè)模塊可能含有幾個(gè)函數(shù)或者過程。
2)模塊內(nèi)部描述給出主程
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025設(shè)備買賣合同下載
- 質(zhì)量歸零報(bào)告范文
- 2025版高考化學(xué)一輪復(fù)習(xí)第十章化學(xué)實(shí)驗(yàn)基礎(chǔ)5有機(jī)實(shí)驗(yàn)強(qiáng)化訓(xùn)練2含解析新人教版
- 2025年阜新怎么考貨運(yùn)從業(yè)資格證
- 2025年張家口貨運(yùn)從業(yè)資格證模擬考試系統(tǒng)下載
- 中國呼感清項(xiàng)目投資可行性研究報(bào)告
- 2025泵車設(shè)備租賃合同
- 上?,F(xiàn)代化工職業(yè)學(xué)院《建筑智能化》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025測(cè)繪合同 標(biāo)準(zhǔn)版 模板全
- 上海體育大學(xué)《中國古代園林史》2023-2024學(xué)年第一學(xué)期期末試卷
- 認(rèn)知覺醒:開啟自我改變的原動(dòng)力
- 檢驗(yàn)檢測(cè)機(jī)構(gòu)資質(zhì)認(rèn)定文件資料審查表、簽到表、記錄表、確認(rèn)意見表、工作評(píng)價(jià)反饋表
- 西方文官制度和我國公務(wù)員制度的比較
- 醫(yī)保檢查自查自糾報(bào)告
- VBOXTools軟件操作手冊(cè)
- 外研版(三年級(jí)起點(diǎn))五年級(jí)上冊(cè)重點(diǎn)知識(shí)點(diǎn)復(fù)習(xí)
- 2023年報(bào)告文學(xué)研究(自考)(重點(diǎn))題庫(帶答案)
- 國軍淞滬會(huì)戰(zhàn)
- 2023年湖南體育職業(yè)學(xué)院高職單招(語文)試題庫含答案解析
- GB/T 39314-2020鋁合金石膏型鑄造通用技術(shù)導(dǎo)則
- GB/T 17252-1998聲學(xué)100kHz以下超聲壓電換能器的特性和測(cè)量
評(píng)論
0/150
提交評(píng)論