原文出处:
http://tech.it168.com/m/2007-08-02/200708020957750.shtml 本文请勿转载。
近来笔者所在公司正在为过CMMI3做各种准备,对公司的员工进行了一些相关的培训,作为项目管理人员的我,在学习CMMI3的过程中,也有了自己的一点对于CMMI3的思考。
CMMI将软件过程中的很多步骤都通过步骤规范起来,它并没有告诉我们应该怎么去做,而只是告诉我们应该做些什么。因为软件过程中的每一步都需要经过思考、决策、有依据才能得出过程的结果,所以减少了每一步发生错误的可能性。
一.CMMI概述
CMMI是Capacity Maturity Model Integrated的简称,即集成的软件能力成熟度模型,CMM是CMMI的早期版本,它主要用于软件工程,而CMMI是一种综合性模型,它是工程实施和管理方法,它在软件与系统集成以外的如科研、工程等领域都得到了广泛的应用。
CMMI是一个由理论和经验部分组成的模型。它有连续式和阶段式两种表述方式,其中连续式主要用于衡量一个企业的项目能力,而阶段式主要用来衡量一个企业的成熟度。在连续式表述下,企业在接受评估时可以选择自己希望评估的项目来进行评估,所以评估通过率相对比较大,但它反映的那个相对比较窄,因为它仅仅反映该企业的该项目或类似项目达到了对应的等级。而用阶段式来进行评估时,需由评估师自己来挑选内部的任何项目或其中的某一部分来进行评估。
阶段式的CMMI有5个等级,如下:
第一级(初始级):在该等级下,项目的目标虽然得以实现,但它的实现带有很多的偶然性和风险性,该级对人员的依赖性比较大,性能依赖个人的能力,且随个人固有的性能、知识和动机的不同而变化。
第二级(受管理级):在该等级下,意味着组织要确保策划、文档化、执行、监督和控制项目级的过程,并且需要为过程建立明确的目标,并能实现成本、进度和质量目标等。在这种情况下,组织已经营造了一个稳定的、受控的开发环境,项目已经在受控制的状态下运行。该级包括如下7个过程域:需求管理(RM)、项目策划(PP)、项目监督与控制(PMC)、供方协定管理(SAM)、测量与分析(MA)、过程和产品质量保证(PPQA)和配置管理(CM)。
第三级(已定义级):在等级三下,项目执行过程是通过裁剪组织的标准过程集合和组织过程财富产生的“已定义过程”,并具备与该过程相适应的运行环境。该级报刊如下11个过程域:需求开发(RD)、技术解决(TS)、产品集成(PI)、验证(Ver)、确认(Val)、组织过程聚焦(OPF)、组织过程定义(OPD)、组织培训(OT)、集成项目管理(IPM)、风险管理(RSKM)和决策分析和决定。
第四级(定量管理级):在等级四下,组织建立了产品质量、服务质量以及过程性能的定量目标,运用统计技术和定量目标作为判断过程管理成功的标准。在过程的生存周期里,对产品质量、服务质量和过程性能做到统计意义上的了解和管理。该级包括如下两个过程域:组织过程性能和定量项目管理。
第五级(持续优化级):该等级的突出特征是过程性能的持续改进。组织建立起整个组织的定量过程的定量过程改进目标,并且把它们作为过程改进的判断标准;这些目标将适时修改,以反映不断变化的本组织的业务目标。实际实施的过程和组织的标准过程集合都是改进活动的对象。该级包括如下两个过程域:组织革新和部署和原因分析和决定。
二.CMMI给我们带来了什么好处?
概括来说,CMMI给我们带来了如下好处:改进进度和预算的可预测性、改进开发周期、提高生产率、改进质量(质量缺陷)、增加客户的满意度、提高员工的士气、增加投资回报和低质量成本。
对于不同的人来说,CMMI给他们带来的好处各有不同,例如,对于企业的老板来说,CMMI不仅提高了企业整体的管理水平,而且为企业引进了科学高效的管理观念、创造了更好的利益。而对于项目经理来说,对CMMI技术的学习掌握能够提高自身的项目管理能力,因此能够更好的提高项目质量,低成本、按期限的完成既定的任务。等等。
CMMI的实施包括如下几个步骤:差距分析、过程定义、过程部署和实施、预先评估和正式评估五步。它的实施能够提高我国企业的管理水平,使我国的企业在管理上能够尽快地引入国际上的先进技术。调整了我国企业的管理体制,使其从无序变成有序、主观变成客观、人治变为体制。CMMI应用将产生的直接效果是提高了工程项目的质量、降低了工程的成本,保证了工程的周期、提高我国企业的在国内与国际市场上的竞争能力。
来越多的大型企业业开始要求其工程承包商具有一定的CMMI级别。级别高的企业在赢得项目的竞标中具有一定的优势。 因此,如果没有CMMI的等级评估,企业就会失去很多商机。另一方面,企业通过CMMI评估也是为了提升企业内部的管理水平,降低企业的工程成本,得到更加丰厚的回报,对企业来说受益不少。
就拿笔者所在公司来说,从CMMI实施中进行差距分析来说,测量与分析、风险管理、组织培训等地方明显做得不够。因为没有测量与分析的数据的采集,导致过程中的很多地方无法进行估量。因为对风险管理得不够,使得风险散播到项目过程中的各个地方,无法从某处获得对风险的集中管理。因为上级的组织培训的不重视,导致很多技能不能被相关人员较快较好的掌握。除此以外,还存在很多的问题,CMMI的实施给公司项目管理者带来了福音。
三.对CMMI的思考
笔者在学习CMMI的过程中,也产生过一些疑问,进行过一些思考,具体如下:
1. 实施CMMI最好采用什么方式来驱动?
CMMI只是告诉我们需要做什么,但具体如何做,以及采用什么工具、方法和技术等去做,这些答案需要我们自己去找。
实施CMMI最好采用什么方式来驱动呢?
答案是以实际需求来驱动,真正遵循IDEAL(I-初始;D-诊断;E-建立;A-执行;L-学习)组织过程改进模型。
我们不应该过分的追求采用什么方法或工具来做好某件事情,例如设计图我们并不一定需要采用专门的Rose的工具来做;对需求等的跟踪并不一定要采用专门的需求跟踪工具来做,很多时候Excel就能够达到很好的跟踪效果。在以实际需求来驱动的过程中,可以灵活的采用适合的方法或工具,不应该太过拘泥。
2. CMMI与ISO9000存在哪些区别?
取得ISO 9000认证不意味着完全满足CMMI的某等级要求。取得CMMI第二级或第三级也不能笼统地认为可以满足ISO 9000的要求。
3. CMMI过时了吗?
迭代开发技术、软件产业最佳实践、和经济动机推动组织采用基于结果的方法:开发业务案例、构想和原型方案;细化后纳入基线结构、可用发布,最后定为现场版本的发布。虽然CMMI保留了基于活动的方法,它的确集成了软件产业内很多现代的最好的实践,因此它很大程度上淡化了和瀑布思想的联系。
分析CMMI和迭代开发之间有什么联系,方法之一就是看每个模型的KPA是否为这种开发方法激发了合理的软件管理原理。CMMI和迭代思想联系得很紧密,所以说CMMI并没有过时。
4.CMMI与敏捷开发的关系?
最近几年来,CMMI已经成为一项主流开发技术。很多成功的企业都在使用这个技术。
那么CMMI与敏捷之间存在怎么样的关系呢?分析如下:
使用敏捷式方法要求IT和业务方面的参与者紧密沟通,更快的交付业务需求从而更快的获取效益。降低改变的成本、提高系统的灵活性,以及降低投资的风险。敏捷式开发能在质量上有很大的提高。大概在60年代的时候,软件开发是没有计划性的,基本是写出来,谁也不知道什么时候能交付,但也就是在那个时候,软件工程学的概念在美国召开的一次会议上头一次被提出来,传统工程学通常是把项目分成三步或者四步,先把需求确立起来,进行设计构建。应用到软件里是开始先由分析人员对需求进行分析,然后设计,架构师把整体的东西设计出来,再确定下来交给编程的团队,编程的团队按照需求规约,把东西给做出来,所有的这些东西都是由不同的人在不同的时间完成的。
这种模式的优点是:开发计划性非常强,因为你知道什么人在什么时候做什么事情。但也存在一些缺点,这些缺点主要由软件开发和传统的建筑工程学的不同引起。客户需求的不断变化,特别是商业 软件,跟随市场的变化,客户需求也在不断变化。客户本身在脑子里并不是很清楚自身需要什么,在它看到了产品后,在使用的过程中,他对自己想要的东西才有了一些更加确定的想法,知道了怎样的东西才是自己所需要的。但在这个阶段的需求变化使得项目步履维艰、使得成本大幅度增加。所以工程学里一个核心的概念,变化是最可怕的一件事情,从设计角度也好、分析的角度也好,不管怎么,不要变化,这样就使成本增加。
敏捷式开发最核心的东西是它不排斥变化,对变化采取的是适应性的态度。敏捷式的开发针对一小部分进行设计测试,对每一个循环时间非常短,软件从小到大,从很小的一点到不断的增加扩大,而且增长的过程中是对软件不断修改的过程。
敏捷开发还有一个很大的特点就是它是以人为本,而不是以方法为本的。我们的软件开发是脑力劳动,而不是简单的工作。如果你设计出一套方法来,不管什么方法,让每个人去适应的方法,最后开发效应反而不如你组建一个具有进取心的团队,这个团队通常情况下是先选择一种方法,细节也一样,在开发过程中,不断对方法反思,直到达到这个团队的最高开发效应为止。
如果说,要真正赶上最新一轮的创新浪潮有几个重要的标志,一个是要赶上最新的CMMI的转向敏捷开发,从体系架构角度讲,除了一些先进的架构理念,还有一些架构模式等等,还有开源代码的应用,不仅仅是操作系统,包括数据库、应用服务器、各种开发工具等有很多的开源工具。
四.总结
本文对CMMI进行了概述,并分析了实施CMMI给我们带来的好处,以及笔者对CMMI的一些思考。
posted on 2007-08-30 13:38
阿蜜果 阅读(3365)
评论(2) 编辑 收藏 所属分类:
项目管理 、
CMMI