【导读】软件项目管理的实质是软件项目计划的编制和软件项目计划的跟踪控制,这里计划是项目成功实施的指南和跟踪控制的依据,而跟踪控制又保证项目计划的成功执行。本文以实例具体分析在软件开发过程中如何进行这两项工作。
在软件项目中有两条非常重要的线索,一条是软件项目开发过程,另外一条是软件项目管理过程。通常,人们容易注意软件项目开发过程,而忽略软件项目管理过程的线索。事实上,后者很重要,有时其重要性甚至超过项目开发过程。项目管理可以让一个项目获得高额的盈利也可以让一个项目损失惨重,而编码的影响力则相对小一些。现实中由于出色的项目管理,将已经亏损很严重的项目又重新扭亏为盈的例子并不少见。
项目管理在生活中的例子很多。例如进行一次商品采购,你会在一张纸上记录所有需要购买的东西(即采购清单),这个采购清单帮助你不要遗漏采购项,你可以采用“完成一个采购项,在采购清单上打一个勾”的方法协助你完成采购。与此类似,软件项目管理也是如何管理好软件项目的内容、花费的时间(进度)以及花费的代价(规模成本)。为此需要制定一个好的项目计划,然后控制好这个计划。编制软件项目计划、跟踪控制软件项目计划这是软件项目管理的实质。其中,计划是项目成功实施的指南和跟踪控制的依据,而跟踪控制是项目计划成功执行的保证。
确定软件项目开发的策略
项目经理的首要任务是编制项目计划。项目计划有三大核心目标: 确定项目范围、项目预算、项目进度,即明确项目做什么、花多少钱、需要多长时间。为了制定一个合理有效的计划,项目经理需要从项目需求开始确定项目范围,然后将项目的需求进行分解,以便于估算、安排资源和合理的进度等。这样形成了三个核心计划: 范围计划、成本计划和进度计划。此外,作为完整的项目计划,质量计划、风险计划、沟通计划等同样也必不可少。没有质量管理的项目是失败的项目,没有风险管理的项目会时时处于风险之中,没有沟通的项目是很难完成的。项目规划从合同阶段开始了,其实任何一个合同的主要内容也是确定项目的范围、时间和成本。
软件项目终的结果是根据用户的需求提交一个用户满意的产品,这是一个从无到有的过程。因此计划首先应该确定项目开发的策略,即项目的生存期模型。瀑布、V、原型、螺旋、渐进式阶段提交等模型是几种常见的生存期模型,渐进式阶段提交模型体现了软件项目渐进性的特点,同时,分阶段提交项目结果,也有利于软件项目开发。RUP(Rational的统一过程)提及的软件项目生存期模型是一种渐进式阶段提交模型。图1的模型是笔者曾经参与的一个银行业务系统的生存期模型,它是渐进阶段提交的模型。
图1 某银行业务系统渐进式阶段提交模型
如果项目周期不是很长,可以不分阶段提交结果,而只是分阶段开发,这样渐进式阶段提交模型演化为增量模型。例如笔者曾完成的一个《校务通管理平台信息系统》项目,它是对学校教务和教学活动进行综合管理的平台系统。尽管分阶段实施项目是比较理想的项目管理模型,但是由于这个项目不大,没有必要分阶段提交一个执行系统,所以采用增量的模型。
生存期模型中可以定义软件开发中采用的过程、程序,如果过程定义得很明确,或者过程定义的操作性很强,那么作为工厂化的软件开发会很顺利,项目管理的过程也会很顺利,所以在软件项目中的这两条线索也是相辅相成的。
制定项目核心计划
项目的核心计划是范围、时间、成本的确定,这三方面并不是截然分开的,而在项目计划的制定过程中相互交织。
确定项目范围要从需求入手,将一个项目分解为更多的工作细目或者子项目,使项目变得更小、更易管理、更易操作。目的是为了提高估算(成本、时间和资源)的准确性,使工作变得更易操作,责任分工更加明确。任务分解的结果是WBS (Work Breakdown Structure)。只有在WBS中的工作才属于该项目的工作范围。
任务分解之后,可以根据分解的结果,估算任务的规模、成本,同时可以根据分解的结果进一步分解详细的项目活动,以便安排任务之间的关联关系,估算每个任务的工期,然后进一步估算项目总的工期。