输出作为此过程的输入,实际情况中我们会选用改良的V模型,一些过程可以并行,例如需求规格完成后,可以系统测试计划和概要设计并行。在实际项目管理中开发模型生命周期中各过程的输出宜作为milestone(里程碑)设置计划控制点。
时间、质量和成本是衡量项目成功的三要素,时间和成本因为有形比较容易监控,质量控制在软件开发项目中非常重要了,所以我们很多过程和活动(文档review、代码走读、单元测试、集成测试、系统测试、以及各过程的需求反馈追踪等)都是保障质量的活动。现在好多项目都特别重视了系统测试(包括功能测试、性能测试等),但是忽略了单元测试。单元测试是所有测试中最底层的一类测试,是第一个环节,也是最重要的一个环节;是唯一一次有保证能够代码覆盖率达到100%的测试,是整个软件测试过程的基础和前提;单元测试防止了开发的后期因BUG过多而失控;单元测试的性价比是最好的。在项目中我们引入了TDD单元测试实践,并关注了编译检查、代码走读,以及在等价类、边界值、因果图等方法下的黑盒功能测试和达到覆盖率指标下自动单元测试代码的白盒测试。并将XP方法中的Nightly Test实践达到代码和测试代码的每日building。
Review活动在我们的项目中重视度很高,我们的一些评审制度,评审首先进行小组内部预评审,内部评审模版记录提交项目经理和评审组织者;正式评审可以先走email评审,评审对象完成人将评审文档或其他可交付物提前一天email给所有评审人,请评审人各自将意见email给评审组织者,评审组织者按评审人员汇总整理意见,提交第二天讨论。讨论后,评审结果记录和每人评审意见列入文档考核绩效。
软件开发项目中风险管理,风险管理不只是项目经理估计风险,我们风险管理采用了全员的头脑风暴法,并按权重进行TOP10列表管理。针对TOP10风险,制定相应风险应对计划。在软件开发中,主要的风险有技术风险,所以风险应对计划是项目计划前期的技术验证和测试,需求不确定等风险的应对计划是原型和迭代的开发方法。例如在界面越来越重要的今天,需求规格中会做出原型界面并提前得到客户方的review是很好的风险应对计划 。
沟通是监督、控制的基础,是推动项目执行的基础,更是减少冲突的良方。有项调查项目经理90%时间在沟通。的确沟通占用了项目经理的大部分时间,因为项目经理是面对项目干系人最多的角色。在项目沟通方面,作为项目经理应周期性向机构管理层和客户报告项目的技术、进度、费用、质量方面的状况;在客户面前全面代表所在机构,与客户建立和维持友好和开放的关系,直接面向客户的项目经理是客户与所在机构最关键的联系点;做一个项目沟通的推动者、避免项目中出现沟通的遏制者;为项目沟通积极创造环境,包括集中工作;保证所有会议的高效率。项目经理要根据不同人员和不同情况下的问题选择最合适的沟通方式(电话、传真、Email、口头、即时通信工具、报告、会议、私下交流等),来达到好的沟通效果。如果项目中出现与干系人等的问题,首先要检查沟通计划了。现在好多沟通事项是只装在项目经理的脑子中的,如何做好项目的沟通计划,是项目经理要培养成习惯的一个重要技能。这在我们软件项目中尤甚。例如员工流动始终是软件行业的一个显著特征,所以项目经理在处理此类问题时沟通计划就非常重要了。曾经我们一个项目开发中,一个team leader 想离职技术移民到加拿大,由于前期不知是否能办好也不知道什么时候能办好,所以没有声张,等办好后,离离职就只有很短的时间了,而项目到了非常重要的时期,他们team成立不久,其他成员均无太多经验