敏捷軟體開發法支援廣泛的軟體開發生命週期。有的專注於實踐(例如,極限編程、務實編程,敏捷建模),而有的專注於管理工作流程(例如Scrum,看板)。有的支援需求規範和開發(例如FDD)的活動,而另一些則試圖涵蓋整個開發生命週期(例如DSDM,RUP)。
流行的敏捷軟件開發框架包括(以下列舉常見的方法):
自適應軟件開發(英语:Adaptive software development)(ASD)
敏捷建模(英语:Agile modeling)
敏捷統一過程(英语:Agile Unified Process)(AUP)
紀律敏捷交付(英语:Disciplined agile delivery)
動態系統開發法(英语:Dynamic systems development method)(DSDM)
極限編程(XP)
功能驅動開發(英语:Feature-driven_development)(FDD)
精益軟件開發
看板
快速應用程序開發(RAD)
Scrum
Scrumban(英语:Scrumban)
敏捷軟體開發實踐
编辑
敏捷軟體開發得到了許多具體實踐的支持,涵蓋了需求、設計、建模、編碼、測試、計劃、風險管理、流程、品質等方面。一些值得注意的敏捷軟體開發實踐包括:
驗收測試驅動開發(ATDD)
敏捷建模
敏捷測試
Backlogs(產品和衝刺)
行為驅動開發(BDD)
業務分析師設計方法(BADM)
持續整合(CI)
跨職能團隊
領域驅動設計(DDD)
訊息輻射體(Scrum板,任務板,視覺管理委員會,燃尽图)
疊代和增量式開發(IID)
低程式碼開發平台
配對編程
計劃撲克
重構
回顧
Scrum事件(衝刺計劃,每日Scrum,衝刺回顧和回顧)
故事驅動的建模
測試驅動開發(TDD)
時間盒
用戶故事
用戶故事映射
速度跟踪
敏捷聯盟提供了一個全面的線上指南來應用敏捷與相關做法。
剪裁法
编辑
在文獻中,有不同的術語指適應法的概念,包括“剪裁法”、“片段適應法”和“情景方法工程”。 方法剪裁被定義為:一個程序或能力,在這個程序或能力中,人類代理程式通過在情境、意圖和方法片段之間的響應變化和動態的相互作用來確定特定項目情境的系統開發方法。
幾乎所有的敏捷方法都適用於剪裁法。即使是DSDM方法也被用於此目的,並且已經成功地在CMM環境中進行了定制。敏捷法和傳統的軟體開發法之間的情境適應性,可以被認為是一個明顯的特徵,後者因規範而相對更加僵化。敏捷法實際的含義是可以使產品開發團隊根據個別產品的需求來調整工作實踐。實踐是作為方法框架一部分的具體活動和產品。在更為極端的層面上,可以調整由多種原則組成的方法背後的哲學(Aydin,2004)。
某些方法,如Scrum和極限編程,使得方法適應的需求是明確的。有了這些不太規範的框架,原則之一就是沒有一個程序適合每一個產品的開發,而是應該根據產品的需求量身定做。 Mehdi Mirakhorli提出了一個剪裁實踐,為適應所有實踐提供了足夠的路線圖和指導方針。RDP 的實踐是為極限編程而設計的。這種做法首先作為ICSE 2008會議APSO研討會上的一篇長篇研究論文提出,是目前唯一提出並且適用於定制極限編程的方法。雖然它是專門針對極限編程的解決方案,但是這種做法有擴展到其他方法的能力。乍看之下,這種做法似乎屬於靜態方法適應的範疇,但RDP實踐的經驗表明,它可以像動態方法適應一樣對待。靜態方法適應和動態方法適應之間的區別是微妙的。
Scrum不是為剪裁法而設計的。 Schwaber指出:“Scrum不是一種需要加強的方法,這是我們首先遇到的麻煩,認為問題沒有一個完美的方法,努力集中在企業所需的變化上。 Bas Vodde強調了這一說法,表明Scrum不像傳統的大型方法論,需要你“挑選”元素。 這是基礎知識的基礎上,您添加額外的元素來本地化和使用情況。
大規模,離岸和分佈式
编辑
敏捷軟體開發被廣泛認為非常適合於某些類型的環境,包括從事綠地項目的小型專家團隊,在擁有傳統基礎架構的大型組織中採用敏捷軟件開發方法所遇到的挑戰和局限性, 記錄和理解。
作為回應,一系列的策略和模式已經發展成為克服大規模開發工作(> 20個開發人員)或分佈式(非集中式)開發團隊等挑戰; 現在有幾個公認的框架,試圖減輕或避免這些挑戰。
規模敏捷框架(SAFe),Dean Leffingwell等等
紀律敏捷交付(DAD),Scott Ambler等等
大規模Scrum(LeSS),Craig Larman和Bas Vodde
Nexus(縮放專業Scrum),Ken Schwaber
Scale Scrum,Jeff Sutherland,Alex Brown
企業Scrum,邁克Beedle
Setchu(基於Scrum的輕量級框架),Michael Ebbage的Xscale
敏捷路徑
整體軟件開發
對於所有這些是否有效或者確實符合敏捷開發的定義,存在許多相互矛盾的觀點,而且這仍然是一個積極和正在進行的研究領域。
當敏捷軟體開發應用於分佈式環境(團隊分散在多個業務地點)時,通常稱為分佈式敏捷開發。目標是利用每種方法提供的獨特優勢。分佈式開發允許組織通過戰略性地在全球不同地區建立團隊來構建軟件,實際上是全天候建立軟件(或稱為“跟隨太陽模式”)。另一方面,敏捷開發在響應變化時提供了更高的透明度,持續的反饋和更大的靈活性。