3.项目管理

  当企业构架了合理的组织结构并制定了缜密的计划后,进入了产品的开发阶段。在这个阶段中,项目管理起了重要作用,它所涉及的环节相当具体复杂,下面先介绍一下A公司在项目管理上的具体细节:

  (1)开发阶段和项目周期
  开发阶段比较明显,注重各阶段应完成的功能,对本阶段应完成的工作不能留到下一阶段。
 
  (2)流程

  * A公司对流程比对项目更重视。
  * 软件开发流程非常规范和系统化,其流程的可执行性很高,并且能在实践过程中不断改进。A公司的流程已覆盖到了一个项目研发的所有方面,包括从开始的意向到后软件的版本发布(release),都有相应的流程规定,基本上已形成一种工业化的软件开发。
  * 人和流程是保证项目成功的两个关键因素。由好的人按好的流程进行项目开发,才能大限度地保证项目的成功。一个好的流程可以保证差的人做出来的东西不至于太差,但不能确保做出精品。通过流程可以实现一种规范化、流水线化、工业化的软件开发。

  (3)计划

  1) 计划详细、周到。

  2) 流程中明确定义开发阶段。
 
  3) 每个阶段都列出了该阶段的各项活动,并详细描述每项活动的属性:
  * 进入条件,输入;
  * 验证方法;
  * 结束条件,输出。

  4)每个阶段结束都要召开阶段结束会议。前一个阶段结束才能进入下一阶段。

  5)计划中每个活动都比较具体,每个活动的时间以天(半天)为单位。计划包括了开展质量控制活动的时间。

  (4)Review

  按印度公司流程,一般把Review和测试作为保证软件质量两个主要手段。测试的重要性不需说明了,而Review则是一个非常简单有效并能尽早发现软件中错误的方法,可以说,任何交付物都要经Review后才能进行基线化。目前A公司有很详细全面、可执行性很高的Review流程和各种交付物的Review Checklist。

  在印度软件企业,现有这么一句口号:凡事有计划,凡事必review。

  (5)QA

  QC(质量经理)作为质量保证部门(SQA)的代表,监督和保证项目的进展遵循QMS各项流程和模板,并且收集项目中发现的一些问题和解决方法以优化流程。

  (6)度量数据

  CMM中比较强调用数据说话,对项目过程中基本上所有的数据都会有记录,后把收集的数据提交质量保证部门进行分析,以改进流程。A公司的项目经理和质量经理很重视项目中的数据收集,包括各种Review数据、测试数据以及项目组员每天的活动数据等。项目经理也要维护一个项目档案,在这个项目档案中可以说包含了项目开发过程中所有的产出、开发活动、管理活动等的记录。可以这么说,有了这个项目档案,你可以完全了解这个项目的开发过程。

  (7)团队精神

  印度公司都比较强调团队精神、合作精神,应该说,其流程本质上要求员工之间的互相协调和理解。相对而言,印度员工的合作精神和协调精神都比我国员工要好得多。

  (8)培训

  印度公司都比较强调培训,一般有专门的培训部门进行协调。在新员工进入公司后都会有公司流程和其他一些公司普遍章程的培训,以保证员工对流程的理解和执行。对于具体项目,项目经理在制定项目计划时会在项目计划中提出所有的培训需求,包括技术上的培训和其他所需的培训。

  (9)配置管理
  在项目正式开展前,项目经理要制定配置管理计划,并且指定配置管理员建立起配置管理库,按配置流程严格进行配置管理。在配置流程中也详细提供了对更改的控制,没有经过批准的更改请求是不能进行的。
  (10)记录

  记录及时、充分、比较准确。这些记录包括:重要的邮件、会议纪要、审核记录、缺陷报告、测试报告。
 
  1)与客户和其他项目组的所有往来必须邮件记录。

  2)对所有的活动都有一个跟踪落实的过程,比如对所有的Review记录和更改请求都会有一个状态标识,标识其当前状态,通过跟踪其状态来监督其落实。

  3)对所有的活动,包括对文档和代码的更改都会有一个历史记录。

  4)记录比较准确、比较客观。

  5)许多记录都是通过定量的数值记录,强调以数据说话(CMM4级的重点是量化管理)。

  以上是A公司在项目管理中所涉及到的一些主要环节,很值得国内的软件企业在制定项目管理规划时借鉴。除此之外,我国的软件企业在产品开发管理的过程中,还易出现以下几个方面的问题:

  1)需求说明差─需求不清楚、不完整、太概括、或者不可测试,都会造成问题。

  2)不切实际的时间表─如果在很短的时间里要求做许多事,出现错误是不可避免的。

  3)测试不充分─只能根据客户意见或系统崩溃来判断系统的质量。

  4)不断增加功能─在开发正在进行过程中要求增加许多新的功能。这是常见的问题。

  5)交流问题─如果开发人员对客户的要求不了解,或者客户由不恰当的期望,必然会导致错误。