開發(fā)一個軟件項目,如果采用瀑布模型(或改進型瀑布模型)的話,通常會包括以下幾個開發(fā)階段,即:需求分析、系統(tǒng)設(shè)計、系統(tǒng)編碼、系統(tǒng)測試、系統(tǒng)交付(及后續(xù)維護)。在項目管理過程域中,主要包括:項目規(guī)劃、立項管理、需求管理、項目監(jiān)控、風(fēng)險管理和結(jié)項管理等。
我們把所有與需求相關(guān)的活動統(tǒng)稱為需求工程。需求工程的活動又可分為兩大類,即需求開發(fā)和需求管理。需求分析師通過需求調(diào)查(調(diào)研)、需求分析和需求定義,完成需求開發(fā)工作。而項目經(jīng)理則通過對需求確認、需求跟蹤和需求變更控制的主導(dǎo),實現(xiàn)需求管理。
軟件需求工程是軟件項目開發(fā)工作的一個重要源頭。它是由兩個角色共同完成的。需求分析師一定要盡可能準確的獲取客戶需求,盡量一次做對,編寫出高質(zhì)量的《用戶需求說明書》和《產(chǎn)品需求規(guī)格書》,努力降低項目中后期因需求變更對項目的成本、質(zhì)量和進度的影響。而項目經(jīng)理則需通過加強需求管理,有效的防范和減少不必要的需求變更。曾有人做過統(tǒng)計分析,如果在需求分析階段發(fā)生的需求變更對項目帶來的額外工作量是5的話,那么在系統(tǒng)分析和系統(tǒng)編碼階段發(fā)生的需求變更對工作量的增加分別是20和100。
對于那些軟件能力成熟度高的軟件企業(yè)的項目經(jīng)理而言,可以毫不夸張的說:只要把需求管理做好了,項目也就已經(jīng)成功了一半。
CMMI中對需求管理流程的定義與我項目實踐的體會
集成式能力成熟度模型(CMMI:Capability Maturity Model Integration)把需求管理流程劃分為六部分,分別是:1、制定需求管理計劃;2、求得對需求的理解;3、求得對需求的承諾;4、管理需求變更;5、維護對需求的雙向跟蹤;6、識別項目工作與需求之間的不一致性。
毋容置疑,上述六個部分是構(gòu)成需求管理流程的重要組成部分。但在實際操作中,僅僅是機械的遵循這些標準流程和要點,往往又是不夠的。根據(jù)我在過去十年在國內(nèi)的多個大型軟件項目(涉及倉儲管理、物流園區(qū)信息平臺、保稅區(qū)海關(guān)聯(lián)網(wǎng)監(jiān)管系統(tǒng),以及港口社區(qū)綜合信息平臺等)擔任項目經(jīng)理的管理實踐,我的看法就是:要想成功的執(zhí)行需求管理,涉及到的一些關(guān)鍵成功因素還遠不止這些。以下就是我的一些經(jīng)驗和體會。
我的兩點經(jīng)驗
一、應(yīng)緊密結(jié)合國內(nèi)企業(yè)的實際特點和人文環(huán)境,通過多種手段消除“需求的不確定性”
開發(fā)企業(yè)級大型應(yīng)用軟件項目,需要應(yīng)對的重要挑戰(zhàn)就是“需求的不確定性”。那么,什么是“需求的不確定性”呢?我這里先例舉兩個場景。場景一:開發(fā)人員沒有行業(yè)背景,不能很好的理解業(yè)務(wù)需求。某個開發(fā)項目,盡管經(jīng)過了多輪次、十分詳盡和深入的需求研討,而且開發(fā)人員都確信自己已經(jīng)明白了客戶提出的業(yè)務(wù)需求,但費盡千辛萬苦把系統(tǒng)做出來以后,客戶卻說:“對不起,這并不是我想要的!”于是幾百萬,甚至上千萬的開發(fā)投入打了水漂;場景二:開發(fā)人員具備豐富的行業(yè)經(jīng)驗,也確實理解了業(yè)務(wù)需求,但開發(fā)項目組因為沒有很好的平衡各方利益關(guān)系,軟件系統(tǒng)在上線后要么遭到全盤廢棄,要么就只有那么一小部分功能得到實際應(yīng)用。客戶的大部分項目投資沒能獲得應(yīng)有的收益。
從以上描述的兩個場景可以看出:造成需求不確定的原因很多。它們包括但不限于:1、開發(fā)團隊缺乏所開發(fā)項目的業(yè)務(wù)背景和行業(yè)經(jīng)驗,導(dǎo)致不能很好的理解客戶的業(yè)務(wù)需求;2、由于客戶方人員的素質(zhì)良莠不齊,以至于有些人員不能完整、全面、系統(tǒng)、準確的闡述自身業(yè)務(wù)和對系統(tǒng)的需求,或者提出的需求難以通過IT技術(shù)加以實現(xiàn),有些時候有些人甚至?xí)拇蠓较蛏险`導(dǎo)開發(fā)團隊;3、客戶方不熟悉軟件項目開發(fā)方使用的工具、不理解項目需求