如果把软件开发项目比作一盘围棋,项目收尾就是到了胜负关键的时刻,一不小心就有可能前功尽弃、满盘皆输。历时一年多的软件开发项目终于快要结束了,对我来说这意味着没日没夜疯狂加班的苦日子要熬到头了。开发组成员接二连三地相互表示祝贺,看到这种情况我一脸苦笑,快要看到胜利的曙光这话说得早了点,还是想想该怎么对付黎明前的黑暗吧。
1、充满血泪的项目收尾
众所周知,一个完整的软件项目生命周期在RUP(Rational Unified Process,统一软件开发过程)方法中可以分为:初始需求分析、业务建模、设计阶段、编码和测试、交付部署与收尾阶段等几个过程。在初始阶段项目发生风险损失是最小的,比如在这个阶段如果突然资金来源断了,以至于不能继续进行而不得不终止项目,那么这时候的损失只是需求分析阶段的投入。但随着项目进展风险对项目的损失逐渐变大,快到收尾阶段的时候如果发生重大风险将产生最大的项目损失,严重时可能会烂尾或收不到结算款,这对软件开发项目来说是最大的打击。
但让人非常遗憾的是,在软件开发项目中项目收尾过程和工作往往不被大家重视。有时是因为项目任务繁重,开发组为了按时完成任务正忙于埋头赶工,或一大堆的问题急需解决,有时是项目经理干脆就把该项工作给忽略了。因此,在谈到项目收尾时,可能大家都有一大段牢骚话要说,其中的血泪史更是数不胜数。例如,谁都可能经历过在项目"接近"结束的时候突然陷入困境的情况,以为已经干完了"该干的事情",但客户却不断的提出新要求,结果拿起合同一看。天啊,不但在许多细节需求上丢三落四,而且还可能在重大需求上也存在着缺失,如果客户一定要一项一项地对合同的话,项目根本就不可能验收通过。
准确定义软件开发项目收尾
项目收尾根据PMI(美国项目管理协会)的概念,工作内容包括:项目范围重新确认和质量验收,就是说项目验收前重新审核工作成果,检验各项工作范围是否完成,或者完成到何种程度。如果是外部开发项目还有费用结算,例如对从项目开始到项目结束全过程所支付的全部费用进行核算,编制项目决算表的过程。最后,还有合同终结,例如整理并存档各种合同文件。
简单的说,软件开发收尾一般分为合同收尾和管理收尾两部分。合同收尾就是抓起合同,和客户(无论是内部客户还是外部客户)一项一项的核对,是否完成了合同所有的要求,是否可以把项目结束掉,也就是通常所说的项目验收。管理收尾是说把开发期间的所有项目文档整理和归档的过程,例如收集需求分析文档、编码文档、测试文档、会议记录,当然还有阶段性总结报告等。
(1)合同收尾
合同收尾就是了结开发合同并结清帐目,包括解决所有尚未了结的事项。合同收尾需要对整个项目开发过程进行系统地审查,找出合同上签订的事项是否已经完成任务。据经验分析,软件开发项目也象众多的工程项目收尾一样,合同收尾是最容易产生问题的时候。就象经常提到的80/20理论,花了计划的80%的时间以为完成了项目80%的工作,结果剩余的20%的收尾工作又要花80%的计划时间来完成。
因此,合同收尾往往是软件开发经理最为头痛的事情,理想的情况下既要使客户和用户对软件满意,又要使公司顺利地收到项目资金,造就一个"双赢"的局面。但实际中,软件开发项目先天就有很多不确定因素,比如软件功能需求人员在并不清楚项目的具体细节和难度的时候所许诺的事情根本就是一个泥潭,还有由于用户需求不明确造成的不断变更需求等。
(2)管理收尾