軟件工程理論與實(shí)踐 課件 第6章 軟件實(shí)現(xiàn)-1_第1頁(yè)
軟件工程理論與實(shí)踐 課件 第6章 軟件實(shí)現(xiàn)-1_第2頁(yè)
軟件工程理論與實(shí)踐 課件 第6章 軟件實(shí)現(xiàn)-1_第3頁(yè)
軟件工程理論與實(shí)踐 課件 第6章 軟件實(shí)現(xiàn)-1_第4頁(yè)
軟件工程理論與實(shí)踐 課件 第6章 軟件實(shí)現(xiàn)-1_第5頁(yè)
已閱讀5頁(yè),還剩23頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第6章軟件實(shí)現(xiàn)本章概述

本章首先介紹編程語(yǔ)言的發(fā)展與分類,其次講述選擇編程語(yǔ)言需要考慮的因素,然后針對(duì)編程風(fēng)格與規(guī)范進(jìn)行闡述。接著簡(jiǎn)述面向?qū)ο髮?shí)現(xiàn),最后講述代碼復(fù)用以及分析和評(píng)估代碼質(zhì)量的相關(guān)內(nèi)容本章概述了解編程語(yǔ)言的發(fā)展和分類了解選擇編程語(yǔ)言時(shí)所需考慮的因素掌握良好的編程風(fēng)格與編碼規(guī)范了解代碼復(fù)用了解分析和評(píng)價(jià)代碼的質(zhì)量本章目標(biāo)目錄編程語(yǔ)言第一節(jié)編程風(fēng)格與規(guī)范第二節(jié)代碼復(fù)用第三節(jié)分析和評(píng)價(jià)代碼質(zhì)量第四節(jié)第一節(jié)編程語(yǔ)言編程語(yǔ)言在軟件設(shè)計(jì)階段,得到了實(shí)現(xiàn)目標(biāo)系統(tǒng)的解決方案,并用模型圖、偽代碼等設(shè)計(jì)語(yǔ)言表述出來(lái)。編碼的過(guò)程就是把軟件設(shè)計(jì)階段得到的解決方案轉(zhuǎn)化為可以在計(jì)算機(jī)上運(yùn)行的軟件產(chǎn)品的過(guò)程選擇合適的編程語(yǔ)言是編碼過(guò)程的關(guān)鍵。可以說(shuō),編程語(yǔ)言是人與計(jì)算機(jī)交互的基本工具,它定義了一組計(jì)算機(jī)的語(yǔ)法規(guī)則,通過(guò)這些語(yǔ)法規(guī)則可以把人的意圖、思想等轉(zhuǎn)化為計(jì)算機(jī)可以理解的指令,進(jìn)而讓計(jì)算機(jī)幫助人類完成某些任務(wù)。軟件開發(fā)人員通過(guò)使用編程語(yǔ)言來(lái)實(shí)現(xiàn)目標(biāo)系統(tǒng)的功能編程語(yǔ)言的發(fā)展與分類7機(jī)器語(yǔ)言是最早的編程語(yǔ)言,是計(jì)算機(jī)可以識(shí)別、執(zhí)行的指令代碼機(jī)器語(yǔ)言使用0和1為代碼編寫程序,可以直接被計(jì)算機(jī)CPU識(shí)別,從而操縱計(jì)算機(jī)硬件運(yùn)行。這一特性意味著語(yǔ)言必須基于機(jī)器的實(shí)現(xiàn)細(xì)節(jié),即不同型號(hào)的計(jì)算機(jī)對(duì)應(yīng)不同的機(jī)器語(yǔ)言機(jī)器語(yǔ)言可以直接操縱硬件,執(zhí)行速度快,但是對(duì)程序員要求很高,程序直觀性差、容易出錯(cuò),且不能直接移植機(jī)器語(yǔ)言編程語(yǔ)言的發(fā)展與分類匯編語(yǔ)言和機(jī)器語(yǔ)言一樣具有“面向機(jī)器”屬性,同樣不具備移植能力,通常為特定型號(hào)的計(jì)算機(jī)設(shè)計(jì),用于高效訪問匯編語(yǔ)言用一組助記符代替機(jī)器語(yǔ)言的二進(jìn)制代碼,用地址符號(hào)或標(biāo)號(hào)代替地址碼,比機(jī)器語(yǔ)言直觀。也正因如此匯編語(yǔ)言不能被機(jī)器直接識(shí)別,需要特定翻譯程序?qū)R編語(yǔ)言轉(zhuǎn)換為機(jī)器語(yǔ)言,也就是“匯編”過(guò)程,相應(yīng)翻譯程序就稱為匯編程序8編程語(yǔ)言的發(fā)展與分類高級(jí)語(yǔ)言使用類似英文的語(yǔ)句來(lái)表示語(yǔ)義,更容易理解,且不依賴于特定硬件,能夠在不同計(jì)算機(jī)之間移植高級(jí)語(yǔ)言可以分為面向過(guò)程和面向?qū)ο髢深?。面向過(guò)程語(yǔ)言如Fortran,basic等使用結(jié)構(gòu)化的數(shù)據(jù)結(jié)構(gòu)、控制結(jié)構(gòu)、過(guò)程抽象等概念體現(xiàn)客觀事物的結(jié)構(gòu)和邏輯含義。面向?qū)ο笳Z(yǔ)言如C++,將客觀事物看成具有屬性和行為的對(duì)象,并把一系列具有相似屬性和行為的對(duì)象抽象為類,可以更直觀地描述客觀存在的事物屬性即相互關(guān)系9編程語(yǔ)言的發(fā)展與分類超高級(jí)語(yǔ)言對(duì)數(shù)據(jù)處理和過(guò)程描述進(jìn)行了更高級(jí)抽象,一般由特定的知識(shí)庫(kù)和方法庫(kù)支持,例如與數(shù)據(jù)庫(kù)相關(guān)的查詢語(yǔ)言等,其目的在于直接實(shí)現(xiàn)各種應(yīng)用系統(tǒng)10幾種流行的語(yǔ)言Python一種面向?qū)ο螅忉屝缘恼Z(yǔ)言。它具有強(qiáng)大的庫(kù),也被稱為膠水語(yǔ)言,因?yàn)樗梢月?lián)結(jié)用不同語(yǔ)言制作的各種模塊。在實(shí)際開發(fā)中,可以使用Python建立程序原型,對(duì)具體部分用更合適的語(yǔ)言編寫,最后封裝為擴(kuò)展類庫(kù)由Python調(diào)用C一種面向過(guò)程語(yǔ)言,兼具高級(jí)語(yǔ)言和匯編語(yǔ)言的特點(diǎn),常用于系統(tǒng)級(jí)別的程序設(shè)計(jì)。它比其他高級(jí)語(yǔ)言更接近計(jì)算機(jī)底層,執(zhí)行效率很高11幾種流行的語(yǔ)言C++作為C語(yǔ)言的擴(kuò)展,添加了面向?qū)ο蟮刃绿匦?,是原生?yīng)用程序開發(fā)的首選語(yǔ)言。在性能要求高的編輯領(lǐng)域往往都使用C++編寫Java一種純面向?qū)ο蟮恼Z(yǔ)言,繼承了C/C++的風(fēng)格,但舍棄了如指針等不易掌握的特性。在編譯時(shí)Java源代碼會(huì)被編譯為虛擬機(jī)中間代碼,然后這些代碼再在具體應(yīng)用平臺(tái)的虛擬機(jī)執(zhí)行,這一特性賦予了Java極強(qiáng)的移植性12幾種流行的語(yǔ)言13TIOBE編程語(yǔ)言排行榜(2023年9月),可見Python,C和C++占據(jù)前三位。選擇編程語(yǔ)言需考慮的因素進(jìn)行軟件開發(fā)時(shí),應(yīng)該根據(jù)待開發(fā)軟件的特征及開發(fā)團(tuán)隊(duì)的情況考慮使用合適的編程語(yǔ)言。14因?yàn)椴煌木幊陶Z(yǔ)言有各自不同的特點(diǎn),有些時(shí)候,軟件開發(fā)人員在選擇時(shí)經(jīng)常感到很矛盾。這時(shí)候,軟件開發(fā)人員應(yīng)該從主要問題入手,對(duì)各個(gè)因素進(jìn)行平衡。選擇編程語(yǔ)言需考慮的因素在選擇編程語(yǔ)言時(shí),通常需考慮以下因素:待開發(fā)系統(tǒng)的應(yīng)用領(lǐng)域,即項(xiàng)目的應(yīng)用范圍:不同領(lǐng)域可能適合不同的語(yǔ)言用戶的要求:應(yīng)盡量使用用戶熟悉的語(yǔ)言(如果有)將使用何種工具進(jìn)行軟件開發(fā):應(yīng)當(dāng)根據(jù)開發(fā)軟件選定語(yǔ)言,以提高開發(fā)效率軟件開發(fā)人員的喜好和能力:采用開發(fā)人員熟悉的語(yǔ)言,可以節(jié)省開發(fā)人員學(xué)習(xí)資源,加快進(jìn)度軟件的可移植性要求:可移植性好的語(yǔ)言可以使軟件方便地在不同計(jì)算機(jī)上運(yùn)行算法和數(shù)據(jù)結(jié)構(gòu)的復(fù)雜性:需注意有一些語(yǔ)言并不適合完成復(fù)雜度較高的計(jì)算平臺(tái)支持:某些編程語(yǔ)言只能在指定的部分平臺(tái)上才能使用15第二節(jié)編程風(fēng)格與規(guī)范編程風(fēng)格編程風(fēng)格是指源程序的書寫習(xí)慣,比如變量的命名規(guī)則、代碼的注釋方法、縮進(jìn)等。具有良好編程風(fēng)格的源程序具有較強(qiáng)的可讀性、可維護(hù)性,同時(shí)還能提高團(tuán)隊(duì)開發(fā)的效率。良好的個(gè)人編程風(fēng)格是一個(gè)優(yōu)秀程序員素質(zhì)的一部分,項(xiàng)目?jī)?nèi)部相對(duì)統(tǒng)一的編稱風(fēng)格也使得該項(xiàng)目的版本管理、代碼評(píng)審等軟件工程相關(guān)工作更容易實(shí)現(xiàn)。在大型軟件開發(fā)項(xiàng)目中,為了控制軟件開發(fā)的質(zhì)量,保證軟件開發(fā)的一致性,遵循一定的編程風(fēng)格尤為重要。17編程風(fēng)格版權(quán)和版本聲明應(yīng)該在每個(gè)代碼文件的開頭對(duì)代碼的版權(quán)和版本進(jìn)行聲明,主要內(nèi)容有,版權(quán)信息文件名稱,標(biāo)識(shí)符,摘要當(dāng)前版本號(hào),作者/修改者,完成日期版本歷史信息版權(quán)和版本聲明是對(duì)代碼文件的一個(gè)簡(jiǎn)要介紹,包括了文件的主要功能、編寫者、完成和修改時(shí)間等信息。添加版權(quán)和版本聲明使得代碼更加容易閱讀和管理18要做到按照良好的編程風(fēng)格進(jìn)行編程,可從以下幾點(diǎn)入手:編程風(fēng)格2.程序版式在程序編寫過(guò)程中應(yīng)該注意代碼的版式,使代碼更加清晰易讀。對(duì)空行、空格的使用及對(duì)縮進(jìn)的控制與程序的視覺效果密切相關(guān)好的代碼版式?jīng)]有統(tǒng)一標(biāo)準(zhǔn),但有一些經(jīng)驗(yàn)總結(jié)的規(guī)則,如:每個(gè)類聲明和函數(shù)定義后加空行;函數(shù)體內(nèi)邏輯上不密切的地方加空行分隔;一行代碼只做一件事情;關(guān)鍵字單獨(dú)占一行,執(zhí)行語(yǔ)句不得緊跟,且要加上{};關(guān)鍵字和“,”后留空格等等3.注釋注釋闡述了程序的細(xì)節(jié),是軟件開發(fā)人員之間以及開發(fā)人員和用戶之間進(jìn)行交流的重要途徑。做好注釋工作有利于日后的軟件維護(hù)。注釋也需要遵循一定的規(guī)則,比如注釋需要提供哪些方面的信息、注釋的格式、注釋的位置等4.命名規(guī)則事實(shí)上,沒有一種命名規(guī)則可以讓所有的編程人員都贊同,在不同的編程語(yǔ)言、不同的操作系統(tǒng)、不同的集成開發(fā)環(huán)境中,使用的命名規(guī)則可能不盡相同。因此,軟件開發(fā)中僅需要制定一種令大多數(shù)項(xiàng)目成員滿意的命名規(guī)則,并在項(xiàng)目中貫徹實(shí)施19編程風(fēng)格5.數(shù)據(jù)說(shuō)明為了使數(shù)據(jù)更容易理解和維護(hù),需要遵循一定的原則來(lái)進(jìn)行數(shù)據(jù)說(shuō)明,如說(shuō)明次序,添加注釋等6.語(yǔ)句構(gòu)造語(yǔ)句構(gòu)造是編寫代碼的一個(gè)重要任務(wù)。語(yǔ)句構(gòu)造的原則和方法在編程階段尤為重要7.輸入輸出軟件系統(tǒng)的輸入輸出部分與用戶的關(guān)系比較緊密,良好的輸入輸出的實(shí)現(xiàn)能夠直接提高用戶對(duì)系統(tǒng)的滿意度8.效率效率是對(duì)計(jì)算機(jī)資源利用率的度量,它主要是指程序的運(yùn)行時(shí)間和存儲(chǔ)器容量?jī)蓚€(gè)方面。源程序的運(yùn)行時(shí)間主要取決于詳細(xì)設(shè)計(jì)階段確定的算法??梢允褂糜糜诖a優(yōu)化的編譯程序來(lái)減少程序的運(yùn)行時(shí)間。使用較少的存儲(chǔ)單元可以提高存儲(chǔ)器的效率20//簡(jiǎn)潔但效率低的程序for

