第一级:初始级
在初始级,企业一般不具备稳定的软件开发与维护的环境。常常在遇到问题的时候,就放弃原定的计划而只专注于编程与测试。
第二级:可重复级
在这一级,建立了管理软件项目的政策以及为贯彻执行这些政策而定的措施。基于过往的项目的经验来计划与管理新的项目。
第三级:定义级
在这一级,有关软件工程与管理工程的一个特定的、面对整个企业的软件开发与维护的过程的文件将被制订出来。同时,这些过程是集成到一个协调的整体。这就称为企业的标准软件过程。
第四级:定量管理级
在这一级,企业对产品与过程建立起定量的质量目标,同时在过程中加入规定得很清楚的连续的度量。作为企业的度量方案,要对所有项目的重要的过程活动进行生产率和质量的度量。软件产品因此具有可预期的高质量。
第五级:(不断)优化级
在这个等级,整个企业将会把重点放在对过程进行不断的优化。企业会采取主动去找出过程的弱点与长处,以达到预防缺陷的目标。同时,分析有关过程的有效性的资料,作出对新技术的成本与收益的分析,以及提出对过程进行修改的建议。
CMM第一级:初始级
◆ 特征
(1)软件过程的特点是杂乱无章,有时甚至混乱,几乎没有定义过程的规则或步骤。
(2)过分的承诺,常作出良好的承诺:如“按照软件工程方式,有序的工程来工作”;或达到高目标的许诺。但实际上却出现一系列问题。
(3)遇到危机就放弃原计划过程,反复编码和测试。
(4)成功完全依赖个人努力和杰出的专业人才,取决于超常的管理人员和杰出有效的软件开发开发人员。具体的表现和成果都源于或者说是决定于个人的能力和他们先前的经验、知识以及他们的进取心和积极程度。
(5)能力只是个人的特性,而不是开发组织的特性。依靠着个人的品质或承受着巨大的压力;或找窍门取得成果。但此类人一旦离去,对组织的稳定作用也消失。
(6)软件过程是不可确定的和不可预见的。软件成熟性程度处于第一级软件组织的软件过程在实际的工作过程中被经常的改变(过程是随意的)。这类组织也在开发产品,但其成果是不稳定的,不可预见的,不可重复的。也就是说,软件的计划、预算、功能和产品的质量都是不可确定和不可预见的。
◆ 过程
(1)极少存在或使用稳定的过程
(2)所谓“过程”,往往是“就这么干”而言。
(3)各种条例,规章制度互不协调,甚至互相矛盾。
◆ 人员
(1)依赖个人努力和杰出人物。一旦优秀人物离去,项目就无法继续。
(2)人们的工作方式如同“救火”,就是在开发过程中不断地出现危机,以及不断的“救火”。
◆ 技术
引进新技术是极大风险。
◆ 度量
不收集数据或分析数据。
◆ 改进方向
(1)建立项目管理过程,实施规范化管理,保障项目的承诺。
(2)首要任务是进行需求管理,建立客户与软件项目之间的共同理解,使项目真正反映客户的要求。
(3)建立各种软件项目计划、如软件开发计划、软件质量保证计划、软件配置管理计划、软件测试计划、风险管理计划及过程改进计划。
(4)开展软件质量保证活动(SQA)。
CMM第二级:可重复级
◆ 特征
(1)进行较为现实的承诺,可按以前在同类项目上的成功经验建立的必要过程准则来确保再一次的成功。
(2)主要是逐个项目地建立基本过程管理条例来加强过程能力。
(3)建立了基本的项目管理过程来跟踪成本、进度和功能。
(4)管理工作主要跟踪软件经费支出、进度及功能。识别在承诺方面出现的问题。
(5)采用基线(BASELINE)来标志进展、控制完整性。
(6)定义了软件项目的标准,并相信它,遵循它。
(7)通过子合同建立有效的供求关系。
◆ 过程
(1)软件开发和维护的过程是相对稳定的,但过程建立在项目一级。
(2)有规则的软件过程是在一个有效的工程管理系统的控制之下,先前的成功经验可以被重复。
(3)问题出现时,有能力识别及纠正。承诺是可实现的。
◆ 人员
(1)项目的成功依赖于个人的能力以及管理层的支持。
(2)理解管理的必要性及对管理的承诺。
(3)注意人员的培训问题。
◆ 技术
建立技术支持活动,并有稳定的计划。
◆ 度量
每个项目建立资源计划。主要是关心成本、产品和进度。有相应的管理数据。
◆ 改进方向
(1)不再按项目制定软件过程,而是总结各种项目的成功经验,使之规则化,把具体经验归纳为全组织的标准软件过程。把改进组织的整体软件过程能力的软件过程活动,作为软件开发组织的责任。
(2)确定全组织的标准软件过程,把软件工程及管理活动集成到一个稳固确定的软件过程中。从而可以跨项目改进软件过程效果,也可作为软件过程剪裁的基础。
(3)建立软件工程过程小组(SEPG)长期承担评估与调整软件过程的任务,以适应未来软件项目的要求。
(4)积累数据,建立组织的软件过程库及软件过程相关的文档库。
(5)加强培训。
CMM第三级:确定级
◆ 特征
(1)无论管理方面或工程方面的软件过程都已文件化、标准化,并综合成软件开发组织的标准软件过程。
(2)软件过程标准被应用到所有的工程中,用于编制和维护软件。有的项目也可根据实际情况,对软件开发组织的标准软件过程进行剪裁。
(3)在从事一项工程时,产品的生产过程、花费、计划以及功能都是可以控制的,从而软件质量也可以控制。
(4)软件工程过程组(SEPG)负责软件活动。
(5)在全组织范围内安排培训计划。
◆ 过程
(1)整个组织全面采用综合性的管理及工程过程来管理。软件工程和管理活动是稳定的和可重复的,具有连续性的。
(2)软件过程起了预见及防范问题的作用,能使风险的影响最小化。
◆ 人员
(1)以项目组的方式进行工作。如同综合产品团队。
(2)在整个组织内部的所有人对于所定义的软件过程的活动、任务有深入了解,大大加强了过程能力。
(3)有计划地按人员的角色进行培训。
◆ 技术
在定性基础上建立新的评估技术。
◆ 度量
(1)在全过程中收集使用数据。
(2)在全项目中系统性地共享数据。
◆ 改进方向
(1)开始着手软件过程的定量分析,以达到定量地控制软件项目过程的效果。
(2)通过软件的质量管理达到软件的质量目标。
CMM第四级:管理级
◆特征
(1)制定了软件过程和产品质量的详细而具体的度量标准,软件过程和产品质量都可以被理解和控制。
(2)软件组织的能力是可预见的,原因是软件过程是被明确的度量标准所度量和操作。不言而喻,软件产品的质量就可以预见和得以控制。
(3)组织的度量工程保证所有项目对生产率和质量进行度量、并作为重要的软件过程活动。
(4)具有良好定义及一致的度量标准来指导软件过程,并作为评价软件过程及产品的定量基础。
(5)在开发组织内已建立软件过程数据库,保存收集到的数据,可用于各项目的软件过程。
◆过程
(1)开始定量地认识软件过程。
(2)软件过程的变化小,一般在可接受的范围内。
(3)可以预见软件过程中和产品质量方面的一些趋势。一旦质量经度量后超出这些标准或是有所违反,可以采用一些方法去改正,以达到良好的目标。
◆人员
每个项目中存在强烈的群体工作意识。因为每人都了解个人的作用与组织的关系,因此能够产生这种群体意识。
◆技术
不断的在定量基础上评估新技术。
◆度量
(1)在全组织内进行数据收集与确定。
(2)度量标准化。
(3)数据用于定量地理解软件过程及稳定软件过程。
◆改进方向
(1)缺陷防范,不仅仅在发现了问题时能及时改进,而且应采取特定行动防止将来出现这类缺陷。
(2)主动进行技术变动管理、标识、选择和评价新技术,使有效的新技术能在开发组织中施行。
(3)进行过程变动管理,定义过程改进的目的,经常不断地进行过程改进。
CMM第五级:优化级
◆ 特征
(1)整个组织特别关注软件过程改进的持续性、预见及增强自身,防止缺陷及问题的发生,不断地提高他们的过程处理能力。
(2)加强定量分析,通过来自过程的质量反馈和吸收新观念,新科技,使软件过程能不断地得到改进。
(3)根据软件过程的效果,进行成本/利润分析,从成功的软件过程中吸取经验,加以总结。把最好的创新成绩迅速向全组织转移,对失败的案例,由软件过程小组进行分析以找出原因。
(4)组织能找出过程的不足并预先改进,把失败的教训告知全体组织以防止重复以前的错误。
(5)对软件过程的评价和对标准软件过程的改进,都在全组织内推广。
◆ 过程
(1)不断地系统地改进软件过程。
(2)理解并消除产生问题的公共根源,在任何一个系统中都可找到:由于随机变化造成重复工作、进而导致时间浪费。为了防止浪费人力可能导致的系统变化。要消除“公共”的无效率根源,防止浪费发生。尽管所有级别都存在这些问题,但这是第五级的焦点。
◆ 人员
(1)整个组织都存在自觉的强烈的团队意识。
(2)每个人都致力过程改进,人们不再以达到里程碑的成就而满足,而要力求减少错误率。
◆ 技术
基于定量的控制和管理,事先主动考虑新技术、追求新技术。可以实现软件开发中的方法和新技术的革新、以防止出现错误,不断提高产品的质量和生产率。
◆ 度量
利用数据来评估,选择过程改进。
◆ 改进方向
保持持续不断的软件过程改进。
CMM总结:五层结构图
我们看到,在第五级上,技术和过程的改进像普通商业活动一样有计划、有管理地进行。由于组织不断的致力于改进过程的能力,所以软件开发组织的能力可持续改进。这种改进不仅表现在对存在的软件过程逐步改进,不表现在采用新技术和新方法方面的革新。
画一个图吧:(CMM的五层结构图)
-----------------
/优化级/
/(5)/
-----------------
↑
|不断改进的过程
|
-----------------
/可管理级/
/(4)/
-----------------
↑
|能预见的过程
|
-----------------
/确定级/
/(3)/
-----------------
↑
|标准一致的过程
|
-----------------
/可重复级/
/(2)/
-----------------
↑
|有纪律的过程
|
-----------------
/初始级/
/(1)/
-----------------