返 回

CMM北京研讨会参会感

软件工程部 张传文

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简介
  • 为什么在软件企业中应用SW-CMM?

一、CMM简介

CMM是由美国卡内基.梅隆大学下属的软件工程学院(SEI)制定并发布的。

  • 1986年:从软件过程成熟度框架着手开始工作
  • 1987年:软件过程成熟度框架与成熟度调查
  • 1991年:发布CMM1.0版
  • 1993年:发布CMM1.1版

CMM是一种用于评价软件承包商能力并帮助改善软件质量的方法,CMM致力于软件开发过程的管理及工程能力的提高与评估,实际上已成为软件开发过程改进与评估的事实上的工业标准。

软件系统的质量是由软件开发和软件改进过程的质量决定的,软件过程成熟度框架为软件过程的量化控制建立了项目管理和工程管理的基础,这是软件过程持续改进的基础。

CMM的框架:分为五级

  • 初始级:软件开发过程无法预测,缺乏有效的控制。
  • 可重复级:软件开发过程是一个有序的过程,可以重复以往项目的成功经验,着重在软件开发的项目管理过程。
  • 已定义级:软件企业的开发过程已经特征化且贯彻理解,具有标准、一致的过程,企业具有完整的工程过程。
  • 已管理级:软件企业已经对软件开发的过程加以度量和管理控制,软件开发的过程是可以预测的过程,企业着重在保证软件产品的质量和软件过程的质量。
  • 优化级:软件企业的重点在于过程的持续改进。

    CMM的每一级别都包含以下内容(初始级除外):

    关键过程域(Key Process Areas ,KPA)18个

  • 各个关键过程域的目标(Goals)52个
  • 各个关键过程域的关键实践(KeyPractices)316个
  • 各个等级包括各自的关键过程域(Key Process Areas ,KPA),每一个成熟度等级都是通过一些(2个)关键过程域(KPA)描述的。

    各个KPA的目标包括以下内容:

  • 目标用来确定一个机构或项目组是否有效地执行了该KPA;
  • 目标概述了该KPA包括的关键实践(KP)
  • 在为适应关键实践而采取选择时,目标能用来确定这种适应是否有效。

    各个KPA的关键实践(Key Practices)包括以下内容:

  • 描述了对有效执行和制度化该KPA起主要作用的从属活动和基础构造;
  • 软件过程必须包括些什么,而不去规定这些过程是如何实现的;
  • 实现该KPA的目标所允许做的实践活动。

每个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进行提高自身软件过程的成熟度,可以使自身的软件过程达到以下目标:

  • 软件过程与工作的实际完成方式一致;
  • 软件过程已定义、文档化并持续改进;l软件过程已经达到全员了解、使用并切实有效;
  • 软件过程处于良好的掌握控制——对软件过程加以客观认真的评审并且切实严格遵循这些软件过程;
  • 新技术可以有序的引进、应用;
  • 软件成果可以预期,软件过程可重复并且处于持续改进中。

软件企业和组织通过采用CMM,可以从以下四个方面获得益处:

对于企业自身

  • 可以更清晰地了解软件过程及项目的进展情况;
  • 企业文化得到不断的改善;
  • 对公司的业绩更具有预测力;
  • 通过更高的项目成功率,带来更多的“回头客”;

对于企业中的员工

  • 团队协作的观念都很强烈;
  • 积极主动寻求新技术并有效运用;
  • 工作分工明确,职责清晰,工作重点突出;
  • 改善企业文化;
  • 职业资历的不断强化;

对于客户

  • 通过改进的项目管理,提供质量更高的产品及服务;
  • 项目的按时按质交付;

通过上述的CMM简介,我们可以看到,实施CMM并没有要求我们具体采用什么软件开发模式,只要我们能达到KPA的要求就可以了,因此它的弹性其实很大。而且必须明确一点,CMM也是一个标准,它要求我们应该做到什么,而没有告诉我们应该如何做。采取什么软件开发模式还需根据具体软件企业的结构和产品的特性而定。

CMM到底能为软件企业和组织带来什么好处?用一句话说就是有利于软件企业和组织长期的成本控制。有这套体系,能更准确地预算出开发的成本; 更重要的是,正因为质量有所保证,浪费在修改、解决客户的抱怨方面的成本会降低很多。问题出现后现场发现解决与设计开始时就把问题解决的费用相比,通常要差几十倍。现在绝大多数情况是缺少软件的规范制度,只是求快。软件出来后,要花很多时间修修补补,以应付客户满意度低的情况,费用很容易失控。而有了CMM这套体系,会使这方面的费用有所降低或者大大降低。CMM对于研发人员来说,其好处在于增加了一套有效的纪律,CMM可以规范开发测试人员一连串的行为来保证质量。另外,在这样的体系下运行,也能把错误找出来,使其产品质量有相当的保证,从而为个人带来效率。这对个人来讲,也是一种成就感,增加员工自身的信誉。

通过以上国内、国际软件企业和组织的情况分析,影响软件项目开发过程中的因素分析,以及引入CMM的好处分析,可以看出,CMM和成熟的软件过程在我国软件企业和组织中应用,已经成为一件迫在眉睫的事情;

为了增强企业的竞争能力以及和国际化市场接轨,软件企业和组织必需实施CMM标准和管理。