文章由舜亞科技的Jimmy發(fā)表在《程序員》2007.2期, 其中的案例全部引自本公司的項(xiàng)目。
作者介紹:柯自聰/eamoi 舜亞科技軟件工程師,專注于Web應(yīng)用程序開(kāi)發(fā),關(guān)注OA、門戶、電子政務(wù)、電子商務(wù)領(lǐng)域、RIA,著有《Ajax開(kāi)發(fā)精要--概念、案例與框架》一書以及《Ajax開(kāi)發(fā)簡(jiǎn)略》、《Liferay Portal二次開(kāi)發(fā)指南》等開(kāi)源文檔。
全文:
軟件項(xiàng)目是需求驅(qū)動(dòng)的典型代表,項(xiàng)目從立項(xiàng)、開(kāi)發(fā)、測(cè)試到交付,需求的變化迭代是很正常的事情,這點(diǎn)對(duì)于大型項(xiàng)目尤其明顯。需求迭代如果控制不好,很容易增大項(xiàng)目的風(fēng)險(xiǎn),導(dǎo)致項(xiàng)目的失敗。與國(guó)內(nèi)的很多軟件公司相似,筆者所參與的項(xiàng)目也存在需求迭代的問(wèn)題。本文從需求迭代入手,結(jié)合項(xiàng)目實(shí)際,探討需求迭代與項(xiàng)目風(fēng)險(xiǎn)控制的關(guān)系,希望項(xiàng)目需求有序迭代。
需求迭代,不可避免的輪回
軟件項(xiàng)目的啟動(dòng)源于市場(chǎng)和客戶的需求,通過(guò)對(duì)市場(chǎng)的需求調(diào)查以及典型目標(biāo)客戶的需求訪問(wèn)抽象出需求規(guī)格說(shuō)明書,進(jìn)而才開(kāi)始原型系統(tǒng)的設(shè)計(jì),經(jīng)過(guò)對(duì)原型系統(tǒng)的評(píng)估之后啟動(dòng)真實(shí)系統(tǒng)的設(shè)計(jì)和開(kāi)發(fā)。
在原型系統(tǒng)設(shè)計(jì)階段,由于各種各樣的因素,比如客戶沒(méi)有將實(shí)際需求表達(dá)清楚,或者需求分析人員對(duì)業(yè)務(wù)的理解有偏差,據(jù)此設(shè)計(jì)出來(lái)的原型系統(tǒng)可能與市場(chǎng)、客戶的真實(shí)需求不是很匹配,那么隨著原型系統(tǒng)構(gòu)建的深入,必然觸發(fā)需求的迭代。
在真實(shí)系統(tǒng)的設(shè)計(jì)和開(kāi)發(fā)過(guò)程中,隨著對(duì)系統(tǒng)的理解的深入,客戶也可能對(duì)需求進(jìn)行深化、擴(kuò)展或者變更,研發(fā)工程師對(duì)需求的消化,這也會(huì)觸發(fā)需求的迭代。
即使真實(shí)系統(tǒng)交付使用,隨著業(yè)務(wù)的發(fā)展,客戶的需求可能發(fā)生變化;而且客戶在使用系統(tǒng)的過(guò)程中,必然會(huì)對(duì)系統(tǒng)提出進(jìn)一步改進(jìn)的要求,修改原有功能的操作方式,增加新的功能,這些也會(huì)要求需求的進(jìn)一步迭代。
在這一系列的迭代過(guò)程中,如果沒(méi)有很好的控制迭代的過(guò)程,評(píng)估迭代的成本,有效管理迭代的需求,那么很容易形成需求迭代無(wú)窮無(wú)盡的假象,項(xiàng)目團(tuán)隊(duì)窮于應(yīng)付每一次需求迭代,項(xiàng)目開(kāi)發(fā)高度緊張,發(fā)布日期遙遙無(wú)期,這樣必然給項(xiàng)目帶來(lái)很高的風(fēng)險(xiǎn)。
Diapers項(xiàng)目是一個(gè)面向北美市場(chǎng)的電子商務(wù)站點(diǎn),已經(jīng)運(yùn)行三年。最近客戶決定對(duì)Diapers項(xiàng)目進(jìn)行升級(jí)改造。項(xiàng)目經(jīng)理或者需求分析工程師負(fù)責(zé)溝通客戶,分析抽象客戶的真實(shí)需求,并撰寫需求說(shuō)明書;軟件工程師根據(jù)需求說(shuō)明書擬定技術(shù)方案,并著手進(jìn)行編碼;測(cè)試工程師根據(jù)需求說(shuō)明書和測(cè)試用例對(duì)項(xiàng)目進(jìn)行測(cè)試;項(xiàng)目經(jīng)理引導(dǎo)客戶確認(rèn)項(xiàng)目的最終功能呈現(xiàn),并在必要的時(shí)候啟動(dòng)需求迭代過(guò)程。
由于Diapers是來(lái)自北美的外包項(xiàng)目,雙方的溝通存在時(shí)間差,項(xiàng)目團(tuán)隊(duì)也沒(méi)有條件與客戶面對(duì)面的溝通。在整個(gè)項(xiàng)目的升級(jí)改造過(guò)程中,由于業(yè)務(wù)理解的偏差以及溝通不暢,需求經(jīng)過(guò)了多次迭代;需求每迭代一次,團(tuán)隊(duì)成員都需要面對(duì)一堆冗長(zhǎng)的需求說(shuō)明書。由于Diapers已經(jīng)是正式運(yùn)營(yíng)的站點(diǎn),客戶來(lái)自市場(chǎng)的壓力同時(shí)也轉(zhuǎn)嫁到項(xiàng)目團(tuán)隊(duì)身上,項(xiàng)目發(fā)布的壓力一直困擾著團(tuán)隊(duì)成員。從Diapers項(xiàng)目的進(jìn)展來(lái)看,需求的迭代似乎就是無(wú)窮無(wú)盡的輪回。
主動(dòng)觸發(fā)需求迭代,給予足夠的消化時(shí)間
導(dǎo)致Diapers項(xiàng)目的現(xiàn)狀的主要原因是被動(dòng)的進(jìn)行需求迭代,迭代被動(dòng)的由客戶的反饋觸發(fā)。每次需求迭代都可能打亂團(tuán)隊(duì)的開(kāi)發(fā)計(jì)劃,影響項(xiàng)目的發(fā)布,給團(tuán)隊(duì)帶來(lái)更大的發(fā)布?jí)毫?。因此,必須想方設(shè)法掌握需求迭代的主動(dòng)權(quán)。
針對(duì)每次需求迭代給予充分的消化時(shí)間是一種有效的方式。從Diapers項(xiàng)目的情況來(lái)看,上一次需求還沒(méi)有消化處理完畢,新的需求迭代又要開(kāi)始了。項(xiàng)目發(fā)布迭代的速度根本就跟不上需求迭代的速度,新的需求一直步步進(jìn)逼。在這種情況下,測(cè)試工程師壓根兒就沒(méi)有時(shí)間對(duì)項(xiàng)目進(jìn)行