无语东流
近年来,CMM在我国获得了各界越来越多关注,业界有过多次关于CMM的讨论,国务院发布的《鼓励软件产业和集成电路产业发展的若干政策》(国发[2000]18号)对中国软件企业申请CMM认证给予了积极的支持,在第17条规定“对软件出口型企业CMM认证费用予以适当支持”。鼎新、联想、方正、金蝶、用友、浪潮、创智、华为、东大阿尔派等大型集团或企业等都从1997---2000年起批企业都在进行研究、实验或实施预评估。其中鼎新、联想、东大阿尔派、西安博通、用友、华为等几家软件公司已经通过了CMM评估。
今年三月,我有幸被公司派到北京参加了为期3天的项目管理培训。在培训期间,着重介绍了CMM,并听取了中国摩托罗拉公司(CMM5级)高级经理和北京鼎新公司(CMM2级)副总经理介绍了实施CMM的经验。回到公司后,我收集了CMM相关资料,并分析了公司这些年来存在的一些问题,深深地感觉到,在公司内部建立质量保证体系,实施CMM改进过程的必要和迫切。
1 .CMM概述
CMM是软件能力成熟度(the Capability Maturity Model for Software)的简称,是美国卡内几—梅隆大学软件工程研究所(Carnegie Mellon University Software Engineering Institute, 缩写为CMU/SEI)首先提出的。1987年在美国国防部支持下,卡内几—梅隆大学率先推出了软件过程评估项目的研究成果——软件过程能力成熟度模型CMM。很快就引起了软件界的广泛关注,并在此后引发了一系列反响,以至在其基础上形成了国际标准(ISO/IEC 15504)。
CMM模型为较全面地描述和分析软件过程能力的发展程度,建立了一个描述一个组织的软件过程成熟度的分级标准。利用它,软件组织可以评估自己当前的过程成熟程度,并通过提出严格的软件质量标准和过程改进,来选择自己的改进策略,以达到高级的成熟度。CMM模型提供了一种结构,组织成五个成熟性级别,其主要特征为:
(1)初始级。软件过程的特点是杂乱无章,有时甚至混乱,几乎没有明确定义的步骤,成功完全依赖个人努力和英雄式核心人物,管理是反应式(消防式)。
(2)可重复级。建立了基本的项目管理过程来跟踪成本、进度和功能特性,制定了必要的过程纪律,能重复早先类似应用项目取得成功。
(3)已定义级。管理和工程的软件过程已文件化、标准化,并综合成整个软件开发组织的标准软件过程。所有项目都采用根据实际情况修改后得到的标准软件过程来发展和维护软件。
(4)定量管理级。制定了软件过程和产品质量详细的度量标准。软件过程和产品的质量都被开发组织的成员所理解和控制。
(5)优化级。加强了定量分析,通过来自过程质量反馈和来自新观念、新科技的反馈使过程能不断持续地改进。
基于这种级别的划分,可以标识软件组织的过程能力,还可以方便地和有所遵循地实现持续不断改进。因为,每种级别都提供了一个软件过程改进层次,达到成熟性结构每一个层次是通过实现软件过程中的一些标准来实现的。这种方法同样使软件企业的软件能力得到提高。
2 .CMM的作用
CMM有两个基本用途:软件过程评估和软件能力评价。软件过程评估,目的是确定一个组织的当前软件过程的状态,找出组织所面临的急需解决的与软件过程有关问题,进而有步骤地实施软件过程改进,使组织的软件过程能力不断提高。软件能力评价,目的是识别合格的能完成软件工程项目的承制方,或者监控承制方现有软件工作中软件过程的状态,进而提出承制方应改进之处。
根据SEI的统计,软件企业在引入CMM后劳动生产率平均增长了35%;错误比率平均减少39%;平均成本回报率为5:1。(见表1)
类别 |
范围 |
平均 |
生产率提高/年 |
9%—67% |
35% |
上市时间(提早/年) |
15%—23% |
/ |
发布后的缺陷(减少/年) |
10%—94% |
39% |
收益比 |
4.0:1~8.8:1 |
5:1 |
表1 CMM的改进数据
据国内通过CMM评估的企业介绍,企业内部实施CMM改造后,收到了以下成效:
提高研发效率、保证质量、降低风险,保证开发出满足客户需求的产品,同时得到国际认可。
做事方法逐渐变得标准化、规范化了。规范的过程控制,将软件企业由于人员流动带来的风险降到了最低,同时还促使员工养成良好的职业素养。
效率不断在提高,时间控制更严格,品质更有保证,管理更有序。可以逐渐具备承接跨地区、跨部门的大型项目的实力。
CMM带来最大的改变就是把隐性管理变为了显性管理。
3.PSP概述
CMM不是万能的,它的成功与否,与一个组织内部有关人员的积极参与和创造性活动是密不可分的,而且CMM并未提供实现有关子过程域所需要的具体知识和技能,或者就如何选择、雇佣、激励和留住有能力的人,提出建议。因此,CMU/SEI在CMM1.1的基础上又提出了PSP和TSP。
PSP是个体软件过程(Personal Software Process)的简称,是由美国Carnegie Mellon大学软件工程研究所(CMU/SEI)的Watts s. Humphrey领导开发的,于1995年它的推出,在软件工程界引起了极大的轰动,可以说是由定向软件工程走向定量软件工程的一个标志。PSP是一种可用于控制、管理和改进个人工作方式的自我改善过程,是一个包括软件开发表格、指南和规程的结构化框架。
PSP为基于个体和小型群组软件过程的优化提供了具体而有效的途径,例如如何制订计划,如何控制质量,如何与其他人相互协作等等。在软件设计阶段, PSP的着眼点在于软件缺陷的预防,其具体办法是强化设计结束准则,而不是设计方法的选择。根据对参加培训的104位软件人员的统计数据表明,在应用了PSP后,软件中总的差错减少了58.0%,在测试阶段发现的差错减少了71.0%,生产效率提高了20.0%。
PSP的研究结果还表明,绝大多数软件缺陷是由于对问题的错误理解或简单的失误所造成的,只有很少一部分是由于技术问题而产生的。而且根据多年来的软件工程统计数据表明,如果在设计阶段注入一个差错,则这个差错在编码阶段引发了3一5个新的缺陷,要修复这些缺陷所花的费用要比修复这个设计缺陷所花的费用多一个数量级。因此,PSP保障软件产品质量的一个重要途径是提高设计质量。
4.PSP的作用
使用自底向上的方法来改进过程,向每个软件工程师表明过程改进的原则,使他们能够明白如何有效地生产出高质量的软件。
为基于个体和小型群组软件过程的优化提供了