用敏捷方法應對需求變化 敏捷開發
一、問題的提出
筆者近幾年一直從事信息系統的開發,特別是有關國家機關和企業信息系統的開發工作,取得了許多的經驗和教訓。其中一個深切的體會是,需求的不斷變化,如果不能很好的應對,會導致整個項目的進度和質量都難以控制,最終使整個系統失敗。特別是在我國,用戶對于如何應用計算機軟件并沒有一個成熟的經驗,在項目進行中用戶會頻繁的改變和增加各種要求。當最終完成系統的建設時,卻發現企業的業務需求已經發生了很大的改變,一方面是系統的設計已經無法很好地滿足新的需求,另一方面是項目周期大大超過預期,項目發生虧損。
據美國軟件工程實施現狀的調查,軟件研發的情況也是很難預測,大約只有10%的項目能夠在預定的費用和進度下交付。在商用軟件產業中,這一現象尤為嚴重。
因此如何從軟件工程的角度,通過采用適當系統設計方法和加強項目管理來解決需求不斷變化的問題,是各個軟件開發商的一個重要課題。通過實踐,感到采用敏捷方法的基本思想和原則來設計系統和處理需求變化問題,能夠產生較好的效果。
下面就從系統設計和項目管理等方面談一下這方面的體會。
二、需求變化帶來的問題
作為軟件開發商,當接到一個項目后,一般的做法是首先由用戶提出需求,然后開發商根據用戶的需求作出一個系統實現方案,而用戶通常并沒有實質地理解方案,隨即通過了方案,開始了軟件的開發工作。根據筆者所開發過的多個系統,開發前期,大多數單位并沒有明確的想法,也提不出確切的需求,因為業務人員不了解計算機技術是怎樣實現業務流程的。用戶總是希望開發單位根據當前的業務流程先做出一個樣板來,然后再進行改造,而多數用戶認為軟件修改很容易。
盡管已經做好了系統規劃,簽訂了功能較明確的合同,然而隨著系統分析、系統設計和系統實施的進展,當客戶在項目部署后看到真正的軟件系統的界面及操作方式,客戶的需求就被激發起來,會根據自己的對軟件的理解和日常工作的習慣,對軟件的處理及操作方式提出修改,而這種修改往往比較隨意,因此導致開發方需要對流程、界面、以及相關文檔經常的大量的修改,這些成為開發方的一個很大的負擔,而這種負擔對用戶基本是看不見的。
三、用敏捷方法方法應對需求變化
1.敏捷建模(Agile Modeling)進行系統設計
軟件開發過程一般是要盡早完成需求分析,停止需求的變動,將這些需求作為設計的基礎,然后開始構筑系統,這是瀑布方法----基于計劃的生命周期。這種方法是通過大量的前期工作來減少變化。一旦前期工作完成,當需求變化時,這樣的方法就會有很大的問題。
另外一個重要原因是,許多單位的管理模式都處在探索階段,可能引起變動的因素很多,因此根據現行的管理模式設計出的信息系統將面臨使用單位管理模式的變化的考驗,包括許多的工作流程的細節處理方式式否合乎工作人員的習慣等問題。
系統在設計時要充分考慮這些不確定因素,才能適應這些變化。特別是數據結構要以系統靈活性為主,其次才是考慮系統性能的提高。
在軟件開發出現工期或bug等問題時,開發人員常抱怨是由于需求的變化造成的,對于軟件的修改存在抵觸情緒。實際上在商業軟件開發領域,需求變化是很正常的,問題是我們該怎樣對待它。為了適應需求的變化,必須采取不同的設計態度。這里介紹敏捷方法的幾點思想,對如何應對需求的變化很有教益。
主張簡單、遞增的變化、擁抱變化是敏捷建模方法的核心原則之中的三個。
敏捷建模主張當從事開發工作時,最簡單的解決方案就是最好的解決方案,盡可能的保持模型的簡單。
文章來源于領測軟件測試網 http://www.kjueaiud.com/