摘要:本文论述了在工程组织中进行基于CMMI的集成化过程改进的总体策略。文章首先简要介绍了CMMI产品集,然后分别论述了利用CMMI进行集成化过程改进时如何选择合适的规范、模型表示法的选择以及在改进过程中评估的作用及开展。这几方面的问题构成了基于CMMI进行集成化过程改进的主要方面。
关键词:CMMI 集成化过程改进 评估
Abstract: This article expounds the tactic of CMMI-based integrated process improvement in an engineering organization. Firstly, the article introduces the CMMI products. Then, the article expounds how to select the appropriate criterion, how to select the representation of the model, and the function and operation of the appraisal in the improvement. All of the three subjects make up of the major aspects of CMMI-based integrated process improvement.
Key Words: CMMI, integrated process improvement, appraisal
一、引言
在工程领域,组织的质量和生产率依赖于三个主要的因素:过程、人员和技术。在一些大型系统的开发领域,随着技术的不断进步和人们素质的提高,过程因素逐渐成为制约产品质量和生产效率的瓶颈。因此,在开发组织中进行过程改进,进而增强其过程能力成为了开发组织必须要做的一项工作。
由美国卡迈基-梅隆大学的软件工程研究所(SEI)所推出的能力成熟度模型(CMM)的成功,导致了各种模型的衍生,并且每一种模型都探讨了某一特定领域中的过程改进问题。但是,随着系统复杂性的不断增长,工程实践的执行越来越多地依赖于交叉学科群组、并行工程以及其他一些高度自动化的过程。面向不同学科领域的过程改进模型已经不能很好地支持并行工程这种混合式的开发环境。在这种情况下,产生了基于CMMI的集成化过程改进。
二、CMMI简介
CMMI的全称是Capability Maturity Model Integration,即软件能力成熟度模型集成模型,是由美国国防部与卡内基-梅隆大学和美国国防工业协会共同开发和研制的。现在业界使用的CMMI最新模型是2002年发布的1.1版本系列,如CMMI-SE/SW/IPPD/SS,CMMI-SE/SW/IPPD,CMMI-SE/SW,CMMI-SW等。CMMI是一套融合多学科的、可扩充的产品集合,其研制的初步动机是为了利用两个或者多个单一学科的模型实现一个组织的集成化过程改进。在CMMI的初步研制中集成了三个特殊的过程改进模型:软件(SW-CMM)、系统工程(EIA/IS 731)以及集成化产品和过程开发(IPD CMM);从长期考虑,CMMI产品开发群组建立了一个自动的、可扩充的框架,以便于以后将其他一些学科的过程改进模型也逐步添加到CMMI产品集中。
CMMI模型中,最基本的概念是“过程域”。与以前的一些过程改进模型一样,CMMI模型也只是选择对过程改进最重要的一些题目,并将其编组到“域”中。在CMMI以前所推出的每一种单一学科过程改进模型中,都包含了一定数量的过程域(或者其他类似名称,如焦点域)。随着各种学科之间的交叉,过程改进人员发现这些不同模型的过程域之间存在很多重复,在涉及多学科的过程改进中带来一些额外工作量,因此产生了将各种过程改进模型进行集成以减少过程域数量的想法。这种想法的最早实现就是CMMI项目首先在软件和系统工程之间实现了较高的集成性,产生了一个公共的过程域集合。随着研究的深入,过程域在不同学科之间的这种公共性越来越明显,因而在CMMI也就渐渐形成了这样一些非常具有通用性的工程过程域。事实上,过程管理和项目管理可以应用于任何学科,因此,CMMI中的这些工程过程域在对不同学科应用时具有不同的实现。总的来说,集成达到了两个目的:一是提炼出了多学科之间的一些公共过程域,另一方面就是减少了过程域的总数量。下面的表1列出了CMMI及其源模型的过程域数目。
表1:CMMI模型及其源模型中的过程域数量
模型 过程域数量
SW-CMM版本2(c) 19
EIA/IS731 19
IPD-CMM版本0.98 23
CMMI-SE/SW/IPPD版本1.1 25
每一种CMMI模型是一个多达数百页的文档,文档中包含了不同类型的资料,也就是模型构件。CMMI的模型构件主要有三类:需要的(required),期望的(expected),以及提供信息的构件。
需要的构件只有一种,那就是“目标”。目标表示某个过程域想要达到的最终状态,其实现则表示项目和过程控制已经达到了某种规定程度。针对单一过程域的目标,称之为特定目标;可适用于所有过程域的目标则称为共性目标。
期望的构件也只有一种,就是“实践”。实践代表了达到目标所“期望的”手段。CMMI模型中每个实践都恰好映射到一个目标。当然,只要能够实现模型中规定的目标,组织可以采用其他一些经过认证的手段作为“替代的”实践,而不一定非要采用模型中规定的实践。因此,实践只是模型中期望的构件,而不是需要的构件。同样,针对单一过程域的实践,称之为特定实践;可是用于所有过程域的实践则称为共性实践。
提供信息的构件有10种,分别是目的、介绍性说明、引用、名字、实践与目标关系表、注释、典型工作产品、子实践、学科扩充以及共性实践的详尽描述。这些构件为需要构件和期望构件提供了有益的补充。
三、规范的选择
如同上面所说,CMMI是一套产品集合。针对不同的学科有不同的规范和标准。并且,每增加一种CMMI学科规范,组织在改进和评估中就要考虑更多的过程需求。比如,原来的SW-CMM模型中描述了300多个实践或活动,而现在的CMMI-SW/SE版本1.1中却描述了400多个实践或活动,用这两种模型进行过程改进或评估所需要的工作量显然是不同的。因此,一个组织要想利用CMMI进行过程改进,首先必须根据自身的主要业务类型,以及改进的目标等因素,在CMMI产品集合中选择适合于自身组织的规范。
组织在选择适合自身需要的CMMI产品规范时,主要应该考虑一下几方面因素的影响:
组织的核心业务类型
这一点对于规范的选择尤其重要。虽然在一些大型项目中总会涉及到多学科、多领域的问题,但是对于组织中的核心业务来说,总是有一门或几门学科是特别重要的。为了减少过程改进中的工作量,避免在改进中引入一些不必要的过程域,组织应该选择对业务成功至关重要的学科规范。
对于开发产品或服务的组织来说,其业务类型大致包括如下三种:
1、 组织独立承担对某项新产品的全程开发和维护,开发过程不受外部因素影响。
以软件开发为例。如果软件开发组织需要开发的是一个面向某一领域的软件系统,并且是独立开发,则首先考虑的规范就应该是CMMI-SW。该规范中对于软件开发过程中需求的建立、项目计划的制定和实施,以及对软件的测试等过程都有详尽的描述。不过,考虑到软件工程与系统工程两个学科之间的大量重复性,以及两者在全程质量管理上的统一性,一般推荐使用CMMI-SW/SE规范,因为CMMI项目在软件与系统工程之间已经进行了比较完美的集成,对于进行独立开发的软件组织来说,采用CMMI-SW/SE规范进行集成化过程改进,是在集成性和工作量二者之间进行折衷的最佳平衡点。
2、 组织在开发产品或服务中需要集成他人创建的产品,或对产品的开发过程受到某些工程的影响。
实际上,随着系统复杂性的增长,组织所承接的大部分项目都是属于这种业务类型,这就涉及到开发过程中多学科的交叉以及并行工程等问题。CMMI产品集中的CMMI-SE/SW/IPPD对这种类型的项目开发过程进行了详细描述。一般来说,如果组织在项目开发中需要使用交叉学科群组,需要解决对项目群组的使用、计划和组织,需要解决学科或组之间的沟通以及与集成化产品和过程开发相关的一些问题,则可以考虑选择CMMI-SE/SW/IPPD版本1.1规范。
3、 组织在开发过程中需要获取或转包某些关键构件。
这种业务类型主要涉及到对产品的获取和转包,也就是与产品供应商相关的一些问题。CMMI-SE/SW/IPPD/SS版本1.1中对于供应商的选择和监督、集成化供应商管理以及供应商定量管理等方面给出了详尽描述,可以比较成功地解决这些问题。
组织开展项目的业务环境
组织开展项目的业务环境也是影响规范选择的一个重要因素。在为过程改进选择规范时,主要应该考虑以下两种业务环境。
1、 项目开发周期的时间长短及项目的稳定性。
如果组织所承接的是一个长期项目,具有稳定的工作环境和压力,那么可以考虑选择集成了多学科的过程改进规范。因为,当组织面对一个长期、稳定的项目环境时,一般能够支持在一系列业务活动之上的集成化过程改进工作。并且,由于项目的长期性为过程改进提供了充裕的时间,因而组织可以严格贯彻规范中所描述的过程域中的各项实践和活动,同时还可以从数据和经验积累中感觉到过程改进所带来的益处。
如果组织所面对的是一个快速发展的环境,所承接的项目是短期的、按进度驱动的工程,那么可以考虑只集中于一个特定的学科进行过程改进,甚至可以只选择某一学科规范中的少数过程域进行改进,这样可以在不影响项目进度的前提下,尽快得到过程改进投资的效益回报。当然,从组织的长远发展来说,这种做法并不可取。但是当一个组织在面对项目进度的压力时,也只能采取这种折衷的做法。
2、 项目面对的客户基础。
在选择过程改进规范时,组织所面对的客户也是一个不容忽视的因素。如果组织承接的是对复杂系统有一些关键需求的大型项目,例如国防、航天等项目,则客户往往就会要求组织采用有把握的学科规范来匹配系统开发过程。
集成化过程改进的范围和目的
在选择合适的规范之前,首先应该了解所需改善的过程种类和过程改进的目的。如果组织的目的完全是为了进行内部过程改进,那么在选择规范方面可以有很大的余地。针对组织中涉及的项目种类和业务类型,只要有助于组织开发过程的定义、改进的学科规范都可以选择。但是,如果组织进行过程改进是为了认证或定级,以扩大组织的商业影响力,那么就应该有针对性地选择某一特定学科的规范,在过程改进过程中也就要注意对规范实施的严格性和全面性。
四、 选择合适的表示法
每一种CMMI模型都有两种表示法:阶段式和连续式。这是因为在CMMI的三个源模型中,CMM是“阶段式”模型,系统工程能力模型是“连续式”模型,而集成产品开发(IPD)CMM是一个混合模型,组合了阶段式和连续式两者的特点。两种表示法在以前的使用中各有优势,都有很多支持者,因此,CMMI产品开发群组在集成这三种模型时,为了避免由于淘汰其中任何一种表示法而失去对CMMI支持的风险,并没有选择单一的结构表示法,而是为每一个CMMI都推出了两种不同表示法的版本。
不同表示法的模型具有不同的结构。连续式表示法强调的是单个过程域的能力,从过程域的角度考察基线和度量结果的改善,其关键术语是“能力”;而阶段式表示法强调的是组织的成熟度,从过程域集合的角度考察整个组织的过程成熟度阶段,其关键术语是“成熟度”。
尽管两种表示法的模型在结构上有所不同,但CMMI产品开发群组仍然尽最大努力确保了两者在逻辑上的一致性,二者的需要构件和期望部件基本上都是一样的。过程域、目标在两种表法中都一样,特定实践和共性实践在两种表示法中也不存在根本区别。因此,模型的两种表示法并不存在本质上的不同。组织在进行集成化过程改进时,可以从实用角度出发选择某一种偏爱的表示法,而不必从哲学角度考虑两种表法之间的差异。
从实用角度讲,两种表示法各有优点。
阶段式表示法
软件CMM是一种阶段式模型,该模型经过多年的成功使用已经被证明是有效的,这为选择阶段式表示法模型提供了最强有力的证据。考虑从不成熟组织向成熟组织的发展过程,阶段式表示法具有如下两方面优势:
1、 阶段式模型为支持组织的过程改进提供了一个过程平台。
对于着眼于改善过程成熟度的组织来说,阶段式模型提供了一种明确的、行之有效的跨越式发展途径。阶段式模型中所描述的组织的5个成熟度等级中,每实现一次等级间的跨越,组织就致力于解决某一方面的问题。例如,组织从成熟度等级1到成熟度等级2,主要致力于有助于改善项目管理的过程域;从成熟度等级2到成熟度等级3,提供了广泛的组织过程定义;从成熟度等级3到成熟度等级4,致力于对过程定量管理的过程域;从等级4到等级5,致力于过程的改进和优化。通过这种方式,阶段式模型确定了组织进行过程改进的最佳次序,如图1。
图1:模型的阶段式表示法
2、 阶段式模型可以为组织定义一个过程成熟度等级,便于进行跨组织的比较。
在阶段式模型中,每一个过程域都被指定归属到一个成熟度等级中,因此,基于阶段式模型为组织所定义的成熟度等级中,过程域的预期范围和应用将变得非常清晰。这样,在对不同的组织进行比较时,只要对比组织所达到的不同的成熟度等级,即可知道不同组织在执行过程域方面所存在的差别。
连续式表示法
相比之下,连续式模型不如阶段式模型常用,但也不乏支持者,特别是在系统工程师中。采用连续式模型主要有如下两方面的优势:
首先,连续式模型为用户进行过程改进提供了比较大的自由度。如同上面所说,阶段式模型确定了组织进行过程改进的最佳次序,但同时也限定了用户在进行过程改进时必须遵循单一的改善路径。而连续式模型则允许用户根据组织的业务目的来选择过程改进活动的次序。在连续式模型中,用户可以选择定义组织的成熟度等级,同时还可以选择定义更适合于自身业务环境的过程域的次序。组织可以在一个自己选择的次序中使过程域达到给定的能力等级,而不必遵循单一的阶段式模型的原则。
其次,基于连续式模型对组织的过程进行的评估,其评估结果具有更好的可见性。在连续式模型中,可以为每个过程域定义多个能力等级,从而可以增强对过程改进中强项和弱点的认识。由于连续式模型是对每个个别的过程域进行单独的评定,并给出个别过程域的能力等级特征图,这显然要比只一个单一的成熟度等级图能提供对过程的更仔细的观察。
五、 CMMI评估的作用及开展
在过程改进中,评估是非常重要的一个环节。对于组织内部来说,开展对过程的评估是为了找出组织目前所处的位置,诊断组织过程中存在的缺陷。这一点对于过程改进的成功开展是必不可少的。因此,在一个组织中进行集成化过程改进之前,首先要对评估的作用及开展有一个清晰的认识。
1、正确认识评估的作用
目前,我国的软件行业中对开展CMMI评估日益重视,很多公司都已经开始实施CMMI评估,并取得了一定的成果。但是,在开展评估中也暴露出了一些问题。其中最主要的问题是对于评估产生的误解。很多组织仅仅是为了评估而评估,只盯住评估的商业目标,急于求成,在评估过程中弄虚作假;评估结束后,只注重认证结果,对评估结果没有好好利用,不能够真正贯彻评估中所给出的建议,从而也不能真正起到过程改进的目的。
在组织的过程改进中,评估的主要作用就是评定组织当前的所处的位置,即评定过程域的能力等级或组织的成熟度等级,并且找出组织的各个过程域中的强项和弱点,为下一步的过程改进提供建议和支持。同时,考虑到组织的商业目标,在组织中开展评估和认证可以扩大组织的市场影响力,从而带来相应的经济效益。在过程改进中,一定要摆正评估的位置。评估是手段,而过程改进才是组织所要达到的最终目的。
2、评估的开展
根据CMM标准中所提出的IDEAL模型,过程改进的开展可以分为五个阶段:⑴初始化:为成功进行过程改进打下基础;⑵诊断:相对预期目标找出组织当前所处的位置;⑶建立计划:计划如何达到目标;⑷行动:按照计划展开行动;⑸学习和扩充:学习以往的过程改进经验,扩充在将来采用新技术的能力。在组织进行过程改进的过程中,这五个阶段需要多次重复进行,逐步改善组织的过程能力。因此,作为诊断阶段中的一项重要活动,评估也不是一次性的行为,同样也需要循环往复进行。
CMMI产品集中的CMMI Appraisal Requirement 版本1.1给出了基于CMMI的评估中40多条需求,提供了一个综合需求集和评估方法的设计限制。根据这些需求集和设计限制可以开发出相应的基于CMMI的评估方法。
CMMI产品集中还给出了过程改进的标准方法CMMI评估方法SCAMPI,这一方法是由CMMI产品开发群组开发的,满足全部的CMMI Appraisal Requirement 版本1.1需求。组织在进行过程改进的时候可以参考该方法进行具体实施。
但是,对于一个具体的组织来说,仅仅根据CMMI产品中对评估的相应描述来照本宣科是远远不够的。特别是对于一些在过程管理方面还很不成熟的组织,在开展CMMI评估的时候更要发挥自身的创造性,灵活运用CMMI产品集中所提供的评估方法。根据CMMI Appraisal Requirement 版本1.1中的描述,评估可分为三类:
A类评估:全面综合的评估方法,要求在评估中全面覆盖评估中所使用的模型,并且在评估结果中提供对组织的成熟度等级的评定结果。
B类评估:较少综合,花费也较少。在开始时作部分自我评估,并集中于需要关注的过程域。不评定组织的成熟度等级。
C类评估:也称为快估。主要是检查特定的风险域,找出过程中的问题所在。该类评估花费很少,需要的培训工作也不多。
对于一个准备全面实施SCAMPI的组织来说,可以将过程改进分成几个层次进行,在不同层次间逐渐引入较高水平的评估:先通过几次C类评估找出过程缺陷,改进之后再导向B类评估;同样,B类评估也可以执行多次,慢慢导向进行全面的SCAMPI基准评估。如图2所示。
图2:评估的时间层次性
3、对评估模型的剪裁
模型是评估中的一个重要因素。在进行具体的评估之前,需要对选定的模型进行剪裁。这样做一方面可以减少评估的工作量,更主要的是建立起适合组织具体情况的具体模型,将标准模型中的角色、活动等部件映射到组织结构中。
对CMMI模型的剪裁可以从两个不同的角度进行:一是将剪裁模型用于过程改进;另一方面,也可以将剪裁模型用于建立评估基线。
对于内部过程改进方面的模型剪裁,主要是限制或扩展组织或项目的过程改进范围,是别出支持组织的商业目标和需求的过程域和实践,去掉对组织的业务目标“不适用”的过程域、目标以及实践。当然,由于模型中各组件之间的相互联系,如果将多个过程域、过程域中的多个目标或实践声明为“不适用”,将不可避免地带来评估中的一系列风险,从而削弱了评估的作用。因此,当怀疑某个过程域或目标以及实践不适用时,不应该匆忙做出决定。
将剪裁模型用于建立评估基线,主要是为了能够通过评估报告在同行业中或者在几个潜在的供应商中比较评估结果。因此,在这种情况下进行模型的剪裁,必须保证在多次评估中参照剪裁模型所得出的定级结果的一致性。从这种角度出发的模型剪裁受到更多的限制。CMMI-SE/SW/IPPD版本1.1中对其具体剪裁方法给出了详尽的描述,组织在通过剪裁定制自己的CMMI模型时可以作为参考。
组织在进行过程剪裁时,应该综合考虑自身的业务目标、业务模型以及过程改进的资源约束等因素,全面衡量剪裁在减少评估工作量与其所带来的风险之间的利害关系,紧密结合组织本身的核心业务过程,参照CMMI产品集中给出的规范和标准,建立起自身评估中可用的CMMI模型。
六、 结束语
自从CMMI项目启动以来,基于CMMI的集成化过程改进策略已经在很多知名的大型组织中取得了比较成功的实施。这些组织在进行集成化过程改进中,既取得了巨大的效益,也积累了丰富的经验。本文根据这些组织的实施经验,总结了基于CMMI的集成化过程改进中需要注意的几个关键问题。具体实施中的许多关键技术,如组织标准过程的建立,对模型的剪裁技术,评估的开展中的一些重要技术等,都还有待于进一步的研究。
参考文献
1、CMMI Product Development Team. Standard CMMI? Appraisal Method for Process Improvement (SCAMPISM), Version 1.1: Method Definition Document. CMU/SEI-2001-HB-001.
2、CMMI Product Development Team. Appraisal Requirements for CMMISM, Version 1.1: Technical Report. CMU/SEI-2001-TR-034.
3、CMMI Product Development Team. CMMISM for Systems Engineering/Software Engineering/Integrated Product and Process Development/Supplier Sourcing, Version 1.1,Staged Representation (CMMI-SE/SW/IPPD/SS,V1.1,Staged). CMU/SEI-2002-TR-012.
4、CMMI Product Development Team. CMMISM for Systems Engineering/Software Engineering/Integrated Product and Process Development/Supplier Sourcing, Version 1.1,Continous Representation (CMMI-SE/SW/IPPD/SS,V1.1,Continous)CMU/SEI-2002-TR-011.
5、周伯生,吴超英,任爱华译著。《CMMI精粹——集成化过程改进实用导论》,机械工业出版社,2002,8。
6、胡春哲,张洁译著。《CMM实践应用——Infosys公司的软件项目执行过程》,电子工业出版社,2002,8。