大家知道,項(xiàng)目的時間、成本及質(zhì)量的三大要素是缺一不可。這三方面的符合程度直接決定了項(xiàng)目的成敗與否。項(xiàng)目結(jié)束了,終于閑出空來寫些東西。有了以前的經(jīng)驗(yàn)教訓(xùn),這次在做項(xiàng)目的時候,我對時間的控制很關(guān)注,最后也基本上達(dá)到了計(jì)劃的要求。
但最終交付產(chǎn)品的質(zhì)量卻讓我不太滿意:客戶在做接受測試的時候發(fā)現(xiàn)了很多的問題,而且在我們進(jìn)行修改的同時,又有BUG源源不斷的報(bào)過來。甚至把更新的版本發(fā)給客戶以后,還會發(fā)現(xiàn)不少問題,給客戶留下了很不professional的印象。
為什么問題總是要到項(xiàng)目快結(jié)束的時候才會出現(xiàn)呢?軟件的質(zhì)量為何不好?究竟是誰動了項(xiàng)目的質(zhì)量?但事實(shí)上,想達(dá)到一個完美的等邊三角形幾乎是不可能完成的任務(wù)。這次的項(xiàng)目就讓項(xiàng)目質(zhì)量這個角短了很多,質(zhì)量的問題暴露地很明顯。所以,接下來,我就從項(xiàng)目的流程角度出發(fā),一步步地分析到底是哪里出了質(zhì)量問題。
1、分析階段
項(xiàng)目的開始階段,也是質(zhì)量控制的開始。在這個階段中,主要的工作是從客戶方獲得足夠多的項(xiàng)目需求,并準(zhǔn)確地記錄在案,而且要使得項(xiàng)目組的成員對于需求足夠得了解。先說說這個項(xiàng)目的基本情況:一個信息管理系統(tǒng),而且是在原來的版本上進(jìn)行的功能增加。項(xiàng)目組的成員,除了我以前參加了前一個版本的開發(fā),其它的人員都不了解這個項(xiàng)目。
就是這樣的一個項(xiàng)目,在開始階段,我先是安排了組員對以前版本的需求文檔進(jìn)行了閱讀,并安裝使用了軟件。隨后對新的需求進(jìn)行了研究,分析了它們對于原有系統(tǒng)的影響。由于是在舊有系統(tǒng)的文檔進(jìn)行增加,所以加入的新內(nèi)容并不是很多,需求文檔很快就完成了。所謂的分析階段的里程碑也就結(jié)束了。
在需求階段"順利"結(jié)束的同時,問題也隨之留下來,并對后面的階段起到了"乘數(shù)效應(yīng)"――影響變得越來越大:
A. 對舊系統(tǒng)的理解不足
由于開發(fā)人員沒有參與過上一個版本的開發(fā)工作,他們對于舊系統(tǒng)并不了解.雖然在閱讀了以前的需求文檔以及使用了軟件之后,大概對系統(tǒng)的功能有了一個初步的認(rèn)識.但是對于系統(tǒng)中出現(xiàn)的各種邏輯關(guān)系并沒有深入了解下去.作為項(xiàng)目經(jīng)理,在這項(xiàng)工作中,失誤之處在于任務(wù)的結(jié)果(即輸出)沒有事先定義清楚,從而也就導(dǎo)致無法確認(rèn)目標(biāo)是否已經(jīng)達(dá)到,再加上需求文檔描述的也不是十分清晰.最后,只是在開發(fā)人員覺得已經(jīng)理解該系統(tǒng)的基本上,進(jìn)行了下一步的工作.沒有進(jìn)行進(jìn)一步的確認(rèn)工作,不知道組員進(jìn)行舊系統(tǒng)已經(jīng)了解到了什么樣的程度。
這個問題的結(jié)果,就是直接導(dǎo)致了后期的開發(fā)過程中,由于對于原先系統(tǒng)的邏輯關(guān)系不是很清楚。對于舊代碼理解和新代碼編寫進(jìn)行地不是很順利。
B. 對新需求的分析不夠
這還是個老問題,但又不是一個問題.說它是個老問題,因?yàn)榉治鲂枨笠罂紤]細(xì)致全面,并且能引導(dǎo)客戶,啟發(fā)客戶提供更有價值的信息。事實(shí)上,需求分析我們做的算是很盡力了,同時客戶把需求一條條的列出來給我們,相對來說需求已經(jīng)很清楚了。我們在接到這些需求后,不僅研究了新功能,還把他們對于舊系統(tǒng)的影響都做了分析。
但還是有些問題沒有能在需求文檔中反映出來,后面的影響也是可想而知的了。我以前的文章中才曾提到過相關(guān)的問題,在這里就不再重復(fù)了。不過,從另一個角度來看,它又不是一個問題。為什么這么說呢,因?yàn)樾枨髮?shí)在不是能夠在分析階段就能完全理解透徹的,甚至有的需求客戶也模模糊糊,直到交付以后才提出了改動的要求。軟件開發(fā)經(jīng)過這么多年的發(fā)展,大家已經(jīng)認(rèn)識到了一點(diǎn):需求是變化的。要達(dá)到能夠擁抱變化的要求,我們要對開發(fā)方法進(jìn)行改進(jìn),相關(guān)的問