需求變更需要遵循的六大原則

需求變更是因爲需求發生變化。根據軟件工程思想,需求說明書一般要經過論證,如果在需求說明書經過論證以後,需要在原有需求基礎上追加和補充新的需求或對原有需求進行修改和削減,均屬於需求變更。 

  需求變更的出現主要是因爲在項目的需求確定階段,用戶往往不能確切地定義自己需要什麼。用戶常常以爲自己清楚,但實際上他們提出的需求只是依據當前的工作所需,而採用的新設備、新技術通常會改變他們的工作方式;或者要開發的系統對用戶來說也是個未知數,他們以前沒有過相關的使用經驗。隨着開發工作的不斷進展,系統開始展現功能的雛形,用戶對系統的瞭解也逐步深入。於是,他們可能會想到各種新的功能和特色,或對以前提出的要求進行改動。他們瞭解得越多,新的要求也就越多,需求變更因此不可避免地一次又一次出現。 

  這時,如果開發團隊缺少明確的需求變更控制過程或採用的變更控制機制無效,抑或不按變更控制流程來管理需求變更,那麼很可能造成項目進度拖延、成本不足、人力緊缺,甚至導致整個項目失敗。當然,即使按照需求變更控制流程進行管理,由於受進度、成本等因素的制約,軟件質量還是會受到不同程度的影響。但實施嚴格的軟件需求管理會最大限度地控制需求變更給軟件質量造成的負面影響,這也正是我們進行需求變更管理的目的所在。 

實施需求變更管理需要遵循以下六大原則

(1)建立需求基線,需求基線是需求變更的依據。在開發過程中,需求確定並經過評審後(用戶參與評審),可以建立第一個需求基線。此後每次變更並經過評審後,都要重新確定新的需求基線。 

(2)制訂簡單、有效的變更控制流程,並形成文檔。在建立了需求基線後提出的所有變更都必須遵循這個控制流程進行控制。同時,這個流程具有一定的普遍性,對以後的項目開發和其他項目都有借鑑作用。 

(3)成立項目變更控制委員會(CCB)或相關職能的類似組織,負責裁定接受哪些變更。CCB由項目所涉及的多方人員共同組成,應該包括用戶方和開發方的決策人員在內。 

(4)需求變更一定要先申請然後再評估,最後經過與變更大小相當級別的評審確認。 

(5)需求變更後,受影響的軟件計劃、產品、活動都要進行相應的變更,以保持和更新的需求一致。 

(6)妥善保存變更產生的相關文檔。

應對之道 

  需求變更控制一般要經過變更申請、變更評估、決策、回覆這四大步驟。如果變更被接受,還要增加實施變更和驗證兩個步驟,有時還會有取消變更的步驟。針對變更控制流程,在實際工作中總結出了軟件開發人員在需求變更管理實踐中的幾點對策: 

  優先排序 分批實現 每個需求的重要性是不同的。由於資源或技術條件的限制,會顯得“僧多粥少”,因此不可能把所有的需求一次完成。怎麼辦?把每個需求按照對效益的貢獻打個分,排出個優先級來,優先級高的需求先實現,低的到一下版式本實現。由於不斷有新的需求進來,有的需求可能永遠沒有機會被子實現,但不緊,還是要記錄下來,並一起參加排序,保證在每個版本發佈時重要的需求先得到滿足。每個需求的實現是需要花時間的,沒人有百分百的把握預估得很清楚,但借鑑過去的經驗可以大概估算出人力成本,然後根據開發人員和開發週期得出可用人力投入作爲上限。從優先級高的需求中挑,直到挑中的人力成本總和剛剛低於可用投入上限,這樣得出的就是需求的錄取榜。今後的軟件開發規劃也會以此爲依據,分期分批地在不同的回合中實現。最合理的不一定是優先級最高的,也就是說不一不定是最先考慮的,“經濟爲本”是指導優先排序的最終原則。

  相互協作 很難想像遭到用戶抵制的項目能夠成功。在討論需求時,開發人員與用戶應該儘量採取相互理解、相互協作的態度,對能解決的問題儘量解決。即使用戶提出了在開發人員看來"過分"的要求,也應該仔細分析原因,積極提出可行的替代方案。 

  充分交流 需求變更管理的過程很大程度上就是用戶與開發人員的交流過程。軟件開發人員必須學會認真聽取用戶的要求、考慮和設想,並加以分析和整理。同時,軟件開發人員應該向用戶說明,進入設計階段以後,再提出需求變更會給整個開發工作帶來什麼樣的衝擊和不良後果。 

  安排專職人員負責需求變更管理 有時開發任務較重,開發人員容易陷入開發工作中而忽略了與用戶的隨時溝通,因此需要一名專職的需求變更管理人員負責與用戶及時交流。 

  合同約束 需求變更給軟件開發帶來的影響有目共睹,所以在與用戶簽訂合同時,可以增加一些相關條款,如限定用戶提出需求變更的時間,規定何種情況的變更可以接受、拒絕接受或部分接受,還可以規定發生需求變更時必須執行變更控制流程。 

  區別對待 隨着開發進展,有些用戶會不斷提出一些在項目組看來確實無法實現或工作量比較大、對項目進度有重大影響的需求。遇到這種情況,開發人員可以向用戶說明,項目的啓動是以最初的基本需求作爲開發前提的,如果大量增加新的需求(雖然用戶認爲是細化需求,但實際上是增加了工作量的新需求),會使項目不能按時完成。如果用戶堅持實施新需求,可以建議用戶將新需求按重要和緊迫程度劃分檔次,作爲需求變更評估的一項依據。同時,還要注意控制新需求提出的頻率。 

  選用適當的開發模型 採用建立原型的開發模型比較適合需求不明確的開發項目。開發人員先根據用戶對需求的說明建立一個系統原型,再與用戶溝通。一般用戶看到一些實際的東西后,對需求會有更爲詳細的解釋,開發人員可根據用戶的說明進一步完善系統原型。這個過程重複幾次後,系統原型逐漸向最終的用戶需求靠攏,從根本上減少需求變更的出現。目前業界較爲流行的疊代式開發方法對工期緊迫的項目的需求變更控制很有成效。 

  用戶參與需求評審 作爲需求的提出者,用戶理所當然是最具權威的發言人之一。實際上,在需求評審過程中,用戶往往能提出許多有價值的意見。同時,這也是由用戶對需求進行最後確認的機會,可以有效減少需求變更的發生。

  變更控制流程如圖所示。

    需求變更的代價 

   一般來講,需求的變更通常意味着需求的增加,需求的減少相對很少,而且處理需求減少方面的問題也比較容易。當客戶提出新需求的時候,項目開發人員應該分析這些新需求對項目現階段帶來的風險,得出雙方實現變更需求的需要的成本,包括時間、人力、資源等等方面。

   變更都是有代價的,應該評估一下變更的代價和對項目的影響,在評估代價並且與客戶討論的過程中,要讓客戶瞭解變更的後果,變更之後面臨最大的問題就是項目延期,讓客戶一起做判斷:“我可以修改,但您能接受後果嗎?”。現在會出現三種可能:客戶接受延期這一後果,開發人員按客戶要求做出相應修改,讓客戶知道爲此需要付出延期的代價;如果客戶認爲代價太大,那開發人員就不必修改了,可以記錄下需求,待到下一版本再做修改;客戶不接受變更的代價,導致項目夭折。 如果客戶不知道你爲變更付出的代價,對你的辛苦便難以體會,以致沒完沒了的提出新的變更。

