現(xiàn)代軟件工程(在線實(shí)訓(xùn)版)課件 第3章 軟件開發(fā)過程及方法_第1頁
現(xiàn)代軟件工程(在線實(shí)訓(xùn)版)課件 第3章 軟件開發(fā)過程及方法_第2頁
現(xiàn)代軟件工程(在線實(shí)訓(xùn)版)課件 第3章 軟件開發(fā)過程及方法_第3頁
現(xiàn)代軟件工程(在線實(shí)訓(xùn)版)課件 第3章 軟件開發(fā)過程及方法_第4頁
現(xiàn)代軟件工程(在線實(shí)訓(xùn)版)課件 第3章 軟件開發(fā)過程及方法_第5頁
已閱讀5頁,還剩190頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

軟件過程模型軟件工程內(nèi)容何為軟件過程模型基本概念和特點(diǎn)有哪些軟件過程模型有什么類別,各有什么優(yōu)缺點(diǎn)3.如何來選擇軟件過程模型軟件過程模型的選擇方式和策略1.1軟件開發(fā)的特點(diǎn)基于智力的協(xié)作過程智力活動(dòng):基于邏輯思維來構(gòu)造軟件交流協(xié)作:多方參與、相互間的交流和討論軟件項(xiàng)目實(shí)施復(fù)雜性介入的人多、涉及的內(nèi)容多、產(chǎn)生的制品多不同要素間存在關(guān)聯(lián)循序漸進(jìn)的開發(fā)過程開展有序的開發(fā)活動(dòng),如編碼、分析、設(shè)計(jì)體現(xiàn)了工程的思想:按步驟、分階段、循序漸進(jìn)按照什么樣的過程和步驟來有序地開發(fā)軟件?1.2軟件過程過程(Process)活動(dòng):明確要做哪些事情,包括具體的活動(dòng)關(guān)系:活動(dòng)間存在邏輯關(guān)系,如依賴和先后次序示例:考研的過程軟件過程(SoftwareProcess)按照項(xiàng)目進(jìn)度、成本和質(zhì)量要求,遵循用戶需求,開發(fā)和維護(hù)軟件、管理軟件項(xiàng)目的一系列有序軟件開發(fā)活動(dòng)軟件開發(fā)活動(dòng):技術(shù)活動(dòng)和管理活動(dòng)1.3軟件過程模型軟件過程模型(SoftwareProcessModel)定義了軟件開發(fā)的具體活動(dòng)以及活動(dòng)間的邏輯關(guān)系開發(fā)活動(dòng)1開發(fā)活動(dòng)2開發(fā)活動(dòng)3開發(fā)活動(dòng)n任務(wù)、目標(biāo)、輸入和輸出投入人員、工具、資源和成本等軟件制品思考和討論:軟件開發(fā)應(yīng)該按照什么樣的過程?先做什么,然后再做什么,最后做什么為什么要按照這樣的過程??jī)?nèi)容何為軟件過程模型基本概念和特點(diǎn)有哪些軟件過程模型有什么類別,各有什么特點(diǎn)和優(yōu)缺點(diǎn)如何來選擇軟件過程模型軟件過程模型的選擇方式和策略2.1軟件過程模型的產(chǎn)生背景作坊式的個(gè)人創(chuàng)作聚焦于編寫代碼關(guān)注時(shí)空利用,精雕細(xì)琢程序規(guī)模小且功能單一依靠個(gè)體技能,缺乏合作無系統(tǒng)性方法和標(biāo)準(zhǔn)流程軟件工程產(chǎn)生之前的軟件開發(fā)軟件過程模型的產(chǎn)生背景IBMOS/360超大型軟件項(xiàng)目(1963年-1965年)通用系統(tǒng),支持多道程序,最多可同時(shí)運(yùn)行15道程序軟件工程師超2000人,花費(fèi)超5億美元,工作量超5000人年有史以來最可怕的軟件開發(fā)泥潭Brooks,《人月神話》TheMythicalMan-Month作者、圖靈獎(jiǎng)獲得者凸顯了軟件過程及其管理的重要性典型的軟件過程模型瀑布模型增量模型迭代模型原型模型螺旋模型基于構(gòu)件的過程模型UP模型需要系統(tǒng)、規(guī)范性的軟件過程模型的指導(dǎo)每種軟件過程模型有其各自的特點(diǎn)和適用場(chǎng)所2.2瀑布模型(WaterfallModel)需求分析概要設(shè)計(jì)詳細(xì)設(shè)計(jì)編碼實(shí)現(xiàn)集成測(cè)試確認(rèn)測(cè)試特點(diǎn)與軟件生命周期相互一致每個(gè)活動(dòng)結(jié)束后需要評(píng)審相鄰活動(dòng)間存在因果關(guān)系優(yōu)點(diǎn)簡(jiǎn)單,一目了然,易理解、掌握、應(yīng)用和管理適合于需求易于定義、不易變動(dòng)的軟件系統(tǒng)1970提出的第一個(gè)軟件過程模型需求分析(RequirementAnalysis)活動(dòng)任務(wù):定義軟件需求,包括功能、非功能需求關(guān)注點(diǎn):要做什么?(What,Problem)層次和視角:用戶角度,僅描述問題和需求方法依據(jù):用戶的期望和要求不斷與用戶進(jìn)行交流和商討,抽象、問題分解、多視點(diǎn)等技術(shù)產(chǎn)出軟件需求模型、軟件需求文檔、軟件確認(rèn)測(cè)試計(jì)劃產(chǎn)生文檔類的軟件制品明確問題是什么?概要設(shè)計(jì)(ArchitectureDesign)活動(dòng)任務(wù):建立軟件總體架構(gòu)、制定集成測(cè)試計(jì)劃關(guān)注點(diǎn):軟件高層設(shè)計(jì)?(How,Solution)層次和視角:宏觀、全局、整體、戰(zhàn)略性方法依據(jù):軟件需求文檔自頂向下,逐步求精,抽象,模塊化,局部化,信息隱藏…...產(chǎn)出軟件概要設(shè)計(jì)模型、軟件概要設(shè)計(jì)文檔、軟件集成測(cè)試計(jì)劃產(chǎn)生文檔類的軟件制品明確問題如何解決?詳細(xì)設(shè)計(jì)(DetailedDesign)活動(dòng)任務(wù):設(shè)計(jì)模塊內(nèi)部細(xì)節(jié)(算法、數(shù)據(jù)結(jié)構(gòu)),制訂單元測(cè)試計(jì)劃關(guān)注點(diǎn):詳細(xì)設(shè)計(jì)?(How,Solution)層次和視角:微觀、局部、細(xì)節(jié)性方法依據(jù):概要設(shè)計(jì)文檔、軟件需求文檔高質(zhì)量的軟件設(shè)計(jì)原則,如單入口單出口產(chǎn)出軟件詳細(xì)設(shè)計(jì)模型、軟件詳細(xì)設(shè)計(jì)文檔、單元測(cè)試計(jì)劃產(chǎn)生文檔類的軟件制品明確問題如何解決?編程實(shí)現(xiàn)(Implementation)活動(dòng)任務(wù):編寫程序代碼并進(jìn)行單元測(cè)試和調(diào)試關(guān)注點(diǎn):如何最終做出這個(gè)東西?(How,Code)層次和視角:最終的實(shí)現(xiàn)代碼方法依據(jù):軟件概要和詳細(xì)設(shè)計(jì)文檔、單元測(cè)試計(jì)劃采用某種程序設(shè)計(jì)語言(如C、C++、Java)產(chǎn)出經(jīng)過單元測(cè)試的源程序代碼產(chǎn)生程序類的軟件制品明確如何實(shí)際解決問題集成測(cè)試(IntegrationTest)活動(dòng)任務(wù):組裝軟件模塊并進(jìn)行測(cè)試以發(fā)現(xiàn)問題關(guān)注點(diǎn):集成后軟件中的缺陷(Bug)層次和視角:自底向上組裝、全局

