需求變更對軟件開發(fā)項目成敗有重要影響,既不能一概拒絕客戶的變更要求,也不能一味地遷就客戶,所以實施需求變更之前必須做好控制。需求變更控制的目的不是控制變更的發(fā)生,而是對變更進(jìn)行管理,確保變更有序進(jìn)行。
(1)明確合同約束,建立需求基線
需求變更給軟件開發(fā)帶來的影響有目共睹,所以在與客戶簽訂合同時,可以增加一些相關(guān)條款,如限定客戶提出需求變更的時間,規(guī)定何種情況的變更可以接受、拒絕或部分接受,還可以規(guī)定發(fā)生需求變更時必須執(zhí)行變更管理流程。雖然軟件開發(fā)合同很難在簽訂之初就能夠精確定義每項需求,單靠合同是幫不上忙的,但也不能忽視合同的約束力。
明確和樹立需求基線是需求變更的依據(jù)。在開發(fā)過程中,需求確定并經(jīng)過評審后(客戶參與評審),建立第一個需求基線。此后每次變更并經(jīng)過評審后,都要重新確定新的需求基線,做到小需求可以變更,但大方向要力保不頻繁變更。例如,對于項目中的需求,可以實行分級管理,以達(dá)到對需求變更的控制和管理。
(2)建立變更審批流程
在實踐中,人們往往不愿意為小的需求變更去執(zhí)行正規(guī)的需求管理過程,認(rèn)為降低開發(fā)效率,浪費時間。正是這種觀念才使需求變更變得不可控,最終導(dǎo)致項目的失敗。因此,小的需求變更也要經(jīng)過正規(guī)的需求管理流程,否則會積少成多,積重難返。
明確需求變更審批環(huán)節(jié)、審批人員、審批事項、審批流程。這么做的目的有兩個:一是將客戶下達(dá)變更的流程盡可能地規(guī)范化,減少張嘴就來的非必要、非緊急、非合理、非高層領(lǐng)導(dǎo)意圖的無效變更。二是留下書面依據(jù),為今后可能的成本變更和索賠準(zhǔn)備好“變更賬”。凡未履行審批程序的“變更”,一律是無效變更不予受理。
(3)分級管理變更,定時批量處理
軟件開發(fā)項目中,“客戶永遠(yuǎn)是對的”和“客戶是上帝”并不完全正確,因為在已經(jīng)簽定的項目合同中,任何新需求的變更和增加除了影響項目的正常進(jìn)行以外,還影響到客戶的成本投入收益。因此,用戶不斷提出對項目進(jìn)度有重大影響的需求對雙贏也并不是好事。
當(dāng)遇到客戶提出需求,不及時處理可能會使項目不能驗收通過時,也不能一味拒絕不予開發(fā)。因此,當(dāng)客戶堅持變更新需求時,可以建議客戶將新需求按重要和緊迫程度劃分檔次,作為需求變更評估的一項依據(jù)。例如,每周或每兩周甚至每月召開一次需求變更專題會議,集中研究處理這些零碎變更事項,主動控制好工作節(jié)奏,盡量避免由于處理零碎變更而影響項目進(jìn)度。針對會議結(jié)果可向客戶正式提交一份需求變更計劃,注明變更引起的時間、成本、工期代價和增加工作量等。要求客戶配合需求變更計劃,確定變更時限,控制變更規(guī)模,過時變更不候,離譜變更不做,保大局棄小變。
(4)安排專職人員負(fù)責(zé)變更管理
有時開發(fā)任務(wù)較重,開發(fā)人員容易陷入開發(fā)工作中而忽略了與客戶的隨時溝通。因此,需要安排一名專職的需求變更聯(lián)絡(luò)人員,負(fù)責(zé)與客戶及時交流,跟蹤和匯報需求變更完成進(jìn)度和情況。同時,可以成立項目變更控制小組,負(fù)責(zé)裁定接受哪些變更,小組由項目所涉及的多方人員共同組成,應(yīng)該包括客戶方和開發(fā)方的決策人員在內(nèi)。
(5)確認(rèn)客戶是否接受變更的代價
要讓客戶認(rèn)識到變更都是有代價的,要和客戶一起判斷需求變更是否依然進(jìn)行。例如,變更是沒有問題的,但是要明確客戶能否接受由此引起的如進(jìn)度延遲、費用增加、效率下降等問題。一般來說,如果客戶認(rèn)為該變更是必須的(不是其上級領(lǐng)導(dǎo)拍腦袋提出的)就會接受這些后果。通過與客戶協(xié)商,這樣開發(fā)團隊即使沒有回報,也不會招致公司和客戶雙方的埋怨。
如果客戶認(rèn)為該變更雖然有必要但是可以暫緩,雙方簽署備忘錄后留待以后解決。如果客戶認(rèn)為該變更可有可無,多數(shù)情況下會取消變更。這樣即可
防止頻繁變更,也讓客戶認(rèn)識到不是所有的需求都需要變更。