歷時(shí)一年多的軟件開發(fā)項(xiàng)目終于快要結(jié)束了,對(duì)我來說這意味著沒日沒夜瘋狂加班的苦日子要熬到頭了。開發(fā)組成員接二連三地相互表示祝賀,看到這種情況我一臉苦笑,快要看到勝利的曙光這話說得早了點(diǎn),還是想想該怎么對(duì)付黎明前的黑暗吧。如果把軟件開發(fā)項(xiàng)目比作一盤圍棋,項(xiàng)目收尾就是到了勝負(fù)關(guān)鍵的時(shí)刻,一不小心就有可能前功盡棄、滿盤皆輸。
充滿血淚的項(xiàng)目收尾
眾所周知,一個(gè)完整的軟件項(xiàng)目生命周期在RUP(Rational Unified Process,統(tǒng)一軟件開發(fā)過程)方法中可以分為:初始需求分析、業(yè)務(wù)建模、設(shè)計(jì)階段、編碼和測(cè)試、交付部署與收尾階段等幾個(gè)過程。在初始階段項(xiàng)目發(fā)生風(fēng)險(xiǎn)損失是最小的,比如在這個(gè)階段如果突然資金來源斷了,以至于不能繼續(xù)進(jìn)行而不得不終止項(xiàng)目,那么這時(shí)候的損失只是需求分析階段的投入。但隨著項(xiàng)目進(jìn)展風(fēng)險(xiǎn)對(duì)項(xiàng)目的損失逐漸變大,快到收尾階段的時(shí)候如果發(fā)生重大風(fēng)險(xiǎn)將產(chǎn)生最大的項(xiàng)目損失,嚴(yán)重時(shí)可能會(huì)爛尾或收不到結(jié)算款,這對(duì)軟件開發(fā)項(xiàng)目來說是最大的打擊。
但讓人非常遺憾的是,在軟件開發(fā)項(xiàng)目中項(xiàng)目收尾過程和工作往往不被大家重視。有時(shí)是因?yàn)轫?xiàng)目任務(wù)繁重,開發(fā)組為了按時(shí)完成任務(wù)正忙于埋頭趕工,或一大堆的問題急需解決,有時(shí)是項(xiàng)目經(jīng)理干脆就把該項(xiàng)工作給忽略了。因此,在談到項(xiàng)目收尾時(shí),可能大家都有一大段牢騷話要說,其中的血淚史更是數(shù)不勝數(shù)。例如,誰都可能經(jīng)歷過在項(xiàng)目"接近"結(jié)束的時(shí)候突然陷入困境的情況,以為已經(jīng)干完了"該干的事情",但客戶卻不斷的提出新要求,結(jié)果拿起合同一看。天啊,不但在許多細(xì)節(jié)需求上丟三落四,而且還可能在重大需求上也存在著缺失,如果客戶一定要一項(xiàng)一項(xiàng)地對(duì)合同的話,項(xiàng)目根本就不可能驗(yàn)收通過。
準(zhǔn)確定義軟件開發(fā)項(xiàng)目收尾
項(xiàng)目收尾根據(jù)PMI(美國項(xiàng)目管理協(xié)會(huì))的概念,工作內(nèi)容包括:項(xiàng)目范圍重新確認(rèn)和質(zhì)量驗(yàn)收,就是說項(xiàng)目驗(yàn)收前重新審核工作成果,檢驗(yàn)各項(xiàng)工作范圍是否完成,或者完成到何種程度。如果是外部開發(fā)項(xiàng)目還有費(fèi)用結(jié)算,例如對(duì)從項(xiàng)目開始到項(xiàng)目結(jié)束全過程所支付的全部費(fèi)用進(jìn)行核算,編制項(xiàng)目決算表的過程。最后,還有合同終結(jié),例如整理并存檔各種合同文件。
簡單的說,軟件開發(fā)收尾一般分為合同收尾和管理收尾兩部分。合同收尾就是抓起合同,和客戶(無論是內(nèi)部客戶還是外部客戶)一項(xiàng)一項(xiàng)的核對(duì),是否完成了合同所有的要求,是否可以把項(xiàng)目結(jié)束掉,也就是通常所說的項(xiàng)目驗(yàn)收。管理收尾是說把開發(fā)期間的所有項(xiàng)目文檔整理和歸檔的過程,例如收集需求分析文檔、編碼文檔、測(cè)試文檔、會(huì)議記錄,當(dāng)然還有階段性總結(jié)報(bào)告等。
(1)合同收尾
合同收尾就是了結(jié)開發(fā)合同并結(jié)清帳目,包括解決所有尚未了結(jié)的事項(xiàng)。合同收尾需要對(duì)整個(gè)項(xiàng)目開發(fā)過程進(jìn)行系統(tǒng)地審查,找出合同上簽訂的事項(xiàng)是否已經(jīng)完成任務(wù)。據(jù)經(jīng)驗(yàn)分析,軟件開發(fā)項(xiàng)目也象眾多的工程項(xiàng)目收尾一樣,合同收尾是最容易產(chǎn)生問題的時(shí)候。就象經(jīng)常提到的80/20理論,花了計(jì)劃的80%的時(shí)間以為完成了項(xiàng)目80%的工作,結(jié)果剩余的20%的收尾工作又要花80%的計(jì)劃時(shí)間來完成。
因此,合同收尾往往是軟件開發(fā)經(jīng)理最為頭痛的事情,理想的情況下既要使客戶和用戶對(duì)軟件滿意,又要使公司順利地收到項(xiàng)目資金,造就一個(gè)"雙贏"的局面。但實(shí)際中,軟件開發(fā)項(xiàng)目先天就有很多不確定因素,比如軟件功能需求人員在并不清楚項(xiàng)目的具體細(xì)節(jié)和難度的時(shí)候所許諾的事情根本就是一個(gè)泥潭,還有由于用戶需求不明確造成的不斷變更需求等。
(2)管理收尾
管理收尾是指對(duì)項(xiàng)目驗(yàn)收正式化而進(jìn)行的項(xiàng)目資料的移交和歸檔。具體包括開發(fā)記錄、功能需求對(duì)照表、測(cè)試記錄、項(xiàng)目階段性進(jìn)度報(bào)告等。因此,管理收尾做得是否