软件生产过程理论告诉我们,软件质量往往取决于软件过程的能力水平,企业在软件过程中所采用的各种技术应适合该过程的成熟度水平。软件过程是一个可度量
的,可控制的,不断改进的流程。CMM强调企业应对软件过程进行连续的改进,在这一改进过程中,分级结构将提供不同等级中的目标和核心领域来规范这一过程
并为企业评论和改进自身生产能力提供客观标准。 CMM成熟程度理论不可以被看作纯粹的关于软件生产技术的标准,也不可以被看作普通的管理理论,它实际上是对软件开发实践所设计的整个工程流程的规定和分析,它的体系既包括软件工程过程本身,也包括对这一过程的管理。
CMM为企业软件能力提供了一个阶段式的五级进程。任何开始采纳CMM体系的机构都一并归与第一级的起点,即初始级(Initial
level)除第一节外,每一级都设定了各自的目标组。如果达到了这一目标,则可向下一级推进,由于每一个级别都必须建立在实现了低于它的全部级别的基础之上,CMM等级的提高只能是一个渐进有序的过程。
CMM的评估包括五个等级,共计18个核心过程域,52个目标,300多个核心实践,每一级别的评估由美国卡莱基*梅隆大学软件工程研究所授权的主评估
师领导的评估小组进行。其成员来自企业内部,评估过程包括企业员工培训,问卷填写,文档与数据分析,相关项目组成员面试,拟定评估报告。评估结束由主评估
师签订生效。 CMM五级标准按由低到高的成熟度分别为:
此级是个人英雄主义的天下,绝无可重复性,也无甚积累,项目的执行是随意甚至混乱的,软件开发过程未经定义,即使有某些规范也并未严格执行,企业不具备稳
定的软件开发与维护环境,面对开发中所遇的各类具体实施问题往往选择放弃原定计划仍由编程人员凭个人经验与主观感觉应对,对客户的承诺多数无法兑现,许诺
客户的产品与服务质量并无客观的预测与监控体系保证实现。在此,能力只是个人行为不是组织行为,一旦人员流动或变动,整个企业的开发能力也随之而去。整个
企业没有稳定的过程规则可依据。现有的种种规章制度也互不协调或矛盾。开发人员的工作方式是救火式,那里有漏洞就往哪里填补,很少收集关于开发过程的数
据,新技术的引进也要冒极大风险。总之,整个企业的软件生产是不可重复,不可预见,不成体系,不可积累及不稳定的。 本阶段改进重点包括:建立软件项目开发过程并进行有效管理;建立需求管理,明确客户要求;建立各类项目计划;建立完善的文档体系,严格执行质量监控;按CMM二级所规定的各项核心实践进行开发。
确定了基本的软件生产管理和控制,能针对特定软件项目制定开发过程及管理措施,能将以往项目开发经验用于类似的新项目,有一套不同的软件生产过程提供
不同项目选择。软件生产成本和工期能得以客观预测并被有效追踪,过程标准在项目实施中能保证被遵循。项目的开发是有计划的,有控制的,并可重复的行为,总
原则是:一个可管理的过程是一个可重复的过程并能逐渐改进和成熟。
第二级的管理过程包括需求管理,项目计划,项目追踪和监控,子合同管理,质量保证与配置管理等六个方面。在该级的企业可以给客户较有保证的承诺,因为企
业可在以往同类项目的成功经验上总结和建立起一整套过程准则来保证成功地重复。项目管理采用基准(Baseline)来标识进展并对成本和进度进行追踪,
企业通过子合同管理同客户建立了有效的供求关系,面对开发缺陷有规则可以依据来纠正错误,个人英雄行为被稀释并分解到企业整体的规则和管理框架之中,文档
的准备和项目数据的收集也相应完备。 本阶段改进重点包括:将各项目
的过程经验总结为整个企业的标准过程,是整个企业的过程能力得以提高,注意,跨项目间的过程管理协调和支持,树立齐全组织的过程标准概念,建立软件工程过
程小组(SEPG),对各项目的过程和质量进行评估和监控,使软件过程得以正确地调整。建立软件工程数据库和文档库,加强培训。 3. 定义级 本阶段改进重点:应准备对整个软件过程,包括生产和管理两方面的定量评测分析,以便尽可能将软件工程所涉及的定性因素转变为定量标准,从而对软件进行定量控制和预测。应使整个企业的软件能力在定量基础上可预测和控制。 4.管理级 本阶段改进重点:注意采取必要措施与方案减少项目缺陷,尽量建立起缺陷防范的有效机制,引进技术变动管理以发挥新技术的功用,引进自动化工具以减少软件工程中人为误差,实行过程管理,不断改进已有的过程体系。 5.优化级 CMM描述的五个等级的软件过程
反映了从混乱无序的软件生产到有纪律的开发过程,再到标准化、可管理和不断完善的开发过程的阶梯式结构。任何一个软件机构的项目生产都可以纳入其中,除第
一级初始级外,每一级成熟度都由若干核心过程域构成,这些核心过程域分别针对软件开发过程的某一方面阐述了这一等级的软件过程在此方面应达到的目标组的核
心实践。所有核心实践又可划分为五种共性:完成目标组所需的承诺、执行能力、执行活动、测量分析、实验验证。当然,任何一个级别的核心过程域都不仅包括本
级所有的核心实践。例如,第四级管理级的实现必须完成第四级本身具备的两个核心过程以及第三级中的七个核心过程域和第二级中的六个核心过程域,共十五个核
心过程域。 核心过程域又称关键过程域
(Key Process
Area,KPA),每一个KPA都与一些目标相关,代表某种对过程的要求,我们可根据KPA对软件过程进行评估并找到改进的重点所在。可见,除第一级
KPA外,CMM的每一级都按相同结构组成,KPA不仅标明了某级成熟度所要求的目标和评估标准,也说明了要达到此级成熟标准所需解决的具体要点。实施每
个核心过程域所包含的核心实践(Key
Practices),就是实现此核心过程域所制定的目标并提高软件过程能力。如前所述,各个核心过程域中的核心实践都可按公共属性进行分类,每个KPA
都包括五类核心实践。应该指出,核心实践只是规定了软件过程必须达到什么样的标准而未规定这些标准应如何实现,因此,对同样的过程水平,不同企业,不同项
目可采纳不同的过程和实施方式去完成。下面,我们将就五类不同的核心实践给予具体说明: 1.执行保证(Commitment to perform):为完成核心过程域中的目标组成所需的承诺又称执行保证,它是企业执行特定的核心过程域(KPA)所拟定的指导开发过程的规则和项目管理责任。 2.执行能力(Ability to perform):指企业执行核心过程域的前提条件,包括企业资源、过程制定、人员培训等多种措施。对PKA的执行必须建立在此基础之上,才可保证所规划的目标得以实现。 3.执行能力(Activities performed):它说明了执行核心过程域所需采纳的必要行动和步骤,与项目执行息息相关,包括计划、跟踪、检测等,这是核心实践的五种归类中与项目执行唯一相关的属性,其余四个属性都关注于软件组织的基础能力建设。 4.测量分析(Measurement and Analysis):是关于过程的定量度测和度测分析,以确定所执行活动的效果并根据此作出分析判断。
5.实施验证(Verify
Implementation):在过程执行的中途及末尾对过程实施进行验证以确保执行活动与制定的过程相一致。它包括检测、复审等一系列质量保证活动,
这些质量保证活动需要通过项目组以外的独立的质检人员和管理人员来保证验证的有效执行,从而确保产品符合计划要求。如果我们把执行活动看作是与项目执行相
关的属性,则其他所有属性可一起视为企业成熟度能力基础建设。 在实施CMM过程中,可根据各个企业面临的不同问题决定实现核心过程域的先后秩序并按此秩序逐步进行。而在实施每一个具体的核心过程域时,对其目标组及核心实践也可确定执行的先后顺序,逐步实现总体目标。最后,我们将第二、三、四、五等等级始终的核心过程域简介如下:
第二级(可重复级) 第三级(定义级) 第四级(管理级) 第五级(优化级) |
|