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