敏捷軟件開發

敏捷開發(Agile Development)是一種面臨迅速變化的需求快速開發軟件的能力。敏捷軟件開發又稱敏捷開發,是一種從1990年代開始逐漸引發普遍關注的一些新型軟件開發方法,是一種應對快速變化的需求的一種軟件開發能力。它們的具體名稱、理念、過程、術語都不盡相同,相對於「非敏捷」,更強調程序員團隊與業務專家之間的緊密協做、面對面的溝通(認爲比書面的文檔更有效)、頻繁交付新的軟件版本、緊湊而自我組織型的團隊、可以很好地適應需求變化的代碼編寫和團隊組織方法,也更注重軟件開發中人的做用。程序員

敏捷軟件開發宣言      編程

咱們一直在實踐中探尋更好的軟件開發方法,身體力行的同時也幫助他人。由此咱們創建了以下價值觀:安全

個體和互動 高於 流程和工具架構

工做的軟件 高於 詳盡的文檔工具

客戶合做 高於 合同談判測試

響應變化 高於 遵循計劃編碼

也就是說,儘管右項有其價值,spa

咱們更重視左項的價值。設計

 

敏捷開發的12條準則版本控制

對咱們而言,最重要的是經過儘早和不斷交付有價值的軟件知足客戶須要。

咱們歡迎需求的變化,即便在開發後期。敏捷過程可以駕馭變化,保持客戶的競爭優點。

常常交付能夠工做的軟件,從幾星期到幾個月,時間尺度越短越好。

業務人員和開發者應該在整個項目過程當中始終朝夕在一塊兒工做。

圍繞鬥志高昂的人進行軟件開發,給開發者提供適宜的環境,知足他們的須要,並相信他們可以完成任務。

在開發小組中最有效率也最有效果的信息傳達方式是面對面的交談。

能夠工做的軟件是進度的主要度量標準。

敏捷過程提倡可持續開發。出資人、開發人員和用戶應該老是維持不變的節奏。

對卓越技術與良好設計的不斷追求將有助於提升敏捷性。

簡單——儘量減小工做量的藝術相當重要。

最好的架構、需求和設計都源自自我組織的團隊。

每隔必定時間,團隊都要總結如何更有效率,而後相應地調整本身的行爲

 

對比其餘的方法

敏捷方法有時候被誤認爲是無計劃性和紀律性的方法,實際上更確切的說法是敏捷方法強調適應性而非預見性。

適應性的方法集中在快速適應現實的變化。當項目的需求起了變化,團隊應該迅速適應。這個團隊可能很難確切描述將來將會如何變化.

對比迭代式開發:

相比迭代式開發二者都強調在較短的開發週期提交軟件,敏捷方法的週期可能更短,而且更增強調隊伍中的高度協做。

對比瀑布式開發:

      二者沒有不少的共同點,瀑布模型式是最典型的預見性的方法,嚴格遵循預先計劃的需求、分析、設計、編碼、測試的步驟順序進行。步驟成果做爲衡量進度的方法,例如需求規格,設計文檔,測試計劃和代碼審閱等等。

     瀑布式的主要的問題是它的嚴格分級致使的自由度下降,項目早期即做出承諾致使對後期需求的變化難以調整,代價高昂。瀑布式方法在需求不明而且在項目進行過程當中可能變化的狀況下基本是不可行的。

     相對來說,敏捷方法則在幾周或者幾個月的時間內完成相對較小的功能,強調的是能將盡早將盡可能小的可用的功能交付使用,並在整個項目週期中持續改善和加強。

有人可能在這樣小規模的範圍內的每次迭代中使用瀑布式方法,另外的人可能將選擇各類工做並行進行,例如極限編程。

敏捷方法的適用性

     在敏捷方法其獨特之處之外,他和其餘的方法也有不少共同之處,好比迭代開發,關注互動溝通,減小中介過程的無謂資源消耗。一般能夠在如下方面衡量敏捷方法的適用性:從產品角度看,敏捷方法適用於需求萌動而且快速改變的狀況,如系統有比較高的關鍵性、可靠性、安全性方面的要求,則可能不徹底適合;從組織結構的角度看,組織結構的文化、人員、溝通則決定了敏捷方法是否適用。跟這些相關聯的關鍵成功因素有:

組織文化必須支持談判

人員彼此信任

人少可是精幹

開發人員所做決定獲得承認

環境設施知足成員間快速溝通之須要

     最重要的因素恐怕是項目的規模。規模增加,面對面的溝通就越發困難,所以敏捷方法更適用於較小的隊伍,40、30、20、10人或者更少。大規模的敏捷軟件開發尚處於積極研究的領域。

     另外的問題是項目初期的大量假定或者快速收集需求可能致使項目走入誤區,特別是客戶對其自身須要毫無概念的狀況下。與之相似,人之天性很容易形成某我的成爲主導並將項目目標和設計引入錯誤方向的境況。開發者常常能把不恰當的方案授予客戶,而且直到最後發現問題前都能得到客戶認同。雖然理論上快速交互的過程能夠限制這些錯誤的發生,但前提是要有效的「負反饋」,不然錯誤會迅速膨脹,並在最終提交時形成極大返工。

用於敏捷開發的項目管理工具

     已經有一些項目管理工具用於敏捷開發,能夠用它們來幫助規劃,跟蹤,分析和整合工做。 這些工具在敏捷開發中扮演的重要的角色,也是知識管理的一種方法。

一般包括:版本控制整合,進度跟蹤,工做分配,集成發佈和迭代規劃,論壇和軟件缺陷的報告和跟蹤。

敏捷方法

目前列入敏捷方法的有:

軟件開發之韻,Software Development Rhythms

敏捷數據庫技術,AD/Agile Database Techniques

敏捷建模,AM/Agile Modeling

自適應軟件開發,ASD/Adaptive Software Development

水晶方法,Crystal

特性驅動開發,FDD/Feature Driven Development

動態系統開發方法,DSDM/Dynamic Systems Development Method

精益軟件開發,Lean Software Development

AUP(Agile Unified Process)

Scrum

XBreed

極限編程,XP Extreme Programming

探索性測試

ATDD

敏捷技術

測試驅動開發,TDD/Test-Driven Development

行爲驅動開發,BDD/Bahavior-Driven Development

Scrum

相關文章
相關標籤/搜索