方法依據(jù):軟件概要設(shè)計(jì)文檔、軟件集成測(cè)試計(jì)劃軟件集成測(cè)試工具產(chǎn)出經(jīng)過集成測(cè)試、修復(fù)缺陷的源程序代碼,集成測(cè)試報(bào)告產(chǎn)生數(shù)據(jù)、文檔和代碼類的軟件制品明確問題解決如何?軟件有缺陷嗎?確認(rèn)測(cè)試(ValidationTest)活動(dòng)任務(wù):測(cè)試軟件是否滿足用戶需求關(guān)注點(diǎn):軟件在滿足用戶需求方面是否存在缺陷層次和視角:從用戶角度,聚焦需求是否得以正確實(shí)現(xiàn)方法依據(jù):軟件確認(rèn)測(cè)試計(jì)劃、軟件需求文檔軟件測(cè)試支撐工具產(chǎn)出經(jīng)過確認(rèn)測(cè)試、修復(fù)缺陷后的代碼,軟件確認(rèn)測(cè)試報(bào)告產(chǎn)生數(shù)據(jù)、文檔和代碼類的軟件制品明確問題解決如何?軟件有缺陷嗎?思考和討論:瀑布模型的局限性?需求分析概要設(shè)計(jì)詳細(xì)設(shè)計(jì)編碼實(shí)現(xiàn)集成測(cè)試確認(rèn)測(cè)試優(yōu)點(diǎn)是什么有何不足需求確定,過于理想化缺乏變通,難應(yīng)對(duì)變化軟件需求具有易變、多變的特點(diǎn)怎么辦?2.3改進(jìn)的瀑布模型:帶反饋和回溯需求分析概要設(shè)計(jì)詳細(xì)設(shè)計(jì)編碼實(shí)現(xiàn)集成測(cè)試確認(rèn)測(cè)試回溯后期活動(dòng)發(fā)現(xiàn)有問題后,可返回到前面活動(dòng)加以解決提高了過程模型的靈活性不足軟件開發(fā)處于動(dòng)蕩之中需等到所有功能實(shí)現(xiàn)后,才能得到可運(yùn)行軟件2.4增量模型(IncrementalModel)需求分析概要設(shè)計(jì)詳細(xì)設(shè)計(jì)編碼實(shí)現(xiàn)集成測(cè)試確認(rèn)測(cè)試詳細(xì)設(shè)計(jì)編碼實(shí)現(xiàn)集成測(cè)試增量1增量n漸進(jìn)式、增量式地實(shí)現(xiàn)軟件功能優(yōu)點(diǎn):漸進(jìn)快速交付,并行開發(fā),提高效率增量模型的局限性?結(jié)合課程綜合實(shí)踐思考不足軟件需求可確定且不易于變化增量1增量n2.5迭代模型(IterativeModel)需求分析概要設(shè)計(jì)詳細(xì)設(shè)計(jì)編碼實(shí)現(xiàn)軟件測(cè)試迭代1需求分析概要設(shè)計(jì)詳細(xì)設(shè)計(jì)編碼實(shí)現(xiàn)軟件測(cè)試迭代2迭代n每次迭代完成部分可確定的軟件需求迭代模型的特點(diǎn)每次迭代是一完整過程體現(xiàn)了小步快跑的開發(fā)理念適合需求難導(dǎo)出、不易確定且持續(xù)變動(dòng)的軟件迭代模型的局限性?結(jié)合課程綜合實(shí)踐思考不足迭代多少次不確定管理較為復(fù)雜思考和討論:增量模型與迭代模型二者有何共性和區(qū)別?增量模型迭代模型增量1增量n軟件需求獲取是關(guān)鍵和瓶頸問題軟件需求非常關(guān)鍵軟件開發(fā)的基礎(chǔ)、驗(yàn)收的依據(jù)用戶講不清楚軟件需求有哪些、是什么?說不清、道不明,尤其當(dāng)軟件較為復(fù)雜和龐大之時(shí)用戶與軟件工程師對(duì)軟件需求理解存在偏差對(duì)軟件需求描述的歧義性、二義性、不準(zhǔn)確等造成的“應(yīng)該是這樣的”、“實(shí)際是這樣的”如果軟件需求分析結(jié)果不正確、不完整、有歧義,會(huì)帶來什么樣的問題?軟件需求的偏差需求偏差有多大如何來解決軟件需求偏差問題?2.6原型模型(PrototypeModel)特點(diǎn)軟件原型作為交流載體和媒介支持用戶參與到軟件開發(fā)中持續(xù)、漸進(jìn)地導(dǎo)出用戶要求適合于需求難導(dǎo)出、不易確定且持續(xù)變動(dòng)的軟件快速設(shè)計(jì)采集和細(xì)化需求建造原型客戶使用評(píng)價(jià)原型獲得反饋開發(fā)軟件系統(tǒng)何為軟件原型?用戶界面執(zhí)行流程2.7螺旋模型(SpiralModel)集成迭代模型和原型模型引入風(fēng)險(xiǎn)分析,風(fēng)險(xiǎn)驅(qū)動(dòng)的過程模型每個(gè)迭代四個(gè)階段,若干活動(dòng)適合于需求不明確、開發(fā)風(fēng)險(xiǎn)高、開發(fā)過程中需求變更大的軟件項(xiàng)目不足:管理復(fù)雜軟件風(fēng)險(xiǎn)使軟件開發(fā)受到影響和損失、甚至導(dǎo)致失敗的、可能會(huì)發(fā)生的事件不同軟件過程模型的特點(diǎn)模型名稱指導(dǎo)思想關(guān)注點(diǎn)適合軟件管理難度瀑布模型提供系統(tǒng)性指導(dǎo)與軟件生命周期相一致需求變動(dòng)不大、較為明確、可預(yù)先定義的應(yīng)用易原型模型以原型為媒介指導(dǎo)用戶的需求導(dǎo)出和評(píng)價(jià)需求獲取、導(dǎo)出和確認(rèn)理解需求難以表述清楚、不易導(dǎo)出和獲取的應(yīng)用易增量模型快速交付和并行開發(fā)軟件詳細(xì)設(shè)計(jì)、編碼和測(cè)試的增量式完成需求變動(dòng)不大、較為明確、可預(yù)先定義的應(yīng)用易迭代模型多次迭代,每次僅針對(duì)部分明確軟件需求分多次迭代來開發(fā)軟件,每次僅關(guān)注部分需求需求變動(dòng)大、難以一次性說清楚的應(yīng)用中等螺旋模型集成迭代模型和原型模型,引入風(fēng)險(xiǎn)分析軟件計(jì)劃制定和實(shí)施,軟件風(fēng)險(xiǎn)管理,基于原型的迭代式開發(fā)開發(fā)風(fēng)險(xiǎn)大,需求難以確定的應(yīng)用難內(nèi)容何為軟件過程模型基本概念和特點(diǎn)有哪些軟件過程模型有什么類別,各有什么特點(diǎn)和優(yōu)缺點(diǎn)3.如何來選擇軟件過程模型軟件過程模型的選擇方式和策略如何為軟件項(xiàng)目開發(fā)選擇合適的軟件過程模型軟件項(xiàng)目及開發(fā)團(tuán)隊(duì)的具體特點(diǎn)軟件過程模型特點(diǎn)、優(yōu)點(diǎn)和局限分析和對(duì)比3.1軟件過程模型的選擇考慮軟件項(xiàng)目的特點(diǎn)尤其是所開發(fā)軟件的業(yè)務(wù)特點(diǎn),如業(yè)務(wù)領(lǐng)域是否明確、軟件需求是否易于確定、用戶需求是否會(huì)經(jīng)常性變化等等是否可以預(yù)估到潛在的軟件開發(fā)風(fēng)險(xiǎn)考慮開發(fā)團(tuán)隊(duì)的水平需要結(jié)合軟件開發(fā)團(tuán)隊(duì)的能力和水平來選擇過程模型,以防開發(fā)團(tuán)隊(duì)和管理人員無法掌控和駕馭過程模型結(jié)合軟件過程模型特點(diǎn)優(yōu)缺點(diǎn)以及適合的場(chǎng)所示例:如何選擇合適的過程互聯(lián)網(wǎng)應(yīng)用軟件的開發(fā)過程模型特點(diǎn):軟件需求不確定且快速變化如:12306APP軟件,微信軟件,淘寶軟件選用瀑布模型不合適,迭代模型較為合適裝備軟件的開發(fā)過程模型特點(diǎn):軟件需求確定且較為穩(wěn)定,質(zhì)量要求高如:飛行控制軟件可考慮選用瀑布模型,用迭代模型不是很合適思考和討論結(jié)合課程綜合實(shí)踐的具體特點(diǎn)和要求,思考選用什么樣的軟件過程模型較為合適,為什么?軟件有創(chuàng)意:?jiǎn)栴}及基于軟件的解決方法有新意軟件上規(guī)模:軟件具有一定規(guī)模,代碼量>15000+LOC如空巢老人看護(hù)軟件、多無人機(jī)聯(lián)合搜尋軟件課程實(shí)踐軟件項(xiàng)目有何特點(diǎn)?軟件項(xiàng)目開發(fā)團(tuán)隊(duì)有何特點(diǎn)?3.2傳統(tǒng)軟件過程模型的特點(diǎn)和不足軟件開發(fā)和運(yùn)維的大量工作用于撰寫軟件文檔,而非去編寫程序代碼軟件開發(fā)過程中會(huì)花費(fèi)大量時(shí)間和精力用于軟件文檔的評(píng)審,以確保軟件質(zhì)量一旦軟件需求發(fā)生變化,開發(fā)人員需要修改軟件需求文檔,并據(jù)此來調(diào)整其他的一系列文檔,最后再修改程序代碼等較長(zhǎng)時(shí)間才能得到可運(yùn)行軟件系統(tǒng)以文檔為中心的重型軟件開發(fā)方法,非常笨重瀑布模型增量模型迭代模型原型模型螺旋模型……軟件文檔敏捷軟件開發(fā)方法(AgileMethod)的產(chǎn)生重視人和交互、重視可運(yùn)行軟件系統(tǒng)、重視客戶合作、重視響應(yīng)用戶需求變化少寫軟件文檔,以代碼為中心,快速響應(yīng)變化拓展閱讀軟件科學(xué)與工程-學(xué)科發(fā)展戰(zhàn)略,梅宏等著,高等教育出版社,2021.課后作業(yè)和課程實(shí)訓(xùn)訪問/paths/1944完成第四章“軟件過程模型和開發(fā)方法”的實(shí)訓(xùn)闖關(guān)任務(wù)本章知識(shí)圖譜小結(jié)軟件開發(fā)需要過程指導(dǎo)明確步驟、活動(dòng)、次序、關(guān)系多樣化的軟件過程模型瀑布、增量、迭代、原型、螺旋等,各自有其優(yōu)缺點(diǎn)選擇合適軟件過程模型考慮軟件項(xiàng)目特點(diǎn)和要求、團(tuán)隊(duì)的經(jīng)驗(yàn)和水平及各個(gè)軟件過程模型的優(yōu)缺點(diǎn)傳統(tǒng)軟件過程模型不足以文檔是中心,非常笨重,難以快速應(yīng)對(duì)需求變化,怎么辦?布置課程綜合實(shí)踐任務(wù)綜合實(shí)踐1:閱讀、分析和維護(hù)開源軟件結(jié)合代碼閱讀以及sonarqube工具掃描,分析小米便簽開源軟件的質(zhì)量,撰寫質(zhì)量分析報(bào)告要求:分析代碼質(zhì)量(從軟件設(shè)計(jì)到代碼規(guī)范)好的一面;存在的不足和問題,在具體開發(fā)中應(yīng)用高質(zhì)量的軟件開發(fā)規(guī)范和實(shí)踐綜合實(shí)踐2:開發(fā)有創(chuàng)意、上規(guī)模和高質(zhì)量的軟件結(jié)合要求構(gòu)思軟件需求,撰寫軟件需求構(gòu)思和描述文檔要求:有創(chuàng)意,上規(guī)模;力爭(zhēng)將軟件需求講清楚:what&why思考題迭代模型能夠有效的支持課程實(shí)踐軟件項(xiàng)目的開發(fā)和管理工作?為什么?敏捷軟件開發(fā)方法軟件工程內(nèi)容何為敏捷開發(fā)方法基本思想和原則特點(diǎn)和應(yīng)用具體敏捷開發(fā)方法極限編程測(cè)試驅(qū)動(dòng)開發(fā)方法Scrum方法DevOps方法1.1傳統(tǒng)重型軟件開發(fā)方法的特點(diǎn)和不足遵循嚴(yán)格的過程和計(jì)劃定義廣泛適用的過程并通過團(tuán)隊(duì)來執(zhí)行該過程,從而指導(dǎo)軟件開發(fā)以預(yù)測(cè)性為主,傾向于預(yù)先制定詳細(xì)的計(jì)劃,并通過該計(jì)劃來指導(dǎo)軟件項(xiàng)目的實(shí)施,并期望軟件開發(fā)過程與計(jì)劃之間的偏差越少越好以文檔為中心通過文檔記錄各個(gè)階段的成果,將文檔作為交互的媒介需對(duì)文檔進(jìn)行持續(xù)改進(jìn)和評(píng)審難以有效應(yīng)對(duì)軟件需求的變化等到開發(fā)后期才能得到可運(yùn)行軟件編碼是開發(fā)的后期工作1.2什么是敏捷方法(AgileMethod)?一種輕量級(jí)軟件開發(fā)方法相對(duì)于重量級(jí)的軟件開發(fā)方法而言主張軟件開發(fā)要以代碼為中心,快速、輕巧和主動(dòng)應(yīng)對(duì)需求變化,持續(xù)、及時(shí)交付可運(yùn)行的軟件系統(tǒng)輕便、輕巧提供了一組思想和策略,指導(dǎo)快速響應(yīng)用戶需求的變化,快速交付可運(yùn)行的軟件制品1.3敏捷開發(fā)方法的基本價(jià)值觀較之于過程和工具,應(yīng)更加重視人和交互的價(jià)值較之于面面俱到文檔,應(yīng)更加重視可運(yùn)行軟件系統(tǒng)的價(jià)值較之于合同談判,應(yīng)更加重視客戶合作的價(jià)值較之于遵循計(jì)劃,應(yīng)更加重視響應(yīng)用戶需求變化的價(jià)值要以快速滿足用戶需求為目標(biāo),以此來改變軟件開發(fā)的理念、思想和方法敏捷方法的指導(dǎo)思想強(qiáng)化可運(yùn)行的軟件,弱化軟件文檔以可運(yùn)行軟件為中心來開展軟件開發(fā)以適應(yīng)變化為目的,提升應(yīng)變能力針對(duì)變化不斷進(jìn)行優(yōu)化和調(diào)整任務(wù)、產(chǎn)品和計(jì)劃等以人為本,讓方法等服務(wù)于人敏捷軟件開發(fā)是面向人的而不是面向過程的,讓方法、技術(shù)、工具、過程等來適應(yīng)人,而不是讓人來適應(yīng)它們敏捷意味著:輕盈、靈巧;無過多的負(fù)擔(dān);迅速響應(yīng)變化1.4敏捷準(zhǔn)則基于四項(xiàng)價(jià)值觀,人們進(jìn)一步提出12條敏捷開發(fā)原則以指導(dǎo)開發(fā)人員運(yùn)用敏捷開發(fā)方法來開發(fā)軟件實(shí)踐這些原則使得敏捷方法更具可操作性敏捷價(jià)值觀敏捷開發(fā)原則軟件開發(fā)實(shí)踐產(chǎn)生指導(dǎo)敏捷準(zhǔn)則(1/2)盡早和持續(xù)地交付有價(jià)值的軟件,以使用戶滿意即使到了軟件開發(fā)后期,也歡迎用戶需求的變化不斷交付可運(yùn)行軟件系統(tǒng),交付周期可以從幾周到幾個(gè)月在整個(gè)軟件項(xiàng)目開發(fā)期間,用戶和開發(fā)人員最好能每天一起工作由積極主動(dòng)的人來承擔(dān)項(xiàng)目開發(fā),給他們提供所需環(huán)境和支持,信任他們的能力團(tuán)隊(duì)內(nèi)部最有效的信息傳遞方式是面對(duì)面的交談敏捷準(zhǔn)則(2/2)將可運(yùn)行軟件作為衡量軟件開發(fā)進(jìn)度的首要標(biāo)準(zhǔn)可持續(xù)性的開發(fā),出資方、開發(fā)方和用戶方應(yīng)當(dāng)保持長(zhǎng)期、恒定的開發(fā)速度關(guān)注優(yōu)秀的技能和良好的設(shè)計(jì)會(huì)增強(qiáng)敏捷性采用簡(jiǎn)單化的方法來完成任務(wù)最好的架構(gòu)、需求和設(shè)計(jì)出自于自組織的團(tuán)隊(duì)軟件開發(fā)團(tuán)隊(duì)?wèi)?yīng)定期就如何提高工作效率的問題進(jìn)行反思,并進(jìn)行相應(yīng)的調(diào)整敏捷軟件開發(fā)對(duì)技術(shù)提出的要求如何快速開發(fā)出可運(yùn)行的軟件系統(tǒng)?當(dāng)需求改變時(shí),如何快速應(yīng)對(duì)變化?如何給出可有效應(yīng)對(duì)變化的軟件設(shè)計(jì)?在文檔缺乏情況下如何保證軟件質(zhì)量?如何提高軟件開發(fā)的效率?1.5支持敏捷軟件開發(fā)的技術(shù)極限編程(eXtremeProgramming,XP)測(cè)試驅(qū)動(dòng)開發(fā)(TestDrivenDevelopment,TDD)Scrum方法DevOps方法適應(yīng)性軟件開發(fā)(AdaptiveSoftwareDevelopment,ASD)特征驅(qū)動(dòng)開發(fā)(FeatureDrivenDevelopment,FDD)敏捷設(shè)計(jì)動(dòng)態(tài)系統(tǒng)開發(fā)方法(DynamicSystemDevelopmentMethod,DSDM)敏捷開發(fā)方法是一大類方法統(tǒng)稱,它們均遵循敏捷思想內(nèi)容何為敏捷開發(fā)方法基本思想和原則特點(diǎn)和應(yīng)用具體敏捷開發(fā)方法極限編程測(cè)試驅(qū)動(dòng)開發(fā)方法Scrum方法DevOps方法2.1極限編程的基本思想由KentBeck提出的一種特殊的敏捷軟件開發(fā)方法四條核心思想交流,強(qiáng)調(diào)基于口頭(而非文檔、報(bào)表和計(jì)劃)的交流反饋,通過持續(xù)、明確反饋來獲得軟件狀態(tài)簡(jiǎn)單,用最簡(jiǎn)單的技術(shù)來解決問題勇氣,快速開發(fā)并在必要時(shí)具有重新進(jìn)行開發(fā)的信心將經(jīng)過數(shù)十年檢驗(yàn)的準(zhǔn)則結(jié)合在一起,定義了五條指導(dǎo)性原則和十二條須遵循的核心準(zhǔn)則極限編程的5條指導(dǎo)原則快速反饋從用戶處迅速得到有關(guān)軟件的反饋,確認(rèn)開發(fā)是否滿足用戶需求,通過自動(dòng)化測(cè)試迅速了解軟件運(yùn)行狀況簡(jiǎn)單性假設(shè)開發(fā)人員只考慮當(dāng)前迭代所面臨問題,無需考慮下一次迭代的問題,用簡(jiǎn)單方法和技術(shù)來解決問題。逐步更改通過一系列修改來逐步解決問題和完善系統(tǒng),不要期望一次迭代就開發(fā)出完整的軟件系統(tǒng)。支持變化歡迎用戶改變需求,支持用戶需求動(dòng)態(tài)變化。高量的工作采用諸如測(cè)試驅(qū)動(dòng)開發(fā)等技術(shù)高質(zhì)量地開展工作,確保軟件質(zhì)量。極限編程的12條核心準(zhǔn)則(1/3)計(jì)劃游戲軟件開發(fā)團(tuán)隊(duì)快速制定下一次迭代的軟件開發(fā)計(jì)劃隱喻(Metaphor)使用業(yè)務(wù)相關(guān)術(shù)語來描述需求,促使開發(fā)人員和業(yè)務(wù)人員對(duì)系統(tǒng)達(dá)成共同和一致的理解小型發(fā)布經(jīng)常性發(fā)布可運(yùn)行軟件系統(tǒng),每次發(fā)布的軟件系統(tǒng)僅提供少量功能簡(jiǎn)單設(shè)計(jì)只為當(dāng)前的需求做設(shè)計(jì),程序能運(yùn)行所有測(cè)試、沒有重復(fù)邏輯、包含盡可能少的類和方法極限編程的12條核心準(zhǔn)則(2/3)測(cè)試測(cè)試應(yīng)在編寫代碼之前進(jìn)行重構(gòu)在不改變程序代碼功能的前提下,改進(jìn)程序代碼的設(shè)計(jì),使程序代碼更加簡(jiǎn)單,更易于擴(kuò)展結(jié)對(duì)編程兩名程序員同時(shí)在一臺(tái)計(jì)算機(jī)上共同開展編程工作代碼集體擁有開發(fā)小組的任何成員都可以查看并修改任何部分的代碼極限編程的12條核心準(zhǔn)則(3/3)持續(xù)集成經(jīng)常性地進(jìn)行集成每周工作40小時(shí)倡導(dǎo)質(zhì)量?jī)?yōu)先現(xiàn)場(chǎng)用戶用戶代表在現(xiàn)場(chǎng)辦公,參與開發(fā)全過程,確保能及時(shí)得到反饋編碼標(biāo)準(zhǔn)遵循統(tǒng)一編碼標(biāo)準(zhǔn),以提高軟件系統(tǒng)的可理解性和可維護(hù)性2.2傳統(tǒng)軟件開發(fā)的局限程序員先編寫程序代碼,然后再對(duì)程序代碼進(jìn)行測(cè)試基于已有的程序代碼進(jìn)行測(cè)試局限性測(cè)試常被視為是附加工作,由于進(jìn)度壓力,常被忽視,導(dǎo)致沒有足夠時(shí)間對(duì)代碼進(jìn)行詳盡和充分的測(cè)試當(dāng)文檔與程序代碼不一致時(shí),對(duì)程序代碼進(jìn)行測(cè)試就會(huì)存在許多問題測(cè)試通常是在程序代碼編寫完成之后才進(jìn)行的,因而無法保證編寫程序和測(cè)試同步測(cè)試被視為是乏味的工作,人員缺乏積極性和成就感測(cè)試驅(qū)動(dòng)開發(fā)的思想在編寫業(yè)務(wù)代碼之前,先確定和編寫測(cè)試程序員首先要思考如何對(duì)某個(gè)功能進(jìn)行測(cè)試,設(shè)計(jì)好相應(yīng)的測(cè)試用例,編寫好相關(guān)的測(cè)試代碼,然后編寫相應(yīng)的程序代碼以通過軟件測(cè)試測(cè)試驅(qū)動(dòng)開發(fā)的過程選擇功能增加測(cè)試編寫測(cè)試編譯測(cè)試重構(gòu)代碼運(yùn)行測(cè)試運(yùn)行測(cè)試修改代碼修改代碼修改代碼測(cè)試驅(qū)動(dòng)開發(fā)的特點(diǎn)根據(jù)測(cè)試來編寫代碼編寫測(cè)試的目的不僅是為了測(cè)試程序代碼能夠正常工作,而且被用于定義程序代碼的內(nèi)涵確保任何程序代碼都是可測(cè)試的編碼完成后即完工易于維護(hù)、質(zhì)量保證2.3Scrum方法旨在通過增量或迭代的方式加強(qiáng)軟件項(xiàng)目的管理以及快速提交可運(yùn)行的軟件產(chǎn)品BackLogSprintLog軟件產(chǎn)品產(chǎn)品訂單庫沖刺訂單庫沖刺開發(fā)交付的軟件產(chǎn)品1-4周左右的沖刺Scrum方法的大致流程首先,產(chǎn)品擁有者需創(chuàng)建軟件產(chǎn)品訂單庫即“Backblog”描述軟件產(chǎn)品需提供的功能需求以及它們的優(yōu)先級(jí)排序其次,篩選出最應(yīng)該實(shí)現(xiàn)的軟件需求,Scrum主人基于“Backblog”中各項(xiàng)軟件需求及其優(yōu)先級(jí),形成待實(shí)現(xiàn)的軟件產(chǎn)品沖刺訂單庫,即“SprintLog”然后,軟件開發(fā)將進(jìn)入沖刺“Sprint”周期以實(shí)現(xiàn)選定軟件訂單,每個(gè)沖刺就是一次增量開發(fā),一般持續(xù)1到4周最后,共同開展Scrum評(píng)審一次沖刺完成后,每個(gè)團(tuán)隊(duì)成員演示自己的開發(fā)成果,大家共同審查成果是否高質(zhì)量地實(shí)現(xiàn)了既定功能,并就其中的問題進(jìn)行反思,以指導(dǎo)和改進(jìn)下一次沖刺2.4DevOps方法的基本思想傳統(tǒng)方法將軟件開發(fā)和運(yùn)維的分離開來DevOps是由“Development”和“Operations”二個(gè)英文單詞的縮寫連接而成反映了要將軟件開發(fā)和軟件運(yùn)維二個(gè)階段的工作統(tǒng)一和集成在一起加以考慮,實(shí)現(xiàn)二者之間的無縫連接DevOps方法將敏捷的理念和思想從軟件開發(fā)階段延伸到軟件運(yùn)維階段DevOps方法實(shí)際上是一種特殊的敏捷開發(fā)方法DevOps方法與其他方法的對(duì)比持續(xù)集成、持續(xù)交付和持續(xù)部署(1/2)持續(xù)集成(ContinuousIntegration,CI)軟件開發(fā)團(tuán)隊(duì)成員經(jīng)常性地集成他們的工作成果(如程序代碼),把團(tuán)隊(duì)個(gè)人研發(fā)的部分代碼向團(tuán)隊(duì)軟件整體部分交付持續(xù)交付(ContinuousDelivery,CD)在持續(xù)集成的基礎(chǔ)上,通過自動(dòng)化測(cè)試,將集成后的代碼部署到更貼近真實(shí)運(yùn)行的環(huán)境之中,從而為持續(xù)部署奠定基礎(chǔ)持續(xù)部署(ContinuousDeployment,CD)當(dāng)交付的代碼通過評(píng)審之后,自動(dòng)部署到軟件系統(tǒng)的實(shí)際和真實(shí)運(yùn)行環(huán)境中持續(xù)集成、持續(xù)交付和持續(xù)部署(2/2)DevOps的工具支持為了實(shí)現(xiàn)持續(xù)集成、持續(xù)交付和持續(xù)部署,DevOps方法需要借助于一系列的工具常見的持續(xù)集成CASE工具包括Jenkins、GitLabCI、TravisCI、CircleCI、Maven等,它們可以與GitLab、GitHub、Bitbucket等版本控制系統(tǒng)集成使用常見的持續(xù)交付和持續(xù)部署工具包括Ansible、Puppet、Chef等,它們可以自動(dòng)化部署和管理基礎(chǔ)設(shè)施以及應(yīng)用程序使用監(jiān)控工具(如Nagios、Zabbix、Prometheus等)對(duì)部署的應(yīng)用程序進(jìn)行監(jiān)控和故障排查,對(duì)系統(tǒng)資源、應(yīng)用程序性能、日志等方面進(jìn)行監(jiān)控,并提供報(bào)警、自愈等功能。2.5敏捷方法的特點(diǎn)小和少生成少量軟件文檔,每個(gè)文檔規(guī)模要小每次迭代要實(shí)現(xiàn)軟件功能的數(shù)量和規(guī)模要小,迭代周期要小簡(jiǎn)技術(shù)、工具以及每次迭代要解決的問題盡可能簡(jiǎn)單只關(guān)注當(dāng)前欲實(shí)現(xiàn)的功能需求,而不要考慮將來的問題快快速響應(yīng)變化、從用戶處獲得反饋,給用戶提交有價(jià)值軟件,對(duì)軟件產(chǎn)品進(jìn)行迭代和更新變?cè)试S需求動(dòng)態(tài)變化,要以變應(yīng)變,開發(fā)團(tuán)隊(duì)?wèi)?yīng)是自組織的重型方法與敏捷方法對(duì)比方法名稱重型開發(fā)方法敏捷開發(fā)方法基本理念以文檔為中心以代碼為中心交付特點(diǎn)交付慢、開發(fā)持續(xù)時(shí)間長(zhǎng)、難以快速應(yīng)對(duì)需求變化交付快、開發(fā)持續(xù)時(shí)間短、可快速應(yīng)對(duì)需求的變化適合項(xiàng)目對(duì)軟件文檔和過程要求高、軟件需求演變不快的軟件系統(tǒng),如要求遵循CMM規(guī)范的軍用軟件系統(tǒng)開發(fā)需求經(jīng)常變化的軟件,如互聯(lián)網(wǎng)軟件典型代表瀑布模型、增量模型、迭代模型、原型模型、螺旋模型等測(cè)試驅(qū)動(dòng)開發(fā)、Scrum、DevOps方法等示例:12306軟件開發(fā)采用敏捷方法Mini-12306軟件的邊界不確定,需求動(dòng)態(tài)變化,客戶要求開發(fā)方盡早和持續(xù)交付軟件系統(tǒng)針對(duì)該項(xiàng)目軟件需求特點(diǎn)及交付要求,項(xiàng)目組可考慮采用迭代、敏捷的方法來開展該軟件系統(tǒng)的開發(fā)每次迭代或每個(gè)Scrum周期針對(duì)若干明確的軟件需求項(xiàng)開展開發(fā)工作,每隔一段時(shí)間給客戶交付可運(yùn)行軟件系統(tǒng)思考和討論敏捷開發(fā)方法與瀑布過程模型等的本質(zhì)區(qū)別是什么?敏捷開發(fā)方法適合于哪些類別的軟件開發(fā)?DevOps方法如何體現(xiàn)敏捷開發(fā)的思想?拓展閱讀敏捷軟件開發(fā),[美]

