软件项目管理涉及范围管理、时间管理、成本管理、质量管理、人力资源管理、沟通管理、风险管理、采购管理、项目综合管理九大知识领域的内容,而其中范围、时间、成本被称为软件项目管理的三约束,又称为“软件项目管理三角形”,项目三角形中的成本,主要来自于所需资源的成本,自然也包括人力资源的成本。为了缩短项目时间,就需要增加项目成本(资源)或减少项目范围;为了节约项目成本(资源),可以减少项目范围或延长项目时间;如果客户需求变化导致增加项目范围,就需要增加项目成本(资源)或延长项目时间。项目范围管理是指对项目包括什么与不包括什么的定义与控制过程。这个过程用于确保项目组和项目干系人对作为项目结果的项目产品以及这些产品用到的过程有一个共同的理解。作为衡量一个项目或项目阶段是否已经顺利完成的标准是项目的范围说明书,项目范围要由项目客户和项目发起人共同地正式认定,范围变更要进行变更控制。对于软件开发过程来说,范围说明书就是软件的需求分析报告,企业在软件项目管理过程中存在以下几个问题:
1.需求描述不清晰
该公司已经通过了IS09001:2000国际质量管理体系认证,现在软件开发项目负责人已经能够做到将用户的需求整理成需求分析报告,交用户签字确认,但他们这样做似乎只是为了达到IS09001质量体系的要求,只是走形式,并没有认识到这样做的重要性。因而存在需求描述不够清晰、不够具体的问题,给用户留下发挥的空间,也给我们公司造成不良影响。例如公司与某农电项目签署的需求说明书中写到‘实现电力营业相关的功能’,我们开发人员认为按签署的合同金额,我们只要完成其主要业务功能,多余的工作会使我们成本过高,也不在需求之内,而用户认为管理、考核功能、综合查询功能都是营业相关功能,都属于需求范围之内,需求未满足,用户不付款。因此我们只能损失利润以便换取用户的满意,造成项目成本超支。
2.用户口头需求不能及时记录,交用户确认的需求经常不能一次提全,随时增加需求.
而由于项目负责人缺少软件项目管理知识,不能及时记录用户口头需求,为了赶进度,为了按期完成任务,也不与用户进一步沟通确认,结果是开发完成的产品用户不认可,用户也很恼火,我明明告诉你这个功能要做成那个样子,你为什么做成这个样子。这就是项目范围未经客户正式认定,沟通也不及时,因理解的不一致造成劳而无功,而且还需要重新返工。
3.用户需求变动缺少有效控制。
用户需求变动也就是项目范围变更,项目变更需要有项目变更委员会评审变更的影响,而用户提出的需求变动经常被开发人员自行消化处理了,而且依旧是没有文字记载,没有用户确认,有的只是为了赶工期,为了不超成本,在程序中打补丁。在软件测试检查文档时解释说需求没来得及修改,等有时间再重新整理需求。而且这样完成的程序结构不够优化,不利于他人阅读理解,甚至留有隐患。
4.需求未能考虑所有的用户
软件项目管理知识体系要求项目范围由项目客户和项目发起人共同地正式认定,这里强调,共同认定,软件开发这个项目也不例外。项目发起人和一两个客户的认定不能代表所有的用户,其他用户不认可,不得不在现场修改程序,这样做不仅程序的质量得不到保证,而且造成工期延误、成本超支。最主要的是用户对我们公司的满意度下降。
5.开发过程中缺少与用户的沟通
软件开发的结果要满足或超越用户的需求和期望,但纸面上的需求分析报告描述得再清晰也不能涵盖用户的所有需求,比如用户对使用灵活性的要求、对软件运行界面的要求,所以在开发过程中应该多与用户沟通,或者请用户参与到项目组中,不能一味地赶进度,埋头苦干,随时沟通才能保证不偏离轨道,才能提升成功率。
由此可见,只强调时间和成本,忽略范围管理,往往会适得其反,不仅时间和成本不能保证,还会引起用户的不满。需求分析又是软件设计、实现、测试直至维护的主要基础。良好的需求分析活动有助于避免或尽早剔除早期错误,从而提升软件生产率,降低开发成本,改进软件质量。所以范围、时间、成本这个“软件项目管理三角形”必须全面协调考虑。除需求问题之外,在软件开发项目中还存在沟通的问题。
前面已经两次提到了沟通的问题,可见有效沟通对项目的成功也是必不可少的,项目经理大致75%的时间应该是用来沟通的,软件开发过程上也是如此,上面提到因与用户缺少沟通,造成对项目范围的不确定,因而造成时间的延误,成本的超支和用户的不满意。其实在我们开发过程中项目组成员内部的沟通不畅也会影响项目进度。
软件开发实践过程中会出现多种因沟通不及时造成的问题,下面列举几项:
1.两名开发人员使用的同一个表的结构竟然不相同;
2.同一个岗位人员使用不同程序登录,登录窗口提取的用户信息不同;
3.两个模块对同一个表同一个字段操作,一个存,一个取,此字段内容以代码存储,但两个模块对此代码的解释不同;
4.开发过程中有设计变动,但未能通知到所有相关开发人员。
以上问题如果因沟通不畅未能及时发现并及时解决,直至软件测试时才发现,此时修改程序花费的代价会增加。这还只是次要问题,重要的是依据测试理论考虑,测试时发现的问题越多,说明程序中未发现的问题也越多。总之,沟通是保持项目顺利进行的润滑剂。
要从根本上解决问题必须有高层领导的重视、支持和参与,而且要从全员培训软件项目管理知识,重点培训合格的项目经理开始做起,缺少合格的项目经理是很多企业软件项目管理失败的主要原因。磨刀不误砍柴工是人人皆知的道理,但真正能够做到确也不容易。
我们知道软件开发过程是属于软件工程,在软件工程中,也涉及到一些管理方面的问题,与项目管理有一些重叠的部分。这是很自然的,但是在软件工程中提到的管理要求,只涉及到与工程方法紧密相关的、有针对性的方法,而项目管理知识体系是一个通用的知识框架,在内容上与软件工程中的管理内容是不重复的,而是互相补充的。在软件项目管理中,应充分注意这两者的有机结合。
与其他重复性运行或操作的工作不同,项目管理具有一次性、独特性、目标的确定性、活动的整体性、组织的临时性和开放性、成果的不可挽回性等属性,因此,要确保项目的成功,获得让所有项目相关者满意的效果,项目经理除了需要清晰地把握项目流程外,更要具备优秀的信息管理、沟通管理、冲突管理、风险管理、质量管理和集成管理等能力。
清华大学项目经理培训课程精选战略管理、人力资源管理、财务管理和项目管理实战四个专题的核心课程,辅以模拟实战演练和案例研讨,项目经理不仅能切实提升项目管控的水平,更能站在企业战略的高度,将项目管理与企业发展联系起来,从而推动企业的高效运作。