(i=0;

i<N;

i++){if

(condition)

Call1();else

Call2();}//效率高但不太簡(jiǎn)潔的程序if

(condition){

for

(i=0;

i<N;

i++)

Call1();}else{

for

(i=0;

i<N;

i++)

Call2();}第三節(jié)代碼復(fù)用代碼復(fù)用廣義地說(shuō),軟件復(fù)用可分為3個(gè)層次:知識(shí)復(fù)用,方法復(fù)用和標(biāo)準(zhǔn)復(fù)用,軟件成分復(fù)用。代碼復(fù)用屬于軟件成分復(fù)用。代碼復(fù)用是使用已有的代碼構(gòu)造或編寫新系統(tǒng),代碼形式包括二進(jìn)制目標(biāo)代碼和源代碼。代碼復(fù)用可以減低編寫難度,減少工作量,保證軟件的質(zhì)量(被復(fù)用代碼往往已被充分測(cè)試)復(fù)用也稱為再用或復(fù)用,是指同一事物(代碼)不做修改或稍加改動(dòng)就可以多次重復(fù)利用,是降低軟件成本,提高效率和質(zhì)量的有效途徑。代碼復(fù)用通常將代碼復(fù)用理解為調(diào)用庫(kù)中的模塊,實(shí)際上代碼復(fù)用也有如下幾種方式:源代碼剪貼:最原始的形式,問題在于復(fù)制時(shí)的出錯(cuò),以及配置管理問題導(dǎo)致無(wú)法跟蹤原始代碼的復(fù)用源代碼包含:許多語(yǔ)言提供包含庫(kù)中源代碼的機(jī)制,使用這種方法時(shí)配置管理問題有所緩解,因?yàn)樾薷脑即a后所有包含它的程序都需要重新編譯繼承:利用繼承機(jī)制復(fù)用類時(shí)不需要修改已有代碼,就可以擴(kuò)充或具體化類,幾乎不存在配置管理問題開源代碼復(fù)用目前80%以上的IT產(chǎn)業(yè)主要產(chǎn)品復(fù)用了開源代碼,GitHub上的開源項(xiàng)目截至2021年1月已有5421萬(wàn)個(gè),OpenHub索引的代碼超過(guò)873億行開源軟件資源豐富,但要進(jìn)行有效復(fù)用存在一定難度。一方面是開源許可證侵權(quán)風(fēng)險(xiǎn),另一方面是開源代碼需要及時(shí)更新,以免舊代碼被攻破漏洞24第四節(jié)分析和評(píng)價(jià)代碼質(zhì)量評(píng)估代碼質(zhì)量好的代碼一定是整潔的,能夠幫助閱讀者快速理解定位,加快開發(fā)迭代速度,常見的評(píng)價(jià)標(biāo)準(zhǔn)如下:可讀性:命名是否達(dá)意,注釋是否詳盡,函數(shù)是否長(zhǎng)短合適,模塊劃分是否清

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論