1.1 实施CMMI所需资源分析
在这里,我们主要从以下几个方面考虑资源的配备:时间、人员和设备工具。对于时间资源,可根据我公司实际情况来制定,约2-3年完成CMMI3级。在报告下面的章节有针对此问题的解答。对于人力资源,在需要角色与组织方面上面我们已经进行了分析。对于设备工具来说,除了Office和电子邮件工具外,基本上不需要什么其他的工具。但是如果能够使用一个比较完善的配置管理工具,而不仅仅采用操作系统文件目录的方式进行配置管理,配置管理过程相关的工作量减少会比较明显。其他的工具,像问题管理工具、某些流程的管理工具、任务安排、项目管理工具等,在初期实施过程改进时,最好都不要使用,因为在过程未得到完善定义前,使用工具只可能使过程的使用更加混乱。如果过程已经定义好,并且在组织中得到了较广泛的应用,使用一些问题报告工具、项目管理工具会提高工作效率。
我们主要的资源就成为了时间问题,何时开始CMMI?需要多长时间等,针对这个问题,在报告下面的章节里有专门的说明,这里不做进一步阐述。
1.2 实施CMMI带来的风险分析
影响CMMI项目实施的风险是多种多样的,对不同的企业呈现出不同侧面。这里无法穷尽所有的风险,针对每一个风险,也无法穷尽所有的规避措施。即使这样,由于风险伴随着过程改进项目的整个实施进程,因此培养风险管理意识、建立风险管理过程是非常重要的。
风险的严重程度随着风险种类、过程改进项目、时间、涉及的范围、策划手段、发生的可能性等因素的不同而变化,拥有对过程改进项目风险的洞察力和规避能力为过程改进的成功实施奠定了基础。本手册所列出的风险大部分不是在过程改进项目实施过程中突然发生的,往往随着管理者和参与者理念的缺乏、认识的不足而在行动中体现出来,因此针对这类风险的规避措施不是马上能够生效的,通过了解这些风险,认识到过程改进的难度和长期性,才能够实现过程改进的最终目标。影响CMMI项目实施目标和效果的风险和相应的避措施如下所示。
在公司高层领导角色方面可能存在的风险分析:
1、过程改进目标不统一;高层管理者对CMMI项目的目标认识不一致,我们通过企业管理实践、培训和交流,使高层管理者认识到过程改进的重要性,结合市场和公司内部开发过程管理的需要,统一目标。
2、过程改进的长期性认识不足;管理者不了解过程改进涉及到广泛的范围和人的工作习惯,急于求成,我们应与咨询师沟通,通过交流和培训逐步认识到过程改进实质上是开发管理流程再造。
3、因担心影响进度而不在项目中施行;以保证项目进度为首要目标,认为过程改进会使开发进度延期,我们认为平衡长期目标和短期目标,从企业长期利益出发,为了提高企业开发管理能力和客户满意度,必须将过程改进活动作为日常运营管理活动的组成部分。
4、领导支持力度不够在人力和开发项目的管理上投入不足;需成立CMM领导小组,专门负责CMMI实施问题;建立SEPG独立的问题上报渠道,定期检查过程改进的效果,并有相应的应对措施。
5、上级领导随时抽调本项目的资源用于其它&ldquo高优先级&rdquo的项目;因为开发项目或其它原因而抽调人力或变更CMMI计划,我们需要培养过程改进长期性的意识,确定过程改进项目的优先级,保证提供必要的资源,设定阶段性目标并评审阶段成果。
6、相关人员没有充分参与;没有将过程改进作为日常工作安排进计划中,公司需指定2人以上的专职人员从事SEPG或QA工作。定期检查和评审过程改进能的成果,并有相应的考核措施。
在CMMI项目管理过程中可能存在的风险分析:
1、投入的本项目的时间和精力不足;企业的相关人员没有必要时间策划和执行过程改进;我们在策划时,留出时间进行过程改进活动;经常交流和总结过程改进经验。
2、SEPG或QA人员能力不足;对过程改进的方法和工具不熟悉,不会使用,我们应选择有相关经验的人员作为SEPG和QA;培训SEPG和QA人员,总结实施过程的经验。
3、进度安排过于紧张短;时间内安排范围广泛的过程改进工作,超过实际执行能力,我们应依据差距分析结果,确定过程改进的突破口,集中力量改进最紧急或容易见成效的过程,制定可行的计划,投入必要的资源。
4、不能及时监控过程项目的进展;出现偏差不能及时纠正,没有必要的预防措施,除管理者跟踪实施情况外,我们要定期或事件驱动地进行沟通、检查和评审,提供指导和建议,确保进度按计划进行并建立参与人员汇报制度。
在开发团队实施CMMI过程中的风险分析:
1、不清楚过程改进的目标和必要性;不知道为什么要过程改进,其目标是什么?我们需在培训过程改进的必要知识,通过讨论开发和管理过程中的问题,明确目标和必要性。
2、项目经理忙于开发技术工作而无暇顾及过程改进工作;项目经理借口项目进度的需要而没有做必要的过程管理和改进工作,我们需要明确项目经理的职责,将过程管理工作作为其重要职责之一,培养项目管理方面的能力。
3、开发人员不了解已经规定好的过程;没有学习和参与制定涉及到的过程制度和要求,我们需对项目组进行过程改进意识和程序文件培训,尽可能参与过程管理制度方面的的制定,方便开发人员得到相关过程的制度。
4、没有将过程管理作为自身工作;将过程管理活动作为强加的、附加的或不必要的工作,我们需要明确过程管理的职责,检查过程管理的结果,建立相应的考核制度。
5、开发人员按原有习惯工作,项目结束后补充必要的文档和记录,没有在项目管理需要的时候产生必要的工作产品;过程管理活动要有强制性,开发人员汇报活动的执行情况,管理监督和控制措施要跟上,建立相应的考核制度。
6、没有按照规定对重要的工作成果进行了评审;程序作了规定,实际上没有执行管理者定期检查评审情况,对此我们需要建立评审结果的汇报制度。
7、开发人员会在进度延误时降低过程管理的要求;不做或少做开发过程已定义的一些必要工作,我们需要明确过程管理活动的强制性,对阶段性成果进行评审,完善相应的监督和控制措施。
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文件的一部分。 |