價值觀
雪鳥會議共同起草了敏捷軟體開發宣言。其中最重要的部分就是對一些與會者一致同意的軟體開發價值觀的表述:
藉著親自並協助他人進行軟體開發,我們正致力於發掘更優良的軟體開發方法。透過這樣的努力,我們已建立以下價值觀:
- 個人與互動 重於 流程與工具
- 可用的軟體 重於 詳盡的文件
- 與客戶合作 重於 合約協商
- 回應變化 重於 遵循計劃
也就是說,雖然右側項目有其價值, 但我們更重視左側項目。
原則 [編輯]
- 我們最優先的任務,是透過及早並持續地交付有價值的軟體來滿足客戶需求。
- 竭誠歡迎改變需求,甚至已處開發後期亦然。敏捷流程掌控變更,以維護客戶的競爭優勢。
- 經常交付可用的軟體,頻率可以從數週到數個月,以較短時間間隔為佳。
- 業務人員與開發者必須在專案全程中天天一起工作。
- 以積極的個人來建構專案,給予他們所需的環境與支援,並信任他們可以完成工作。
- 面對面的溝通是傳遞資訊給開發團隊及團隊成員之間效率最高且效果最佳的方法。
- 可用的軟體是最主要的進度量測方法。
- 敏捷程序提倡可持續的開發。贊助者、開發者及使用者應當能不斷地維持穩定的步調。
- 持續追求優越的技術與優良的設計,以強化敏捷性。
- 精簡──或最大化未完成工作量之技藝──是不可或缺的。
- 最佳的架構、需求與設計皆來自於能自我組織的團隊。
- 團隊定期自省如何更有效率,並據之適當地調整與修正自己的行為。
對比其他的方法 [編輯]
敏捷方法有時候被誤認為是無計劃性和紀律性的方法,實際上更確切的說法是敏捷方法強調適應性而非預見性。
適應性的方法集中在快速適應現實的變化。當項目的需求起了變化,團隊應該迅速適應。這個團隊可能很難確切描述未來將會如何變化.
對比迭代方法 [編輯]
相比迭代式開發兩者都強調在較短的開發周期提交軟體,敏捷方法的周期可能更短,並且更加強調隊伍中的高度協作。
對比瀑布式開發 [編輯]
兩者沒有很多的共同點,瀑布模型式是最典型的預見性的方法,嚴格遵循預先計劃的需求、分析、設計、編碼、測試的步驟順序進行。步驟成果作為衡量進度的方法,例如需求規格,設計文檔,測試計劃和代碼審閱等等。
瀑布式的主要的問題是它的嚴格分級導致的自由度降低,項目早期即作出承諾導致對後期需求的變化難以調整,代價高昂。瀑布式方法在需求不明並且在項目進行過程中可能變化的情況下基本是不可行的。
相對來講,敏捷方法則在幾周或者幾個月的時間內完成相對較小的功能,強調的是能將儘早將盡量小的可用的功能交付使用,並在整個項目周期中持續改善和增強。
有人可能在這樣小規模的範圍內的每次迭代中使用瀑布式方法,另外的人可能將選擇各種工作並行進行,例如極限編程。
敏捷方法的適用性 [編輯]
在敏捷方法其獨特之處以外,他和其他的方法也有很多共同之處,比如迭代開發,關注互動溝通,減少中介過程的無謂資源消耗。通常可以在以下方面衡量敏捷方法的適用性:從產品角度看,敏捷方法適用於需求萌動並且快速改變的情況,如系統有比較高的關鍵性、可靠性、安全性方面的要求,則可能不完全適合;從組織結構的角度看,組織結構的文化、人員、溝通則決定了敏捷方法是否適用。跟這些相關聯的關鍵成功因素有:
- 組織文化必須支持談判
- 人員彼此信任
- 人少但是精幹
- 開發人員所作決定得到認可
- 環境設施滿足成員間快速溝通之需要
最重要的因素恐怕是項目的規模。規模增長,面對面的溝通就愈加困難,因此敏捷方法更適用於較小的隊伍,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
- 探索性測試
沒有留言:
張貼留言