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