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

下載本文檔

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

文檔簡(jiǎn)介

s

軟件實(shí)現(xiàn)本章概述本章首先介紹編程語言的發(fā)展與分類,其次講述選擇編程語言需要考慮的因素,然后針對(duì)編程風(fēng)格與規(guī)范進(jìn)行闡述。接著簡(jiǎn)述面向?qū)ο髮?shí)現(xiàn),最后講述代碼重用以及分析和評(píng)估代碼質(zhì)量的相關(guān)內(nèi)容。本章目標(biāo):了解編程語言的發(fā)展和分類了解選擇編程語言時(shí)所需考慮的因素掌握良好的編程風(fēng)格與編碼規(guī)范熟悉面向?qū)ο髮?shí)現(xiàn)了解代碼重用了解分析和評(píng)價(jià)代碼的質(zhì)量目錄310.2編程風(fēng)格10.3面向?qū)ο髮?shí)現(xiàn)10.1編程語言10.1編程語言編程語言在軟件設(shè)計(jì)階段,得到了實(shí)現(xiàn)目標(biāo)系統(tǒng)的解決方案,并用模型圖、偽代碼等設(shè)計(jì)語言表述出來。編碼的過程就是把軟件設(shè)計(jì)階段得到的解決方案轉(zhuǎn)化為可以在計(jì)算機(jī)上運(yùn)行的軟件產(chǎn)品的過程。選擇合適的編程語言是編碼過程的關(guān)鍵。可以說,編程語言是人與計(jì)算機(jī)交互的基本工具,它定義了一組計(jì)算機(jī)的語法規(guī)則,通過這些語法規(guī)則可以把人的意圖、思想等轉(zhuǎn)化為計(jì)算機(jī)可以理解的指令,進(jìn)而讓計(jì)算機(jī)幫助人類完成某些任務(wù)。軟件開發(fā)人員通過使用編程語言來實(shí)現(xiàn)目標(biāo)系統(tǒng)的功能。510.1.1編程語言的發(fā)展與分類機(jī)器語言7機(jī)器語言是最早的編程語言,是計(jì)算機(jī)可以識(shí)別、執(zhí)行的指令代碼。機(jī)器語言使用0和1為代碼編寫程序,可以直接被計(jì)算機(jī)CPU識(shí)別,從而操縱計(jì)算機(jī)硬件運(yùn)行。這一特性意味著語言必須基于機(jī)器的實(shí)現(xiàn)細(xì)節(jié),即不同型號(hào)的計(jì)算機(jī)對(duì)應(yīng)不同的機(jī)器語言。機(jī)器語言可以直接操縱硬件,執(zhí)行速度快,但是對(duì)程序員要求很高,程序直觀性差、容易出錯(cuò),且不能直接移植匯編語言匯編語言和機(jī)器語言一樣具有“面向機(jī)器”屬性,同樣不具備移植能力,通常為特定型號(hào)的計(jì)算機(jī)設(shè)計(jì),用于高效訪問。匯編語言用一組助記符代替機(jī)器語言的二進(jìn)制代碼,用地址符號(hào)或標(biāo)號(hào)代替地址碼,比機(jī)器語言直觀。也正因如此匯編語言不能被機(jī)器直接識(shí)別,需要特定翻譯程序?qū)R編語言轉(zhuǎn)換為機(jī)器語言,也就是“匯編”過程,相應(yīng)翻譯程序就稱為匯編程序8高級(jí)語言高級(jí)語言使用類似英文的語句來表示語義,更容易理解,且不依賴于特定硬件,能夠在不同計(jì)算機(jī)之間移植。高級(jí)語言可以分為面向過程和面向?qū)ο髢深?。面向過程語言如Fortran,basic等使用結(jié)構(gòu)化的數(shù)據(jù)結(jié)構(gòu)、控制結(jié)構(gòu)、過程抽象等概念體現(xiàn)客觀事物的結(jié)構(gòu)和邏輯含義。面向?qū)ο笳Z言如C++,將客觀事物看成具有屬性和行為的對(duì)象,并把一系列具有相似屬性和行為的對(duì)象抽象為類,可以更直觀地描述客觀存在的事物屬性即相互關(guān)系。9超高級(jí)語言超高級(jí)語言對(duì)數(shù)據(jù)處理和過程描述進(jìn)行了更高級(jí)抽象,一般由特定的知識(shí)庫和方法庫支持,例如與數(shù)據(jù)庫相關(guān)的查詢語言等,其目的在于直接實(shí)現(xiàn)各種應(yīng)用系統(tǒng)。10幾種流行的語言Python一種面向?qū)ο?,解釋性的語言。它具有強(qiáng)大的庫,也被稱為膠水語言,因?yàn)樗梢月?lián)結(jié)用不同語言制作的各種模塊。在實(shí)際開發(fā)中,可以使用Python建立程序原型,對(duì)具體部分用更合適的語言編寫,最后封裝為擴(kuò)展類庫由Python調(diào)用。C一種面向過程語言,兼具高級(jí)語言和匯編語言的特點(diǎn),常用于系統(tǒng)級(jí)別的程序設(shè)計(jì)。它比其他高級(jí)語言更接近計(jì)算機(jī)底層,執(zhí)行效率很高。11幾種流行的語言Java一種純面向?qū)ο蟮恼Z言,繼承了C/C++的風(fēng)格,但舍棄了如指針等不易掌握的特性。在編譯時(shí)Java源代碼會(huì)被編譯為虛擬機(jī)中間代碼,然后這些代碼再在具體應(yīng)用平臺(tái)的虛擬機(jī)執(zhí)行,這一特性賦予了Java極強(qiáng)的移植性。C++作為C語言的擴(kuò)展,添加了面向?qū)ο蟮刃绿匦?,是原生?yīng)用程序開發(fā)的首選語言。在性能要求高的編輯領(lǐng)域往往都使用C++編寫。12幾種流行的語言13TIOBE編程語言排行榜,可見Python,Java和C系列語言占主要份額。選擇編程語言需考慮的因素進(jìn)行軟件開發(fā)時(shí),應(yīng)該根據(jù)待開發(fā)軟件的特征及開發(fā)團(tuán)隊(duì)的情況考慮使用合適的編程語言。因?yàn)椴煌木幊陶Z言有各自不同的特點(diǎn),有些時(shí)候,軟件開發(fā)人員在選擇時(shí)經(jīng)常感到很矛盾。這時(shí)候,軟件開發(fā)人員應(yīng)該從主要問題入手,對(duì)各個(gè)因素進(jìn)行平衡。在選擇編程語言時(shí),通常需考慮以下因素。待開發(fā)系統(tǒng)的應(yīng)用領(lǐng)域,即項(xiàng)目的應(yīng)用范圍:不同領(lǐng)域可能適合不同的語言。用戶的要求:應(yīng)盡量使用用戶熟悉的語言(如果有)。將使用何種工具進(jìn)行軟件開發(fā):應(yīng)當(dāng)根據(jù)開發(fā)軟件選定語言,以提高開發(fā)效率。軟件開發(fā)人員的喜好和能力:采用開發(fā)人員熟悉的語言,可以節(jié)省開發(fā)人員學(xué)習(xí)資源,加快進(jìn)度。軟件的可移植性要求:可移植性好的語言可以使軟件方便地在不同計(jì)算機(jī)上運(yùn)行。算法和數(shù)據(jù)結(jié)構(gòu)的復(fù)雜性:需注意有一些語言并不適合完成復(fù)雜度較高的計(jì)算。平臺(tái)支持:某些編程語言只能在指定的部分平臺(tái)上才能使用。1410.2編程風(fēng)格編程風(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)格尤為重要。16要做到按照良好的編程風(fēng)格進(jìn)行編程,可從以下幾點(diǎn)入手版權(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)和版本聲明使得代碼更加容易閱讀和管理。17要做到按照良好的編程風(fēng)格進(jìn)行編程,可從以下幾點(diǎn)入手2.程序版式:在程序編寫過程中應(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í)行語句不得緊跟,且要加上{};關(guān)鍵字和“,”后留空格等等。3.注釋:注釋闡述了程序的細(xì)節(jié),是軟件開發(fā)人員之間以及開發(fā)人員和用戶之間進(jìn)行交流的重要途徑。做好注釋工作有利于日后的軟件維護(hù)。注釋也需要遵循一定的規(guī)則,比如注釋需要提供哪些方面的信息、注釋的格式、注釋的位置等。4.命名規(guī)則:事實(shí)上,沒有一種命名規(guī)則可以讓所有的編程人員都贊同,在不同的編程語言、不同的操作系統(tǒng)、不同的集成開發(fā)環(huán)境中,使用的命名規(guī)則可能不盡相同。因此,軟件開發(fā)中僅需要制定一種令大多數(shù)項(xiàng)目成員滿意的命名規(guī)則,并在項(xiàng)目中貫徹實(shí)施。18要做到按照良好的編程風(fēng)格進(jìn)行編程,可從以下幾點(diǎn)入手5.數(shù)據(jù)說明為了使數(shù)據(jù)更容易理解和維護(hù),需要遵循一定的原則來進(jìn)行數(shù)據(jù)說明,如說明次序,添加注釋等。6.語句構(gòu)造語句構(gòu)造是編寫代碼的一個(gè)重要任務(wù)。語句構(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)化的編譯程序來減少程序的運(yùn)行時(shí)間。使用較少的存儲(chǔ)單元可以提高存儲(chǔ)器的效率。1910.3面向?qū)ο髮?shí)現(xiàn)面向?qū)ο髮?shí)現(xiàn)面向?qū)ο髮?shí)現(xiàn)主要是指把面向?qū)ο笤O(shè)計(jì)的結(jié)果翻譯成用某種程序語言書寫的面向?qū)ο蟪绦?。在開發(fā)過程中,類的實(shí)現(xiàn)是核心問題。在用面向?qū)ο箫L(fēng)格所寫的系統(tǒng)中,所有的數(shù)據(jù)都被封裝在類的實(shí)例中。而整個(gè)程序則被封裝在一個(gè)更高級(jí)的類中。在使用既存部件的面向?qū)ο笙到y(tǒng)中,可以只花費(fèi)少量時(shí)間和工作量來實(shí)現(xiàn)軟件。只要增加類的實(shí)例,開發(fā)少量的新類和實(shí)現(xiàn)各個(gè)對(duì)象之間互相通信的操作,就能建立需要的軟件。在面向?qū)ο髮?shí)現(xiàn)中,涉及到的主要技術(shù)有:類的封裝和信息隱藏、類繼承、多態(tài)和重載、模板、持久保存對(duì)象、參數(shù)化類、異常處理等。2110.4代碼重用代碼重用重用也稱為再用或復(fù)用,是指同一事物(代碼)不做修改或稍加改動(dòng)就可以多次重復(fù)利用,是降低軟件成本,提高效率和質(zhì)量的有效途徑。廣義地說,軟件重用可分為3個(gè)層次:知識(shí)重用,方法重用和標(biāo)準(zhǔn)重用,軟件成分重用。代碼重用屬于軟件成分重用。代碼重用是使用已有的代碼構(gòu)造或編寫新系統(tǒng),代碼形式包括二進(jìn)制目標(biāo)代碼和源代碼。代碼重用可以減低編寫難度,減少工作量,保證軟件的質(zhì)量(被重用代碼往往已經(jīng)被充分測(cè)試)。通常將代碼重用理解為調(diào)用庫中的模塊,實(shí)際上代碼重用也有如下幾種方式:源代碼剪貼:最原始的形式,問題在于復(fù)制時(shí)的出錯(cuò),以及配置管理問題導(dǎo)致無法跟蹤原始代碼的重用。源代碼包含:許多語言提供包含庫中源代碼的機(jī)制,使用這種方法時(shí)配置管理問題有所緩解,因?yàn)樾薷脑即a后所有包含它的程序都需要重新編譯。繼承:利用繼承機(jī)制重用類時(shí)不需要修改已有代碼,就可以擴(kuò)充或具體化類,幾乎不存在配置管理問題。23開源代碼重用目前80%以上的IT產(chǎn)業(yè)主要產(chǎn)品重用了開源代碼,GitHub上的開源項(xiàng)目截至2021年1月已有5421萬個(gè),OpenHub索引的代碼超過873億行。開源軟件資源豐富,但要進(jìn)行有效重用存在一定難度。一方面是開源許可證侵權(quán)風(fēng)險(xiǎn),另一方面是開源代碼需要及時(shí)更新,以免舊代碼被攻破漏洞。2410.3分析和評(píng)價(jià)代碼質(zhì)量評(píng)估代碼質(zhì)量好的代碼一定是整潔的,能夠幫助閱讀者快速理解定位,加快開發(fā)迭代速度,常見的評(píng)價(jià)標(biāo)準(zhǔn)如下:可讀性:命名是否達(dá)意,注釋是否詳盡,函數(shù)是否長(zhǎng)短合適,模

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論