羅伯特·C.馬?。≧obert,C.,Martin),清華大學(xué)出版社,2020.DevOps實(shí)踐指南(第2版),人民郵電出版社,2024.課后作業(yè)和課程實(shí)訓(xùn)訪問/paths/1944完成第四章“軟件過程模型和開發(fā)方法”的實(shí)訓(xùn)闖關(guān)任務(wù)本章知識(shí)圖譜小結(jié)敏捷開發(fā)方法的本質(zhì)應(yīng)對(duì)軟件需求變化,解決傳統(tǒng)過程模型的不足敏捷開發(fā)方法的特點(diǎn)小、簡(jiǎn)、快、變、體,輕量級(jí)方法,以代碼為中心的方法敏捷開發(fā)方法的構(gòu)成由許多具體的方法組成,如Scrum方法、極限編程等問題和討論群體化軟件開發(fā)方法軟件工程內(nèi)容開源軟件的開發(fā)要求特點(diǎn)和開發(fā)要求何為群體化軟件開發(fā)方法基本理念和思想如何實(shí)現(xiàn)群體化軟件開發(fā)關(guān)鍵軟件工程技術(shù)1.1閉源軟件何為閉源軟件軟件代碼不對(duì)用戶開放的一類軟件,購(gòu)買軟件時(shí)只提供可運(yùn)行軟件或服務(wù),沒有提供源代碼以使用許可證(License)的方式授權(quán)用戶使用軟件閉源軟件的特點(diǎn)無法獲得源代碼(無渠道)無權(quán)使用源代碼(合法性)閉源軟件帶來的問題無法掌握軟件內(nèi)部實(shí)現(xiàn)情況(如是否存在惡意代碼),難可信;無法修改和完善軟件,影響了開發(fā)者的創(chuàng)新自由閉源軟件只提供可執(zhí)行代碼,不提供源代碼閉源軟件及企業(yè)示例典型軟件Windows、Office軟件、Oracle軟件等典型企業(yè)微軟、IBM、Oracle等1.2開源軟件(OpenSourceSoftware)何為開源軟件一種源代碼可以自由獲取和傳播的計(jì)算機(jī)軟件,其擁有者通過開源許可證賦予被許可人對(duì)軟件進(jìn)行使用、修改和傳播開源軟件的特點(diǎn)源程序代碼對(duì)外開放自由使用、修改和傳播任何人都可獲得開源軟件的代碼開源軟件對(duì)源代碼開放,并允許你修改和傳播示例:開源軟件操作系統(tǒng)Linux、Ubuntu、麒麟、鴻蒙、OpenEuler等數(shù)據(jù)庫系統(tǒng)MySQL、PostgreSQL、MongoDB、Redis等開發(fā)平臺(tái)Eclipse、Junit、SonarQube、Kubernetes等人工智能Tensorflow、Opencv、Caffe、Deeplearning4j等網(wǎng)絡(luò)安全Nmap、curityOnion、Suricata、Bro等……你需要的軟件都可以找到相應(yīng)的開源軟件示例:Gitee上的OpenHarmony開源軟件開源鴻蒙軟件1.3開源軟件的開發(fā)要求吸引大眾參與和貢獻(xiàn)任何人可參與開源開發(fā)在互聯(lián)網(wǎng)上進(jìn)行開發(fā)實(shí)現(xiàn)隨時(shí)隨地參與開發(fā)代碼可實(shí)現(xiàn)充分共享代碼可以被任何人獲取思考和討論你知道有哪些開源軟件?免費(fèi)使用軟件等同于開源軟件嗎?微信、12306等軟件是開源軟件嗎?開源軟件是如何開發(fā)出來的??jī)?nèi)容開源軟件的開發(fā)要求特點(diǎn)和軟件開發(fā)要求何為群體化軟件開發(fā)基本理念和思想如何實(shí)現(xiàn)群體化軟件開發(fā)關(guān)鍵軟件工程技術(shù)2.1軟件開發(fā)是創(chuàng)作和生產(chǎn)的過程軟件創(chuàng)作發(fā)揮軟件工程師的智慧,結(jié)合創(chuàng)作者的愛好和興趣,開展軟件創(chuàng)作如構(gòu)思需求、開展設(shè)計(jì)、精雕代碼等軟件生產(chǎn)任務(wù)分工,集中管理計(jì)劃驅(qū)動(dòng),有序開發(fā)評(píng)審測(cè)試,保證質(zhì)量交流溝通,促進(jìn)合作創(chuàng)作生產(chǎn)基于團(tuán)隊(duì)的軟件開發(fā)方法及其組織模式軟件制品特定組織(如微軟、IBM、華為)的人員所組成軟件項(xiàng)目團(tuán)隊(duì)組織內(nèi)軟件開發(fā)者參與開發(fā)邊界封閉組織外軟件開發(fā)者無法加入團(tuán)隊(duì)不能獲得軟件制品對(duì)外不可共享的軟件倉(cāng)庫基于團(tuán)隊(duì)軟件開發(fā)方法的特點(diǎn)開發(fā)團(tuán)隊(duì)邊界封閉域外人員無法參與人員以及資源有限項(xiàng)目的成果不共享集中化的管理模式關(guān)注生產(chǎn)而非創(chuàng)作軟件制品無法充分利用團(tuán)隊(duì)之外的力量,阻礙大眾參與軟件創(chuàng)作和生產(chǎn)示例:Windows軟件開發(fā)團(tuán)隊(duì)組成Windows7軟件項(xiàng)目的團(tuán)隊(duì)組織核心開發(fā)團(tuán)隊(duì)大約有1000人25個(gè)功能小組,每個(gè)小組大約有40個(gè)人每個(gè)小組包括三類人員:程序經(jīng)理,開發(fā)工程師,測(cè)試工程師全部是Microsoft員工Windows7源代碼是微軟商業(yè)機(jī)密,不對(duì)外共享和開放微軟之外的其他組織無法獲得產(chǎn)品的任何信息和資源示例:IBMOS/360軟件開發(fā)團(tuán)隊(duì)1960s初IBMOS/360大型軟件項(xiàng)目通用系統(tǒng),支持多道程序,最多可同時(shí)運(yùn)行15道程序軟件工程師超2000人,工作量超5000人年IBM之外的其他組織無法獲得產(chǎn)品的任何信息和資源2.2開源軟件項(xiàng)目的開發(fā)和組織模式開放項(xiàng)目邊界大眾參與開發(fā)程序代碼共享軟件倉(cāng)庫互聯(lián)網(wǎng)用戶互聯(lián)網(wǎng)用戶由少數(shù)核心開發(fā)人員和大量互聯(lián)網(wǎng)大眾(外圍)所組成的群體化開發(fā)開放的項(xiàng)目邊界可共享的代碼倉(cāng)庫互聯(lián)網(wǎng)大眾能做什么樣的貢獻(xiàn)?構(gòu)思軟件需求,增強(qiáng)軟件功能-創(chuàng)作發(fā)現(xiàn)軟件問題,指出軟件缺陷-創(chuàng)作編寫程序代碼,提交開發(fā)成果-創(chuàng)作+生產(chǎn)參與代碼評(píng)審,評(píng)價(jià)貢獻(xiàn)質(zhì)量-生產(chǎn)……創(chuàng)作生產(chǎn)將軟件創(chuàng)作和生產(chǎn)融合在一起,充分發(fā)揮大眾的智慧和力量高手在民間,高手在互聯(lián)網(wǎng)上示例:OpenHarmony中的群體化貢獻(xiàn)提出問題和需求貢獻(xiàn)和提交代碼開源鴻蒙充分利用群體的智慧來推動(dòng)軟件的創(chuàng)作和生產(chǎn)2.3何為群體化開發(fā)方法依托互聯(lián)網(wǎng)平臺(tái)來吸引、匯聚、組織和管理互聯(lián)網(wǎng)上的大規(guī)模軟件開發(fā)人員,通過競(jìng)爭(zhēng)、合作、協(xié)商等多種自主協(xié)同方式,讓他們參與軟件開發(fā)、分享軟件開發(fā)知識(shí)和成果、貢獻(xiàn)智慧和力量的一種新穎軟件開發(fā)方法軟件倉(cāng)庫互聯(lián)網(wǎng)用戶互聯(lián)網(wǎng)用戶思考和討論沒有互聯(lián)網(wǎng)平臺(tái)能開展群體化軟件開發(fā)嗎?為什么?軟件倉(cāng)庫互聯(lián)網(wǎng)用戶互聯(lián)網(wǎng)用戶基于互聯(lián)網(wǎng)的群體化開發(fā)平臺(tái)Github(國(guó)際)和Gitee(國(guó)內(nèi))群體化開發(fā)平臺(tái)提供的開發(fā)支持提出需求創(chuàng)意、發(fā)現(xiàn)軟件缺陷、提交程序代碼、標(biāo)注開發(fā)任務(wù)、討論軟件需求、評(píng)審代碼質(zhì)量等等2.4群體化軟件開發(fā)方法的特點(diǎn)軟件開發(fā)邊界開放互聯(lián)網(wǎng)大眾自由參與利用海量的大眾資源共享源程序代碼兼顧軟件創(chuàng)作和生產(chǎn)依托互聯(lián)網(wǎng)平臺(tái)群體化軟件開發(fā)是一種基于社區(qū)的軟件開發(fā)模式開發(fā)社區(qū)而非團(tuán)隊(duì):社區(qū)和團(tuán)隊(duì)的區(qū)別大教堂與集市大教堂(基于團(tuán)隊(duì)的閉源軟件開發(fā))傳統(tǒng)大型軟件公司的開發(fā)模式就像艱難緩慢的大教堂建造工程,嚴(yán)密的組織和集中式結(jié)構(gòu)特點(diǎn)是封閉式建設(shè)、成本高、周期長(zhǎng)、品質(zhì)優(yōu)集市(基于群體的開源軟件開發(fā))

