软件企业如何实施CMM

转载 2007年10月13日 10:16:00

软件企业如何实施CMM

 

 

前言


  CMM(软件过程能力成熟模型)的主要思想很清楚,标准的条例也很明确,但如何达到这种标准的可操作性比较差,可参考的、可借鉴的具体实施步骤比较少。


  国内的绝大部分软件企业目前处于CMM的初级阶段,没有基础和经验。在实施CMM的过程中,往往感到迷茫,不知从何处下手。本文讨论软件企业实施CMM或通过CMM评估所必须经历的步骤,希望能起到一个抛砖引玉的作用,软件企业实际实施CMM时,可以根据自身的实际情况和具体要求加以应用。



1
、提高思想认识



  近年来,随着国民经济持续增长,作为高新技术的软件产业虽然发展很快,但和国外同行业相比仍存在很大的差距。究其原因,投资环境、人才和技术固然是制约因素,但我们认为,管理和政策显得更为关键。随着电子信息产业的发展,人们已经逐步认识到,软件是促进我国电子信息产业发展的关键技术。而要发展我国的软件产业,在战略上,必须将软件产业作为我国高新技术产业的龙头和国民经济发展的新增长点,在策略上,必须走软件过程管理专业化的道路。
 


  CMM在中国的实施,从整体上看处于起步阶段,很多软件公司对ISO9000了解较多,也有很多公司都通过了ISO9000认证。相对而言,了解CMM的就不多了。具备一定规模的软件企业,对CMM非常感兴趣并表示了极大的关注,有部分公司也在积极实施CMM,但正式推行CMM需要在人力和经费上增加投入,一般的软件中小企业有一定困难。



  根据全球软件销售额数字分析,今后几年软件和信息服务的市场规模将有一个巨大的发展。然而中国这样的一个大国,软件销售额还不到世界市场的0.5%。我国软件企业除少数几家在500人以上外,多数是在50人以下的民营、集体和个人的软件公司。以开发技术和规范化程序来衡量,总体上仍是相当落后的,大多数企业仍为手工作坊式制作,产品缺乏市场竞争力。因此,软件过程管理已成为发展我们软件产业的一个关键性问题。我们希望企业通过使用CMM模型,一个等级一个等级地去提高自己的软件开发及生产能力,提高企业的整体水平。
 


  实施CMM对软件企业的发展起着至关重要的作用,CMM过程本身就是对软件企业发展历程的一个完整而准确的描述,企业通过实施CMM,可以更好地规范软件生产和管理流程,使企业组织规范化。而且,只有在国际市场取得成功的产品和企业才具有长久的竞争力和生命力,由于CMM已获得国际企业和用户的广泛认可,因此必须在软件企业实施CMM



