本文介紹了需求管理的必要性,并介紹了控制需求漸變的一些方法。
軟件需求是整個軟件項目的最關(guān)鍵的一個輸入,和傳統(tǒng)的生產(chǎn)企業(yè)相比較,軟件的需求具有模糊性、不確定性、變化性和主觀性的特點,他不像生產(chǎn)汽車、電腦等硬件的需求,是有形的、客觀的、可描述的、可檢測的,軟件需求是軟件項目最難把握的問題,他的復雜性體現(xiàn)在以下方面:
需求的描述問題
一個已經(jīng)進入了編碼后期階段的項目,該項目已經(jīng)換過2次項目經(jīng)理了,這是第3次更換項目經(jīng)理,用戶方的IT部經(jīng)理找抱怨:"我已經(jīng)是第3次來給你們講補貨申請的處理規(guī)則了!"。我只能表示抱歉,因為我無法找到原來的需求描述,這是一個變更的需求,前任的項目經(jīng)理講他只是將當時與用戶交流的需求記到2頁草稿紙上,不幸的是,那2頁珍貴的手稿現(xiàn)在已經(jīng)找不到了!更不幸的是,該IT部經(jīng)理是在轉(zhuǎn)述業(yè)務部門的需求,當軟件開發(fā)完畢后,業(yè)務部門講"這不是我們最初給IT部反映的需求,我們說的不是這樣的!"。缺少正式的完整的需求文檔浪費了大量的人力物力,但是有了需求文檔又出現(xiàn)了新的問題。曾經(jīng)有多個項目經(jīng)理抱怨,在用戶方進行的需求評審會完全是走形式,因為用戶根本不去聽他讀那上百頁的需求文檔。不同層次的客戶(用戶)關(guān)心的問題是不一樣的,想要每個客戶都成為需求專家是不現(xiàn)實的。
需求的完備程度問題
需求如何做到?jīng)]有遺漏?如何準確劃定系統(tǒng)的范圍?這確實是一個兩難問題,稍微大一點的系統(tǒng)要想窮舉需求幾乎是不可能的,每次開需求評審會時,總會冒出新的需求,以至于系統(tǒng)沒有一個準確的范圍界定。即使是這樣,系統(tǒng)還是要開發(fā),沒辦法,系統(tǒng)的范圍還要硬性的劃定一個,從而建立一個基線。
需求開發(fā)的工期問題
在需求上花費了大量的時間(而不是人*工時,因為需求階段人多了也沒有作用),客戶、軟件公司是否能夠忍受?為了確保需求的正確性,完備性,項目經(jīng)理往往堅持要在需求階段花費大量的時間,但是客戶與公司的高層領(lǐng)導卻會為項目遲遲看不到實際可運行的軟件擔心不已!他們往往會逼迫項目組盡快往前推進,而項目組的成員往往也會為系統(tǒng)復雜的善變的需求折騰的筋疲力盡,他們也希望盡快結(jié)束此階段。
需求的細致程度問題
需求到底描述到多細,才算可以結(jié)束了?仁者見仁,智者見智,并沒有定論,如果時間允許,要想細總可以細下去的。但是,需求的周期越長,可能的變化越多,對設(shè)計的限制越嚴格,對需求的共性提取要求越高,所以只要大家(客戶、用戶、需求分析人員、設(shè)計人員、測試人員)認為描述清楚了,就可以進入設(shè)計階段了。
需求的變化問題
在軟件開發(fā)過程中如果只有一條真理的話,那一定是:需求的變化是永恒的,需求不可能是完備的。軟件開發(fā)的過程實際上是同變化做斗爭的過程,需求的變更不一定是壞事,也有可能是好事,是商業(yè)機會,對市場敏感的人可以從需求的變化中發(fā)現(xiàn)市場機會。
需求變化的原因很多,如:
· 一開始沒有識別全,需要增加需求;
· 業(yè)務發(fā)生了變化,需求必須變化;
· 需求錯誤;
· 需求不清楚;
需求的變化問題是每個開發(fā)人員、每個項目經(jīng)理都遇到的問題,也是最頭痛的問題,一旦發(fā)生了需求變化,你不得不來修改你的設(shè)計、重寫你的代碼、修改你的測試用例、調(diào)整你的項目計劃等等,需求的變化好比是萬惡之源,為項目的正常的進展帶來不盡的麻煩,怎么辦?管理它!使需求在受控的狀態(tài)下發(fā)生變化,而不是隨意變化,需求管理就是要按照標準的流程來控制需求的變化。
難題隨之而來,需求中的變化一般不是突發(fā)的革命性的變化,最常見的是"項目需求的漸變"(Project Scope Creep)問題,這種漸變很可能是客戶與開發(fā)方都沒有意識到的