1)CMM的主要用途
①用于软件过程评估:评估软件企业软件过程的现状,找出最紧迫的问题,指出改进方向。CMM主要是描述一个软件企业如何获得生存、发展,获得较高效率所必需遵循的规则和方法,它也是评判一个软件企业的能力和级别的度量。
②用于软件过程的改进:帮助企业对其软件过程制定改进计划、标准和措施,引导企业向更好的方向前进。
③软件能力评价:为软件发包商提供对承包者的软件过程能力评判的方法和依据。
2)把软件企业划分等级与等级进化
CMM依据企业软件过程的成熟程度把软件企业分类为五种级别,其中第2级称为可重复级,属于成熟度入门级;第5级,即为优化级,属软件企业中的顶级企业,是一种成熟度最高级别的软件企业;至于第1级(初始级),其软件过程是未加定义的随意过程,项目的执行是无序的甚至是混乱的,没有为软件开发、维护工作提供一个稳定的环境。严格说来它不属于成熟度等级,或说是成熟度为零的等级。每一种级别的软件企业都要逐次过度到更高一级中去,使企业逐步走向成熟。
具体来说,CMM是基于以往软件工程的经验和教训,为软件的过程能力提供了一个阶梯式的改进框架,指明一个软件组织在软件开发方面需要做好哪些主要管理工作,明确这些工作之间的关系,以及以怎样的先后次序,一步一步地做好工作,实现这些目标,从而使企业走向成熟。
CMM框架进化阶梯共有五级。第一级实际上是一个起点,任何准备按CMM 框架进化的企业一般都处于这个起点上,并通过这个起点向第二级迈进。除第一级外,每一级都设定了一组目标,如果达到了这组目标,则表明达到了这个成熟级别,可以向下一个级别迈进。CMM 不主张跨越级别的进化,因为从第二级起,每一个低的级别实现均是更高级别实现的基础。
二、软件开发的特殊性与实施CMM的必要性
1.软件开发的特殊性与管理过程规范的必要性
软件产品的开发与其他工业产品的开发有着很大的差别,前者主要是逻辑思维的过程,软件开发工作量很难估计,开发进展难以衡量,开发质量难以控制和评价,软件规模随复杂性呈指数增长,软件维护极为困难。
根据多年的经验和教训,人们通过研究总结出软件开发的首要问题并不是技术问题,而是管理问题。因此,如何从管理层面入手使企业过程建立某种规范,逐步使企业变得高效率就成为关键问题。建立管理软件项目的策略和执行这些策略的过程是企业软件开发成功的关键。
软件开发的风险之所以大,是由于软件过程能力低,其中最为关键的问题在于软件开发组织不能很好地管理其软件过程,从而使一些好的开发方法和技术起不到预期的作用,项目的成功仅靠通过工作组的杰出努力而得。所以,仅仅建立在可得到特定人员上的成功的基础上是很不牢靠的,它不能为全组织的生产和质量的长期提高打下基础。因此,必须建立有效的软件过程并加强管理,坚持不懈的努力,才能不断改进,才能持续地成功。
2.改进软件质量控制的必要性和有效性
软件质量是一模糊的、捉摸不定的概念。我们常常听说:某某软件好用, 某某软件不好用;某某某软件功能全、结构合理, 某某某软件功能单一、操作困难……这些模模糊糊的语言不能算作是软件质量评价,更不能算作是软件质量科学的定量的评价。软件质量,乃至于任何产品质量,都是一个很复杂的事物性质和行为。产品质量,包括软件质量,是人们实践产物的属性和行为,是可以认识,可以科学地描述的。可以通过一些方法和人类活动,来改进质量。
实施CMM是改进软件质量的有效方法。控制软件生产过程、提高软件生产者组织性和软件生产者个人能力的有效合理的方法,与软件工程和很多研究领域及实际问题有关。主要相关领域和因素有:需求工程(RE:REQUIREMENTS ENGINEERING)和软件复用(SR:SOFTWARE REUSE)。理论上,需求工程是应用已被证明的原理、技术和工具,帮助系统分析人员理解问题或描述产品的外在行为。软件复用是指定义为利用工程知识或方法,由一个已存在的系统,来建造一个新系统。这种技术,可改进软件产品质量和生产率。此外,还有软件检查、软件计量、软件可靠性、软件可维修性、软件工具评估和选择等。
3.实施CMM的效果实例与统计
2002年6月的一个报道称,据通过了CMM五级的摩托罗拉中国软件中心统计,从1997年至所报道的时刻,软件中心的人均生产率提高了6倍,错误率降低了24倍,客户满意度上升了95%。实践证明,CMM能够较为准确地反映软件企业质量管理水平,并为企业进一步的改进提供指导。
根据SEI的统计,软件企业在引入CMM管理后,劳动生产率平均增长35%,错误比率平均减少39%,平均成本回报率为5∶1。
三、软件工程和软件过程管理与CMM
1.软件工程与CMM
把软件开发的整个过程当作一项工程项目来看待和实施,即软件开发工程化,这是一项不少的进步。软件工程是把软件开发技术和开发的管理技术柔合进来,使得软件开发较好地走上有章可循有法可依的境地。软件工程强调软件开发规范化和开发信息文档化,这就使得对开发计划、开发进度、开发质量、资源使用等得到较好的控制。软件工程是一种求解软件的过程。
软件工程还不足以从根本上解决软件危机,这就是产生出软件CMM的原因。CMM的核心就是要帮助你优化管理、提高质量、降低成本、提高市场效益。CMM是在软件工程的基础上的再进步,它是使一个软件企业如何更好地实施软件工程。
2.软件过程能力改善
CMM着眼于一个软件组织、着眼于软件过程的能力。它提供了一个软件过程的改进框架,这个框架与软件生命周期和所使用的开发技术都无关。
所谓软件过程能力,是指企业从事软件开发和生产的过程本身透明化、规范化和运行强制化。
3.CMM的根本内涵
简单地说,CMM模型是一个描述和分析软件企业的软件过能能力的发展程度,指明企业改善软件过程能力的前进方向。
CMM框架用5个不断进化的层次来评定企业软件生产的历史与现状,其中初始层是混沌的过程,可重复层是经过训练的软件过程,定义层是标准一致的软件过程,管理层是可预测的软件过程,优化层是能持续改善的软件过程。
任何单位所实施的软件过程,都可能是在某一方面比较成熟,在另一方面不够成熟,但总体上必然属于这5个层次中的某一个层次。而在某个层次内部,也有成熟程度的区别。在CMM框架的不同层次中,需要解决带有不同层次特征的软件过程问题。因此,一个软件开发单位首先需要了解自己正处于哪一个层次,然后才能够对症下药地针对该层次的特殊要求解决相关问题,这样才能收到事半功倍的软件过程改善效果。任何软件开发单位在致力于软件过程改善时,只能由所处的层次向紧邻的上一层次进化,而且在由某一成熟层次向上一更成熟层次进化时,在原有层次中的那些已经具备的能力还必须得到保持与发扬。
软件产品质量在很大程度上取决于构筑软件时所使用的软件开发和维护过程的质量。软件过程是人员密集和设计密集的作业过程。若缺乏有素训练,就难以建立起支持成功实现软件过程的基础,改进工作亦将难以取得成效。CMM描述的这个框架正是勾勒出从无定规的混沌过程向训练有素的成熟过程演进的途径。
四、CMM与PSP和TSP
CMM是过程改善的第一步,它提供了评价组织的能力、识别优先改善需求和追踪改善进展的管理方式。企业只有着手CMM改善后,才能接受需要规划的事实,认识到质量的重要性,才能注重对员工经常进行培训,合理分配项目人员,并且建立起有效的项目小组。然而,它实现的成功与否与组织内部有关人员的积极参与和创造性活动密不可分。
PSP能够指导软件工程师如何保证自己的工作质量,估计和规划自身的工作,度量和追踪个人的表现,管理自身的软件过程和产品质量。经过PSP学习和实践的正规训练,软件工程师们能够在他们参与的项目工作之中充分运用PSP,从而有助于CMM目标的实现。
TSP结合了CMM的管理方法和PSP的工程技能,通过告诉软件工程师如何将个体过程结合进小组软件过程,并将后者与组织进而整个管理系统相联系;通过告诉管理层如何支持和授权项目小组,坚持高质量的工作,并且依据数据进行项目的管理,向组织展示如何应用CMM的原则和PSP的技能去生产高质量的产品。
可以粗略地说,CMM、CMMI偏重管理方面,而PSP、TSP则较侧重技术方面,因此两者的结合是必不可少的。可以这样地说,PSP、TSP是有效实施CMM的保证,反之,CMM能使PSP、TSP发挥出最大的效能。
总之,单纯实施CMM,永远不能真正做到能力成熟度的升级,只有将实施CMM与实施PSP和TSP有机地结合起来,才能发挥最大的效力。因此,软件过程框架应该是CMM/PSP/TSP的有机集成。
五、我国CMM的现状
国外:CMM认证国外起步较早。1990年,经过软件工程协会的评估,美国休斯公司成为第一个被认定为已达到软件成熟能力3级的企业。在1997年,该公司获得了由电子工程协会(IEEE)授予的计算机软件过程成就奖。
据统计,到1999年,全球已有近万家软件企业通过了CMM各级认证,其中大多是CMM2。通过CMM5认证有13家,通过四级和五级的有71家。其中,印度通过CMM4和CMM5的有29家,通过ISO 9000或CMM2的有近100家。据SEI统计,目前有大约300家印度软件公司通过了CMM认证,其中通过最高质量等级CMM5的有50余家,占全球的60%以上。高品质的管理决定了高品质的产品,从而也确立了印度在美国外包市场的垄断地位。难怪比尔·盖茨惊呼:“除美国外,下一个软件大国既不是欧洲国家,也不是日本,而是印度”。
我国:1999年7月6日鼎新信息技术开发公司(清华同方与IBM合资)是我国首家通过了CMM二级认证的企业。
2000年10月东大阿尔派软件股份有限公司(东软前身)通过了二级(1997年通过ISO9001-2000认证),2001年6月26日,东软通过了我国首家CMM三级评估,东软在2002年底又拿下了CMM 五级认证,2004年12月3日又通过了由印度QAI India公司组织的CMMI5评估。东软是我国第一家获得CMM5和CMMI5认证的软件企业(未计外资企业)。
2001年12月13日四川托普直接申请并通过了CMM三级评估。
1995年底才成立的摩托罗拉中国公司的网络研发中心,在实施CMM上三年内完成了三级跳:1998年内部评审,取得了等同CMM3级的水准;1999年底达到了第四级;2000年9月通过了五级(全球第39个)。广州奔步电脑有限公司(美资)于2003年12月19日通过了CMMI 5级认证。
2001年1月21日联想软件通过CMM二级认证,2001年4月西安交大博通资讯通过CMM二级评审,2002年12月博通资讯又通过了CMM三级的评审。2001年6月1日用友通过CMM二级,为此北京市奖励30万元。2001年底山东浪潮、北京北佳、广州新太科技、北大方正等相继通过了CMM二级评估(新太科技于2003年3月又通过了三级)。2004年1月,联想软件通过了CMM三级的评估。
2001年,华为研发系统开始实施CMM管理,2001年12月10日华为印度研究所通过CMM四级,2003年8月又正式通过CMM五级国际认证。2004年华为北京研究所、南京研究所也先后取得CMM四级认证。
目前我国软件业界实施CMM认证的浪潮风起云涌,截至到2004年3月,国内已经有157家企业通过了CMM 2,有48家企业通过了CMM 3,10家企业通过了CMM 4,有6家企业通过的CMM 5。因此,在我国1400多家的软件企业中,已经通过了CMM、CMMI的各级认证的软件企业已经不下200多家。
说明:
1.有关PSP、TSP的简介见所附资料《PSP与TSP介绍》一文。
2.本章教案内容相对课文有所增补,内容顺序也不完全按课文安排,有些内容也从后续章节拿到前面来说了,例如第8章的某些内容。第2章也是大体如此。除第1、2、3章外其他章节增补较少。
3. CMM1.1是针对大型软件企业(500人以上)的,对小型的软件企业(50人以下)需要有所裁减。