在軟件項(xiàng)目的研發(fā)過(guò)程中,需求變更貫穿了軟件項(xiàng)目的整個(gè)生命周期,如果不能有效處理這些需求變更,項(xiàng)目計(jì)劃會(huì)一再調(diào)整,軟件交付日期一再拖延,用戶(hù)的耐性漸漸消逝,研發(fā)人員的士氣也越來(lái)越低落,最后所有的人都在等待一個(gè)結(jié)果:項(xiàng)目最好馬上結(jié)束。在項(xiàng)目管理過(guò)程中,需求管理是項(xiàng)目經(jīng)理必須面對(duì)的問(wèn)題,而需求變更是需求管理的重要組成部分,可以說(shuō)貫穿項(xiàng)目始終。因此總結(jié)出幾點(diǎn)應(yīng)對(duì)方法是非常必要的。
1.需求分析階段采用原型方法明確用戶(hù)需求
在軟件項(xiàng)目的需求分析階段,有大量需求信息需要收集、篩選、加工,這是需求管理的開(kāi)始。客戶(hù)和研發(fā)兩方面的人員對(duì)需求的理解呈現(xiàn)“大體上共識(shí)多,細(xì)節(jié)上差異多”的特點(diǎn)。即使通過(guò)反復(fù)溝通,最終在時(shí)間表限制之內(nèi)也能拿出一份“用戶(hù)需求說(shuō)明書(shū)”,但是以實(shí)踐經(jīng)驗(yàn),用戶(hù)需求的描述永遠(yuǎn)是“不夠清晰”、“不夠明確”的。這主要是因?yàn)樵谶@個(gè)階段,所謂的產(chǎn)品都在大家的大腦中構(gòu)思,正如100個(gè)人讀《射雕英雄傳》,就有100個(gè)郭靖的形象一樣,每個(gè)人的想法都是大致輪廓相同,而細(xì)節(jié)差異很大。在此階段,原型開(kāi)發(fā)是一個(gè)較好的輔助手段,它將存在于大家頭腦中的虛境實(shí)實(shí)在在地表達(dá)出來(lái),一個(gè)界面,幾個(gè)控件,外觀(guān)形式固定了,功能描述明確了,這就是研發(fā)部門(mén)對(duì)用戶(hù)的需求理解。此時(shí)與用戶(hù)再次溝通,用戶(hù)基本上可以說(shuō)出來(lái):“這是我想要的”,或者“不,這不是我想要的,我要的是……”。一般情況下,原型之后的需求溝通就實(shí)際得多,雙方的理解迅速向一個(gè)折衷方案靠攏,一個(gè)可以指導(dǎo)研發(fā)過(guò)程的需求說(shuō)明書(shū)正式誕生了。
2.需求分析之后的研發(fā)過(guò)程采用嚴(yán)格的需求變更管理流程
一旦需求分析階段結(jié)束,此后如果用戶(hù)要求有新的需求加入交付的軟件系統(tǒng)中,需要走需求變更管理流程。這個(gè)流程必須在軟件項(xiàng)目成立之初與用戶(hù)約定好,一般的軟件企業(yè)內(nèi)部有需求變更的管理流程,可以向用戶(hù)解釋這種管理的必要性,直至與用戶(hù)就此問(wèn)題達(dá)成共識(shí)為止。不必?fù)?dān)心用戶(hù)不會(huì)接受,有過(guò)多次成功研發(fā)軟件項(xiàng)目經(jīng)驗(yàn)的需求變更管理流程,有著它不容置疑的合理性,這正是軟件企業(yè)的經(jīng)驗(yàn)和價(jià)值所在,用戶(hù)最終會(huì)理解和同意的。
需求變更管理流程各家企業(yè)有各家的做法,借用CMM的需求管理KPA來(lái)講,需要兩級(jí)需求變更管理委員會(huì)(以下簡(jiǎn)稱(chēng)CCB)來(lái)處理,即產(chǎn)品CCB和項(xiàng)目CCB。產(chǎn)品CCB處理涉及到產(chǎn)品一級(jí)的需求變化,主要體現(xiàn)在需要多個(gè)職能部門(mén),多個(gè)軟件項(xiàng)目,以及與其他產(chǎn)品線(xiàn)的協(xié)調(diào)等問(wèn)題;項(xiàng)目CCB處理本項(xiàng)目?jī)?nèi)部的需求變更,如不同小組之間的協(xié)調(diào),接口變化等等。每一個(gè)需求都要經(jīng)過(guò)CCB的審批,決定這個(gè)需求的各種屬性描述是否合適,如時(shí)間緊迫性,采用的技術(shù)是否有風(fēng)險(xiǎn),對(duì)系統(tǒng)的重要程度,需求變更的波動(dòng)分析,需求實(shí)現(xiàn)的資源狀況。在與會(huì)人員對(duì)需求屬性取得共識(shí)之后,規(guī)劃需求實(shí)現(xiàn)的版本,確定時(shí)間計(jì)劃。
在此提醒大家,切忌對(duì)用戶(hù)提出的需求拍胸脯,在此之前可以?huà)行淖詥?wèn):“如果拍了胸脯,以后不能按時(shí)完成,我能不能負(fù)擔(dān)全部責(zé)任?”這樣冷靜一下就不會(huì)胡亂應(yīng)承了。有一個(gè)比較好的方式減少這樣的麻煩,就是在需求分析階段之后,與用戶(hù)不要親密接觸,而是按照軟件項(xiàng)目的周期,或者雙方在初期的約定,定時(shí)通報(bào)軟件研發(fā)的進(jìn)展。如果軟件研發(fā)采用迭代式開(kāi)發(fā),就可以在每一期交付產(chǎn)品發(fā)布時(shí)做這個(gè)事情,征詢(xún)到的用戶(hù)需求將納入以后某期的軟件版本中。
3.為將要頻繁改動(dòng)需求的軟件項(xiàng)目進(jìn)行版本規(guī)劃
如果考慮到軟件項(xiàng)目比較大,周期比較長(zhǎng),如超過(guò)一年,其間的需求變化必然多得不可勝數(shù),建議采用迭代式開(kāi)發(fā),為每個(gè)階段的產(chǎn)品進(jìn)行
版本規(guī)劃。后續(xù)的版本規(guī)劃,一般是需求的分期完善,對(duì)系統(tǒng)的缺陷做持續(xù)改進(jìn)。這個(gè)過(guò)程將一直持續(xù)到軟件的生命周期結(jié)束。第一個(gè)版本一般是包括了軟件系統(tǒng)最基本的功能,用戶(hù)最關(guān)心的功能,它的研發(fā)過(guò)程實(shí)際上還為后續(xù)版本提供了系統(tǒng)構(gòu)架和新技術(shù)探索。一個(gè)按時(shí)交付、質(zhì)量較好的版本可以讓用戶(hù)保持對(duì)項(xiàng)目成功的信心,并給了用戶(hù)在最終產(chǎn)品未出來(lái)之前逐漸接近最終產(chǎn)品的機(jī)會(huì),這個(gè)過(guò)程將使用戶(hù)需求更加明確和完善,以提高最終產(chǎn)品的一次成功的幾率。所以第一個(gè)版本的完成是項(xiàng)目的重要里程碑,建議項(xiàng)目組在此時(shí)舉行慶祝會(huì)來(lái)提高凝聚力,鼓舞員工士氣。