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