敏捷開發有什麼好處

軟體開發方法一直處在不斷發展過程中。在諸多方法中,敏捷開發以其能持續滿足不斷變化的使用者需求正在受到越來越多人的重視,從中小專案開始進入大型開發專案,近幾年來上升勢頭明顯。那麼,敏捷開發有什麼好處呢?

敏捷式開發(Agile Development)是近來時常耳聞的一個名詞,我們或多或少對於這個名詞有些微的概念,但是卻又很難具體的描述出一個全面性的觀點來。原則上敏捷式開發主要的精神在於較短的開發循環(建立在反覆式開發方式上)以及漸進式開發與交付。換句話來說,專案的成果,包含計畫、各類的需求細節、設計等都會隨著專案的進行而漸漸完整,而非在一開始將所有的計畫與需求擬定完成。

在敏捷式開發中有個很重要的觀點是筆者很感興趣的,它認為塑模(Modeling)的目的在於增加開發者了解軟體的程度,進而使得軟體更接近於使用者的需求,而非使用塑模之後產生的文件。

The purpose of modeling (Sketching UML,…) is primarily to understand,not to document.[Apply UML and Patterns,3/e]

換句話說,它希望開發者使用塑模的時機,是當使用這個技術有助於開發者更了解被開發的軟體時才使用,例如某些具關鍵性的議題或者高風險性的項目,而非不管三七二十一的將軟體所有範圍的設計都加以塑模留下文件。

 

在軟體工業界,敏捷開發已成為眾多高效開發團隊的制勝之道。在歐美軟體企業中,有近半數企業已採用敏捷方法進行開發,而近幾年受軟體外包和外企的帶動,敏捷開發在中國也出現了日漸普及的態勢,如騰訊內部幾乎所有的開發團隊都在實施敏捷方法。敏捷開發的流行絕非偶然,其最大的推動力是採用這種方法所能帶來的受益。相關統計表明,敏捷開發可以將效率提高3~10倍,軟體的質量也有更加可靠的保證; 同時,還給團隊內的每個成員提供了良好的發展機會,技術和合作水平都能得到相應提高。當然,敏捷的成功前提是其方法本身的適用性和團隊對它的深入理解和合理運用。
 
敏捷開發由幾種輕量級的軟體開發方法組成,包括極限程式設計、Scrum、精益開發(Lean Development)、動態系統開發方法、特徵驅動開發(Feature Driver Development)、水晶開發(Cristal Clear)等等。所有這些方法都具有以下共同特徵,它們也是敏捷開發的原則:

agile umbrella visual paradigm的圖片搜尋結果

  1. 迭代式開發。即整個開發過程被分為幾個迭代週期,每個迭代週期持續的時間一般較短,通常為1到6周
  2. 增量交付。產品是在每個迭代週期結束時被逐步交付使用,每次交付的都是可以被部署、能給使用者帶來即時效益和價值的產品。
  3. 開發團隊和使用者反饋推動產品開發。敏捷開發方法主張使用者能夠全程參與到整個開發過程中。這使需求變化和使用者反饋能被動態管理並及時整合到產品中。
  4. 持續整合。新的功能或需求變化總是儘可能頻繁地被整合到產品中。有些是在每個迭代週期結束的時候整合, 有些則每天都在這麼做。
  5. 開發團隊自我管理。人是敏捷開發的核心。敏捷開發總是以人為中心建立開發的過程和機制,而非把過程和機制強加給人。

敏捷開發的優勢:
滿足使用者不斷變化的需求是軟體開發的長期無法解決的難題之一,經典的瀑布模式在一個迭代週期內表現優異,但一旦需求變化,瀑布模式卻顯得無能為力。敏捷方法滿足需求的辦法主要通過迭代。在每一次迭代週期結束時,都能交付使用者一個可用的、可部署的系統,使用者使用並體驗該系統並反饋意見,在隨後的迭代週期這些意見和需求的其他變化一起在產品中實現和整合。每次迭代週期應儘可能短,以便能及時地處理需求變化和使用者反饋。
 
