敏捷宣言
-
個體和互動高於流程和工具
-
工作的軟件高於詳盡的文檔
-
客戶合作高於合同談判
( 注:敏捷開發的第一條價值觀就是“ 以人為本”,強調“ 個體(人)” 及“ 個體” 間的溝通與協作在軟件開發過程中的重要性。這個順序不是偶然而為之的,敏捷開發將重視個體潛能的激發和團隊的高效協作作為其所推崇的第一價值觀。
敏捷開發的第二條價值觀就是“ 目標導向”。同其他眾多管理理論和模型一樣,敏捷開發認同目標導向是成功的關鍵,因為沒有目標也就無所謂成功。敏捷開發的價值觀中清楚地闡明,軟件開發的目標是“ 可工作的軟件”,而不是面面俱到的文檔。而遺憾的是,很多軟件項目已經在紛繁的文檔之中迷失了自己的目標。
敏捷開發的第三條價值觀就是“ 客戶為先”。雖然敏捷開發強調的第一價值觀是“ 以人為本”,但敏捷宣言的締造者們並沒有忘記客戶,相反他們真正的理解客戶的需求、懂得如何與客戶合作。敏捷價值觀里強調的“ 客戶為先”即不是簡單地把客戶當作“ 上帝”、刻板的推崇“ 客戶至上”,客戶要求什么、我們就做什么;也不是把客戶當作“ 談判桌上的對手” 甚至“ 敵人”,去斗智斗勇。敏捷價值觀把客戶當成了合作者和伙伴,把自己的使命定位為“ “ 幫助客戶取得競爭優勢”。
敏捷開發的第四條價值觀就是“ 擁抱變化”。人們常說“ 世界上唯一不變的就是變化”,大多數人也相信事實確實如此。而以往很多的軟件項目卻忽視了這一點,或者更准確地說是他們不願意“ 正視”。他們總是試圖用詳盡的計划去預先窮舉這些變化,然后又試圖通過嚴格遵循計划來控制變化的發生,而結果往往是被不斷涌現的變化擊垮。敏捷開發價值觀中承認變化是軟件開發的一部分、並相信正是客戶在不斷變化其需求的過程中明晰了其真正的需要。因而敏捷開發歡迎變化、擁抱變化,並可坦然應對變化,正是這些變化為客戶和項目帶來了價值。
最后,還應記住敏捷宣言中的最后一句話:“ 盡管右項有其價值,我們更重視左項的價值”—敏捷宣言並未否定或貶損“ 右項” 的價值,在敏捷開發的價值觀中承認“ 流程和工具”、“ 詳盡的文檔”、“ 合同談判” 以及“ 遵循計划” 的重要性,只是兩相比較,“ 更重視左項的價值”。)
敏捷開發的主要特點
與傳統開發方法相比,在敏捷開發的整個過程中,有以下幾個主要的特點:
(1)敏捷開發的過程有着更強的適應性而不是預設性,從敏捷宣言的第四條響應變化高於預設計划便可以看出來。因為軟件開發過程的本身的不可預見性,很多用戶在項目開始時不可能對於這個項目有着一個完整而明確的預期。很多對軟件的預期都在后期的修改和完善過程中產生。因此高適應性顯然更加符合軟件工程開發的實際。而敏捷開發實現其適應性的方式主要在於,第一,縮短把項目提交給用戶的周期;第二,增加用戶,業務人員,開發人員這三者之間的交流;第三,通過減少重構的成本以增加軟件的適應性。
(2)敏捷開發的過程中,更加的注重人的因素。在傳統軟件工程中,個人的因素很少的被考慮到分工中,每個個體都是只是整個代碼開發機器的一個小小的螺絲釘,個人的意志和創造力很大程度上的被抹去為了更好的為集體服務。而在敏捷開發過程中,每個個人的潛力被充分的考慮,應用什么技術很大程度上直接由在第一線開發的技術人員決定;每個人的特點和創造力都可以充分地發揮,這樣開發出來的軟件更加的具有生命力,因為他融入了開發者的心血和創意,開發者不再是進行機械的乏味的堆砌,而是創造屬於自己的藝術品,這樣的條件下產生的代碼必然在質量上更占優勢。
(3)在敏捷開發的過程中,整個項目是測試驅動的而不是文檔驅動的。不僅每個模塊有着自己的相應的測試單元,開發人員在開發自己的模塊的過程中必須保證自己所開發的模塊可以通過這一單元的測試,並且集成測試貫穿了整個開發過程的始終。集成測試每天會進行十幾次甚至幾十次,而不是像傳統方法一樣只有當各個模塊的編碼都結束了之后再進行聯合調試。這樣,在軟件開發的進程中每一點改動所引起的問題都容嘉容易暴露出來,使得更加容易在錯誤剛剛產生的時候發現問題從而解決問題。這樣就避免了在最后整個系統完成時錯誤隱藏的太深給調試造成極大的困難。
敏捷開發與傳統開發方法的比較
優勢
敏捷開發的高適應性,以人為本的特性,和輕量型的開發方法即以測試為驅動取代了以文檔為驅動,這三個主要的特點,也就是敏捷開發相對與傳統開發方式的主要有點。因為它更加的靈活並且更加充分的利用了每個開發者的優勢,調動了每個人的工作熱情。
敏捷確實是項目進入實質開發迭代階段,用戶很快可以看到一個基線架構版的產品。敏捷注重市場快速反應能力,也即具體應對能力,客戶前期滿意度高。
劣勢
與傳統開發方式相比,敏捷開發的最主要的劣勢在於敏捷開發歡迎新的需求,而在每次新的需求產生時都可能引起整個系統的大幅度的修改。因為開發者在開發上一個版本的時候,完全沒有考慮以后的優化將要如何進行。這樣的開發方式實際的軟件開發過程中,並不一定總是有效的。
而另一個方面,敏捷開發因為缺乏很多在敏捷開發中被認為“不重要”的文檔,這樣在一個大型項目比如一個操作系統開發的時候,由於其項目周期很長,所以很難保證開發的人員不更換,而沒有文檔就會造成在交接的過程中出現很大的困難。
敏捷注重人員的溝通,忽略文檔的重要性,若項目人員流動大太,又給維護帶來不少難度,特別項目存在新手比較多時,老員工比較累。
需要項目中存在經驗較強的人,要不大項目中容易遇到瓶頸問題。