軟件工程 課件 12 編寫代碼_第1頁
軟件工程 課件 12 編寫代碼_第2頁
軟件工程 課件 12 編寫代碼_第3頁
軟件工程 課件 12 編寫代碼_第4頁
軟件工程 課件 12 編寫代碼_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

編寫代碼軟件工程內(nèi)容編寫代碼任務(wù)、過程和方法代碼片段的重用軟件缺陷和調(diào)試軟件缺陷、錯誤和失效代碼缺陷的應(yīng)對方法及調(diào)試解決編程和調(diào)試問題開源技術(shù)問答社區(qū)群智知識的利用1.1編寫代碼的任務(wù)根據(jù)軟件設(shè)計信息,借助于程序設(shè)計語言,編寫出目標(biāo)軟件系統(tǒng)的源程序代碼,開展程序單元測試、代碼審查、程序調(diào)試等質(zhì)量保證工作編寫代碼既是一個生成代碼的過程,也是對生成的代碼進(jìn)行質(zhì)量保證的過程兼具軟件創(chuàng)作和軟件生產(chǎn)的過程自由地開展代碼創(chuàng)作,編寫出滿足要求的程序代碼,發(fā)揮其創(chuàng)新性和主觀能動性,創(chuàng)作出算法精巧、運(yùn)行高效的代碼按照軟件質(zhì)量保證的規(guī)范和要求,生產(chǎn)出高質(zhì)量的代碼。程序員需要約束其編程行為,防止隨意性、自由性的編程活動,確保其編程活動及其所產(chǎn)生的程序代碼滿足工程化開發(fā)的要求編寫代碼的任務(wù)編寫代碼軟件體系結(jié)構(gòu)設(shè)計模型用戶界面設(shè)計模型軟件詳細(xì)設(shè)計模型高質(zhì)量的程序代碼軟件設(shè)計成果編程語言和支撐工具1.編寫類代碼編寫實(shí)現(xiàn)類的代碼編寫實(shí)現(xiàn)類方法的代碼編寫實(shí)現(xiàn)類間關(guān)聯(lián)的代碼編寫實(shí)現(xiàn)設(shè)計類間聚合和組合關(guān)系的代碼編寫實(shí)現(xiàn)接口關(guān)系的代碼編寫實(shí)現(xiàn)繼承關(guān)系的程序代碼編寫實(shí)現(xiàn)包的代碼(1)編寫實(shí)現(xiàn)類的代碼設(shè)計模型(如設(shè)計類圖)詳細(xì)描述了軟件系統(tǒng)中類的詳細(xì)設(shè)計信息,包括可見性、類名、屬性、方法等等程序員需要將這些設(shè)計信息直接轉(zhuǎn)換為用程序設(shè)計語言表示的實(shí)現(xiàn)結(jié)構(gòu)和代碼(2)編寫實(shí)現(xiàn)類方法的代碼基于類方法的設(shè)計描述(UML的活動圖表示),程序員可以依此為依據(jù)來編寫類方法的實(shí)現(xiàn)代碼(3)編寫實(shí)現(xiàn)類間關(guān)聯(lián)的代碼將類間關(guān)聯(lián)關(guān)系的語義信息具體落實(shí)到相應(yīng)類的程序代碼中,即綜合考慮關(guān)聯(lián)關(guān)系的方向性、多重性、角色名和約束特性等信息來編寫相關(guān)的類程序代碼(4)編寫實(shí)現(xiàn)設(shè)計類間聚合和組合關(guān)系的代碼可以采用類似于實(shí)現(xiàn)關(guān)聯(lián)關(guān)系的方法來編寫實(shí)現(xiàn)聚合和組合關(guān)系的代碼根據(jù)多重性來設(shè)計相應(yīng)類屬性的數(shù)據(jù)結(jié)構(gòu)(5)編寫實(shí)現(xiàn)接口關(guān)系的代碼類設(shè)計模型可能包含有表征類與接口之間實(shí)現(xiàn)關(guān)系的語義信息諸多面向?qū)ο蟪绦蛟O(shè)計語言(如Java、C++等)提供了專門針對接口實(shí)現(xiàn)的語言機(jī)制,因而可以直接將接口設(shè)計信息轉(zhuǎn)換為相應(yīng)的程序代碼如“Implement”機(jī)制(6)編寫實(shí)現(xiàn)繼承關(guān)系的程序代碼面向?qū)ο蟪绦蛟O(shè)計語言(如Java、C++)提供了繼承機(jī)制以及相應(yīng)的語言設(shè)施Java支持單重繼承,C++支持多重繼承如“extends”機(jī)制將設(shè)計模型中的類間繼承關(guān)系用程序設(shè)計語言提供的語言機(jī)制來表示(7)編寫實(shí)現(xiàn)包的代碼用包(package)來組織和管理軟件系統(tǒng)中的類包是對軟件系統(tǒng)中模塊的邏輯劃分,也可以將包視為是一種子系統(tǒng)面向?qū)ο蟪绦蛟O(shè)計語言(如Java)提供了對包進(jìn)行編程的語言機(jī)制,每個包對應(yīng)于代碼目錄結(jié)構(gòu)中的某個目錄2.編寫用戶界面代碼用戶界面設(shè)計模型描述了構(gòu)成用戶界面的各個界面設(shè)計元素(包括靜態(tài)元素、動態(tài)元素、用戶輸入元素、用戶命令元素等)用戶界面之間的跳轉(zhuǎn)關(guān)系編碼實(shí)現(xiàn)編寫界面類屬性的代碼以定義界面設(shè)計元素編寫界面類的方法以對界面操作或者對界面事件進(jìn)行響應(yīng)處理示例:“LoginUI”的編碼實(shí)現(xiàn)示例:“LoginUI”的編碼實(shí)現(xiàn)3.編寫數(shù)據(jù)設(shè)計代碼數(shù)據(jù)設(shè)計定義了軟件系統(tǒng)中需要持久保存數(shù)據(jù)及其組織(如數(shù)據(jù)庫的表、字段)和存儲(如數(shù)據(jù)庫中的記錄)方式設(shè)計了相應(yīng)的類及其方法來讀取、保存、更新和查詢持久數(shù)據(jù)編碼實(shí)現(xiàn)創(chuàng)建相應(yīng)的數(shù)據(jù)庫關(guān)系表格及其內(nèi)部的各個字段選項(xiàng)等,確保它們滿足設(shè)計的要求和約束編寫相應(yīng)的程序代碼來操作數(shù)據(jù)庫,如增加、刪除、更改、查詢數(shù)據(jù)記錄等示例:“T_User”表的創(chuàng)建示例:連接和關(guān)閉數(shù)據(jù)庫的代碼示例:操作數(shù)據(jù)庫的程序代碼示例:判斷用戶賬號和密碼合法性的代碼1.2代碼片段的重用何為代碼片段對應(yīng)于類代碼中所包含的一組語句序列實(shí)現(xiàn)了類中的一個具體、細(xì)粒度的功能代碼片段示例與遠(yuǎn)端數(shù)據(jù)庫服務(wù)器建立連接向遠(yuǎn)端的Socket程序發(fā)送一段數(shù)據(jù)開源社區(qū)中的代碼片段開源技術(shù)問答社區(qū)(如StackOverflow、CSDN)中,大量的程序員在其中分享了許多形式多樣、極有價值的代碼片段通常這些代碼片段都經(jīng)過實(shí)踐檢驗(yàn),因而表現(xiàn)出較高的代碼質(zhì)量在編寫代碼的工程中,程序員可以針對其代碼編寫要求,到開源技術(shù)問答社區(qū)中去尋找相關(guān)的代碼片段,然后通過對代碼片段的理解,選定和重用所需的代碼片段,進(jìn)而完成相應(yīng)的編程任務(wù)示例:重用開源社區(qū)中的代碼片段完成與MySQL數(shù)據(jù)庫服務(wù)器連接的代碼片段1.3基于大模型的代碼推薦和生成與大模型工具(如ChatGPT)及相關(guān)的CASE工具(如Copilot)進(jìn)行交互,生成所需的程序代碼采用結(jié)對編程的形式分解編程任務(wù),給大模型提供適當(dāng)?shù)奶崾緦ι傻拇a進(jìn)行鑒別和分析軟件開發(fā)智能體軟件工程師人機(jī)協(xié)同開發(fā)示例:基于大模型的代碼自動生成對TicketService接口中車票查詢功能提供類代碼用自然語言解釋說明代碼的實(shí)現(xiàn)邏輯內(nèi)容編寫代碼任務(wù)、過程和方法代碼片段的重用軟件缺陷和調(diào)試軟件缺陷、錯誤和失效代碼缺陷的應(yīng)對方法及調(diào)試解決編程和調(diào)試問題開源技術(shù)問答社區(qū)群智知識的利用2.1何為軟件缺陷軟件缺陷是指軟件制品中存在不正確的軟件描述和實(shí)現(xiàn)存在缺陷的軟件制品不僅包括程序代碼,而且還包括需求和設(shè)計的模型和文檔軟件缺陷產(chǎn)生于軟件開發(fā)全過程,只有有人介入的地方就有可能產(chǎn)生軟件缺陷任何人都有可能在軟件開發(fā)過程中犯錯誤,進(jìn)而引入軟件缺陷無論是高層的需求分析和軟件架構(gòu)缺陷還是底層的詳細(xì)設(shè)計缺陷,它們最終都會反映在程序代碼之中,導(dǎo)致程序代碼存在缺陷軟件缺陷帶來的問題:錯誤存在缺陷的程序代碼在運(yùn)行過程中會產(chǎn)生不正確或者不期望的運(yùn)行狀態(tài),將這種情況稱程序出現(xiàn)了錯誤經(jīng)過計算后某個變量的取值不正確接收到的消息內(nèi)容不正確打開一個非法的文件引發(fā)程序報錯錯誤帶來的問題:失效運(yùn)行錯誤的程序無法為用戶提供所需的功能和行為,在此情況下我們稱程序出現(xiàn)了失效如用戶無法正常登錄到系統(tǒng)中無法正確地分析出老人是否處于摔倒的狀態(tài)等等。程序錯誤的根源在于程序中存在缺陷,程序的錯誤運(yùn)行必然導(dǎo)致軟件失效錯誤和失效是程序缺陷在程序運(yùn)行時的內(nèi)部展示和外在表現(xiàn)2.2

