摘要
軟件開發人員和項目經理努力地評估敏捷過程對他們的開發環境的適應性。本文指出許多已公布的敏捷過程對不同的項目類型來說存在的局限性,敏捷過程應用在這些項目中可能會存在問題。
緒論
當越來越多的組織要求通過及時部署基于Inte.net的服務來尋求獲得競爭優勢時,開發人員就承受不斷增長的壓力以盡快實現新的、增強的服務。敏捷軟件開發過程主要針對這個問題發展起來的,即在“網絡時代”開發軟件的問題。敏捷方法采用技術上和管理上的過程,這些過程能持續地適應
(1)源自開發過程中獲取的經驗而進行的變更
(2)軟件需求的變更
(3)開發環境的變更。
敏捷過程特別支持盡早盡快地交付可工作代碼的產品,這通過迭代的開發過程完成的,其中每次迭代都注重提交可工作的代碼以及其他制品(artifacts)以供客戶評估,同時也供項目評估。敏捷過程的支持者和批評者都強調在這些過程中注重代碼。支持者經常爭論說代碼是唯一重要的可交付的產品,可以忽視分析和設計模型、文檔在軟件開發、演化過程中的角色。敏捷過程批評者指出,強調代碼能
帶來全體記憶丟失(corporate memory loss),因為沒有重視編寫良好的文檔和模型來支持龐大、復雜軟件系統的創造和演化。 敏捷支持者和批評者提出的聲明引出這樣的問題:在當今快速變化的開發環境中,什么樣的實踐、技術和基礎結構適合軟件開發過程?特別是,對有關特定應用程序領域和開發環境的敏捷過程適應性的問題的回答通常是根據軼聞報導。
本文,我們基于對已發表有關敏捷過程的作品的分析介紹了我們所認識到的敏捷過程的局限性。許多自稱為“敏捷”的過程在價值上、實踐上和應用領域有很大的差別。因此評估所有敏捷過程和識別適應于所有敏捷過程的局限性不是一件容易的事情。我們的分析是根據對假設采用極限編程(XP), Scrum , 敏捷統一過程,敏捷建模以及敏捷聯盟提出的宣言的研究。這主要是一個分析性研究,由作
者指導的幾個XP項目經驗作支持。
敏捷聯盟
最近幾年的文獻中,提出許多種稱為“敏捷”的過程。為了避免在什么樣的過程是“敏捷”的這個問題上引起混淆,17位業界專家在2001年召開的研討軟件過程未來發展趨勢的一次會議上,就什么是“敏捷”達成一致意見。這次會議的一個成果是成立了“敏捷聯盟”并發布了聯盟敏捷宣言(參考http://www.agilealliance.org/principles.html)。這份聯盟敏捷宣言是“敏捷軟件開發”價值和
目標的濃縮定義,并通過許多共同的原則進行了細化。這些原則如下所示。
1. 我們最優先要做的是通過盡早、持續地交付有價值的軟件來使客戶滿意。
2. 在項目的整個開發期間,業務人員和開發人員必須天天在一起工作。
3. 即使到了開發后期,也歡迎需求變化。
4. 經常性地交付可以工作的軟件。
5. 可以工作的軟件是主要的進度度量標準。
6. 圍繞被激勵起的個體來構建項目。為他們提供所需的環境和支持,并信任他們能勝任工作。
7. 最好的架構、需求和設計來自于自組織的團隊。
8. 在團隊內部,最有效果和最有效率的傳遞信息的方法是面對面地交流。
9. 敏捷過程提倡可持續的開發速度。
10. 不斷地關注最優秀的技術和良好的設計能增強敏捷能力。
11. 簡單是根本的。
12. 開發團隊每隔一定時間,都會對如何能有效地工作進行反省,然后相應地對自己的行為進行調整。
敏捷過程分析
這一節我們在分析敏捷聯盟原則和敏捷過程潛在的假定的基礎上,討論了敏捷過程的局限性。下一小節列出了在我們研究中識別出的管理上和技術上的假定,隨后的一小節討論了由這些假定推導出的局限性。 潛在的假定 敏捷過程聲明的比傳統說明性過程的優點是建立在這些假定正確有效的基礎上。
這些假定在另外一篇論文中進行了更詳細地討論。
假定1:客戶要和開發團隊協同工作,隨時作好和開發人員交流的準備。而且,面對面的交流需要開發人員彼此位于很近的位置。
假定2:文檔和軟件模型在軟件開發中不充當重要的角色。
假定3:軟件需求和軟件開發環境隨著軟件開發的發展而發展。
假定4:動態適應不斷變化的項目和產品特征的開發過程,更有可能開發出高質量的產品。
假定5:開發人員具有正確地定義和適應過程的經驗。換句話說,一個組織能建立由有豐富經驗的問題
解決者組成的團隊,他們在執行過程期間,能有效地改進過程。
假定6:項目的可見性能主要通過增量和一些度量的傳遞來獲取。
假定7:軟件制品(產品和過程)嚴格的評估僅限于經常非正式的審查和代碼測試。
假定8:重用性和通用性不應該是面向應用程序軟件開發過程的目標。
假定9:變更的成本不隨著時間的變化而顯著增加。
假定10:軟件可以被增量開發。
假定11:無需為變更作設計,因為任何變更能通過重構代碼有效地處理
敏捷過程的局限性
上述的假定通常不是所有的軟件開發環境都支持,尤其是也不是被所有的“敏捷”過程支持。這無需驚訝,任何一個敏捷過程都不是銀彈(盡管有支持者熱情地聲明)。在這部分我們將描述敏捷過程通常不適應的情況?赡芤恍┟艚葸^程能更好地符合這些假定,而其他的敏捷過程能通過擴展解決這兒討論的局限性。類似的擴展能合并通常與更多預言性開發實踐有關的原則和實踐到敏捷過程中。
1.缺乏對分布式開發環境的支持:
敏捷過程提倡的強調在實踐中協作,不能很好地適應推動一些行業實現全球化分布式軟件開發環境。團隊成員和客戶在地理上分布的開發環境可能無法支持敏捷過程提倡的面對面的交流。在這種情況下,人們至少可能通過諸如視頻會議的技術手段進行面對面地交流,不過這些技術太昂貴,而且不一定達到預期效果。
文章來源于領測軟件測試網 http://www.kjueaiud.com/