需求變更控制
前面已經(jīng)說過了,在軟件開發(fā)項(xiàng)目開始之前,就要消除“絕不允許發(fā)生需求變更”的思想。在項(xiàng)目進(jìn)行,一旦發(fā)生需求變更,更不要不一味的抱怨,也不要去一味地迎合客戶的“新需求”,而是要管理和控制需求變更。
1、 分級(jí)管理客戶需求
軟件開發(fā)項(xiàng)目中,“客戶永遠(yuǎn)是對(duì)的”和“客戶是上帝”并不完全的正確,因?yàn)樵谝呀?jīng)簽定的項(xiàng)目合同中,任何新需求的變更和增加除了影響項(xiàng)目的正常進(jìn)行以外,還影響到了客戶的投入收益,所以有的時(shí)候項(xiàng)目經(jīng)理反倒應(yīng)該為客戶著想。
對(duì)于項(xiàng)目中的需求,可以實(shí)行分級(jí)管理,以達(dá)到對(duì)需求變更的控制和管理。
一級(jí)需求(或變更)是關(guān)鍵性的需求,這種需求如果不滿足,意味著整個(gè)項(xiàng)目不能正常交付使用,前期工作也會(huì)被全部否定。這個(gè)級(jí)別的需求是必須滿足的,否則就意味著否定自已的項(xiàng)目成員和成員的所有努力,所以定為“Urgent”。 這通常是屬于補(bǔ)救性的debug類型,要救火。
二級(jí)需求(或變更)是后續(xù)關(guān)鍵性需求,它不影響前面工作內(nèi)容的交付,但不加以滿足,新的項(xiàng)目?jī)?nèi)容無法提交或繼續(xù),所以是“Necessary”。一般新模塊關(guān)鍵性的基礎(chǔ)組件,屬于這個(gè)級(jí)別。
三級(jí)需求是后續(xù)重要的需求,如果不被滿足會(huì)令整體項(xiàng)目工作的價(jià)值下降,為了體現(xiàn)項(xiàng)目?jī)r(jià)值,也是開發(fā)人員自已的技術(shù)價(jià)值的證明,所以定為“Needed”。一般性的重大的有價(jià)值的全新模塊開發(fā),屬于這個(gè)級(jí)別。 項(xiàng)目管理者聯(lián)盟,項(xiàng)目管理問題。
以上三個(gè)等級(jí)是應(yīng)該實(shí)施的,但時(shí)間性上可以作優(yōu)先級(jí)的排列。
四級(jí)需求是改良性需求,沒有滿足這類需求并不影響已有功能的使用,但如果實(shí)現(xiàn)了則會(huì)更好,定級(jí)為“Better”。界面和使用方式的需求,一般在這個(gè)檔次。
五級(jí)需求是可選性需求,更多的是偶是一種設(shè)想,以及一種可能,通常只是客戶的的一種個(gè)人喜好而已,定級(jí)為“Maybe”。
對(duì)于四級(jí)需求,如果時(shí)間和資源條件都允許的話,不妨做下去。對(duì)于五級(jí)需求,正如對(duì)它的描述一樣,做與不做是“Maybe”。
2、全生命周期的需求變更管理
各種規(guī)模和類型的軟件項(xiàng)目的生命周期大致可以分為三個(gè)階段,即項(xiàng)目啟動(dòng)、項(xiàng)目實(shí)施、項(xiàng)目收尾。不要以為需求變更的管理和控制只是發(fā)生在項(xiàng)目實(shí)施階段,而是要貫穿在整個(gè)項(xiàng)目生命周期的全過程中。
站在全局角度的需求變更管理,需要采用綜合變更控制的方法。
(1) 項(xiàng)目啟動(dòng)階段的變更預(yù)防
正如前面強(qiáng)調(diào)的,對(duì)于任何軟件項(xiàng)目,需求變更都無可避免,也無從逃避,無論是項(xiàng)目經(jīng)理還是開發(fā)人員只能積極應(yīng)對(duì),而這個(gè)應(yīng)對(duì)應(yīng)該是從項(xiàng)目啟動(dòng)的需求分析階段就開始了。
對(duì)一個(gè)需求分析做得很好的項(xiàng)目來說,基準(zhǔn)文件定義的范圍越詳細(xì)清晰,用戶跟項(xiàng)目經(jīng)理提出需求變更的幾率就越小。如果需求沒做好,基準(zhǔn)文件里的范圍含糊不清,被客戶發(fā)現(xiàn)還有很大的“新需求空間”,這時(shí)候項(xiàng)目組往往要付出許多無謂的犧牲。
如果需求分析做得好,文檔清晰且又有客戶簽字,那么后期客戶提出的變更就超出了合同范圍,需要另外收費(fèi)。這個(gè)時(shí)候,項(xiàng)目經(jīng)理一定要據(jù)理力爭(zhēng),此時(shí)這并非要刻意賺取客戶的錢財(cái),而是不能讓客戶養(yǎng)成經(jīng)常變更的習(xí)慣,否則后患無窮。
(2) 項(xiàng)目實(shí)施階段的需求變更
成功的軟件項(xiàng)目和失敗項(xiàng)目的區(qū)別就在于項(xiàng)目的整個(gè)過程是否是可控的。
項(xiàng)目經(jīng)理應(yīng)該樹立一個(gè)理念,即“需求變更是必然的、可控的,并且是有益的”。項(xiàng)目實(shí)施階段的變更控制需要做的是分析變更請(qǐng)求,評(píng)估變更可能帶來的風(fēng)險(xiǎn)和修改基準(zhǔn)文件。
控制需求漸變需要注意以下幾點(diǎn):
需求一定要與投入有聯(lián)系,如果需求變更的成本由開發(fā)方來承擔(dān),則項(xiàng)目需求的變更就成為必然了。所以,在項(xiàng)目的開始,無論是開發(fā)方還是出資方都要明確這一條:需求變,軟件開發(fā)的投人也要變。
需求的變更要經(jīng)過出資者的認(rèn)可,這樣才會(huì)對(duì)需求的變更有成本的概念,能夠慎重地對(duì)待需求的變更。
小的需求變更也要經(jīng)過正規(guī)的需求管理流程,否則會(huì)積少成多。
在實(shí)踐中,人們往往不愿意為小的需求變更去執(zhí)行正規(guī)的需求管理過程,認(rèn)為降低了開發(fā)效率,浪費(fèi)了時(shí)間。但正是由于這種觀念才使需求逐漸變?yōu)椴豢煽兀罱K導(dǎo)致項(xiàng)目的失敗。
精確的需求與范圍定義并不會(huì)阻止需求的變更。
并非對(duì)需求定義得越細(xì),就越能避免需求的漸變,這是兩個(gè)層面的問題。太細(xì)的需求定義對(duì)需求漸變沒有任何效果。因?yàn)樾枨蟮淖兓怯篮愕模⒎切枨髮懠?xì)了,它就不會(huì)變化了。
注意溝通的技巧。
項(xiàng)目開發(fā)過程中的實(shí)際情況是用戶、開發(fā)者都認(rèn)識(shí)到了上面的幾點(diǎn)間題,但是由于需求的變更可能來自客戶方,也可能來自開發(fā)方,因此,作為需求管理者,項(xiàng)目經(jīng)理需要采用各種溝通技巧來使項(xiàng)目的各方各得其所。