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