1. 程式人生 > >對敏捷開發的理解及其可行性分析

對敏捷開發的理解及其可行性分析

作者:朱金燦

       首先談談我對敏捷開發的理解。如果我的理解有不到位之處,請各位看官諒解並拍磚。應該說任何一種新的開發方式都是在如何解決舊的開發方式的弊端上產生的,敏捷開發也不例外。傳統的瀑布式開發將開發分為需求分析、系統設計、系統開發、系統部署和系統維護等多個階段,看上去很美好,卻忽略一個簡單的事實:冗長的開發週期敵不過使用者的需求變化。首先需求分析就是一件很模糊的事,你問使用者需要什麼,大多數的使用者估計會這樣回答你:我需要一個功能強大、執行快速的系統,就算退一萬步講,就算使用者把需求講清楚了,難道使用者的需求不會變化嗎?比如使用者看到網際網路正成為潮流,估計那天他就要求系統要能聯網,比如那天使用者看到硬體已經是多核了,就要求系統支援多核平行計算。你能指責使用者的反覆無常嗎?你不能。如果你不能適應使用者的變化,就只能被無情的市場淘汰掉。這時你就明白了世界上一個樸素的真理:世界上不變的只有變化。

        敏捷開發就應適應使用者需求變化而生的。敏捷開發是怎樣做到迅速響應使用者變化的呢?敏捷開發提出一個最高原則:可以交付使用者使用的軟體勝過一切。下面以一個具體例子說明傳統的瀑布式開發和敏捷開發的區別。比如A軟體公司要為B工廠開發一個管理系統,這個管理系統包括錄入職工資訊、查詢職工資訊、錄入生產資料資訊、查詢生產資料資訊、生成財務報表、列印財務報表等6個功能,採用傳統的瀑布式開發是這樣乾的:

           後來A公司發現這套開發流程不能迅速響應使用者的需求變化,採用了下面一種敏捷開發流程:

       從上圖可以看出,敏捷開發實際上是將瀑布式開發中設計、開發和測試等階段都分割到一個個敏捷開發週期中,強調通過不斷通過交付可用版本給使用者獲取使用者的反饋來積極響應變化。敏捷開發放棄開發前冗長的需求分析和系統設計,強調快速的迭代修改更能響應使用者的需求變化。因此與敏捷開發需要和敏捷測試和敏捷設計配套。

     敏捷開發看上去很美好,是不是放之四海而皆準呢?在我看來,敏捷開發需要在一定的條件才能實施:

1.      開發團隊需要比較高度的自主權,並單獨負責一個專案或產品的開發。國內的現狀是多數老闆有專案就接,一個骨幹往往承擔多個專案的開發,一個專案定好的敏捷開發週期也會被其它專案的活動所打斷,能搞敏捷開發嗎?

2.      從上圖可以看出,使用者參與使用軟體並積極反饋是敏捷開發的重要一環。如果你做的是國家單位的專案,就算你能交付可用的版本,但單位的大爺就是不用不反饋,這又怎稱得上敏捷開發?

3.  實行敏捷開發需要一個高素質的開發團隊。首先開發團隊必須明白敏捷開發的意義所在,其次他們需要有比較強的溝通能力,因為敏捷開發需要團隊之間以及開發人員和使用者之間的充分溝通,而現實中開發人員悶頭拉車的居多。最後開發人員的開發水平要適應敏捷開發的節奏,如果一個小功能的實現都超出一個敏捷開發週期,談何敏捷?

        當然敏捷開發中強調團隊之間的充分溝通,以及通過迅速交付可用版本來提高測試的頻率等優點在軟體研發實踐還是應該予以吸收的。