軟件工程 課件 3.2 敏捷開發(fā)方法_第1頁
軟件工程 課件 3.2 敏捷開發(fā)方法_第2頁
軟件工程 課件 3.2 敏捷開發(fā)方法_第3頁
軟件工程 課件 3.2 敏捷開發(fā)方法_第4頁
軟件工程 課件 3.2 敏捷開發(fā)方法_第5頁
已閱讀5頁,還剩32頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

敏捷軟件開發(fā)方法軟件工程內(nèi)容何為敏捷開發(fā)方法基本思想和原則特點(diǎn)和應(yīng)用具體敏捷開發(fā)方法極限編程測試驅(qū)動開發(fā)方法Scrum方法DevOps方法1.1傳統(tǒng)重型軟件開發(fā)方法的特點(diǎn)和不足遵循嚴(yán)格的過程和計(jì)劃定義廣泛適用的過程并通過團(tuán)隊(duì)來執(zhí)行該過程,從而指導(dǎo)軟件開發(fā)以預(yù)測性為主,傾向于預(yù)先制定詳細(xì)的計(jì)劃,并通過該計(jì)劃來指導(dǎo)軟件項(xiàng)目的實(shí)施,并期望軟件開發(fā)過程與計(jì)劃之間的偏差越少越好以文檔為中心通過文檔記錄各個(gè)階段的成果,將文檔作為交互的媒介需對文檔進(jìn)行持續(xù)改進(jìn)和評審難以有效應(yīng)對軟件需求的變化等到開發(fā)后期才能得到可運(yùn)行軟件編碼是開發(fā)的后期工作1.2什么是敏捷方法(AgileMethod)?一種輕量級軟件開發(fā)方法相對于重量級的軟件開發(fā)方法而言主張軟件開發(fā)要以代碼為中心,快速、輕巧和主動應(yīng)對需求變化,持續(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)變能力針對變化不斷進(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ān)項(xiàng)目開發(fā),給他們提供所需環(huán)境和支持,信任他們的能力團(tuán)隊(duì)內(nèi)部最有效的信息傳遞方式是面對面的交談敏捷準(zhǔn)則(2/2)將可運(yùn)行軟件作為衡量軟件開發(fā)進(jìn)度的首要標(biāo)準(zhǔn)可持續(xù)性的開發(fā),出資方、開發(fā)方和用戶方應(yīng)當(dāng)保持長期、恒定的開發(fā)速度關(guān)注優(yōu)秀的技能和良好的設(shè)計(jì)會增強(qiáng)敏捷性采用簡單化的方法來完成任務(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ā)對技術(shù)提出的要求如何快速開發(fā)出可運(yùn)行的軟件系統(tǒng)?當(dāng)需求改變時(shí),如何快速應(yīng)對變化?如何給出可有效應(yīng)對變化的軟件設(shè)計(jì)?在文檔缺乏情況下如何保證軟件質(zhì)量?如何提高軟件開發(fā)的效率?1.5支持敏捷軟件開發(fā)的技術(shù)極限編程(eXtremeProgramming,XP)測試驅(qū)動開發(fā)(TestDrivenDevelopment,TDD)Scrum方法DevOps方法適應(yīng)性軟件開發(fā)(AdaptiveSoftwareDevelopment,ASD)特征驅(qū)動開發(fā)(FeatureDrivenDevelopment,FDD)敏捷設(shè)計(jì)動態(tài)系統(tǒng)開發(fā)方法(DynamicSystemDevelopmentMethod,DSDM)敏捷開發(fā)方法是一大類方法統(tǒng)稱,它們均遵循敏捷思想內(nèi)容何為敏捷開發(fā)方法基本思想和原則特點(diǎn)和應(yīng)用具體敏捷開發(fā)方法極限編程測試驅(qū)動開發(fā)方法Scrum方法DevOps方法2.1極限編程的基本思想由KentBeck提出的一種特殊的敏捷軟件開發(fā)方法四條核心思想交流,強(qiáng)調(diào)基于口頭(而非文檔、報(bào)表和計(jì)劃)的交流反饋,通過持續(xù)、明確反饋來獲得軟件狀態(tài)簡單,用最簡單的技術(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ā)是否滿足用戶需求,通過自動化測試迅速了解軟件運(yùn)行狀況簡單性假設(shè)開發(fā)人員只考慮當(dāng)前迭代所面臨問題,無需考慮下一次迭代的問題,用簡單方法和技術(shù)來解決問題。逐步更改通過一系列修改來逐步解決問題和完善系統(tǒng),不要期望一次迭代就開發(fā)出完整的軟件系統(tǒng)。支持變化歡迎用戶改變需求,支持用戶需求動態(tài)變化。高量的工作采用諸如測試驅(qū)動開發(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ù)人員對系統(tǒng)達(dá)成共同和一致的理解小型發(fā)布經(jīng)常性發(fā)布可運(yùn)行軟件系統(tǒng),每次發(fā)布的軟件系統(tǒng)僅提供少量功能簡單設(shè)計(jì)只為當(dāng)前的需求做設(shè)計(jì),程序能運(yùn)行所有測試、沒有重復(fù)邏輯、包含盡可能少的類和方法極限編程的12條核心準(zhǔn)則(2/3)測試測試應(yīng)在編寫代碼之前進(jìn)行重構(gòu)在不改變程序代碼功能的前提下,改進(jìn)程序代碼的設(shè)計(jì),使程序代碼更加簡單,更易于擴(kuò)展結(jié)對編程兩名程序員同時(shí)在一臺計(jì)算機(jī)上共同開展編程工作代碼集體擁有開發(fā)小組的任何成員都可以查看并修改任何部分的代碼極限編程的12條核心準(zhǔn)則(3/3)持續(xù)集成經(jīng)常性地進(jìn)行集成每周工作40小時(shí)倡導(dǎo)質(zhì)量優(yōu)先現(xiàn)場用戶用戶代表在現(xiàn)場辦公,參與開發(fā)全過程,確保能及時(shí)得到反饋編碼標(biāo)準(zhǔn)遵循統(tǒng)一編碼標(biāo)準(zhǔn),以提高軟件系統(tǒng)的可理解性和可維護(hù)性2.2傳統(tǒng)軟件開發(fā)的局限程序員先編寫程序代碼,然后再對程序代碼進(jìn)行測試基于已有的程序代碼進(jìn)行測試局限性測試常被視為是附加工作,由于進(jìn)度壓力,常被忽視,導(dǎo)致沒有足夠時(shí)間對代碼進(jìn)行詳盡和充分的測試當(dāng)文檔與程序代碼不一致時(shí),對程序代碼進(jìn)行測試就會存在許多問題測試通常是在程序代碼編寫完成之后才進(jìn)行的,因而無法保證編寫程序和測試同步測試被視為是乏味的工作,人員缺乏積極性和成就感測試驅(qū)動開發(fā)的思想在編寫業(yè)務(wù)代碼之前,先確定和編寫測試程序員首先要思考如何對某個(gè)功能進(jìn)行測試,設(shè)計(jì)好相應(yīng)的測試用例,編寫好相關(guān)的測試代碼,然后編寫相應(yīng)的程序代碼以通過軟件測試測試驅(qū)動開發(fā)的過程選擇功能增加測試編寫測試編譯測試重構(gòu)代碼運(yùn)行測試運(yùn)行測試修改代碼修改代碼修改代碼測試驅(qū)動開發(fā)的特點(diǎn)根據(jù)測試來編寫代碼編寫測試的目的不僅是為了測試程序代碼能夠正常工作,而且被用于定義程序代碼的內(nèi)涵確保任何程序代碼都是可測試的編碼完成后即完工易于維護(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)先級排序其次,篩選出最應(yīng)該實(shí)現(xiàn)的軟件需求,Scrum主人基于“Backblog”中各項(xiàng)軟件需求及其優(yōu)先級,形成待實(shí)現(xiàn)的軟件產(chǎn)品沖刺訂單庫,即“SprintLog”然后,軟件開發(fā)將進(jìn)入沖刺“Sprint”周期以實(shí)現(xiàn)選定軟件訂單,每個(gè)沖刺就是一次增量開發(fā),一般持續(xù)1到4周最后,共同開展Scrum評審一次沖刺完成后,每個(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方法與其他方法的對比持續(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ǔ)上,通過自動化測試,將集成后的代碼部署到更貼近真實(shí)運(yùn)行的環(huán)境之中,從而為持續(xù)部署奠定基礎(chǔ)持續(xù)部署(ContinuousDeployment,CD)當(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等,它們可以自動化部署和管理基礎(chǔ)設(shè)施以及應(yīng)用程序使用監(jiān)控工具(如Nagios、Zabbix、Prometheus等)對部署的應(yīng)用程序進(jìn)行監(jiān)控和故障排查,對系統(tǒng)資源、應(yīng)用程序性能、日志等方面進(jìn)行監(jiān)控,并提供報(bào)警、自愈等功能。2.5敏捷方法的特點(diǎn)小和少生成少量軟件文檔,每個(gè)文檔規(guī)模要小每次迭代要實(shí)現(xiàn)軟件功能的數(shù)量和規(guī)模要小,迭代周期要小簡技術(shù)、工具以及每次迭代要解決的問題盡可能簡單只關(guān)注當(dāng)前欲實(shí)現(xiàn)的功能需求,而不要考慮將來的問題快快速響應(yīng)變化、從用戶處獲得反饋,給用戶提交有價(jià)值軟件,對軟件產(chǎn)品進(jìn)行迭代和更新變允許需求動態(tài)變化,要以變應(yīng)變,開發(fā)團(tuán)隊(duì)?wèi)?yīng)是自組織的重型方法與敏捷方法對比方法名稱重型開發(fā)方法敏捷開發(fā)方法基本理念以文檔為中心以代碼為中心交付特點(diǎn)交付慢、開發(fā)持續(xù)時(shí)間長、難以快速應(yīng)對需求變化交付快、開發(fā)持續(xù)時(shí)間短、可快速應(yīng)對需求的變化適合項(xiàng)目對軟件文檔和過程要求高、軟件需求演變不快的軟件系統(tǒng),如要求遵循CMM規(guī)范的軍用軟件系統(tǒng)開發(fā)需求經(jīng)常變化的軟件,如互聯(lián)網(wǎng)軟件典型代表瀑布模型、增量模型、迭代模型、原型模型、螺旋模型等測試驅(qū)動開發(fā)、Scrum、DevOps方法等示例:12306軟件開發(fā)采用敏捷方法Mini-12306軟件的邊界不確定,需求動態(tài)變化,客戶要求開發(fā)方盡早和持續(xù)交付軟件系統(tǒng)針對該項(xiàng)目軟件需求特點(diǎn)及交付要求,項(xiàng)目組可考慮采用迭代、敏捷的方法來開展該軟件系統(tǒng)的開發(fā)每次迭代或每個(gè)Scrum周期針對若干明確的軟件需求項(xiàng)開展開發(fā)工作,每隔一段時(shí)間給客戶交付可運(yùn)行軟件系統(tǒng)思考和討論敏捷開發(fā)方法與瀑布過程模型等的本質(zhì)區(qū)別是什么?敏捷開發(fā)方法適合于哪些類別的軟件開發(fā)?DevOps方法如何體現(xiàn)敏捷開發(fā)的思想?拓展閱讀敏捷軟件開發(fā),[美]

羅伯特·C.馬丁

溫馨提示

  • 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

提交評論