特點(diǎn)是開放式建設(shè)、成本低、周期短、品質(zhì)平庸并行、對(duì)等的扁平化開發(fā),參與者大多來自于互聯(lián)網(wǎng)上的志愿者,結(jié)構(gòu)松散、來去自由集市大教堂閉源軟件開發(fā)和開源軟件開發(fā)閉源軟件采用大教堂的開發(fā)方式開源軟件

采用集市的開發(fā)方式雷蒙德(Raymond,E.S.)著,衛(wèi)劍釩譯.大教堂與集市,機(jī)械工業(yè)出版社[M],2014軟件工程經(jīng)典著作思考和討論基于團(tuán)隊(duì)的軟件開發(fā)方法vs基于社區(qū)的群體化軟件開發(fā)方法基于團(tuán)隊(duì)軟件開發(fā)方法基于社區(qū)群體化開發(fā)方法項(xiàng)目組織方式(團(tuán)隊(duì)/社區(qū))開發(fā)成員組成(封閉/開放)程序代碼開放依托平臺(tái)協(xié)同關(guān)注創(chuàng)作和生產(chǎn)可用資源情況(有限/海量)內(nèi)容開源軟件的開發(fā)要求特點(diǎn)和開發(fā)要求何為群體化軟件開發(fā)基本理念和思想如何實(shí)現(xiàn)群體化軟件開發(fā)關(guān)鍵軟件工程技術(shù)群體化軟件開發(fā)方法的支撐關(guān)鍵技術(shù)基于社區(qū)的群體化組織基于Issue的任務(wù)管理基于Git的分布式版本管理基于Pull/Request的分布式協(xié)同開發(fā)基于群智的知識(shí)分享3.1基于社區(qū)的群體化軟件項(xiàng)目組織核心開發(fā)人員外圍開發(fā)人員大眾化協(xié)同持續(xù)性評(píng)估軟件倉(cāng)庫需求創(chuàng)意軟件缺陷程序代碼

