2. 需求變更頻繁
軟件開發(fā)的顯著特點之一是靈活性、機動性、對變化的快速響應(yīng)能力。尤其是敏捷開發(fā)過程,需求變更更為頻繁。敏捷開發(fā)的口號是擁抱需求變化,也是說,開發(fā)團隊對于客戶提出的需求變更通常是抱以歡迎的態(tài)度,盡管這些變更可能會給項目計劃和項目進度帶來麻煩,但這種觀念上的轉(zhuǎn)變更能體現(xiàn)開發(fā)團隊和客戶之間合作的誠意。
客戶在迭代周期中的變更大致可以分為五種類型:添加新需求、刪除本次迭代周期內(nèi)的需求、刪除之前迭代周期內(nèi)的需求、更改本次迭代周期內(nèi)的需求、更改之前迭代周期內(nèi)的需求。這是說,開發(fā)團隊需要實時高效地管理這些變更,并且將需求變更涉及到的迭代周期內(nèi)項目計劃和人員安排變更的影響小化。
3. 缺乏有針對性的需求管理流程
傳統(tǒng)的需求管理過程,尤其是其中的變更控制過程是針對那些組織機構(gòu)清晰,只能定義明確的傳統(tǒng)軟件項目,其流程相對比較嚴(yán)謹(jǐn)和死板。同時,為了彌補需求變更對項目進程帶來的影響,開發(fā)人員常常需要快速的進行功能修改和增加,而沒有遵循統(tǒng)一的流程控制,從而常常使得軟件開發(fā)的有序性被破壞,人為地增加了工作量。這需要有更為高效和精簡的需求管理過程以及相應(yīng)的工具支持。
4. 需求、測試用例、Bug管理脫節(jié)
軟件開發(fā)中,需求和測試用例是緊密聯(lián)系的,通常來說,一條需求只有通過了所有針對該需求的測試之后才能說這條需求的實現(xiàn)真正實現(xiàn)了。而測試的結(jié)果是產(chǎn)生Bug報告,如果針對某條需求的一個測試用例沒有通過測試,換句話說,也是產(chǎn)生了一個Bug,這說明該需求根本沒有完成。同時,需求的變更直接影響到與該需求相關(guān)的測試用例的更新,繼而影響到現(xiàn)有Bug的狀態(tài)的更新。然而現(xiàn)實情況卻是,大多數(shù)敏捷開發(fā)團隊都沒有實現(xiàn)需求、測試用例和Bug的一體化管理。
我們希望在需求、測試用例和Bug之間建立一種動態(tài)的聯(lián)系,能夠?qū)崟r地更新三者的狀態(tài),并且實現(xiàn)三者之間狀態(tài)的動態(tài)聯(lián)動,從而減少開發(fā)團隊在管理和維護需求、測試用例和Bug時的工作量。
5. 缺乏量化的項目管理反饋
企業(yè)在項目管理中,需求的頻繁變更對項目管理者評估需求、制定迭代周期內(nèi)的項目計劃都是個巨大的挑戰(zhàn)。管理者在需求評估經(jīng)驗和能力上的不足,以及管理者對團隊成員開發(fā)能力認(rèn)識不足容易造成需求評估出現(xiàn)大的誤差,雖然這種誤差是不可避免的、但是我們希望可以通過歷史評估數(shù)據(jù)的反饋來幫助項目管理者積累經(jīng)驗,逐步修正和調(diào)整自己的判斷和評價體系,從而盡可能減小由于評估誤差引起的項目風(fēng)險。而沒有工具的支持,歷史的準(zhǔn)確數(shù)據(jù)則很難獲取。
總結(jié)以上問題,顯而易見,需求管理是軟件項目中一項十分重要的工作,據(jù)調(diào)查顯示在眾多失敗的軟件項目中,由于需求原因?qū)е碌募s占到45%,因此有效的需求管理是企業(yè)軟件開發(fā)項目順利達成目標(biāo)的重要支撐條件。如何理解項目開發(fā)的目的和用途,梳理用戶需求,監(jiān)控需求變化,進行需求確認(rèn),對需求風(fēng)險進行防范,并利用工具進行有效的實施需求管理工具,方能推進軟件項目良性發(fā)展,達到用戶與軟件開發(fā)企業(yè)的雙贏。
有效的需求管理方法與工具
方法一:量化需求管理
如前所述,企業(yè)研發(fā)項目通常規(guī)模巨大,涉及部門眾多,需求功能描述文件中包含眾多內(nèi)容,若僅僅只用整篇的文檔來指導(dǎo)開發(fā)和測試工作,很容易引起任務(wù)分配的混亂;當(dāng)發(fā)生需求變更時,也很難追溯歷史版本。
TechExcel公司推出的DevSuite產(chǎn)品研發(fā)管理軟件,從實踐中提煉出一個行之有效的解決方法——用規(guī)范點(Specification,以下簡稱Spec)量化需求,正規(guī)表達每一個功能單元。只需打開《需求功能描述書》的WORD文檔,可以利用插件,將其中的功能單元逐條地復(fù)制出來,在需求管理系統(tǒng) DevSpec中直接生成Spec。相對于需求,Spec是更面向技術(shù)人員的語言。