敏捷開發方式能給企業和使用者帶來以下好處:

  1. 精確。瀑布模式通常會在產品起點與最終結果之間規劃出一條直線,然後沿著直線不斷往前走。然而當專案到達終點時,使用者通常會發現那已經不是他們想去的地方。而敏捷方法則採用小步快跑,每走完一步再調整併為下一步確定方向,直到真正的終點。
  2. 質量。敏捷方法對每一次迭代週期的質量都有嚴格要求。一些敏捷方法如極限程式設計等,甚至使用測試驅動開發(test-driven development),即在正式開發功能程式碼之前先開發該功能的測試程式碼。這些都為敏捷專案的整個開發週期提供了可靠的質量保證。
  3. 速度。敏捷團隊只專注於開發專案中當前最需要的、最具價值的部分。這樣能很快地投入開發。另外,較短的迭代週期使團隊成員能迅速進入開發狀態。
  4. 豐厚的投資回報率。在敏捷開發過程中,最具價值的功能總是被優先開發,這樣能給客戶帶來最大的投資回報率。
  5. 高效的自我管理團隊。敏捷開發要求團隊成員必須積極主動,自我管理。在這樣的團隊中工作,每個團隊成員的技術能力、交流、社交、表達和領導能力也都能得以提高。

主要的敏捷方法:

敏捷開發方法是一組開發方法的統稱,主要包括以下幾種:
極限程式 (XP) 設計其主要目的是降低需求變化的成本。它引入一系列優秀的軟體開發方法,並將它們發揮到極致,結對程式設計(pair-programming)就是其中比較知名的方法之一。除此之外, 其核心做法還有小規模、頻繁的版本釋出、短迭代週期、測試驅動開發、持續整合、每日站立會議、共同擁有程式碼、系統隱喻等。

extreme programming的圖片搜尋結果

Scrum是一個敏捷開發框架,它由一個開發過程、幾種角色以及一套規範的實施方法組成。在Scrum中,產品需求被定義為產品需求積壓(product backlogs)。所有的產品需求積壓都是從一個簡單的想法開始,並逐步被細化,直到可以被開發的程度。Scrum將開發過程分為多個Sprint週期,每個Sprint代表一個2~4周的開發週期,有固定的時間長度。

scrum visual paradigm的圖片搜尋結果

精益開發 (Lean) 精益開發的核心思想是查明和消除浪費。在軟體開發過程中bug、沒用的功能、等待以及其他任何對實現結果沒有益處的東西都是浪費。浪費及其源頭必須被分析查明,然後設法消除。精益開發的其他原則包括強調學習、在最後時刻做決定、用最快的速度交付使用者等。

lean software development的圖片搜尋結果

其他敏捷方法還包括動態系統開發方法 DevOps、(DSDM)、特徵驅動開發(FDD)、Crystal Clear等,各種敏捷方法的區別在於它們對敏捷的不同闡釋和不同側重。理解這些方法可以幫助我們從多個角度理解敏捷開發,並且瞭解更多的最佳應用。


 
如何選擇一種敏捷方法:

 選擇一種合適的軟體開發方法取決於多種因素。在做出決定之前,我們需要充分考慮以下這些方面:

  1. 方法的複雜度。確保你的團隊或組織能夠應付這種複雜度。
  2. 社群和業界支援。有較多的社群及行業支援可以使你受益匪淺。
  3. 實用工具。一個良好的軟體工具可以幫助團隊有效地處理日常工作,促進團隊協作,並減少管理成本。
  4. 對敏捷方法的認識程度。選擇一些與你當前開發方式比較接近的敏捷方法將有助於推動該方法的實施。
  5. 你的團隊規模。較小規模的團隊最好從簡單的方式入手。
  6. 你不需要只遵從一種方法。你可以為團隊選擇一個主要的方法(如Scrum),然後借鑑其他方法。

 

Agile & Scrum Resources

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章