包括以下内容:

 

软件组织开发能力的评估程序和管理规范研究 [2003/03/13]

基于CMMI的集成化过程改进策略 [2003/03/12]

基于CMM的软件项目合同范围定义的扩充 [2003/03/10]

全球通过CMM4CMM5的最新组织名单(2001-10

中小型软件企业切入点:两步CMM

CMM体系设计三步曲

CMM2级实施技术问题分析

CMM认证 爱你不容易

CMM—软件产业发展的必由之路

CMM打造一个成长的园地

基于CMM实施软件过程改进的成功策略

中国如何引进CMM评估,促进软件产业发展

在中国开展CMM评估的几点建议

CMM评估中存在的若干问题

国内软件企业实施CMM的四大障碍

CMM给我们带来了什么

关于CMM在项目中的实施

CMM工具帮助

软件企业如何实施CMM

如何成为CBA IPI主任评估师

在中国开展CMM评估的几点建议

CMMKPAKP的分布统计

联想冲刺CMM3透明报道(1

联想冲刺CMM3透明报道(2

联想冲刺CMM3透明报道(3

联想冲刺CMM3透明报道(4

联想冲刺CMM3透明报道(5

冷眼看CMM

全面质量管理在软件业的应用

软件缺陷管理

CMM与传统企业文化

国内软件业对CMM认识的阶段性

实施CMM时必须解决的认识问题

CMM实施中的四个常见问题

如何在短期内达到CMM2级目标?

SQA到底是什么?

CMM认证谁受益

独立与客观—CMM中的软件质量保证实施准则

团队精神在CMM中体现

CMM是解决软件出口壁垒的有效途径

软件业发展的新方向——外包

CMM与软件外包管理

软件企业需要什么样的CMM服务?

循序渐进—CMM实施工程案例

CMM的宜与不宜

实施CMM是一条没有终点的路

高能力成熟度软件企业中软件质量工程师的职责

 

 

 

 

软件组织开发能力的评估程序和管理规范研究


51CMM原创 作者:李兴兵 [2003/03/13]

    1. 开展软件开发能力评估的必要性
    
国际学术界和工业界一致公认,软件产业的发展将经历三个不同的阶段。第一阶段是70年代中期至90年代中期的软件结构化生产阶段,该阶段是以结构化分析与设计、结构化评审、结构化程序设计以及结构化测试为特征。从80年代中期开始,软件生产开始进入以过程为中心的第二阶段,以个体软件过程PSP(Personal Software Process)、过程成熟度模型CMM和群组软件过程TSP(Team Software Process)为标志,这个阶段预计在2005年前后结束。而从1995年开始,国际上已经逐步进入以软件过程、面向对象和构件重用等三项技术为基础的软件工业化生产的第三阶段。我国一些先进的软件公司也已经开始从第二阶段过渡到第三阶段。
    
我国的软件开发行业目前还处于软件结构化生产阶段,刚刚开始向以过程为中心的第二阶段过渡,这也就是说,我国的大部分软件开发组织的过程能力成熟度还有待于进一步提高和改进,这主要表现在:
    
第一、 相当多的软件开发单位对软件开发的过程管理不规范,所生产的软件系统质量达不到客户方要求,容易产生因质量问题所引起的软件危机,软件开发中还存在比较大的潜在风险。
    
第二、 软件开发单位的开发过程混乱而无序,只重视先进技术在软件开发中的作用,忽视了软件开发过程对于软件质量的影响。开发过程的不标准性既不利于组织本身软件过程能力的提高,同时也妨碍了软件开发组织与国际先进开发管理规范的接轨。
    
第三、 各软件开发单位对软件产品的开发中不遵循软件工程的要求,其软件开发过程能力的不成熟,不利于软件项目采办中做出正确的决策。并且,客户方对软件开发组织的开发过程也不能进行很好地监控。
    
基于以上几点原因,要想加快我国软件行业的发展,提高软件开发水平和质量,促使软件开发单位严格按照软件工程的要求开发软件,则必须对软件开发单位的开发能力和过程能力进行客观公正的评估,督促各开发单位从根本上提高自身的软件开发过程能力,从而保证软件项目的高质量和低风险。
    2.
国内外软件开发组织进行软件开发能力评估的现状
    20
世纪80年代,美国工业界和政府部门开始认识到,软件过程能力的不断改进才是增进软件开发组织的开发能力和提高软件质量的第一要素。在这种背景下,由美国卡内基-梅隆大学软件工程研究所(SEI)研制并推出了软件能力成熟度模型SW-CMM,随着软件产业界对软件过程能力改进的不断研究,CMM逐渐成为了评估软件开发过程的管理以及工程能力的标准。
    CMM
评估在软件产业界的开展,极大地推动了软件开发组织的过程能力成熟度的提高,并且将软件开发和生产从原来的结构化生产阶段推进到了以过程为中心的生产阶段。美国、印度等软件大国率先接受并实施了基于CMM的评估和改进,并取得了明显的效益。自1987年到20006月,向SEI报告的CMM软件过程评估多达1654次,被评估组织1269个,受评估的项目6784个。其中从1996年到20006月,就有901个软件组织接受了评估,被评估的项目为4174个。
    
我国软件组织对于CMM评估的实施起步较晚,目前仍然处于起步阶段,具体现状可以概括如下:
    
第一、 我国正在由结构化生产方式向以过程为中心的生产方式和工业化生产方式前进。许多软件企业已经认识到利用CMM改进软件过程,实施科学化、系统化管理以提高软件组织的过程能力成熟度的重要性,因而具备了开展CMM评估的强大动力。
    
第二、 目前实施CMM评估还存在一定的困难。这主要表现在许多软件组织不熟悉CMM的概念,缺乏软件工程理论和实践方面的经验,组织内的成员、特别是高层领导对CMM评估的重视程度不够,使得评估的具体工作得不到有效实施。
    
第三、 软件开发过程很不规范,缺少必要的文档化的过程描述,特别是缺少工作文档、工作量统计文档和风险管理文档。缺乏对软件过程和产品的测量,没有足够的软件过程历史数据,很难基于历史数据对软件开发的工作量和进度进行估计。
    
尽管如此,到目前为止,我国也已经有数家软件企业成功开展了CMM评估,并分别通过了CMM各个级别的认证。在评估过程中,不仅积累了丰富的经验,而且还培训了大量具有初步经验的评估人员,有的软件公司甚至已经培养出了自己的主任评估师。
    
我国的软件开发行业要想从根本上提高自身的软件过程能力,保证所开发软件的质量,缩短开发周期和减少费用,就必须紧跟国际和国内先进企业的步伐,尽快在软件开发过程中实施CMM评估和改进,有能力的软件开发企业应该率先申请进行CMM认证,形成适合于自身的软件开发管理规范。
    3.
软件开发能力评估程序
    
当然,CMM作为一个较好的软件改善框架,只是给出做什么,并没有给出如何做。因此要想在软件行业中成功实施CMM,还必须认真研究如何遵循CMM模型进行具体操作的问题。
    1)
实施软件开发能力评估的战略考虑
    
在软件开发企业中实施CMM评估,不能够照本宣科、生搬硬套国外软件公司的实施评估的方法,而要考虑软件组织自身的现状和评估所需要的人力财力物力等因素。对于我国大部分的软件开发组织来讲,基于CMM对软件开发过程进行评估和改进是一个全新的课题,实施CMM评估不仅需要大量的时间和资金投入,而且还会从根本上影响到软件组织的企业文化,并要求组织成员的软件开发理念也相应发生根本性改变。因此,对软件开发能力进行CMM评估不可能一步到位,而应该分阶段、分层次进行实施。
    
具体来说,软件开发组织中实施CMM评估应该按照以下两个阶段进行:
    
第一阶段:申请评估的软件开发组织首先应该自己组织CMM培训,强化组织成员的CMM理念,在整个组织中树立起过程管理和质量管理意识,并着重培养一批具有初步经验的CMM实施管理人员。在此基础上,选取一些合适规模的中小型项目进行试点,初步积累一些实施CMM的经验,为进行正式的CMM评估打下基础。
    
第二阶段:在第一阶段取得收获的基础上,聘请有实施CMM成功经验的单位作为咨询顾问,在组织内全面实施CMM。并且在咨询专家的指导下提出评估申请,并着手准备组织预评估和正式评估。
    2)
基于CMM评估的具体实施过程
    
根据评估中的侧重点,软件开发能力的评估也可以有多种方法。在基于CMM模型的评估中所采用的方法是SEI所发布的CBA IPI方法。当然,根据被评估单位的具体情况,评估方法和程序也可以有所改变,但其基本的过程仍然是遵循CBA IPI方法的。CBA IPI方法以CMM为参考模型,以CMM评估框架CAFCMM Appraisal Framework)为设计要求,由一组专业评估团队对组织的软件过程进行评估,找出组织当前软件过程的强项和弱点并依据CMM中关键过程域KPAKey Process Area)的目标要求对组织的软件过程进行评级,从而提出最终评估报告的评估方法。
    
基于CMM的评估程序一般由三个步骤组成:
    
第一、 计划准备阶段。这一阶段的主要任务是在接到软件组织的评估申请后进行受理和实地考察,完成具体评估前的准备工作,制定出评估的具体计划。这一阶段的主要工作包括以下几项:1、界定评估范围,确定评估目标。2、制定调查问卷,选择组织参与者。3、制定评估计划,组织和培训评估团队。4、宣传评估的意义、目标、基本方法和过程。5、进行问卷调查并分析汇总,进行文档的前期查阅以确定准备内容的完整性。
    
第二、 评估执行阶段。这一阶段的主要任务是在组织中选取软件项目进行审查,对组织的软件开发能力成熟度进行定量、定性和综合评估,确定组织的资质等级并颁发资质证书等。其中具体工作包括:1、召开动员会,明确目标,取得组织参与者的支持。2、与组织参与者进行深度交谈、文档查阅及必要的演示说明。3、对收集到的信息进行确认、归类和汇总。4、分析、总结与归纳通过评估发现的组织过程的强项和弱点。5、将初步发现的组织强项和弱点向组织参与者报告说明并征求反馈意见。6、根据反馈意见作进一步验证评估和必要的修正、补充。7、确认评估内容的完整性后进行CMM等级评定。
    
第三、 评估报告阶段。这一阶段的主要任务是将评估结果报告给受评估的组织,并给出相应的反馈改进意见。具体工作有:1、向组织参与者报告说明评估结果并取得共识。2、向组织管理层报告说明评估结果取得认同以及对进一步的软件过程改进(SPI)计划的支持。
    4.
关键过程域的管理规范
    
以上所述的评估程序是参考CMM模型而建立的,其评估过程中所依据的是CMM模型等级中所规定关键过程域的目标要求。因此,要保证软件开发组织中实施CMM评估的有效性,就必须在开展CMM评估的同时,研究、建立和完善CMM中所给出的软件需求管理、软件项目策划、软件跟踪和监督、软件(子)合同管理、软件过程文档管理、软件标准化、软件质量保证、软件配置管理、软件维护、集成软件管理、软件产品工程化、组织协调、同行专家评审、预防缺陷、技术变更管理、过程变更管理、组织过程管理和培训过程管理等18个关键过程域的管理规范。在制定这些管理规范的工作中需要注意以下几点:
    
第一、 要以CMM模型中所规定关键过程域为参考,所制定的各关键过程域的管理规范应尽量接近国际标准,做到与国际接轨,以树立起权威性。
    
第二、 在每一个关键过程域中,不能照搬照抄CMM中所规定的关键实践,而应该根据软件组织的具体情况进行合理的裁剪和解释。
    
第三、 在实现各关键过程域的过程中,CMM模型各级别之间的关键过程域的划分并不是一层不变的,可以根据具体情况进行灵活变更。比如,对于某些特定领域的应用软件来说,有些开发组织虽然不一定能够完全达到CMM5级水平的能力成熟度,但在实施评估时仍然可以将CMM5中的缺陷预防这一关键过程域的目标要求纳入到评估的指标体系中来,以符合软件对于软件质量的高要求。
    5.
软件开发能力评估中可能会遇到的问题
    
前面说过,CMM评估对大多数软件开发组织来说是个新事物,组织中的绝大部分成员对其并不是很了解,因此,在实施评估中不可避免地会遇到这样那样的问题。根据我国软件开发组织中的实际情况,在实施CMM评估是大概会出现以下几方面的情况:
    
首先,实施CMM评估将会改变开发组织的企业文化和员工的开发理念,因而在执行中可能会有很大阻力。以前的软件开发组织在对软件开发过程进行管理时,往往只注重项目进度,而很少考虑到软件的质量保障和过程管理等问题。对于一个项目负责人来说,可能只是关心每天、每周的软件开发进度,而不注重由于过程管理不规范而带来的质量隐患;对于软件开发人员来说,往往习惯于按照自己喜欢的方式完成眼前的开发任务,排斥使用既耗时又费力的各种开发规范,也懒得填写开发过程中的各种文档,通常的做法是完成软件开发之后再回过头来写文档,不能真正发挥规范文档的作用;而对于软件开发组织的高层领导来说,可能只会着眼于组织近期所产生的效益,对于近期内作用并不明显、却又需要投入大量资金和时间的CMM评估往往并不能给以真正的支持。
    
其次,在实施CMM评估过程中只注重CMM认证的广告效应,为评估而评估,而忽略了进行CMM评估的真正目的。CMM评估只是一种手段,其最终目的是实现软件开发组织过程能力的不断提高。如果在评估过程中,被评估单位本末倒置,只是为了追求短期的经济效益,却不根据评估结果和反馈意见对软件开发过程管理进行有效的改进,CMM评估的实施往往就会流于形式,而不能从根本上改进软件组织的开发过程能力。
    
第三,目前在软件开发组织中实施CMM评估,还存在一定的技术阻力。这主要表现在两方面:一方面,由于对CMM标准的要求不熟悉,在管理过程中所编写的过程文档质量较差;另一方面,项目经理对文档要求不理解,或者操作方法不熟练,从而导致执行的结果与要求相差甚远。
    
第四,在实践方面,没有实施CMM评估的具体经验,缺乏有经验的评估人员。
    
根据以上几点考虑,要想在软件开发组织中成功实施CMM评估,需要做好以下几方面工作:
    
第一、 在整个组织内宣传CMM软件开发过程理念,从思想上引起对CMM评估的重视,尤其是要得到组织高层领导的支持和组织的政策扶持。
    
第二、 对组织内的相关人员进行CMM培训和软件工程相关知识的培训,提高组织成员实施CMM的技能。
    
第三、 加强与同行之间的交流,借鉴国内外软件组织进行CMM评估的成功经验,并根据自身实际情况灵活运用。
    
第四、 评估程序和管理规范力争做到与国际接轨,树立起行业权威性,在软件的开发过程管理中形成共识。
    
第五、 将开展CMM评估的出发点放在改善软件开发组织的过程能力成熟度上,制定合理的过程管理规章制度,严格执行,避免流于形式。
    6.
结束语
    
目前我国软件产业方兴未艾,实施CMM可以从根本上改变我国的软件工程文化,改善软件人员素质,这对于提高软件企业素质、增强软件企业的国际竞争力以及软件的出口创汇都有着很重要的作用。这种行业环境为软件开发过程能力评估的开展创造了有利的外部条件。同时,当今国外软件开发组织对于我国软件行业的冲击对于软件组织所造成的压力,形成了在软件开发组织中开展CMM评估的内在要求。并且,鉴于信息产业在国家建设中的重要地位,在软件开发组织中开展CMM评估得到了政策方面的倾斜和资金上的支持,这一点为在软件开发组织内开展CMM评估创造了外部条件。因此,尽管在实施中存在不少困难,但这并不能阻止软件开发能力评估的开展。尽快进行这方面的研究工作,不仅具有重要的理论意义,而且还会产生巨大的应用价值。

 

 

基于CMMI的集成化过程改进策略


51CMM原创 作者:李兴兵 [2003/03/12]

    摘要:本文论述了在工程组织中进行基于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/SSCMMI-SE/SW/IPPDCMMI-SE/SWCMMI-SW等。CMMI是一套融合多学科的、可扩充的产品集合,其研制的初步动机是为了利用两个或者多个单一学科的模型实现一个组织的集成化过程改进。在CMMI的初步研制中集成了三个特殊的过程改进模型:软件(SW-CMM)、系统工程(EIA/IS 731)以及集成化产品和过程开发(IPD CMM);从长期考虑,CMMI产品开发群组建立了一个自动的、可扩充的框架,以便于以后将其他一些学科的过程改进模型也逐步添加到CMMI产品集中。
    CMMI
模型中,最基本的概念是过程域。与以前的一些过程改进模型一样,CMMI模型也只是选择对过程改进最重要的一些题目,并将其编组到中。在CMMI以前所推出的每一种单一学科过程改进模型中,都包含了一定数量的过程域(或者其他类似名称,如焦点域)。随着各种学科之间的交叉,过程改进人员发现这些不同模型的过程域之间存在很多重复,在涉及多学科的过程改进中带来一些额外工作量,因此产生了将各种过程改进模型进行集成以减少过程域数量的想法。这种想法的最早实现就是CMMI项目首先在软件和系统工程之间实现了较高的集成性,产生了一个公共的过程域集合。随着研究的深入,过程域在不同学科之间的这种公共性越来越明显,因而在CMMI也就渐渐形成了这样一些非常具有通用性的工程过程域。事实上,过程管理和项目管理可以应用于任何学科,因此,CMMI中的这些工程过程域在对不同学科应用时具有不同的实现。总的来说,集成达到了两个目的:一是提炼出了多学科之间的一些公共过程域,另一方面就是减少了过程域的总数量。下面的表1列出了CMMI及其源模型的过程域数目。
    
1CMMI模型及其源模型中的过程域数量
    
模型     过程域数量
    SW-CMM
版本2c     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中对于供应商的选择和监督、集成化供应商管理以及供应商定量管理等方面给出了详尽描述,可以比较成功地解决这些问题。
    
组织开展项目的业务环境
 &nbs