在項(xiàng)目管理過(guò)程中,項(xiàng)目經(jīng)理經(jīng)常面對(duì)用戶的需求變更,如果不能有效處理這些需求變更,項(xiàng)目計(jì)劃會(huì)一再調(diào)整,軟件交付日期一再拖延,項(xiàng)目研發(fā)人員的士氣將越來(lái)越低落,將直接導(dǎo)致項(xiàng)目成本增加、質(zhì)量下降及項(xiàng)目交付日期推后。這就決定了項(xiàng)目組必須擁有需求管理策略和有效的落地。
在軟件項(xiàng)目的開(kāi)發(fā)過(guò)程中,需求管理貫穿了軟件項(xiàng)目的整個(gè)生命周期,在軟件項(xiàng)目管理中需求工程是軟件開(kāi)發(fā)的第一步,是關(guān)鍵的一步,也是最難把握的一步。從軟件的項(xiàng)目立項(xiàng)、研發(fā)、維護(hù),用戶的經(jīng)驗(yàn)在增加,對(duì)使用軟件的感受有變化,以及整個(gè)行業(yè)的新動(dòng)態(tài),都為軟件帶來(lái)不斷完善功能、優(yōu)化性能、提高用戶友好性的要求。需求管理做得好壞直接影響到軟件的質(zhì)量,甚至軟件項(xiàng)目的成敗。
讓我們一起來(lái)回顧一下實(shí)際研發(fā)過(guò)程中,通常會(huì)面臨到的需求管理挑戰(zhàn):
1、缺乏需求的集中管理
按照需求工程的說(shuō)法,在進(jìn)入開(kāi)發(fā)環(huán)節(jié)之前,開(kāi)發(fā)團(tuán)隊(duì)和客戶之間需要形成一份完整的需求規(guī)格說(shuō)明書(shū),詳細(xì)地說(shuō)明目標(biāo)軟件的各種需求,這其中包括功能性需求、非功能性需求和其他各種約束。在典型的瀑布模型中,需求規(guī)格說(shuō)明書(shū)是在需求分析階段完成的。然而,由于軟件外部環(huán)境的變化,很少有哪個(gè)項(xiàng)目在需求分析階段就能將所有可能的需求準(zhǔn)確無(wú)誤地包含進(jìn)來(lái),并且在開(kāi)發(fā)階段不需要修改,一句話,需求的變更是不可避免的。需求的變更也需要及時(shí)地反應(yīng)到需求管理中。
除此之外,在實(shí)際的敏捷軟件開(kāi)發(fā)中,對(duì)開(kāi)發(fā)而言,需求的來(lái)源不一定像瀑布模型那樣完善的需求規(guī)格說(shuō)明書(shū),而通常有以下幾種:
1)客戶初始的業(yè)務(wù)需求:很多客戶可能只會(huì)告訴我們,它想做一個(gè)系統(tǒng)或者工具平臺(tái),大致是什么樣子,應(yīng)該具備哪些功能,但這種需求往往比較抽象,缺乏細(xì)致的分析。這種需求可能源自于一次交談,或者一封Email,形式上并不正式。
2)客戶對(duì)項(xiàng)目快速原型的反饋意見(jiàn):對(duì)于需求,在實(shí)際項(xiàng)目開(kāi)發(fā)中,客戶關(guān)注的業(yè)務(wù)功能,項(xiàng)目經(jīng)理關(guān)注的是抽象設(shè)計(jì),而開(kāi)發(fā)人員關(guān)注的卻是具體實(shí)現(xiàn)。在項(xiàng)目初期,客戶往往也不是很清楚他們要什么,或者理想中的產(chǎn)品到底最后會(huì)是什么樣的,界面布局,操作流程等等。這一點(diǎn),在新產(chǎn)品的開(kāi)發(fā)中尤為明顯。
這時(shí)候,就需要開(kāi)發(fā)團(tuán)隊(duì)能夠按照現(xiàn)有的理解快速地開(kāi)發(fā)一個(gè)原型,作為開(kāi)發(fā)團(tuán)隊(duì)和客戶討論和分析需求的共同基礎(chǔ),原型能夠幫助用戶更好地發(fā)掘和定義需求??蛻魧?duì)于原型的論證作為反饋意見(jiàn)也可以使開(kāi)發(fā)團(tuán)隊(duì)更加直觀和感性地認(rèn)識(shí)客戶的需求。
3)客戶對(duì)每個(gè)迭代周期發(fā)布的版本的修改建議
如果該企業(yè)采用的是敏捷開(kāi)發(fā),每個(gè)迭代周期都要發(fā)布一個(gè)可用的版本給客戶,該版本盡可能多地實(shí)現(xiàn)了當(dāng)前迭代周期內(nèi)的需求以及之前迭代周期內(nèi)遺留下來(lái)的需求??蛻粢?yàn)證需求的實(shí)現(xiàn)是否符合他們的要求,并提出修改意見(jiàn)和建議。
4)客戶在研發(fā)周期中的需求變更
需求來(lái)源的特殊性決定了軟件開(kāi)發(fā)過(guò)程中需求管理的特殊性,尤其是對(duì)于一個(gè)同時(shí)承擔(dān)數(shù)個(gè)小項(xiàng)目的開(kāi)發(fā)團(tuán)隊(duì)而言,不同的項(xiàng)目需求是由不同的開(kāi)發(fā)人員或QA分別進(jìn)行管理和跟蹤的,缺乏集中的管理,對(duì)于需求的跟蹤也比較原始。往往是手工整理需求郵件和需求列表,然后形成簡(jiǎn)單的需求文檔,在需求查詢和狀態(tài)維護(hù)方面存在明顯不足。
2、需求變更頻繁
軟件開(kāi)發(fā)的顯著特點(diǎn)之一就是靈活性、機(jī)動(dòng)性、對(duì)變化的快速響應(yīng)能力。尤其是敏捷開(kāi)發(fā)過(guò)程,需求變更更為頻繁。敏捷開(kāi)發(fā)的口號(hào)是擁抱需求變化,也就是說(shuō),開(kāi)發(fā)團(tuán)隊(duì)對(duì)于客戶提出的需求變更通常是抱以歡迎的態(tài)度