貢獻(xiàn)和獲取貢獻(xiàn)和獲取群體化軟件開發(fā)采用社區(qū)和集市的組織模式核心開發(fā)人員開源軟件項(xiàng)目的主要貢獻(xiàn)者,主要職責(zé)開源軟件的核心貢獻(xiàn)人員(如提供了最初的開源代碼)分析和評(píng)估外圍開放大眾所發(fā)現(xiàn)的軟件缺陷和提出的軟件需求,將其轉(zhuǎn)化為生產(chǎn)性的軟件開發(fā)計(jì)劃評(píng)審和分析開放大眾所提交的程序代碼,并將通過評(píng)審的代碼融入到軟件倉(cāng)庫之中人數(shù)不多幾個(gè)到幾十個(gè)不等開源鴻蒙有100多人外圍開發(fā)人員開源軟件項(xiàng)目的外圍貢獻(xiàn)者,主要職責(zé)借助于互聯(lián)網(wǎng)平臺(tái)獲得軟件項(xiàng)目信息,結(jié)合個(gè)人的興趣愛好、經(jīng)驗(yàn)和技能,自發(fā)地為軟件項(xiàng)目貢獻(xiàn)自己的力量提出需求建議、匯報(bào)代碼缺陷、提交程序代碼、評(píng)審代碼質(zhì)量等數(shù)量會(huì)非常大成百上千,甚至有幾萬人開源鴻蒙有3萬多人依托開源社區(qū)來組織不同人員開源軟件社區(qū)將核心開發(fā)人員與外圍開發(fā)人員有機(jī)地結(jié)合在一起,依托軟件倉(cāng)庫進(jìn)行分布式協(xié)同開發(fā)軟件倉(cāng)庫自由進(jìn)出社區(qū)遵循社區(qū)規(guī)定自愿開展工作開放分享代碼開源軟件社區(qū)示例:依托社區(qū)自由獲取開源代碼克隆、下載開源代碼自由地克隆和下載代碼3.2傳統(tǒng)軟件開發(fā)的任務(wù)管理軟件項(xiàng)目團(tuán)隊(duì)管理者團(tuán)隊(duì)成員1團(tuán)隊(duì)成員2團(tuán)隊(duì)成員3團(tuán)隊(duì)成員n開發(fā)任務(wù)的指派基于團(tuán)隊(duì)組織模式和開發(fā)方法不適用于開源軟件開發(fā)集中管理任務(wù)分解強(qiáng)制執(zhí)行基于Issue的任務(wù)管理開源軟件的開發(fā)任務(wù)不同于傳統(tǒng)的開發(fā)任務(wù)分解方式開發(fā)者群體自主提出,體現(xiàn)了群體創(chuàng)作思想每個(gè)任務(wù)對(duì)應(yīng)于一個(gè)Issue開發(fā)任務(wù)的二類形式:修復(fù)軟件缺陷、功能實(shí)現(xiàn)需求基于Issue的軟件開發(fā)任務(wù)管理創(chuàng)建Issue,提出軟件開發(fā)任務(wù)討論Issue,分析開發(fā)任務(wù)的意義和價(jià)值指派Issue,安排人員來完成Issue掌控Issue,掌握Issue解決的進(jìn)展?fàn)顩r自主提出任務(wù)自發(fā)完成任務(wù)提出Issue清晰地描述任務(wù)標(biāo)題內(nèi)容特征提供必要的標(biāo)簽以補(bǔ)充說明任務(wù)的性質(zhì)和特征缺陷or需求程序語言任務(wù)標(biāo)題任務(wù)描述任務(wù)特征示例:提出Issue任何人均可提出軟件開發(fā)任務(wù):代碼缺陷和軟件需求“新建Issue”管理Issue辨別Issue的類別代碼缺陷,新增功能需求給Issue打標(biāo)簽確認(rèn)Issue的有效性缺陷是否客觀存在軟件需求是否有意義為Issue貼上適當(dāng)標(biāo)簽直觀地展示其特征信息Bug表示缺陷修復(fù)任務(wù),duplicate表示這是一個(gè)重復(fù)任務(wù)依靠群體來管理Issue任務(wù)標(biāo)簽示例:管理和討論Issue設(shè)置Issue優(yōu)先級(jí)補(bǔ)充log截圖指派Issue何為指派Issue將Issue分配給相應(yīng)人員加以解決要考慮的因素群體基于興趣和特長(zhǎng)來認(rèn)領(lǐng)相關(guān)任務(wù)結(jié)合開發(fā)者的開發(fā)技術(shù)和經(jīng)驗(yàn)考慮開發(fā)人員的能力和精力Issue指派并非強(qiáng)制性具有通知和推薦的性質(zhì)接受到任務(wù)指派的人員有權(quán)決定是否接受該指派,可自愿參加或拒絕指派示例:指派Issue的負(fù)責(zé)人跟蹤Issue跟蹤和記錄Issue的解決過程,掌握Issue解決狀況事件的發(fā)起者發(fā)生的時(shí)間點(diǎn)事件的內(nèi)容等重要的事件提出貼標(biāo)簽指派負(fù)責(zé)人等思考和討論在開源軟件社區(qū)中,基于Issue的任務(wù)管理有何優(yōu)點(diǎn)?它與集中式管理相比較有何差異性?Issue機(jī)制能否支持開源軟件的群體發(fā)開發(fā)?為什么?傳統(tǒng)軟件開發(fā)的集中式版本管理軟件版本庫多人同時(shí)需要該代碼時(shí)會(huì)存在什么樣的問題?訪問和存取訪問和存取開發(fā)者

