为了解决软件危机问题,北大西洋公约组织NATO在1968、1969年连续召开两次计算机科学会议,Fritz Bauer首先提出了“软件工程(Software Engineering)”的概念,试图建立并使用正确的工程方法来解决和缓解软件危机,开发出低成本、可靠、高效的优质软件。
1986年11月,SEI在Mitre公司的协助下,开始发展一套帮助软件产业者改善软件流程的流程成熟度架构(Process Maturity Framework),并于1991年发表了软件能力成熟度模型(Capability Maturity Model for Software,CMM)。1986年SEI从IBM辞职加入美国卡内基梅隆大学软件工程学院(SEI),并受美国国防部委托开始研究在开发群体中普遍存在的质量问题,于1989年出版了《管理软件过程》一书,提出了软件能力成熟度模型CMM,给出了“过程”的定义:“用于软件开发及维护的一系列活动、方法及实践”。Watts S.Humphrey被美国国防软件工程杂志Cross Talk评为影响软件发展的十位大师之一,被软件界人士尊称为“CMM之父”和“软件质量之父”。
在后期的发展中,SEI不断地延展CMM涵义与适用性,如今的CMMI模式包含了系统工程(Systems Engineering,SE)、软件工程(Software Engineering,SW)、整合产品与流程发展(Integrated Production Process Development,IPPD),以及委外作业(Supplier Sourcing,SS)四个专业领域。
SEI在CMM方面的工作重点在于:在一个逐步成熟的过程中,向软件开发商提供协助。“成熟”意味着一种环境,在这种环境中,可预见性相对较高,未预测到的风险性相对较低。CMM分为5级,等级1为初始级;等级2为可重复级;等级3为已定义级;等级4为已管理级;等级5为优化级。如图4-1所示。
被评估为等级1的团队开发的软件质量难以得到保证,成功与否不是依靠组织而更多的是依赖于个人。SEI曾经估计过全世界大多数的IT组织都基本处于CMM1。从等级CMM2开始,CMM要求组织采用一系列过程工具、方法学以及策略互相配合,来帮助组织稳定和控制环境,保证软件质量。如果一个组织被评估为CMM5,那就表示这个团队已经达到了完全的成熟度。这样的组织有一套实践、方针和规范,使各个团队能以一种可预见的、可靠的和可重复的方式生产高质量的软件。但是SEI估计,全球大概只有百分之一到百分之二的公司是这个等级。
随着成熟度的攀升,可预见性高风险则不断下降,如图4-2所示。
图4-1 过程成熟度级别
图4-2 CMM-风险图
下面我们就简要介绍一下CMM的五个等级。
(1)初始级(Initial)CMM1
任何一个组织一成立就已经是CMM1了,这个级别的主要特点是不可预测并且缺乏控制,因此,如果一个组织持续在这个等级上运作是相当危险的。在这个级别的组织基本上没有健全的软件工程管理制度,管理是相当混乱的。大多数处于这个等级的组织的变化总是很频繁,一旦出现危机,团队就会抛弃原先的计划,回到紧急的编码与测试阶段。在这种情况下,如果某个工程恰好由一个有能力的管理员和一个优秀的软件开发组来做,那么这个工程可能是成功的。组织的成功与否受制于组织中的成员,是这些成员控制着项目的发展,如果团队的这些“英雄”一旦离开项目,组织将又重新陷入混乱中。因此在CMM1中通常的情况是由于缺乏健全的总体管理和详细计划,时间和费用经常超支,导致大多数的行动只是应付危机,而非事先计划好的任务,具有很大的不可预测性。
除了管理混乱以外,CMM1等级的组织的另一个问题是在环境中缺乏学习精神。项目完成后没有归档、工作量没有测量等,这些都导致新项目无法从老项目中受益,更不要说是重复或者共享了。
据SEI统计,在实际的评估过的组织中,有大约70%左右的组织是CMM1。
(2)可重复级(Repeatable)CMM2
众所周知,在采纳CMM后,CMM2可重复级是最困难的。在这个阶段组织刚刚脱离了混沌的初始级别,开始采用崭新的工作方法,成为一个有“知觉” 的组织,有能力进行学习和改进:处于可重复级的组织开始正规化单个项目的计划和管理方法;有一些基本的软件项目的管理行为、设计和管理技术是基于相似产品中的经验,故称为“可重复”;在这一级采取了一定措施,例如仔细地跟踪费用、进度等,管理人员在问题出现时便可以立刻发现,并及时采取修正行动,以防它们变成危机。这些措施是实现一个完备过程所必不可缺少的第一步。
与初始过程相比,可重复过程有一个重要的优势:它对组织制定计划和承诺的方法进行控制。这种控制是一种改进,它增强了组织成员解决问题的信心,并且通过事先制定自己的估计以及计划,取得了一定程度的统计控制。这种优势来源于前期类似的工作,但是当遇到新的、从未遇到过的挑战时,处于可重复过程级的组织就会面临风险。
据SEI统计,在实际评估过的组织中,有大约5%左右的组织是CMM2。CMM2关键过程区域的重点是项目管理,要建立一套基本的项目管理控制,这一级的关键过程域包括:
● 需求管理;
● 软件项目计划;
● 软件项目跟踪和监督;
● 软件子合同管理;
● 软件质量保证;
● 软件配置管理。
(3)已定义级(Defined)CMM3
在CMM2中如果将业务实践管理得很好,彼此之间都很协调,经过这个阶段的锤炼,组织最终就会拥有一套能提高生产力、改进质量的过程,这时候的组织就已经具备过程进化的条件——可以从以项目为核心的CMM2进化到以整个组织为核心的CMM3等级。
在已定义级中,过程已经被描述,并得到良好理解,也就是已经为软件生产的过程编制了完整的文档,包括软件的定义、开发以及维护过程都已经文档化。这一套文档既包括了软件工程过程,也包括管理与跟踪过程,这个过程相互配合,构成了组织的配套管理工具。同时在这级别中,在软件过程的管理方面和技术方面都做了明确的定义,并按需要不断地改进过程,而且采用评审的办法来保证软件的质量。在这一级,可引用CASE环境来进一步提高质量和生产率。(www.xing528.com)
在CMM3中组织出现了两个新团队,培训组和软件工程过程组。培训组在整个组织内实施培训大纲,保证技术人员和管理人员能够利用已有的资源获取知识与技能,从而顺利完成各自的任务。软件工程过程组(Software Engineering Process Group,SEPG)专注于软件过程改进的技术资源,职责包括定义开发过程、确定技术需求和机遇、提供项目建议、对过程状态和业绩进行季度管理和评审。
处于该等级的组织的软件工程与管理活动已经稳定,并且可重复,通过制度化的跟踪,定时观察产品费用、时间进度、功能性和质量。据SEI统计,在实际的评估过的组织中,有大约3%~7%的组织是CMM3。这个等级的关键过程域包括:
● 组织过程定义;
● 组织过程焦点;
● 培训大纲;
● 集成软件管理;
● 软件产品工程;
● 组际协调;
● 同行评审。
(4)已管理级(Managed)CMM4
从初始过程开始,经历了可重复过程、已定义过程、不断的改进达到已管理过程,组织应该取得了相当大的成绩。如果说CMM2是关于过程的实验,CMM3是过程的定义,那么CMM4则主要关注过程的测量。在这个级别中要立足持续的过程改进,测量那些已定义的过程的有效性。组织监控全部正在进行的项目,采集度量数据用于性能改进。我们只有将定量的过程管理和软件质量管理完美地结合起来才能做到这一点。
这个级别的潜在问题是数据采集成本,因为在软件过程中具有潜在价值的度量指标数目繁多,但相关数据采集和维护的成本却比较高。一个处于第4级的公司对每个项目都设定质量和生产目标,过程是被测量并受控的。这两个量将被不断地测量,当偏离目标太多时,就采取行动来修正。利用统计质量控制,管理部门能区分出随机偏离和有深刻含义的质量或生产目标的偏离。例如统计质量控制措施的一个简单例子是每千行代码的错误率,而相应的目标就是随时间推移减少这个量。
CMM4组织的成熟度能力最终可以达到可预见的程度。这是因为整个组织正在使用的过程和工具都是经过了仔细筛选和详细调查的,已经被证明是有作用的,当再次实施的时候,它们应该产生的结果是相同的。由此这个能力项目的确定性就更高了。
据SEI统计,在实际的评估过的组织中,有大约2%~3%的组织是CMM4。这个等级的关键过程区域的重点是:对于软件过程和正在创建的软件工作产品,建立一种定量的理解。CMM4关键过程区域有两个:
● 定量的过程管理;
● 软件质量管理。
(5)优化级(Optimizing)CMM5
在过程成熟度的所有级别上都存在着过程优化,知识程度不同而已,而从已管理过程发展到优化的过程是一个较大的转变。在本级之前,软件开发的管理者把主要的精力放在了产品上,所收集和整理的数据都与产品有直接的关系。在优化的过程级别上已经收集了用于调整过程本身的数据,只需要积累少许经验,管理者就很快发现,过程优化可以极大地提高软件的质量和生产率。
处于CMM5组织的目标是连续地改进软件过程。这样的组织使用统计质量和过程控制技术作为指导。从各个方面中获得的知识将被运用在以后的项目中,从而使软件过程融入了正反馈循环,使生产率和质量得到稳步的改进。
据SEI统计,在实际的评估过的组织中,有大约不到2%的组织是CMM5。CMM5关键过程区域:
● 缺陷预防;
● 技术变更管理;
● 过程变更管理。
必须牢记,软件过程的改善不可能在一夜之间完成,CMM是以增量方式逐步引入变化的。CMM明确地定义了5个不同的“成熟度”等级,一个组织可按一系列小的改良性步骤向更高的成熟度等级前进。其分级、特征与要求见表4-1。
表4-1 CMM对照表
目前在SEI的官网https://sas.cmmiinstitute.com/pars/pars.aspx可以很方便地查到某个公司的成熟度在哪个级别。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。