2
、进行CMM培训和咨询工作



  任何一个软件企业要想实施一先进的管理措施,首先应该做的就是理论基础的建设,作为一个过程式管理方法的CMM,同样也不例外。
 


  根据CMM模型的要求,一个项目的开发一定要有章可循,而且要做到有章必循,这两点都离不开培训。培训工作需要投入很大的人力、物力和财力,只有企业的管理人员和软件开发人员对CMM真正了解和认识了,自觉地按CMM的方法去进行工作,才能真正实施CMM,而不是一时应付,做表面文章。



  培训的内容需要精心地准备,主要有两个方面,第一,对所有员工包括经理在内的最基本的软件工程和CMM培训知识;第二,对各个工作组的有关人员提供专业领域知识等方面的培训;此外,在每次开发过程中,还要对普通人员进行软件过程方面的培训。



  培训的方式有很多,第一,向有关专业培训咨询机构进行咨询。这些培训公司为CMM知识的导入起着主导作用,他们来源于各种背景,有国家有关研究所、相关协会、大学、原ISO9000咨询公司、新创办的CMM咨询公司、实施过CMM的企业等,但这些培训咨询公司主要集中在北京、上海,尤其是北京。在此,我们建议其他省市,特别是被批准为"国家软件基地"的城市,应加大力度,竭力扶植有关咨询培训机构。



  第二,利用互联网资源进行咨询和培训。例如,可以利用Internet下载有关学习资料和别人的经验,可以报名参加CMM网校(http://www.21cmm.comhttp://www.21cmm.com )进行系统的学习。
 


  第三,聘请有关CMM专家到企业实地指导CMM的实施。企业职工可在被指导过程中逐步掌握CMM的要领和实施过程。值得注意的是,企业可以在最开始阶段聘请一位经验丰富的CMM专家,但以后一定要培养自己的专家,这样不仅能节约开支,还能使企业自己具有一个对CMM深刻理解的、有实践经验的专家,为企业今后的继续升级打下一个良好的基础。



3
、确定合理的目标



  CMM模型划分为5个级别,共计18个关键过程域,52个目标,300多个关键实践。每一个CMM等级的评估周期(从准备到完成)约需12-30个月。无论一个软件企业的软件过程处于什么样的水平,都可以在CMM框架的5个级别中找到自己的位置。CMM框架的不同级别是针对处于不同管理水平的软件企业制定的,一个软件企业实施CMM,首先必须了解自己的管理现状,对照CMM的级别,找到自己在CMM中所处的位置,然后有针对性采取与自己所处级别相适应的措施,使企业迟早纳入CMM的进化阶段,使软件过程管理早日得到改善,最终达到提高软件质量,获取经济效益的目的。



  因此,要实施CMM,首先应该对本企业的现状有一个准确的评估。企业目前处于什么水平,企业发展的问题是什么,借助CMM要达到的目的是什么。然后再结合企业的实际情况选择CMM的切入点,确定总体目标。这个目标包括在多长时间之内,需要投入多少人力、物力和财力,要达到哪一级。
 


  由于软件过程的建立和改进是一个渐进的、分轻重缓急的、逐步完善的过程。所以,在总体目标已经确定的前提下,还要制订近期目标和长期目标。



4
、成立工作组



  企业针对CMM的实施,应成立专门的CMM实施领导小组或专门的机构。CMM的实施需要有强有力的组织保证,领导层必须真正学习理解软件过程管理和改进的重要性,亲自领导和参与,要保证过程管理的人员配备,抽调企业中有管理能力、组织能力和软件开发能力的骨干人员,确实把此项工作当做企业生存和发展的大事来抓。



  在CMM的实施过程中,工作组的成立是CMM的一个关键步骤。有几个重要的组织是必不可少的,这些组织包括软件工程过程组、软件工程组、系统工程组、系统测试组、需求管理组、软件项目计划组、软件项目跟踪与监督、软件配置管理组、软件质量保证组、培训组。



  软件工程过程组是由专家组成的组,全心全意推进组织所采用的软件过程的定义、维护和改进工作。软件工程过程组统领CMM实施活动,协调全组织软件过程的开发和改进活动,制定、维护和跟踪与软件过程开发和改进活动有关的计划,定义用于过程的标准和模板,负责对全体人员培训有关软件过程及其相关的活动。



  软件工程组负责一个项目的软件开发和维护活动(即需求分析、设计、编码和测试)的团体。



  系统工程组是负责下列工作的个人(既有经理又有技术人员)的团体;规定系统需求;将系统需求分配给硬件、软件和其他成分;规定硬件、软件和其他成分的界面;以及监控这些成分的设计和开发以保证它们符合其规格说明。



  系统测试组是一些负责笄和完成独立的软件系统测试的团体,测试的目的是为了确定软件产品是否满足对它的要求。



  软件质量保证组是一些计划和实施项目的质量保证活动的团体(既有经理又有技术人员),其工作的目的是保证软件过程的步骤和标准是否得到遵守。根据文档化的规程制订软件项目的SQA计划;参与项目软件开发计划、标准和规程的制订和审查;评审软件工程活动,以检验一致性;定期向软件工作组执行其活动结果;根据文档化的规程对在软件活动和软件工作产品中所找出的偏差建立文档;与客户的软件质量保证人员一起对软件质量保证组组的活动和调查结果进行定期审查。



  软件配置管理组是一些负责策划、协调和实施软件项目的正式配置管理活动的团体(既有经理又有技术人员)。维护配置管理库、控制变更;入库检查,出库登记;编写项目各个阶段的配置管理报告;制定项目阶段配置管理计划;管理项目中确认的要配置项。
 


  培训组是一些负责协调和安排组织培训活动的团体(既有经理又有技术人员)。通常这个组织负责准备和讲授大多数的培训课程协调其他培训方式的使用。



  在CMM的实施中组织机构的设置必须完善,但不等于说每一个机构必须是独立的。有些组织很小时,机构可以适当合并,成员可以身兼数职。但对那些关键实践要求独立性时,组织必须十分小心。例如,软件质量保证组的独立性就是必须考虑的,否则在技术上或机构上出现的偏差,会无目的地影响到软件过程、项目质量和风险决策的正确性。



  在这里还要提到一点,那就是物理组和逻辑组。在CMM中有两种组织,一种叫物理组织,它是客观存在的,例如项目组、技术部等,有众多专职人员;另一种叫逻辑组织,就是说它的人员可以是兼职的,在用不到的时候,成员有自己的工作,而且很多逻辑组只需一两个人就可以了。



5
、制定和完善软件过程



  CMM模型强调软件过程的改进,如果企业还没有一个文档形式的软件过程,则首要任务是对当前的工作流程进行分析、整理及文档化,从而制定出一个具有本企业风格的软件过程,并用该文档化的过程指导软件项目的开发。
 


  如果已经具备了软件过程,则要对这个过程做内部评估,对照CMM的要求,找出问题,然后对这个过程进行补充修改。在具体实施的过程中,可以选择有一定代表性和完善性的项目组或项目进行试点,跟踪、监督改进后的软件过程的实施情况,执行改进活动的状态。
 


  同时,过程小组的成员还应该维护过程中的数据库,定期统计各个过程中的产品和规模、开发周期、修改次数及评估周期。这些数据库可用来分析项目的效率以及存在的问题,以便今后进一步的改进,同时还可以为项目开发实事求是过程提供咨询。
 


  总结这些项目组或项目以前成功的经验,从中规划出一个具有实际意义的软件过程,按照CMM规范评估这个过程,找出其中的优缺点。对不满足CMM要求的地方加以完善,使其成为一个完美的实施CMM的软件过程方案;然后将这个软件过程应用到当前正在承接的或即将承接的项目上,在实际使用过程中进一步发现其中的不足和错误之处,加以改进,最后将试点的结果推广到整个企业。
 

6
、内部评审



  CMM每一级别的评估都由美国卡内基梅隆大学的软件工程研究所(CMU/SEI)授权的主任评估师领导一个评审小组进行。目前,全世界一共只有三百多个主任评估师,大部分在美国,而我国大陆还没有一个主任评估师。由于我国在CMM评估中要聘请外籍主任评估师,所以费用较高。据估计,要通过一个级别的CMM评估,费用是通过ISO9000认证的十多倍。



  因此,我们建议软件企业在进行正式评估之前,先进行内部评审或评估。这种内部评审包含两层含义。第一种就是软件企业组织自己内部成员,严格、认真地按照CMM规范评估过程,对自己的软件过程进行评审,找出其中的不足点并进行改进。



  第二种含义就是在全国范围内,由有关软件工程和CMM专家组成一个专门的"内部评审"机构,负责指导协调实施CMM的活动,推进活动的深入开展,对国内软件企业CMM评估进行"预先评估"。这种预先评估,可降低软件企业通过正式CMM评估的风险,减少软件企业实施CMM的成本,为企业最终获得国际CMM认证打下基础。



7
、正式评估



  如前所述,CMM正式评估由CMU/SEI授权的主任评估师领导一个评审小组进行,评估过程包括员工培训(企业的高层领导也要参加)、问卷调查和统计、文档审查、数据分析、与企业的高层领导讨论和撰写评估报告等,评估结束时由主任评估师签字生效。
 


  目前主要有两种基于CMM的评估方法,一种是CBA-SCE(CMM-Based Appraisal for Software Capability Estimation),它是基于CMM对组织的软件能力进行评估,是由组织外部的评估小组对该组织的软件能力进行的评估。另一种是CBA-IPI(CMM-Based Appraisal for Internal Process Improvement),它是基于CMM对内部的过程改进进行的评估,是由组织内部的小组对软件组织本身进行评估以改进质量,结果归组织所有,目的是引导组织不断改进质量。



  这两种评估均由CMU/SEI授权的主任评估师领导,参考CMM框架来进行,都要审查正在使用和将来使用的文件/文档,并对不同的组织员工进行采访。SECIPI两评估结果应该一致,评估结果的所有资料都将呈报CMU/SEI



  针对企业实施CMM的需要,这里主要讲述CBA-IPI的评估方式,以便企业为提高软件过程进行内部评审。



  CBA-IPI的评估由几方共同组成:评估小组、公司的管理人员、具体项目的执行人员以及主任评估师。其中评估小组是由经验丰富的软件专业人员组成,还要经过CMMCBA评估的培训,使他们了解组织的同时,也懂得如何将CMM模型及关键实践与组织的要求建立关联。



  CBA评估过程主要分成两个阶段:准备阶段和评估阶段。准备阶段包括小组人员培训、计划以及其它必要的评估准备工作。在评估的最初几天,小组成员的主要任务是采集数据,回答SEICMM提问单,文档审阅以及进行交谈,对整个组织中的应用有一个全面的了解。



  然后进行数据分析。评估员要对记录进行整理,并检验所观察到的一切信息,然后把这些数据与CMM模型进行比较,最后给出一个评估报告。在每个评估报告中,必须针对CMM 的每个关键过程域,指出这个软件过程在什么地方已经有效地执行了,什么地方还没有有效地执行。只有所有评估人员一致通过的情况下,这个评估报告才有效。



  在评估报告的基础上,评估小组成员起草一个评估结果。评估和评级的结果应与有关的关键过程域和目标相对应。在评估结果揭晓后,将送交所有有关的人员,然后准备开始评级。



  要特别注意的是,在评估过程中,如果某一过程并不是CMM的要求,但这一过程与组织的能力成熟度有一定的关系,那么,它也应包含在评估结果中。



8
.根据评估结果改进软件过程



  根据IDEAL模型,成熟度的评估只是软件过程改进中的一个环节,如果这个环节与软件过程改进的其他环节不能很好地结合,那么,CMM评估对于软件过程改进所应具有的作用就得不到发挥。



  一般来说,应该在评估之后很快地作出软件过程改进的计划,因为这时大家对评估结果和存在的问题仍有一个深刻的认识。计划在软件过程改进中是一个非常必要的阶段,只有有效的计划,才能确保软件过程得到有效的改进。



  CBA评估方法对衡量软件企业的能力成熟度是一个非常有效的手段,评估结果本身就是一个非常坚实的基础,是制定软件过程改进计划的依据。CBA评估客观地指出了企业软件过程存在的问题,帮助企业发现软件过程的不足之处,充分指出了软件过程改进的前景
 


结束语



  因为软件过程成熟度的升级本身就是一个过程,而且全面引进应用CMM所涉及的范围非常广,要求人力、财力与设备资源的投入相当大。所以在实施CMM时,企业千万不要一开始就把目标定位过高,不必一下子去满足某一能力成熟度等级的所有目标。而要根据企业自身的情况,试行某些关键过程域的一部分关键实践活动,逐步完善软件过程和成熟度的升级。



  软件企业在实施CMM的过程中,应当处理好CMM实施和认证的关系。实施是基础,认证是结果。只有认真扎实的实施,才可能有认证的通过。由于我国大部分软件企业距离CMM的认证有相当大的距离,最好先按照CMM严格的软件工程方法,致力于改进企业的管理,提高软件开发能力,而先不要搞软件能力评鉴,追求认证、评级等。等到能力成熟后,再进行认证。这样可以避免和杜绝华而不实、弄虚作假的现象。应该把实施CMM作为提高软件企业管理水平和提高软件质量的突破口,追求真正的软件能力和水平的提高,而不是把单纯的CMM软件认证作为一个唯一的目标。

 

软件企业如何实施CMM?

CMM(软件过程能力成熟模型)的主要思想很清楚,标准的条例也很明确,但如何达到这种标准的可操作性比较差,可参考的、可借鉴的具体实施步骤比较少。    国内的绝大部分软件企业目前处于CMM的初...
  • mengzhongren2
  • mengzhongren2
  • 2017年06月29日 21:54
  • 63

从CMM认证看认证误区

从目前中国软件业的发展来看,CMM一直是一个非常热门的话题,为了增加自己的综合竞争力,迎接加入WTO后来自全球软件企业的挑战,国内软件企业都把通过CMM认证作为企业中长期的目标,国内的媒体也给予了极大...
  • zjlovety
  • zjlovety
  • 2017年01月24日 08:16
  • 393

从金融IT公司工作10年后转到银行的工作体会

本人目前供职于一家全国性股份制商业银行总行的电脑部门,在这里工作刚满一年。在此前呢,我在国内一家著名的系统集成公司里连续工作了将近十年的时间,而 且大部份的时间是在银行的客户现场做应用软件的项目实施工...
  • yhzhang1016
  • yhzhang1016
  • 2013年10月20日 11:20
  • 3735

CMM软件能力成熟度模型

 CMM软件能力成熟度模型 一、什么是cmm评审   简单来说: 通过实施CMM认证和评审,能够帮助你们公司建立一些软件开发、质量管理等方面的规范(质量体系)来,能够帮助你们公司的软件开发有...
  • mimi_endeavor
  • mimi_endeavor
  • 2014年10月23日 10:03
  • 577

2013年EMR软件实施年终总结

2013年EMR软件实施年终总结    2013年5月27日我正式迈入了“北京XXXX信息技术有限公司”同年8月27日转正,成为公司正式员工,开始了我的第二份工作——EMR软件实施工程师。共经历了 “...
  • u011715137
  • u011715137
  • 2013年12月31日 08:32
  • 4261

来谈谈企业实施PDM/PLM系统需要做些什么准备

一直都对PDM/PLM很感兴趣,这次意味的在外面时候,突然发现了一篇好文章 ,现在拿出来跟大家分享一下,看看有没有朋友感兴趣的。 以下是原文: "最近参加e-works组织的PLM产品全生命周期管...
  • u012598239
  • u012598239
  • 2013年10月28日 11:49
  • 746

CMM软件成熟度

Table of Contents 1. 一、绪论1.1. 软件的定义 1.2. 软件的特征 1.3. 软件危机产生的原因 1.4. 软件过程 1.5. 软件过程能力 1.6. 软件过程性...
  • u013225150
  • u013225150
  • 2016年06月17日 22:58
  • 9185

ERP企业资源计划系统,ERP实施进程主要包括哪几个阶段?

ERP即企业资源计划系统,是指建立在信息技术的基础上,以系统化的管理思想,为企业决策层及员工提供的管理平台。它是一种跨地区、跨部门、甚至跨公司整合实时信息的企业管理系统。...
  • qq19931130
  • qq19931130
  • 2017年07月01日 17:03
  • 530

阿米巴经营之软件经营-写得不错留作记念

每次敏捷开发培训课上,最备受关注的问题可以说是团队管理和绩效管理。 “敏捷开发注重团队合作”“敏捷开发不考核个人”“敏捷开发放权”“敏捷开发对人的主动性要求高”……这些新话题可以说对一般程序员而...
  • carzyer
  • carzyer
  • 2013年02月19日 09:40
  • 1432

软件实施工程师项目经验(转)

在项目实施的时候,有些独特的地方,需要有独特的工具来帮助。 前天晚上,和一位做了多年实施项目带领的朋友吃饭。     我笑着跟他说:实施,能不能不实施?!不去人,也不搞实施,把软件卖了就O...
  • yiluyangguang1234
  • yiluyangguang1234
  • 2014年11月04日 11:10
  • 4800
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:软件企业如何实施CMM
举报原因:
原因补充:

(最多只允许输入30个字)