減少需求變更 

  正如前文所說,需求變更往往是不可避免的。通常是項目負責人員花費了大量的氣力避免需求變更,可最後需求變更總是會出現。但是這並不意味着項目開發人員不應該做這方面的工作,項目開發人員對於需求變更的正確態度應該和軟件測試的態度一樣,在需求變更發生之前儘量減少需求變更,以將需求變更帶來的風險降低到最低。項目開發人員切忌在項目設計之前試圖消除需求變更,這樣做往往費力不討好。

  相比於需求開發人員而言,客戶可能對需求變更認識不足,認爲他們出錢,程序員或軟件開發公司就要爲它服務,因此客戶對需求變更往往更加肆無忌彈,將需求變更視爲兒戲,隨個人喜好隨意變更需求。因此,在需求人員同用戶代表或用戶部門主管人員接觸時,就應該向他們挑明態度,和他們協商好,特別是應該讓他們清楚軟件的定價應該與軟件的功能相關,以及需求隨意變更所帶來的風險的承擔者應該由客戶和項目開發者共同承擔。通過這樣做,讓客戶在需求分析之前就儘量對他們所需要的功能有個整體的瞭解和確定的思路,而不是等到程序員開始編碼了,才提出以前原本在需求分析時就可以提出的需求。 

  讓客戶明白減少需求變更的重要性後,需求分析人員應該採取合適的方法同客戶交流,幫助他們明確他們的需求。需求分析人員和客戶的關係不應該僅僅是記錄人員和需求提供者,他們的關係應該更多的是戰略合作伙伴關係。雖然需求分析人員和客戶存在着服務商和顧客的關係,但是他們有着一個共同的目標:開發出適合客戶需求的軟件,因此需求分析人員除了記錄客戶提出的需求以外,還應和用戶討論,提出一些建議,使用合適的工具幫助客戶提出需求。在需求分析時,儘量多的召集需求研討會,邀請開發人員和客戶共同協商探討,在研討會上允許任意的提出需求,並將這些需求整理成檔後由客戶代表和需求分析人員共同商議可選的功能,這樣能夠儘量使得需求完備。在需求開發時,開發人員採用原型的方法啓發客戶思考功能需求也不失爲一個好辦法。 

  雖然需求不可能是完備的、變更不可能沒有的,但是在項目開始設計時使得需求儘可能完備還是應該的,也是值得的,完備需求的過程也就相應的減少了因爲需求不清楚而產生變更的機率。

    本文轉自:http://www.leadge.com/yzgt


發佈了93 篇原創文章 · 獲贊 34 · 訪問量 23萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章