軟件缺陷的描述(1/2)標(biāo)識符每個軟件缺陷都被給予一個唯一的標(biāo)識符。類型說明軟件缺陷的類型,如需求缺陷、設(shè)計缺陷、代碼缺陷代碼缺陷還可以進(jìn)一步區(qū)分為是邏輯缺陷、計算缺陷、判斷缺陷嚴(yán)重程度危急程度是指缺陷會影響軟件的正常運(yùn)行甚至危及用戶安全嚴(yán)重程度的缺陷是指會導(dǎo)致軟件喪失某些重要功能,或出現(xiàn)錯誤一般程度的缺陷是指缺陷會使得軟件喪失某些次要的功能輕微程度是指缺陷會導(dǎo)致軟件出現(xiàn)小毛病,但不影響正常運(yùn)行軟件缺陷的描述(2/2)癥狀:軟件缺陷所引發(fā)的程序錯誤是什么,有何運(yùn)行表現(xiàn)修復(fù)優(yōu)先級:缺陷應(yīng)該被修復(fù)的優(yōu)先程度,包括:非常緊迫、緊迫、一般和不緊迫等幾種狀態(tài):描述缺陷處理的進(jìn)展?fàn)顟B(tài),如已經(jīng)安排人員來處理、正在修復(fù)、修復(fù)已經(jīng)完成等。發(fā)現(xiàn)者:誰發(fā)現(xiàn)了軟件缺陷。發(fā)現(xiàn)時機(jī):什么狀況下發(fā)現(xiàn)的軟件缺陷源頭:軟件缺陷源頭在哪里,如軟件文檔的哪一個部分原因:說明導(dǎo)致軟件缺陷的原因是什么2.3軟件缺陷的應(yīng)對方法(1/2)預(yù)防缺陷通過運(yùn)用各種軟件工程技術(shù)、方法和管理手段,在軟件開發(fā)過程中預(yù)防和避免軟件缺陷,減少軟件缺陷的數(shù)量,降低軟件缺陷的嚴(yán)重程度采用結(jié)對編程、嚴(yán)格的過程管理、必要的技術(shù)培訓(xùn)、CASE工具的使用等手段,起到預(yù)防缺陷的目的容忍缺陷增強(qiáng)軟件的缺陷容忍度,借助于軟件容錯機(jī)制和技術(shù),允許軟件出現(xiàn)錯誤,但是在出現(xiàn)錯誤時軟件仍然能夠正常的運(yùn)行在高可靠軟件系統(tǒng)的開發(fā)過程中,軟件工程師通常需要提供容錯模塊和代碼。顯然這會增加軟件開發(fā)的復(fù)雜度和冗余度軟件缺陷的應(yīng)對方法(2/2)發(fā)現(xiàn)缺陷通過有效的技術(shù)和管理手段來發(fā)現(xiàn)這些軟件缺陷例如,制定和實(shí)施軟件質(zhì)量保證計劃、開展軟件文檔和模型的評審、程序代碼的走查、軟件測試等工作。它們都可以幫助軟件工程師找到潛藏在文檔、模型和代碼中的軟件缺陷修復(fù)缺陷通過一系列的手段來修復(fù)缺陷采用程序調(diào)試等手段來找到缺陷的原因、定位缺陷的位置,進(jìn)而修改存在缺陷的程序代碼,將軟件缺陷從軟件制品中移除出去2.4軟件缺陷的狀態(tài)(1/2)尚未確認(rèn)(Unconfirmed)有人匯報了軟件缺陷,但是尚未確認(rèn)該軟件缺陷是否真實(shí)存在有效(New)經(jīng)過確認(rèn),所匯報的軟件缺陷真實(shí)存在,被正式視為是新缺陷,并等待進(jìn)一步處理無效(Invalid)經(jīng)過確認(rèn),所匯報的軟件缺陷并不存在,是一個無效的軟件缺陷匯報重復(fù)(Duplicate)該軟件缺陷之前已經(jīng)有人匯報過,屬于重復(fù)性的軟件缺陷軟件缺陷的狀態(tài)(2/2)已分配(Assigned)以安排人員負(fù)責(zé)修復(fù)缺陷已修復(fù)(Fixed)缺陷已經(jīng)修復(fù)信息不完整(Incomplete)缺陷的描述信息不完整,導(dǎo)致無法準(zhǔn)確和清晰地理解缺陷的內(nèi)容已解決(Resolved)針對該缺陷的處理已經(jīng)完成已關(guān)閉(Closed)關(guān)閉該缺陷,后續(xù)將不再針對該缺陷采用任何措施2.5程序調(diào)試軟件調(diào)試就是要基于程序代碼,確定軟件缺陷的原因、定位缺陷的位置,從而知道那里錯了、如何修復(fù)缺陷程序員需要花費(fèi)大量的時間和精力用于軟件調(diào)試軟件調(diào)試通過運(yùn)行目標(biāo)軟件系統(tǒng)的程序代碼,找到缺陷的代碼位置、明確軟件錯誤的具體原因,從而開展缺陷修復(fù)工作軟件調(diào)試缺陷及癥狀程序代碼缺陷原因缺陷位置修復(fù)缺陷后的代碼調(diào)試的目的就是要找到錯誤的原因、定位錯誤的位置軟件調(diào)試步驟構(gòu)思和假設(shè)缺陷原因運(yùn)行數(shù)據(jù)和調(diào)試代碼定位和修復(fù)缺陷回歸測試沒有找到錯誤的原因和位置找到了錯誤位置理解缺陷及其癥狀修復(fù)缺陷內(nèi)容編寫代碼任務(wù)、過程和方法代碼片段的重用軟件缺陷和調(diào)試軟件缺陷、錯誤和失效代碼缺陷的應(yīng)對方法及調(diào)試解決編程和調(diào)試問題開源技術(shù)問答社區(qū)群智知識的利用3.1編碼和調(diào)試面臨的挑戰(zhàn)編碼和調(diào)試需要開放的知識包括軟件設(shè)計的文檔和模型、程序設(shè)計語言、程序調(diào)試技術(shù)等等編碼和調(diào)試要求程序員有豐富的軟件編程經(jīng)驗(yàn)、扎實(shí)的編碼和調(diào)試的技能、熟練的軟件開發(fā)工具使用技巧等編程和調(diào)試中仍然會遇到各種各樣的棘手問題明明知道程序出現(xiàn)了錯誤,但是找不到錯誤的原因程序中的錯誤癥狀有時會出現(xiàn),有時候不會出現(xiàn)程序代碼和他人的程序代碼一模一樣,但是運(yùn)行結(jié)果就是不正確……3.2解決編程和調(diào)試問題的方法獨(dú)立自主解決問題,但是有時候會出現(xiàn)無法解決的狀況,用幾個小時甚至幾天的時間都未能解決問題尋找團(tuán)隊(duì)成員的幫忙,讓有經(jīng)驗(yàn)的編程高手幫助程序員解決問題借助于開源技術(shù)問答社區(qū)中的互聯(lián)網(wǎng)大眾來解決問題技術(shù)問答社區(qū)常見社區(qū)CSDN、StackOverflow交流形式提出問題回答問題參加評論海量的群體和軟件開發(fā)群智知識用戶有1500萬問題有2200萬回答有3200萬評論有8200萬獲取群智知識的方法訪問StackOverflow、CSDN等社區(qū)描述和輸入自己遇到的問題尋找針對該問題的有效解答示例:查找的問題“socketconnection”problem”編寫代碼的輸出源程序代碼程序單元測試報告–記錄單元測試所發(fā)現(xiàn)的軟件缺陷拓展閱讀軟件調(diào)試(第2版),張銀奎,人民郵電出版社,2020.作者長期從事軟件開發(fā)和研究工作,曾在英特爾工作十三年,對IA-32架構(gòu)、操作系統(tǒng)內(nèi)核、驅(qū)動程序、軟件調(diào)試等有深入的研究。該書是軟件調(diào)試領(lǐng)域的百科全書,圍繞軟件調(diào)試的生態(tài)系統(tǒng)、異常和調(diào)試器三條主線,介紹軟件調(diào)試的相關(guān)原理和機(jī)制,探討可調(diào)試性的內(nèi)涵和意義,以及實(shí)現(xiàn)軟件可調(diào)試性的原則和方法,總結(jié)軟件調(diào)試的理論和最佳實(shí)踐。本章知識圖譜課后作業(yè)和課程實(shí)訓(xùn)訪問/paths/1944完成第十三章“編寫代碼”的實(shí)訓(xùn)闖關(guān)任務(wù)小結(jié)編寫代碼任務(wù)是要產(chǎn)生高質(zhì)量程序代碼,完成單元測試、程序調(diào)試等活動基于軟件設(shè)計模型和文檔來編寫代碼可以通過重用技術(shù)問答社區(qū)中的代碼片段來編寫程序軟件缺陷、錯誤和失效缺陷是指軟件制品中不正確的描述和實(shí)現(xiàn),缺陷的內(nèi)在表現(xiàn)是程序運(yùn)行產(chǎn)生不正確或者不期望的運(yùn)行狀態(tài)(錯誤),導(dǎo)致程序無法為用戶提供所需的功能和行為(失效)調(diào)試目的是要發(fā)現(xiàn)缺陷原因、定位缺陷位置,促進(jìn)缺陷的修復(fù)借助于技術(shù)問答社區(qū)來解決編碼和和調(diào)試中遇到的問題綜合實(shí)踐一任務(wù):編寫開源軟件的維護(hù)代碼。方法針對開源軟件代碼,基于所選定的程序設(shè)計語言,借助CASE工具,編寫開源軟件的維護(hù)代碼,并對代碼進(jìn)行單元測試和調(diào)試,以發(fā)現(xiàn)和解

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論