敏捷開發(fā)簡史
來源:塔塔 更新時間:2015-06-16
在軟件工業(yè)界,敏捷開發(fā)已成為眾多高效開發(fā)團隊的制勝之道。它不僅被許多中小公司青睞,在全球一百強的企業(yè)中,敏捷開發(fā)也已大行其道,受到許多資深項目管理者和開發(fā)人員的推崇。到2008年,歐美軟件企業(yè)中,有近半企業(yè)已采用敏捷方法進行開發(fā)。大多數尚未應用敏捷的企業(yè),也都對其有所了解,而且很多在計劃實施。中國的外企,外包公司和許多知名企業(yè)也都開始采用了敏捷方法。例如,騰訊內部幾乎所有的開發(fā)團隊都在實施敏捷。
敏捷方法給這些企業(yè)也已帶來了巨大的收益。據業(yè)內資深人士和長期從事敏捷咨詢的服務公司透露,采用敏捷開發(fā)的團隊一般會提高3-10倍的效率,軟件的質量也有了更加可靠的保證。同時,敏捷開發(fā)的應用也給團隊內的每個成員提供了良好的發(fā)展機會。他們的技術和合作水平都能得到響應的提高。敏捷的成功來源于其方法本身的適用性和團隊對它的深入理解和合理運用。下面我們就對敏捷開發(fā)做一個簡單的介紹和討論。
敏捷不是指某一種具體的方法論、過程或框架,而是一組價值觀和原則。符合敏捷價值觀和原則的開發(fā)方法包括:極限編程(XP),Scrum,精益軟件開發(fā)(Lean Software Development),動態(tài)系統開發(fā)方法(DSDM),特征驅動開發(fā)(Feature Driver Development),水晶開發(fā)(Crystal Clear)等等。所有這些方法都具有以下共同特征:
1. 迭代式開發(fā)。即整個開發(fā)過程被分為幾個迭代周期,每個迭代周期是一個定長或不定長的時間塊每個迭代周期持續(xù)的時間一般較短,通常為一到六周。
2. 增量交付。產品是在每個迭代周期結束時被逐步交付使用,而不是在整個開發(fā)過程結束的時候一次性交付使用。每次交付的都是可以被部署到用戶應用環(huán)境中被用戶使用的、能給用戶帶來即時效益和價值的產品。
3. 開發(fā)團隊和用戶反饋推動產品開發(fā)。敏捷開發(fā)方法主張用戶能夠全程參與到整個開發(fā)過程中。這使需求變化和用戶反饋能被動態(tài)管理并及時集成到產品中。同時,團隊對于用戶的需求也能及時提供反饋意見。
4. 持續(xù)集成。新的功能或需求變化總是盡可能頻繁地被整合到產品中。一些項目是在每個迭代周期結束的時候集成, 有些項目則每天都在這么做。
5. 開發(fā)團隊自我管理。擁有一個積極的、自我管理的、具備自由交流風格的開發(fā)團隊,是每個敏捷項目必不可少的條件。人是敏捷開發(fā)的核心。敏捷開發(fā)總是以人為中心建立開發(fā)的過程和機制,而非把過程和機制強加給人。
許多人認為,相比于“傳統”的瀑布開發(fā)模式,敏捷開發(fā)是一種“現代”的開發(fā)模式。但是,實際上敏捷方法,特別是迭代和增量開發(fā)方法(IID)起源于20世紀30年代的一些非軟件項目。而最早引入一些敏捷方法的項目之一就是20世紀60年代初的美國航天局水星計劃。在這個項目中,一些極限編程方法如測試先行等也被使用。此后,迭代和增量開發(fā)被IBM聯邦系統部(FSD)和沃森研究中心(Watson Research Center)采納。有趣的是一些研究人員甚至在關于瀑布開發(fā)模式的最早的論文中發(fā)現了敏捷開發(fā)的線索。在這篇論文中,溫斯頓.羅伊斯(Winston Royce)建議在一個項目中使用兩次瀑布模式,也就是使用兩次迭代。
20世紀70年代,最早的有記載的使用迭代和增量開發(fā)的主要項目之一,是為第一艘美國三叉戟潛艇開發(fā)的第一指揮和控制系統。該項目有大約一百萬行代碼,進行得非常成功。迭代和增量開發(fā)從此開始穩(wěn)步發(fā)展,越來越多的項目開始使用這種開發(fā)模式。在1976年,Tom Gilb在他的著作《軟件度量》(“Software Metrics”)一書中闡述了他的迭代和增量開發(fā)實踐,這可能就是第一部闡述這種方法的書籍。迭代和增量開發(fā)的另一次出色發(fā)揮,是在一個美國宇航局航天飛機軟件的開發(fā)項目。這個項目負責開發(fā)其航空電子設備的軟件系統。該項目由IBM聯邦系統部(IBM FSD)在1977至1980年完成。一些典型的敏捷做法,如使用8個周迭代以及用反饋推動開發(fā)循序漸進等方法都在該項目中得以應用。
20世紀80年代,更多的出版物和更多的項目應用進一步推進了迭代開發(fā)的發(fā)展。在1895年,巴里貝母(Barry Boehm)正式定義了使用迭代開發(fā)的螺旋模型(Spiral model)。80年代初,在美國國防部發(fā)生了一件有趣的事情。美國國防部一直以來都要求其軟件開發(fā)商在開發(fā)過程中使用嚴格的瀑布開發(fā)模型。但是到了1987年末,國防部開始“建議”使用迭代和增量開發(fā)作為軟件開發(fā)模式。后來美國國防部的項目審查顯示,早期使用瀑布模式開發(fā)的軟件項目,有75%以失敗告終,有些開發(fā)出來的產品根本沒有被使用過,只有2%的軟件產品無需大量修改就能被正常使用。
20世紀90年代,推薦使用迭代和增量開發(fā)的出版物和文獻顯著增加。在經歷了多次有“瀑布心態(tài)”(‘waterfall mentality’)項目的失敗之后,美國國防部開始“要求”而不是像80年代那樣僅僅是“建議”他們的軟件開發(fā)商使用IID開發(fā)模式。Rational統一開發(fā)過程(Rational Unified Process)也是在這一時期產生并發(fā)展起來的,它具有更規(guī)范的迭代漸進過程。到2000年底,更多的敏捷開發(fā)方法被廣泛推廣并被使用于各種不同的項目中。2001年二月,一組由17位在DSDM,XP,Scrum,FSD等領域的專家組成的代表團齊聚美國猶他州,尋找這些方法的共同點。最終,這些專家制定并宣布了敏捷開發(fā)宣言。由此形成了現在我們所認識的敏捷開發(fā)和后來的敏捷聯盟。