1. 程式人生 > >什麼才是真正意義上的敏捷開發?

什麼才是真正意義上的敏捷開發?

聽到的最多的對敏捷開發的描述是迭代的開發,邊做需求邊做開發等等。有人還認為敏捷開發是一種模式,只要像其他方法論那樣遵守哪些時間該做哪些事情就可以敏捷了。感覺這些說法都不能準確的描述敏捷開發,有些甚至是錯誤的。

經過這兩年敏捷開發的實踐,我感覺敏捷開發的本質就是一個合作和改進的過程。只有不斷的改進,才能避免模式的照搬照抄,做出符合需求的,健壯的系統。

敏捷開發團隊中那個角色是最重要的呢? 我認為客戶是最重要的,這裡的客戶不一定是真正意義的客戶,而是指系統的最終使用者。因為客戶才是需求的真正來源。一個專案的開發可能經歷幾個月甚至幾年的經驗,就算你前期需求調研做的再細緻,在資訊科技和電子商務發展如此迅速的今天,系統在你交付的時候,很可能已經不再符合客戶的需求了。所以如果沒有客戶的全程參與,開發團隊很可能就走錯了方向,頂多開發出一個精緻的又不能用的機器。 怎麼樣的開發才能稱為真正的敏捷開發呢? 我認為可以從以下幾個方面來考慮

1. 你的專案有沒有客戶的全程參與? 儘管你有自己的需求團隊(PD, BA)等等,但他們不是真正意義上的使用者,不能保證真實的反應客戶的需求。

2. 你的專案有沒有進行真正的迭代和增量開發? 這裡的迭代不僅僅是時間上的分段,而是要在每個迭代中都能產出可交付的,可測試的功能點,有人可能說他們的專案可能前幾個迭代都在做基礎架構的實現,不可能做出真實的可交付的功能。我覺得這是不符合敏捷開發的,敏捷開發要求我們在最短的時間作出客戶最需要的功能,最大限度的降低專案的風險,如果花幾個月的時間做基礎架構,而後面做出的功能又不符合客戶的要求或者客戶要求變更需求,那麼就有可能進行架構變更,代價就很大了。所以,敏捷開發也要求有可塑性強的,靈活的系統架構。

3. 你的專案有沒有做出合理的任務分解,只有把大的任務(task)分解成小的增量,每個增量都只需要最少的計劃和最短的完成時間,才能使整個開發過程變成可迭代的增量開發工程。

4. 你的專案有沒有demo和feedback? 在每個迭代都給客戶進行演示和要求客戶進行反饋是敏捷開發與客戶交流的最佳實踐。

5. 你的專案是如何看待需求變更的,在敏捷開發中,需求變更在專案的任何一個階段都是可接受的或者說受歡迎的。因為客戶不可能完全正確的對他們的需求就行描述,他們的描述也不可能完全正確的體現在系統的實現中,只有在不斷完善不斷改進的過程中才能做出符合客戶要求的與時俱進的系統來。

6. 你的專案是如何進行測試的,在敏捷開發過程中,測試時全程介入開發的全過程的,通過測試能儘可能早的發現問題,解決問題,這就要求敏捷開發團隊提交的每段程式碼都是testable的,每個完成的task都是可交付的、可測試的。 以上是我對敏捷開發的一些認識,希望大家多多交流,共同提高。