1.3 实施CMMI带来的效益分析
我们认为:CMM是一种软件开发的标准,按照这个标准去做,就能帮助软件企业改进和优化管理,在提高软件开发水平和效率的同时提高产品的质量和可靠性。在河北省目前通过CMM/CMMI的企业还没有,河北省政府为鼓励软件企业通过认证,也提出如果通过CMMI三级,将鼓励企业40万元的政策。切实的来说,实施CMMI可带来的效益如下:
1、提高企业市场竞争力;通过CMMI后可提高企业形象,成为公司宣传自己的资本,也符合我公司&ldquo追求客户满意服务&rdquo的要求,在产品质量提高,按时交付产品等方面有标准去指导工作,同时CMMI也已经成为软件项目投标的门槛,成为软件外包项目的必要条件。
2、提高企业投资回报;通过CMMID后可在软件项目中实现降低项目成本,主要通过质量保证减少项目返工,通过过程控制来按时完成项目,提高效率,通过项目文档减少系统维护费用,减少顾客索赔等。回报的另一方面表现在软件外包,软件项目投标方面提供公司技术实力有力的证明。
3、提高成本控制力度;照CMMI要求建立了良好的质量管理体系,可以保证产品质量;通过后续的验证性活动进一步确保产品质量 通过有效的同行评审、走查等方式,可尽早发现各阶段存在的缺陷,减少返工 通过策划不同类型的测试,编写经评审的测试用例、审查测试覆盖程度、使用自动化工具等活动,提高测试的效率,降低BUG数,减少维护期的花费。
4、减少需求变更带来的影响;照CMMI软件过程要求,顾客参与和及时沟通(如:需求评审请顾客参加确认;利用原型法、界面展示等方法来获取顾客的潜在需求;前期的重要阶段点请顾客参与,采用需求双向追溯,保证顾客的变更能够得到满足和覆盖;需求多变,先找主观原因,再找客观原因先从自身方面找原因,如获取需求的技巧、获取需求的层面;使用不同生命周期模型(如用快速原型法来解决需求不明确的项目)。
5、增强项目的可视性,使管理者能及时掌握项目进展,避免项目延期;在CMMI中,要求对项目进行充分策划,制定合理的项目计划,规定阶段、里程碑等,能随时掌握项目进展各个阶段;按照项目计划对项目进行监控,按计划收集项目数据并和计划数据对比、分析偏差,及时发现问题并采取有效措施,避免项目延期;项目经理通过周例会、周报、月报等方式了解项目进展;QA也会从独立客观的角度定期向高级管理者、项目经理报告项目评审状态,使高级管理者会定期评审项目状态。
6、明确工作量估计,做为绩效考核的依据;在软件项目中我们经常碰到由于工作量估计不准确,导致工作计划性差,项目延期、成本增加、顾客抱怨等问题,同时对个人工作量估计不准确,对个人工作绩效难以评价,处理不好会导致工作人员抱怨太忙,管理者无所适从等等。而在CMMI中要求,用合适的方法和过程步骤来估计工作量(如WBS、功能点、代码行、Delphi法);组织财富库、度量库给项目估计提供累计经验值;项目组通过周报等来评价项目组成员的工作量;为人员建立技能档案、岗位职责等,为绩效评价打下基础,可根据经验数据为公司的每个岗位定下一个评价基础。
1.4 基于软件过程改进的数据分析
从定量角度考虑过程改进的效果,通过SEI的调查结果,获得以下数据:
1、过程遵循程度的效果:工作产品完成获得改善、改进遵循定量管理实践、使用度量和分析减少了质量成本。
2、对成本的影响:修改一个缺陷的平均成本降低33%;每个软件产品的成本降低20%;缺陷发现和修改的成本降低15%;提高成本估计的准确性。
3、对进度的影响:延期交付产品减少了50%;达到里程碑进度要求的比率由50%提高到95%;交付日平均延期天数由50天左右降低到少于10天。
4、对生产率的影响:软件生产率提高了30%;3年内生产率提高了25%。
5、对质量的影响:通过严格按照CMMI的实践执行,相当大的减少了软件缺陷;大大的降低了代码缺陷;可识别的缺陷由每千行6.6个减少到2.1个;开发者更关注软件产品质量;在成熟度2级通过原因分析和度量循环缺陷减少了44%。
1.5 CMMI与ISO9000相比的优越性
我公司已经通过ISO9000,在软件过程方面做出了很大的努力,但是ISO 9000不是专门为软件企业设计的,因此有些地方不能真正为软件企业解决问题。通过CMMI,在软件过程方面必然得到更大的提高,相对比ISO9000来讲,CMMI具有以下优势:
1、 有专门的组织来进行监督与事实;EGP组织的建立,QA的建立有助于软件过程的改进。
2、 CMMI是更专业的软件成熟度模型;它的分级体制涉及到软件流程的各个方面,也对每个级别提出了明确的要求,有助于持续性改进
3、 CMMI的评审机构,执行评审过程严格,达不到要求不能通过。所有评审专家受美国SEI的考核,不合格者将取消资格。这种严格的外部监督,有利于深入发现企业内部问题,从外部入手,解决内部问题。
4、 CMMI的培训、咨询老师具有深厚的行业背景,都是软件过程改进的专家,通过他们的评审也必然带来ISO9000所不能起到的软件方面的过程优化、改进等。
5、 虽然软件过程流程相对比ISO9000定义更复杂,可能会延长流程时间,但能够提高质量,提高最终客户满意度,则这种代价是可以的。
1.6 CMMI的适用性
由于CMMI的复杂性,对小型开发项目,如2-3人完成的,可不实行。通常建议5人以上的项目才实施。
对于临时性需求要求多,维护性多的项目,可只在ISO9000范围内实施。
1.7 实施CMMI与实施ISO9000的关系
ISO9000在软件开发过程中并无太多强制规定(有规定的如配置管理也基本在CMM范围内),与CMMI只是说法不同,无根本冲突。所以在具体实施时,CMMI与ISO9000可互为补充,都体现为XX公司软件开发过程改进。只是覆盖范围不同,CMMI更多用于大型软件开发项目。
在现状下,公司以ISO9000为主,可将高层次的软件开发流程用ISO9000流程定义下来,具体开发流程可转入CMMI。或直接将CMMI流程作为ISO9000文件的一部分。