需求時,開發(fā)人員與用戶應(yīng)該盡量采取相互理解、相互協(xié)作的態(tài)度,對能解決的問題盡量解決。即使用戶提出了在開發(fā)人員看來"過分"的要求,也應(yīng)該仔細(xì)分析原因,積極提出可行的替代方案。
充分交流 需求變更管理的過程很大程度上就是用戶與開發(fā)人員的交流過程。軟件開發(fā)人員必須學(xué)會認(rèn)真聽取用戶的要求、考慮和設(shè)想,并加以分析和整理。同時,軟件開發(fā)人員應(yīng)該向用戶說明,進(jìn)入設(shè)計階段以后,再提出需求變更會給整個開發(fā)工作帶來什么樣的沖擊和不良后果。
安排專職人員負(fù)責(zé)需求變更管理 有時開發(fā)任務(wù)較重,開發(fā)人員容易陷入開發(fā)工作中而忽略了與用戶的隨時溝通,因此需要一名專職的需求變更管理人員負(fù)責(zé)與用戶及時交流。
合同約束 需求變更給軟件開發(fā)帶來的影響有目共睹,所以在與用戶簽訂合同時,可以增加一些相關(guān)條款,如限定用戶提出需求變更的時間,規(guī)定何種情況的變更可以接受、拒絕接受或部分接受,還可以規(guī)定發(fā)生需求變更時必須執(zhí)行變更控制流程。
區(qū)別對待 隨著開發(fā)進(jìn)展,有些用戶會不斷提出一些在項目組看來確實無法實現(xiàn)或工作量比較大、對項目進(jìn)度有重大影響的需求。遇到這種情況,開發(fā)人員可以向用戶說明,項目的啟動是以最初的基本需求作為開發(fā)前提的,如果大量增加新的需求(雖然用戶認(rèn)為是細(xì)化需求,但實際上是增加了工作量的新需求),會使項目不能按時完成。如果用戶堅持實施新需求,可以建議用戶將新需求按重要和緊迫程度劃分檔次,作為需求變更評估的一項依據(jù)。同時,還要注意控制新需求提出的頻率。
選用適當(dāng)?shù)拈_發(fā)模型 采用建立原型的開發(fā)模型比較適合需求不明確的開發(fā)項目。開發(fā)人員先根據(jù)用戶對需求的說明建立一個系統(tǒng)原型,再與用戶溝通。一般用戶看到一些實際的東西后,對需求會有更為詳細(xì)的解釋,開發(fā)人員可根據(jù)用戶的說明進(jìn)一步完善系統(tǒng)原型。這個過程重復(fù)幾次后,系統(tǒng)原型逐漸向最終的用戶需求靠攏,從根本上減少需求變更的出現(xiàn)。目前業(yè)界較為流行的疊代式開發(fā)方法對工期緊迫的項目的需求變更控制很有成效。
用戶參與需求評審 作為需求的提出者,用戶理所當(dāng)然是最具權(quán)威的發(fā)言人之一。實際上,在需求評審過程中,用戶往往能提出許多有價值的意見。同時,這也是由用戶對需求進(jìn)行最后確認(rèn)的機(jī)會,可以有效減少需求變更的發(fā)生。
變更控制流程如圖所示。
需求變更的代價
一般來講,需求的變更通常意味著需求的增加,需求的減少相對很少,而且處理需求減少方面的問題也比較容易。當(dāng)客戶提出新需求的時候,項目開發(fā)人員應(yīng)該分析這些新需求對項目現(xiàn)階段帶來的風(fēng)險,得出雙方實現(xiàn)變更需求的需要的成本,包括時間、人力、資源等等方面。
變更都是有代價的,應(yīng)該評估一下變更的代價和對項目的影響,在評估代價并且與客戶討論的過程中,要讓客戶了解變更的后果,變更之后面臨最大的問題就是項目延期,讓客戶一起做判斷:“我可以修改,但您能接受后果嗎?”?,F(xiàn)在會出現(xiàn)三種可能:客戶接受延期這一后果,開發(fā)人員按客戶要求做出相應(yīng)修改,讓客戶知道為此需要付出延期的代價;如果客戶認(rèn)為代價太大,那開發(fā)人員就不必修改了,可以記錄下需求,待到下一版本再做修改;客戶不接受變更的代價,導(dǎo)致項目夭折。 如果客戶不知道你為變更付出的代價,對你的辛苦便難以體會,以致沒完沒了的提出新的變更。
減少需求變更
正如前文所說,需求變更往往是不可避免的。通常是項目負(fù)責(zé)人員花費了大量的氣力避免需求變更,可最后需求變更總是會出現(xiàn)。但是這并不意味著項目開發(fā)人員不應(yīng)該做這方面的工作,項目開發(fā)人員對于需求變更的正確態(tài)度應(yīng)該和軟件測試的態(tài)度