3.3分布式版本管理思想本地工作區(qū)暫存區(qū)本地版本庫遠(yuǎn)程(中心)版本庫開發(fā)者的本地計(jì)算機(jī)遠(yuǎn)端計(jì)算機(jī)采用分級(jí)處理方式來區(qū)分軟件項(xiàng)目文件的不同狀態(tài)工作區(qū)、暫存區(qū)、本地版本庫建在開發(fā)人員自己的計(jì)算機(jī)之中,遠(yuǎn)程版本庫建在遠(yuǎn)程的中心服務(wù)器上本地工作完成后,可把本地版本庫數(shù)據(jù)(如代碼)同步推送到遠(yuǎn)程版本庫中,也可從遠(yuǎn)程版本庫拉?。≒ull)最新代碼到本地版本庫創(chuàng)建開發(fā)分支分支相當(dāng)于一條開發(fā)線路,是一串代碼提交歷史軟件開發(fā)者可利用分支實(shí)現(xiàn)不同開發(fā)任務(wù)的并行執(zhí)行與變更合并Git版本庫中有二個(gè)常見的分支master分支:軟件項(xiàng)目主分支,負(fù)責(zé)存儲(chǔ)對(duì)外發(fā)布的項(xiàng)目版本,軟件開發(fā)者應(yīng)該確保master分支的穩(wěn)定性,一般不輕易直接修改master分支中的代碼,通常只有一個(gè)develop分支,軟件項(xiàng)目的開發(fā)分支,通常是各分支代碼的匯總分支,始終保持最新完成功能以及修復(fù)缺陷后的代碼開發(fā)者分支,軟件開發(fā)者自己的獨(dú)立分支分支軟件開發(fā)分支示意圖一個(gè)軟件有多個(gè)軟件開發(fā)分支代碼貢獻(xiàn)Master分支Dev分支Foo分支版本庫開發(fā)分支的合并(Merge)Dev分支Foo分支Dev分支Foo分支將多個(gè)開發(fā)者分支中的代碼修改合并到Dev分支里合并(Merge)Gve分支Gve分支基于Git的協(xié)同開發(fā)Git分支操作—多人協(xié)作(橫向視角)分支:使用分支意味著你可以把你的工作從開發(fā)主線上分離開來,以免影響開發(fā)主線masterbranch2branch1createmergecommitcreatemergecommit倉(cāng)庫及分支操作示意圖本地倉(cāng)庫遠(yuǎn)程倉(cāng)庫pushpullcommitcommitswitch合并請(qǐng)求分支管理工作創(chuàng)建“master”分支“master”分支倉(cāng)庫處于穩(wěn)定、可運(yùn)行和可部署的狀態(tài)只有管理人員才有權(quán)限把“develop”分支代碼合并到“master”分支中創(chuàng)建“develop”分支屬于開發(fā)人員的分支倉(cāng)庫,只有經(jīng)過審查和測(cè)試的任務(wù)分支代碼才可合并到“develop”分支倉(cāng)庫中只有管理人員才有權(quán)限把任務(wù)分支合并到“develop”分支上創(chuàng)建開發(fā)人員自己的任務(wù)分支每個(gè)開發(fā)人員可根據(jù)自身的開發(fā)任務(wù)創(chuàng)建自己的任務(wù)分支代碼合并(Merge)開發(fā)人員可通過項(xiàng)目管理人員,將自己編寫代碼同步合并到“develop”分支中思考和討論軟件開發(fā)人員編寫好代碼后,如何將自己編寫的代碼合并到原始倉(cāng)庫中去?3.4基于Pull/Request(P/R)分布式協(xié)同開發(fā)每個(gè)開發(fā)人員在本地完成編程工作后,不是直接向中心倉(cāng)庫推送代碼,而是通過發(fā)送一個(gè)P/R合并請(qǐng)求,將原始代碼庫的克隆庫推薦合并到中心倉(cāng)庫之中一個(gè)“P/R”顧名思義是指一次合并請(qǐng)求,合并的內(nèi)容對(duì)應(yīng)于一個(gè)代碼修改補(bǔ)丁,它包含了軟件開發(fā)人員對(duì)軟件的一次代碼修改接收到合并請(qǐng)求后,軟件項(xiàng)目管理團(tuán)隊(duì)和開發(fā)人員群體需要對(duì)P/R進(jìn)行審查評(píng)估該P(yáng)/R所貢獻(xiàn)代碼的質(zhì)量,將符合質(zhì)量要求的代碼集成到中心代碼庫合適的分支中基于P/R的分布式協(xié)同開發(fā)1.Fork(復(fù)刻)在線平臺(tái)和遠(yuǎn)程倉(cāng)庫2.Clone(克?。?.Push(推送)4.Pull-request(代碼合并請(qǐng)求)復(fù)刻倉(cāng)庫本地倉(cāng)庫開源軟件原始倉(cāng)庫李四Pull(拉?。┍镜貦C(jī)器李四分布式協(xié)同開發(fā)的操作(1/2)克?。–lone)/派生(Fork)通過克隆或派生,將軟件項(xiàng)目的倉(cāng)庫復(fù)制到自己的個(gè)人空間中,從而獲取軟件倉(cāng)庫中的軟件代碼本地修改開發(fā)人員基于克隆后的軟件倉(cāng)庫,在本地進(jìn)行軟件開發(fā)活動(dòng),如修復(fù)缺陷、開發(fā)新的功能等,所產(chǎn)生的代碼變更將只影響其本地的克隆庫,而不會(huì)影響原始的軟件倉(cāng)庫提交合并(P/R)開發(fā)人員可將變更的代碼以P/R的形式發(fā)送到原始的軟件倉(cāng)庫,提供關(guān)于代碼合并的相關(guān)信息,包括合并的概要性標(biāo)題、合并內(nèi)容,說明該P(yáng)R完成了哪些工作、代碼測(cè)試結(jié)果等情況分布式協(xié)同開發(fā)的操作(2/2)代碼質(zhì)量保證平臺(tái)采用人工審查和自動(dòng)測(cè)試相結(jié)合的方式,檢查P/R代碼質(zhì)量開發(fā)人員可自發(fā)參與貢獻(xiàn)的審查過程,以評(píng)論方式發(fā)表意見一些軟件項(xiàng)目還會(huì)通過持續(xù)集成工具,自動(dòng)編譯并測(cè)試所收到的P/R代碼,并向開發(fā)人員反饋測(cè)試結(jié)果PR的提出者接收到反饋后,可根據(jù)評(píng)論意見和測(cè)試結(jié)果,更新原始P/R中的相關(guān)代碼合并決策軟件項(xiàng)目核心開發(fā)團(tuán)隊(duì)綜合評(píng)估上述所有因素,決定接受還是拒絕某項(xiàng)貢獻(xiàn)的合并請(qǐng)求。如果PR被接受,則開發(fā)人員所貢獻(xiàn)的代碼和提交的歷史都將被合并到項(xiàng)目的中心倉(cāng)庫中基于P/R分布式協(xié)同開發(fā)技術(shù)的優(yōu)勢(shì)簡(jiǎn)單使用門檻低,開發(fā)人員可方便地貢獻(xiàn)代碼、評(píng)論他人貢獻(xiàn),極大提高了開發(fā)人員參與軟件項(xiàng)目開發(fā)的積極性規(guī)范PR機(jī)制提供了規(guī)范化的協(xié)同開發(fā)流程,促進(jìn)互聯(lián)網(wǎng)上大眾群體圍繞代碼貢獻(xiàn)的交流與合作,并與大眾評(píng)論、軟件測(cè)試、代碼審查等環(huán)節(jié)結(jié)合在一起,確保了軟件開發(fā)質(zhì)量透明所有軟件開發(fā)歷史信息和社交活動(dòng)信息都會(huì)保留下來,在開發(fā)人員主頁或軟件項(xiàng)目主頁中展現(xiàn)示例:mysql項(xiàng)目基于P/R的分布式開發(fā)協(xié)同開發(fā)者對(duì)P/R的評(píng)論P(yáng)/R標(biāo)題合并6次commit到Master分支中3.5基于群體的知識(shí)分享軟件開發(fā)實(shí)踐中遇到問題怎么辦?群體采用提問、回答、評(píng)論等多種方式進(jìn)行在線知識(shí)分享基于群體的知識(shí)分享參與分享的對(duì)象是開放的互聯(lián)網(wǎng)大眾分享的內(nèi)容表現(xiàn)為從問題到解答等多種知識(shí)樣式群智知識(shí)分享的分布式協(xié)同提問(Ask)在社區(qū)中進(jìn)行提問,以獲得其他人員的討論和解答回答(Answer)和討論(Comment)對(duì)提問進(jìn)行回答,或者對(duì)提問和回答進(jìn)行評(píng)論必要時(shí)可以附上相關(guān)的細(xì)節(jié),如問題解決的代碼片段接受(Accept)如果某個(gè)回答有效地解決了問題,那么提出者可以接受該回答搜索(Retrieve)檢索社區(qū)是否有相同或類似的問題,并找到相應(yīng)的問題解答軟件開發(fā)知識(shí)分享的互聯(lián)網(wǎng)平臺(tái)Stackoverflow和CSDN示例:StackOverflow發(fā)布的問題信息問題標(biāo)題問題信息問題描述及代碼示例:StackOverflow的問題回答問題回答問題回答描述回答相關(guān)信息接受該問題的回答海量的軟件開發(fā)知識(shí)SO用戶2400+萬,月訪問用戶量1億,用戶獲幫助450億SO問題2400+萬,3600萬回答,9100萬評(píng)論充分利用知識(shí)分享社區(qū)中的知識(shí)來解決課程學(xué)習(xí)和實(shí)踐中遇到的問題開源軟件托管平臺(tái)會(huì)受到封鎖2022年4月13日起,GitHub開始封鎖受美國(guó)制裁公司的俄羅斯企業(yè)及軟件開發(fā)者賬戶數(shù)十個(gè)賬戶被屏蔽,其中包括包括SberbankTechnology、SberbankAILab和AlfaBankLaboratory在內(nèi)的GitHub企業(yè)帳戶個(gè)體開發(fā)商的賬戶建設(shè)我國(guó)安全可控的開源軟件托管平臺(tái)我國(guó)的開源軟件托管平臺(tái)Gitee拓展閱讀大教堂與集市,EricS.Raymond,機(jī)械工業(yè)出版社,2014.課后作業(yè)和課程實(shí)訓(xùn)訪問/paths/1944完成第四章“軟件過程模型和開發(fā)方法”的實(shí)訓(xùn)闖關(guān)任務(wù)本章知識(shí)圖譜小結(jié)開放和共享吸引互聯(lián)網(wǎng)大眾自主參與,匯聚大眾群體的貢獻(xiàn)和智慧自由分享程序代碼、知識(shí)問答等內(nèi)容組織和管理采用基于社區(qū)的組織模式,借助去中心化的分布式協(xié)同開發(fā)模式借助互聯(lián)網(wǎng)平臺(tái)的支持,如Github、StackOverflow等多樣化目的既支持軟件開發(fā),也支持軟件開發(fā)知識(shí)的分享將軟件創(chuàng)作和軟件生產(chǎn)融合在一起來支持軟件開發(fā)綜合實(shí)踐任務(wù)在Educode平臺(tái)上開展分布式協(xié)同開發(fā)創(chuàng)建項(xiàng)目版本庫、創(chuàng)建Issue、提交代碼、合并請(qǐng)求在知士薈上開展群體化學(xué)習(xí):討論、分享和共享布置課程綜合實(shí)踐任務(wù)綜合實(shí)踐1:閱讀、分析和維護(hù)開源軟件構(gòu)思小米便簽開源軟件的新需求,發(fā)現(xiàn)小米便簽開源代碼缺陷采用群體化開發(fā)方法來開展課程綜合實(shí)踐基于Issue機(jī)制來提出軟件開發(fā)任務(wù),基于P/R機(jī)制來貢獻(xiàn)代碼綜合實(shí)踐2:開發(fā)有創(chuàng)意、上規(guī)模和高質(zhì)量的軟件針對(duì)要求構(gòu)思軟件需求,撰寫軟件需求構(gòu)思和描述文檔要求:有創(chuàng)意,上規(guī)模;力爭(zhēng)將軟件需求講清楚:what&why下一節(jié)課進(jìn)行課程實(shí)踐的匯報(bào)和講評(píng)思考題群體化軟件開發(fā)方法及其平臺(tái)能否用于指導(dǎo)閉源軟件的開發(fā)(如課程實(shí)踐2項(xiàng)目)?為什么?基于大模型的智能化軟件開發(fā)方法軟件工程內(nèi)容大模型技術(shù)的特點(diǎn)問題解決方式變化代表了新質(zhì)生產(chǎn)力大模型帶來的挑戰(zhàn)可信判斷帶來問題濫用和泛用大模型大模型帶來的機(jī)遇深化專業(yè)課程建設(shè)強(qiáng)化人才能力培養(yǎng)我們進(jìn)入到大模型的時(shí)代(1/2)OpenAI基于GPT4.0的ChatGPT2023-3基于GPT4.0的Copilot2023-3微軟2023-4CognitionAIAI程序員Devin2023-4微軟AI程序員AutoDev2023-4OpenAIChatGPT4O我們進(jìn)入到大模型的時(shí)代(2/2)百度文心一言2023-3華為盤古2023-6騰訊2023-9混元科大訊飛訊飛星火2023-5截至2024年3月,我國(guó)共有117個(gè)生成式AI的大模型完成了備案3602023-11奇虎-奇元大模型的應(yīng)用技術(shù)通用領(lǐng)域智能軟件開發(fā)自然語言處理圖形圖像處理……推動(dòng)技術(shù)研究和革新行業(yè)垂直領(lǐng)域教育軟件產(chǎn)業(yè)工業(yè)制造……推動(dòng)行業(yè)領(lǐng)域變革大模型的應(yīng)用前景非常廣泛,幾乎滲透到了各個(gè)行業(yè)和領(lǐng)域大模型代表了新質(zhì)生產(chǎn)力生成式智能化問題解決–方法獨(dú)特性基于自然語言交互方式–交互友好性

適合廣泛的行業(yè)和領(lǐng)域–應(yīng)用泛化性改變工作的方式和手段–影響深遠(yuǎn)性示例:基于大模型的智能化軟件開發(fā)基于大模型的智能化軟件開發(fā)需求分析軟件設(shè)計(jì)編碼實(shí)現(xiàn)軟件測(cè)試測(cè)試設(shè)計(jì)需求代碼支持軟件開發(fā)的全生命周期生成軟件需求產(chǎn)生軟件設(shè)計(jì)方案生成程序代碼生成測(cè)試用例及方案大模型對(duì)軟件開發(fā)產(chǎn)生了系統(tǒng)性和深層次影響基于大模型的智能化軟件開發(fā)(1/5)智能化的需求獲取和分析包括自動(dòng)化需求收集、理解及驗(yàn)證等方面,利用自然語言處理技術(shù)從多種數(shù)據(jù)源收集并識(shí)別用戶需求應(yīng)用文本分析技術(shù)理解并提取需求中的關(guān)鍵信息,檢測(cè)需求文檔中的缺失、模糊及不一致內(nèi)容,并自動(dòng)完善需求文檔示例:基于ChatGPT的軟件需求生成根據(jù)用戶的提示,生成軟件需求的描述創(chuàng)建與項(xiàng)目目標(biāo)一致的需求描述,進(jìn)而生成用戶使用場(chǎng)景的案例,并推薦軟件系統(tǒng)的產(chǎn)品功能開發(fā)者以此為基礎(chǔ),將抽象、籠統(tǒng)的概念轉(zhuǎn)化為明確、詳實(shí)的軟件需求12306軟件的需求是什么?示例:基于ChatGPT的軟件需求生成進(jìn)一步細(xì)化和完善需求提供軟件需求的細(xì)節(jié)生成需求的用戶故事基于大模型的智能化軟件開發(fā)(2/5)智能化軟件設(shè)計(jì)包括軟件架構(gòu)生成與推薦、設(shè)計(jì)評(píng)估及優(yōu)化等方面,基于需求分析結(jié)果,自動(dòng)化生成軟件架構(gòu)及設(shè)計(jì)文檔推薦符合需求的設(shè)計(jì)模式及架構(gòu)風(fēng)格建議評(píng)估不同設(shè)計(jì)方案成本及性能并進(jìn)行優(yōu)化,確保設(shè)計(jì)滿足需求規(guī)范示例:基于ChatGPT的軟件架構(gòu)設(shè)計(jì)為開發(fā)團(tuán)隊(duì)提供設(shè)計(jì)建議及架構(gòu)模式幫助團(tuán)隊(duì)快速地確定合適的架構(gòu)方案提醒設(shè)計(jì)需要關(guān)注的問題如何進(jìn)行12306軟件的設(shè)計(jì)?示例:基于ChaGPT的詳細(xì)設(shè)計(jì)根據(jù)提示給出使用SpringBoot進(jìn)行實(shí)現(xiàn)的詳細(xì)設(shè)計(jì)為后續(xù)編碼實(shí)現(xiàn)奠定基礎(chǔ)基于大模型的智能化軟件開發(fā)(3/5)自動(dòng)化代碼生成該方法是智能化軟件開發(fā)方法的核心,通過利用人工智能模型及自然語言處理技術(shù),根據(jù)自然語言描述或其他規(guī)范自動(dòng)生成軟件代碼,涵蓋從系統(tǒng)架構(gòu)到代碼片段,從業(yè)務(wù)邏輯到測(cè)試驗(yàn)證等不同粒度、階段的代碼生成智能化代碼推薦通過對(duì)開發(fā)者的編程習(xí)慣以及用戶當(dāng)前上下文進(jìn)行學(xué)習(xí),從現(xiàn)有代碼庫中推薦開發(fā)者需要的代碼片段或模板,支持開發(fā)者高效復(fù)用已有高質(zhì)量代碼輔助軟件開發(fā)過程示例:基于ChatGPT的代碼生成對(duì)TicketService接口中車票查詢功能提供類代碼用自然語言解釋說明代碼的實(shí)現(xiàn)邏輯12306軟件的代碼是什么?基于大模型的智能化軟件開發(fā)(4/5)軟件缺陷預(yù)測(cè)及自動(dòng)修復(fù)使用機(jī)器學(xué)習(xí)算法分析歷史缺陷數(shù)據(jù),預(yù)測(cè)軟件中潛在的缺陷位置以及對(duì)應(yīng)的缺陷類型,通過搜索方法或生成式人工智能模型給出修復(fù)補(bǔ)丁,減少人工審查代碼和修復(fù)缺陷的開銷自動(dòng)化代碼測(cè)試包括自動(dòng)生成測(cè)試用例、自動(dòng)化執(zhí)行測(cè)試、測(cè)試結(jié)果分析等方面,包括單元測(cè)試、集成測(cè)試、系統(tǒng)測(cè)試等各個(gè)層面,輔助開發(fā)者高效編寫測(cè)試代碼并提前發(fā)現(xiàn)錯(cuò)誤,保證軟件質(zhì)量示例:基于ChatGPT的測(cè)試用例生成生成四個(gè)測(cè)試用例說明測(cè)試的目的、步驟和預(yù)期結(jié)果考慮對(duì)應(yīng)場(chǎng)景下的邊界條件和異常情況提供測(cè)試代碼示例12306軟件測(cè)試用例是什么?基于大模型的智能化軟件開發(fā)(5/5)自動(dòng)化文檔生成該方法通過基于大規(guī)模代碼和自然語言文本的學(xué)習(xí),根據(jù)源代碼或其它軟件制品,自動(dòng)化生成和維護(hù)文檔內(nèi)容,包括需求文檔、設(shè)計(jì)文檔、API文檔等軟件開發(fā)過程文檔,以及代碼注釋、提交消息等內(nèi)容,減少開發(fā)人員在維護(hù)軟件文檔過程中的精力智能化輔助決策基于軟件開發(fā)數(shù)據(jù)的支持項(xiàng)目管理者做出更加合理的項(xiàng)目管理決策,包括項(xiàng)目開發(fā)時(shí)間規(guī)劃、項(xiàng)目資源分配、項(xiàng)目風(fēng)險(xiǎn)評(píng)估等等大模型對(duì)于計(jì)算機(jī)專業(yè)影響的滲透性和泛化性計(jì)算機(jī)科學(xué)與技術(shù)軟件工程人工智能網(wǎng)絡(luò)工程信息安全物聯(lián)網(wǎng)工程數(shù)據(jù)科學(xué)與大數(shù)據(jù)技術(shù)…….統(tǒng)一、新穎的問題解決方法自動(dòng)化開發(fā):軟件工程長(zhǎng)期努力的目標(biāo)創(chuàng)造性思維的結(jié)果(需求+設(shè)計(jì)等)基于自然語言軟件生成的結(jié)果(程序代碼)程序設(shè)計(jì)語言軟件工程致力于將自然語言表述的創(chuàng)作結(jié)果最終由程序設(shè)計(jì)語言來表示e.g.,1970-軟件開發(fā)自動(dòng)化,形式化的需求規(guī)約語言及其轉(zhuǎn)換和生成成本高、代價(jià)大,工程層面上實(shí)用性不強(qiáng),未能得到廣泛的應(yīng)用工具或人思維結(jié)果的中介表示(需求+設(shè)計(jì)等)規(guī)約語言+建模語言工具或人自動(dòng)化智能化:大模型從軟件開發(fā)自動(dòng)化到軟件開發(fā)智能化形式化描述(e.g.,邏輯、Z)形式化方法(e.g.,推理、證明)自動(dòng)產(chǎn)生高質(zhì)量代碼問題20世紀(jì)70-90年代的軟件開發(fā)形式化和自動(dòng)化工作自然語言描述(e.g.,英語、漢語)生成式方法(e.g.,學(xué)習(xí)、訓(xùn)練)生成高質(zhì)量代碼問題2020年之后基于大模型的智能化開發(fā)工作基于大模型的結(jié)對(duì)軟件開發(fā)成為趨勢(shì)基于大模型的智能體計(jì)算機(jī)工程師人機(jī)協(xié)同開發(fā)Copilot等基于智能化的編程助手(如CopilotX),人機(jī)協(xié)同編程會(huì)成為趨勢(shì)越來越多程序員使用CopilotX等智能化工具進(jìn)行軟件開發(fā),AIPair編程正在成為新的編程范式,幫助程序員編代碼、單元測(cè)試、調(diào)試、寫文檔等結(jié)對(duì)編程會(huì)怎樣發(fā)展?以人為主AI為輔以AI為主人為輔AI軟件工程師隨著大模型技術(shù)及智能化工具的發(fā)展,結(jié)對(duì)編程的方式會(huì)發(fā)生變化大模型技術(shù)提供了強(qiáng)大的工具常用的CASE工具基于大模型技術(shù)的CASE工具什么都能干干得快,效率高干得好,質(zhì)量好Copilot已參與到微軟全體云代碼倉(cāng)庫中的46%,幫助開發(fā)人員將編程速度提高了55%使用Copilot的開發(fā)人員中有90%表示可以更快地完成任務(wù),73%的開發(fā)人員能更好地保持順暢并節(jié)省精力,75%的開發(fā)人員感到更有成就感,大模型在計(jì)算機(jī)領(lǐng)域可能帶來的變化強(qiáng)者越強(qiáng)

–提升效率和質(zhì)量,創(chuàng)新軟件產(chǎn)品善于利用大模型工具的人

溫馨提示

  • 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)論