软件工程部 张传文
2001年3月14日到17日,我和曹正山到北京参加了“北京CMM(软件能力成熟度模型)研讨会”。
会议日程是:
3月14日报到
3月15日上午,(印度)ArulNambi 做主题演讲:CMM及经验谈
3月15日下午,(印度)ArulNambi 做主题演讲:CMM评估过程,软件和服务的市场价值
3月16日上午,(中国)蒋鲁宁 做主题演讲:CMM问题与对策
3月16日下午,(中国)余军安 做主题演讲:软件工业的国际化之路
3月17日回昆。
整个会议以CMM为中心,讨论了CMM的理论、概念、以及应用现状。
我通过这次学习,比较系统的了解了CMM的理论框架。
下面,就我个人的理解,在以下两方面谈谈CMM有关方面的知识和应用:
一、CMM简介
CMM是由美国卡内基.梅隆大学下属的软件工程学院(SEI)制定并发布的。
CMM是一种用于评价软件承包商能力并帮助改善软件质量的方法,CMM致力于软件开发过程的管理及工程能力的提高与评估,实际上已成为软件开发过程改进与评估的事实上的工业标准。
软件系统的质量是由软件开发和软件改进过程的质量决定的,软件过程成熟度框架为软件过程的量化控制建立了项目管理和工程管理的基础,这是软件过程持续改进的基础。
CMM的框架:分为五级
优化级:软件企业的重点在于过程的持续改进。
CMM的每一级别都包含以下内容(初始级除外):
关键过程域(Key Process Areas ,KPA)18个
各个等级包括各自的关键过程域(Key Process Areas ,KPA),每一个成熟度等级都是通过一些(2个)关键过程域(KPA)描述的。
各个KPA的目标包括以下内容:
在为适应关键实践而采取选择时,目标能用来确定这种适应是否有效。
各个KPA的关键实践(Key Practices)包括以下内容:
每个KPA,它们的关键实践都统一按五个公共属性进行组织。
公共属性就是把每个关键过程域的所有关键实践按照它们的属性进行分组。
以下是每个KPA的五个公共属性:
实施责任(Commitment to Perform):实施责任是企业为了建立和实施相应KPA所必须采取的行动,这些行动主要牵涉到企业范围的政策和高层管理的责任。
实施能力(Ability to Perform):实施能力描述为了使某软件过程得以始终如一地执行的必须在项目或企业中存在的先决条件,是企业实施KPA的前提条件。企业必须采取措施,在满足了这些条件后,才有可能执行KPA的实践活动。实施能力关注于项目计划的实践;资源的配置;责任的布置与授权;以及各种有关的培训等,这些都是为了执行这个关键过程域的活动而对特定人以及作为整体的机构的能力开发起非常重要作用的事务。
实施活动(Activities Performed):实施活动描述了执行KPA所需求的必要行动、任务和步骤。在五个公共属性中,实施活动是唯一与项目执行相关的属性,其余四个属性则涉及企业CMM能力基础设施的建立。实施活动一般包括计划、执行的任务、任务执行的跟踪等。
度量和分析(Measurement and Analysis):度量和分析关注于这个关键过程域的活动需要作的度量和度量分析要求。典型的度量和度量分析的要求是确定执行活动的状态和执行活动的有效性。
验证实施(Verifying Implementation):验证实施是验证执行活动是否与建立的过程一致,核实以确保所实施的过程是按照原定的计划以及达到其目标,着眼于保证过程的实现要通过独立的个人和高级管理人员验证。涉及到管理的评审和审计以及质量保证活动,包括:过程执行的确保,产品要求的确保,高层管理人员进行的审核和项目经理进行的审核。
二、为什么在软件企业中应用SW-CMM?
我国软件企业的现状:
世界软件企业和机构通过CMM认证情况:
到2001年1月底,全世界有1654软件公司和机构通过了不同级别的认证,将近400家企业通过了2级,210家企业通过3级,44家通过4级,50家通过5级。在通过4,5级认证的企业中,除澳大利亚和以色列各有一家4级企业,中国两家5级企业,其余都是印度和美国企业。
通过CMM 2级评审即可向欧美国家接订单,进行软件工程合同承包工作。
据美国软件工程实施现状的调查,软件研发的情况仍然很难预测,大约只有10%的项目能够在预定的费用和进度下交付。
软件项目失败的主要原因有:需求定义不明确;缺乏一个好的软件研发过程;没有一个统一领导的产品研发小组;子合同管理不严格;没有经常往意改善软件过程;对软件构架很不重视;软件界面定义不善且缺乏合适的控制;软件升级暴露了硬件的缺点;关心创新而不关心费用和风险等等。在关系到软件项目成功与否的众多因素中,软件度量、工作量估计、项目规划、进展控制。需求变化和风险管理等都是与项目管理直接相关的因素。
由此,得出一个结论:
管理是影响软件研发项目全局的因素,而技术只影响局部。
CMM目的是帮助软件企业对软件工程过程进行管理和改进,增强开发与改进能力,从而能按时地、不超预算地开发出高质量的软件。CMM是目前国际上最流行、最实用的一种软件生产过程标准,已经得到了众多国家(国际)软件产业界的认可,成为当今(企业)从事规模软件生产不可缺少的一项内容。
软件企业和组织通过采用CMM进行提高自身软件过程的成熟度,可以使自身的软件过程达到以下目标:
软件企业和组织通过采用CMM,可以从以下四个方面获得益处:
对于企业自身
对于企业中的员工
对于客户
通过上述的CMM简介,我们可以看到,实施CMM并没有要求我们具体采用什么软件开发模式,只要我们能达到KPA的要求就可以了,因此它的弹性其实很大。而且必须明确一点,CMM也是一个标准,它要求我们应该做到什么,而没有告诉我们应该如何做。采取什么软件开发模式还需根据具体软件企业的结构和产品的特性而定。
CMM到底能为软件企业和组织带来什么好处?用一句话说就是有利于软件企业和组织长期的成本控制。有这套体系,能更准确地预算出开发的成本; 更重要的是,正因为质量有所保证,浪费在修改、解决客户的抱怨方面的成本会降低很多。问题出现后现场发现解决与设计开始时就把问题解决的费用相比,通常要差几十倍。现在绝大多数情况是缺少软件的规范制度,只是求快。软件出来后,要花很多时间修修补补,以应付客户满意度低的情况,费用很容易失控。而有了CMM这套体系,会使这方面的费用有所降低或者大大降低。CMM对于研发人员来说,其好处在于增加了一套有效的纪律,CMM可以规范开发测试人员一连串的行为来保证质量。另外,在这样的体系下运行,也能把错误找出来,使其产品质量有相当的保证,从而为个人带来效率。这对个人来讲,也是一种成就感,增加员工自身的信誉。
通过以上国内、国际软件企业和组织的情况分析,影响软件项目开发过程中的因素分析,以及引入CMM的好处分析,可以看出,CMM和成熟的软件过程在我国软件企业和组织中应用,已经成为一件迫在眉睫的事情;
为了增强企业的竞争能力以及和国际化市场接轨,软件企业和组织必需实施CMM标准和管理。