軟件工程 課件 11 軟件實(shí)現(xiàn)基礎(chǔ)_第1頁
軟件工程 課件 11 軟件實(shí)現(xiàn)基礎(chǔ)_第2頁
軟件工程 課件 11 軟件實(shí)現(xiàn)基礎(chǔ)_第3頁
軟件工程 課件 11 軟件實(shí)現(xiàn)基礎(chǔ)_第4頁
軟件工程 課件 11 軟件實(shí)現(xiàn)基礎(chǔ)_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

軟件實(shí)現(xiàn)基礎(chǔ)軟件工程內(nèi)容軟件實(shí)現(xiàn)概述軟件實(shí)現(xiàn)的任務(wù)、過程與原則軟件實(shí)現(xiàn)語言編程語言的類別和選擇高質(zhì)量編碼編碼的原則和要求1.1何為軟件實(shí)現(xiàn)根據(jù)軟件設(shè)計(jì)模型,編寫出目標(biāo)軟件系統(tǒng)的程序代碼,并對代碼進(jìn)行必要的測試,以發(fā)現(xiàn)和糾正代碼存在中的缺陷,并將可運(yùn)行的目標(biāo)代碼部署到目標(biāo)計(jì)算機(jī)上運(yùn)行軟件實(shí)現(xiàn)不僅要編寫出程序代碼,還要確保代碼的質(zhì)量,因此軟件實(shí)現(xiàn)涉及多方面的開發(fā)工作,如編碼、測試、調(diào)試等軟件實(shí)現(xiàn)的任務(wù)軟件實(shí)現(xiàn)軟件體系結(jié)構(gòu)設(shè)計(jì)模型用戶界面設(shè)計(jì)模型軟件詳細(xì)設(shè)計(jì)模型高質(zhì)量的程序代碼編碼、測試、調(diào)試等軟件設(shè)計(jì)成果編程語言和支撐工具軟件實(shí)現(xiàn)兼具創(chuàng)作和生產(chǎn)生產(chǎn)性活動需要根據(jù)軟件設(shè)計(jì)規(guī)格說明書和軟件設(shè)計(jì)模型,生產(chǎn)出與之相符合的軟件制品,即程序代碼遵循設(shè)計(jì)文檔和模型來編寫程序,而且還要求程序員遵循編碼原則和風(fēng)格來編寫出高質(zhì)量的程序代碼,并通過單元測試、集成測試、確認(rèn)測試等一系列的軟件測試活動來保證代碼質(zhì)量創(chuàng)作性活動發(fā)揮軟件開發(fā)工程師的智慧和主觀能動性,創(chuàng)作出目標(biāo)軟件系統(tǒng)的程序代碼。這一過程高度依賴于程序員的編程經(jīng)驗(yàn)、程序設(shè)計(jì)技能和素養(yǎng),以及軟件測試工程師的軟件測試水平1.2軟件實(shí)現(xiàn)需考慮多方面的因素與多類不同的人員相關(guān)包括程序員、軟件測試工程師等程序員要考慮的因素不僅要對照設(shè)計(jì)來編寫代碼,還需要通過遵循編碼規(guī)范、程序設(shè)計(jì)原則等來提高代碼的質(zhì)量軟件測試工程師需要考慮的因素針對代碼開展測試,不僅要發(fā)現(xiàn)代碼中存在的功能性缺陷,如代碼功能實(shí)現(xiàn)不正確,還要發(fā)現(xiàn)代碼中存在的非功能性缺陷軟件實(shí)現(xiàn)與軟件設(shè)計(jì)之間的關(guān)系基于軟件設(shè)計(jì)來開展軟件實(shí)現(xiàn)照軟件設(shè)計(jì)模型和文檔來進(jìn)行編碼和測試等工作根據(jù)實(shí)現(xiàn)中發(fā)現(xiàn)的問題來糾正和完善軟件設(shè)計(jì)設(shè)計(jì)不夠詳細(xì),程序員需要進(jìn)行進(jìn)一步的軟件設(shè)計(jì)和程序設(shè)計(jì),才能編寫出程序代碼設(shè)計(jì)考慮不周全,軟件設(shè)計(jì)時(shí)沒有認(rèn)真考慮編碼實(shí)現(xiàn)的具體情況(如程序設(shè)計(jì)語言和目標(biāo)運(yùn)行環(huán)境的選擇),導(dǎo)致有些軟件設(shè)計(jì)不能通過程序設(shè)計(jì)語言加以實(shí)現(xiàn)1.3軟件實(shí)現(xiàn)的過程編寫代碼單元測試代碼調(diào)試軟件測試程序代碼設(shè)計(jì)模型和文檔代碼及缺陷糾正后的代碼代碼缺陷有缺陷找到缺陷有缺陷程序員的使命和任務(wù)軟件測試工程師的使命和任務(wù)軟件實(shí)現(xiàn)包含編碼、測試、調(diào)試等一系列的開發(fā)活動程序員的任務(wù)=編碼+單元測試+調(diào)試編碼基于軟件設(shè)計(jì)模型和文檔,采用選定的程序設(shè)計(jì)語言,編寫出目標(biāo)軟件系統(tǒng)的程序代碼單元測試對自己編寫的各個(gè)基本模塊進(jìn)行單元測試,以發(fā)現(xiàn)模塊單元中存在的缺陷和問題調(diào)試發(fā)現(xiàn)產(chǎn)生缺陷原因,定位缺陷位置,進(jìn)而對代碼缺陷進(jìn)行修復(fù)軟件測試包括多項(xiàng)的軟件測試工作集成測試、確認(rèn)測試、系統(tǒng)測試等這項(xiàng)工作由軟件測試工程師來完成1.4軟件實(shí)現(xiàn)要遵循的原則基于設(shè)計(jì)來編碼切忌“拍腦袋”寫程序質(zhì)量保證貫穿全過程要有非常強(qiáng)的“質(zhì)量”意識既要重視外部質(zhì)量,也要重視內(nèi)部質(zhì)量程序員的職責(zé)和能力要求自我學(xué)習(xí)能力獨(dú)立解決問題的能力良好的編程習(xí)慣質(zhì)量意識學(xué)會軟件測試閱讀和學(xué)習(xí)他人的代碼善于利用CASE工具團(tuán)隊(duì)合作和溝通內(nèi)容軟件實(shí)現(xiàn)概述軟件實(shí)現(xiàn)的任務(wù)、過程與原則軟件實(shí)現(xiàn)語言編程語言的類別和選擇高質(zhì)量編碼編碼的原則和要求程序設(shè)計(jì)語言提供的支持提供了語法、語義和語用三方面的要素支持程序員來編寫程序代碼人們提出了二千多種的程序設(shè)計(jì)語言,不同的語言適合于不同的應(yīng)用開發(fā)2.1程序設(shè)計(jì)語言的類別(1/3)機(jī)器語言由“0”、“1”所組成的機(jī)器指令極為繁瑣、費(fèi)時(shí)費(fèi)力的工作;軟件開發(fā)效率非常低,而且程序代碼可讀性非常差,極容易出錯,不易于維護(hù)、移植性差;但程序代碼的執(zhí)行效率會非常高匯編語言一種低級語言,用助記符代替機(jī)器指令的操作碼,用地址符號或標(biāo)號代替指令或操作數(shù)的地址較為低級和復(fù)雜,程序可讀性差,代碼編寫的效率低,對代碼進(jìn)行維護(hù)非常困難,程序調(diào)試也不容易,代碼兼容性差程序代碼占用存儲空間少、運(yùn)行速度快、執(zhí)行效率高程序設(shè)計(jì)語言的類別(2/3)結(jié)構(gòu)化程序設(shè)計(jì)語言以過程或函數(shù)作為基本的編程單元,采用三類控制結(jié)構(gòu)(順序、條件和循環(huán))來刻畫模塊的處理過程和流程屬于高級程序設(shè)計(jì)語言,程序可讀性、可理解性、可維護(hù)性等有了明顯的提升;配套CASE工具較為完善,有結(jié)構(gòu)化程序設(shè)計(jì)方法學(xué)的指導(dǎo)不足:以過程和函數(shù)作為基本模塊,模塊的粒度小,可重用性差;程序代碼抽象層次低,無法對問題域及其求解進(jìn)行自然抽象如C、Fortran、Pascal等程序設(shè)計(jì)語言的類別(3/3)面向?qū)ο蟪绦蛟O(shè)計(jì)語言以類作為基本的模塊單元,借助于面向?qū)ο蟮囊唤M概念和機(jī)制來進(jìn)行程序設(shè)計(jì),有系統(tǒng)的方法學(xué)指導(dǎo),建立起可直觀反映問題域、模塊粒度更大、可重用性更好的程序代碼,已經(jīng)成為計(jì)算機(jī)領(lǐng)域的主流編程語言如Java、C++等描述性程序設(shè)計(jì)語言描述程序需要解決什么樣的問題,無需在程序中顯式地定義如何來解決問題如Prolog、Lisp、ML等2.2程序設(shè)計(jì)語言的表達(dá)能力編程語言的類別平均代碼量編程語言平均代碼量機(jī)器語言320C128匯編語言107Fortran107高級語言80C++/Java53一個(gè)功能點(diǎn)用不同的語言來實(shí)現(xiàn)所需的代碼量是不一樣的2.3程序設(shè)計(jì)語言的選擇(1/3)軟件的應(yīng)用領(lǐng)域不同應(yīng)用領(lǐng)域的軟件通常會選擇不同的程序設(shè)計(jì)語言來加以實(shí)現(xiàn)科學(xué)和工程計(jì)算領(lǐng)域選用Fortran、C等程序設(shè)計(jì)語言,數(shù)據(jù)庫應(yīng)用軟件開發(fā)會選用Delphi、VisualBasic、SQL等程序設(shè)計(jì)語言,機(jī)器人等嵌入式應(yīng)用選用C、C++、Python等程序設(shè)計(jì)語言,互聯(lián)網(wǎng)應(yīng)用開發(fā)選用Java、ASP等程序設(shè)計(jì)語言與遺留軟件系統(tǒng)的交互考慮待開發(fā)軟件系統(tǒng)是否需要與遺留軟件系統(tǒng)存在交互。如果有該方面的實(shí)際需要,那么程序員需要解決二個(gè)系統(tǒng)之間的互操作問題程序設(shè)計(jì)語言的選擇(2/3)軟件的特殊功能及需求是否需要與底層的硬件系統(tǒng)進(jìn)行交互,如果需要,可以考慮采用諸如C、匯編語言是否需要豐富的軟件庫來支持功能的實(shí)現(xiàn),如果需要,可以考慮具有豐富軟件庫的編程語言,如Python、Java等是否需要對相關(guān)的知識進(jìn)行表示和推理,如果需要,可以考慮選用描述性的程序設(shè)計(jì)語言,如Prolog、Lisp等程序設(shè)計(jì)語言的選擇(3/3)軟件的目標(biāo)平臺如果目標(biāo)軟件系統(tǒng)需要運(yùn)行在特定的軟件開發(fā)框架、軟件中間件、基礎(chǔ)設(shè)施之上,那么程序員還需要考慮目標(biāo)平臺對程序設(shè)計(jì)語言的支持,并依此來選定所需的編程語言如果目標(biāo)軟件系統(tǒng)需要部署在J2EE架構(gòu)之上,那么就需要選擇Java編程語言;如果需要借助于ROS來開發(fā)機(jī)器人軟件,那么建議選擇C、C++和Python等編程語言程序員的編程經(jīng)驗(yàn)應(yīng)該選擇對于自己而言較為熟悉的語言,盡量避免選擇沒有使用過的程序設(shè)計(jì)語言2.4流行的程序設(shè)計(jì)語言排名語言名稱使用占比1Java20.40%2C17.15%3C++6.20%4C#4.32%5Python3.77%6PHP3.55%7JavaScript2.47%8VisualBasic2.22%9Ruby2.04%10Perl2.03%2023年8月排行榜2021年7月排行榜排名語言名稱使用占比1Python13.33%2C11.41%3C++10.63%4Java10.33%5C#7.04%6JavaScript3.29%7VisualBasic2.63%8匯編1.34%9PHP1.27%10Scratch1.22%C/C++語言面向過程、通用的結(jié)構(gòu)化(面向?qū)ο螅┏绦蛟O(shè)計(jì)語言簡潔的語言結(jié)構(gòu)化的控制語句豐富的數(shù)據(jù)類型和運(yùn)算符良好的可移植性目標(biāo)代碼執(zhí)行效率高Java語言純粹的面向?qū)ο缶幊陶Z言簡單性分布性兼具編譯和解釋性以及可移植性強(qiáng)類型語言和健壯性安全性,沒有指針,使用字節(jié)碼驗(yàn)證策略,防止惡意代碼Python語言面向?qū)ο?、解釋型、通用的腳本編程語言功能強(qiáng)大,Python類庫極其豐富語法簡單,入門容易開源和免費(fèi),可移植性解釋性混合型語言,既支持面向過程的編程也支持面向?qū)ο蟮木幊虄?nèi)容軟件實(shí)現(xiàn)概述軟件實(shí)現(xiàn)的任務(wù)、過程與原則軟件實(shí)現(xiàn)語言編程語言的類別和選擇高質(zhì)量編碼編寫代碼的原則和要求3.1編寫代碼的原則(1/3)易讀,一看就懂能夠理解代碼的語義和內(nèi)涵,了解相關(guān)語句和代碼的實(shí)現(xiàn)意圖,方便修改和維護(hù)代碼采用縮進(jìn)的方法來組織代碼的顯示,用括號來表示不同語句的優(yōu)先級,對關(guān)鍵語句、語句塊、方法等要加以注釋易改,便于維護(hù)或者在適當(dāng)?shù)奈恢迷黾有碌拇a以完善代碼功能,或者對某些代碼進(jìn)行修改以便糾正代碼中的缺陷和錯誤對將來可能需要進(jìn)行修改和維護(hù)的代碼(包括常元、變量、方法等)進(jìn)行單獨(dú)的抽象、參數(shù)化和封裝,以便將來對其修改時(shí)不會影響其他部分的代碼編寫代碼的原則(2/3)降低代碼的復(fù)雜度將一個(gè)類代碼組織為一個(gè)文件,并用統(tǒng)一的命名規(guī)則來命名文件在代碼中適當(dāng)?shù)脑黾幼⑨屢约訌?qiáng)對代碼的理解,不用“goto”語句,慎用嵌套或者減少嵌套的層數(shù),盡量選用簡單的實(shí)現(xiàn)算法盡可能地開展軟件重用和編寫可重用的程序代碼盡可能地重用已有的軟件制品,如函數(shù)庫、類庫、軟構(gòu)件、開源軟件、甚至代碼片段等等在編碼時(shí)要考慮所編寫代碼的可重用性,使得所編寫的代碼能為他人或者在其它軟件系統(tǒng)開發(fā)中被再次使用編寫代碼的原則(3/3)要有處理異常和提高代碼的容錯性編寫必要的異常定義和處理代碼,使得程序能夠?qū)Ξ惓G闆r進(jìn)行必要的處理,防止由于異常而導(dǎo)致的程序終止或崩潰編寫程序代碼以支持故障檢測、恢復(fù)和修復(fù),確保程序在出現(xiàn)嚴(yán)重錯誤時(shí)仍然能夠正常運(yùn)行,或者當(dāng)崩潰時(shí)能盡快恢復(fù)執(zhí)行代碼要與模型和文檔相一致程序員在編寫代碼的同時(shí)要同步修改和完善相應(yīng)的軟件設(shè)計(jì)模型和文檔,確保代碼、模型和文檔三者之間保持一致3.2遵循編碼風(fēng)格(1/4)格式化代碼的布局,盡可能使其清晰、明了充分利用水平和垂直兩個(gè)方向的編程空間來組織程序代碼,便于讀者閱讀代碼適當(dāng)?shù)夭迦肜ㄌ枴皗}”,使語句的層次性、表達(dá)式運(yùn)算次序等更為清晰直觀有效地使用空格符,以顯式地區(qū)別程序代碼的不同部分(如程序與其注釋)遵循編碼風(fēng)格(2/4)盡可能提供簡潔的代碼,不要人為地增加代碼的復(fù)雜度使用簡單的數(shù)據(jù)結(jié)構(gòu),避免使用難以理解和難以維護(hù)的數(shù)據(jù)結(jié)構(gòu)(如多維數(shù)組、指針等)采用簡單而非復(fù)雜的實(shí)現(xiàn)算法簡化程序中的算術(shù)和邏輯表達(dá)式不要引入不必要的變元和動作防止變量名重載避免模塊的冗余和重復(fù)遵循編碼風(fēng)格(3/4)對代碼輔之以適當(dāng)?shù)奈臋n,以加強(qiáng)程序的理解有效、必要、簡潔的代碼注釋代碼注釋的可理解性、準(zhǔn)確性和無二義性確保代碼與設(shè)計(jì)模型和文檔的一致性遵循編碼風(fēng)格(4/4)加強(qiáng)程序代碼的結(jié)構(gòu)化組織,提高代碼的可讀性按一定的次序來說明數(shù)據(jù)按字母順序說明對象名避免使用嵌套循環(huán)結(jié)構(gòu)和嵌套分支結(jié)構(gòu)使用統(tǒng)一的縮進(jìn)規(guī)則確保每個(gè)模塊內(nèi)部的代碼單入口、單出口3.3支持軟件實(shí)現(xiàn)的CASE工具編輯器編譯器調(diào)試器測試工具代碼推薦工具基于大模型的生成工具代碼靜態(tài)分析工具集成環(huán)境3.4軟件實(shí)現(xiàn)的輸出源程序代碼部署在不同計(jì)算節(jié)點(diǎn)上的可執(zhí)行程序代碼軟件測試報(bào)告等拓展閱讀C++編程規(guī)范,Herb,AndreiAlexandrescu著,劉基誠譯,人民郵電出版社,2016.本書作者是兩位知名的C++專家,他們將全球C++領(lǐng)域多年的集體智慧和經(jīng)驗(yàn)?zāi)Y(jié)成一套編程規(guī)范。該規(guī)范可以作為開發(fā)團(tuán)隊(duì)制定實(shí)際開發(fā)規(guī)范的基礎(chǔ),也是C++程序員應(yīng)該遵循的行事準(zhǔn)則。本書內(nèi)容涵蓋了C++程序設(shè)計(jì)的諸多方面,包括設(shè)計(jì)和編碼風(fēng)格、函數(shù)、操作符、類的設(shè)計(jì)、繼承、構(gòu)造與析構(gòu)、賦值、名字空間、模塊、模板、泛型、異常、STL容器和算法等。書中對每一條規(guī)范都給出了言簡意賅的概述,并輔以實(shí)例說明;另外還給出了從類型定義到錯誤處理等方面的大量實(shí)踐例子課后作業(yè)和課程實(shí)訓(xùn)訪問/paths/1944完成第十二章“軟件實(shí)現(xiàn)基礎(chǔ)”的實(shí)訓(xùn)闖關(guān)任務(wù)本章知識圖譜小結(jié)軟件實(shí)現(xiàn)軟件實(shí)現(xiàn)包括編碼、測試、調(diào)試、部署等一系列的活動基于軟件設(shè)計(jì)模型,編寫出目標(biāo)軟件系統(tǒng)的程序代碼,并對代碼進(jìn)行必要的測試,以發(fā)現(xiàn)和糾正代碼存在中的缺陷,并將目標(biāo)代碼部署到計(jì)算機(jī)上運(yùn)行編程語言的選擇要根據(jù)軟件所屬的應(yīng)用領(lǐng)域、與遺留軟件系統(tǒng)的交互、程序員的經(jīng)驗(yàn)等多個(gè)方面,考慮選擇什么樣的程序設(shè)計(jì)語言來進(jìn)行編程程序員遵循編碼的原則和規(guī)范來編寫出高質(zhì)量的程序代碼綜合實(shí)踐一任務(wù)熟練掌握開源軟件的編程語言,熟練掌握支撐開源軟

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論