`
insertyou
  • 浏览: 907493 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

(转载)神坛之上的CMM——解析CMM和中国软件

阅读更多


blueski推荐[2006-3-16]
出处:有效软件工程实践论坛
作者:行者无疆


CMM/CMMI是中国软件外包走向世界的不二法门?——自欺还是欺人?
能够帮助中国的软件外包企业走向世界一直是咨询公司们不遗余力推广CMM/CMMI的一个重要的说词,那么果真是这样吗?
目前外包市场上主要分为“对日外包”和“欧美外包”,日本人对我们中国人好像从来就不怎么相信,给我们的外包绝大多数都是比较初级的编码工作,有些甚至将厚厚的伪码都拿来过来,我们做的基本上都是些体力活,同时承接对日外包的公司大多有日资的背景,且大多都延习了日本企业的那一套管理和协调机制。
相对来说欧美人对我们国人的期望要高一些,不过本人曾经有幸在境外参加了一个旨在为国外发包商和国内软件企业牵线搭桥的科技展会,接触了不少有意向中国软件公司发包的外商,他们最关心的是两个事情,一个是对知识产权的保护,另一个则是人力资源上是否具备和甲方进行有效沟通的能力。关于开发的管理,有一个老外的话让我感到深深的悲哀,他说,如果在美国,一个企业如果拿出任何能够证明其公司管理能力的资料,他都不会有任何怀疑,而在中国:"No,Ionlybelievemyeyes!"
有一个很有趣的事例是,国内有一家非常知名的CMM咨询公司的老板的一个美国朋友应邀来到中国,希望为其在美国的一个大项目在中国寻找开发商,该公司拥有大量的实施过CMM/CMMI的客户,其中不乏专门从事软件外包的,按说在其中寻找一个满意的开发商应该是唾手可得,然而事与愿违,所有的尝试都在第一个环节就不得不终止,原因非常简单,因为所有的候选企业都没有派出一个能在技术、业务、管理和商务层面和美方有效沟通的人来,更有甚者,有些公司干脆拿了一大堆的中文资料就来和老美沟通,结果可想而知。最后,这位老美不得不放弃了这个计划。
显然这一切都和CMM无关。

软件过程改进及其基础构建——我们在空中楼阁中舞蹈
所谓的“软件过程改进”,应当按照在一个循序渐进和有序的过程进行,当初SEI制定CMM的应用对象都是非常大型的航天和军工软件的承包商,这些企业基本都具有相当的规模和良好的规范化基础。显然,对这样的企业实施基于CMM/CMMI的软件过程改进是有意义的。反之,如果是一个完全缺乏规范管理的软件公司来说,连基本的软件工程规范和质量理念都不存在,盲目追求所谓CMM的某个级别只能是空中楼阁。
不幸的是,这种完全管理无序的公司在国内实施CMM/CMMI的企业中还不是少数,显然,这也并不是SEI当初制定CMM所考虑的范畴。
对于这样的企业,首先应该进行的并不是去运行什么基于CMM/CMMI的软件过程,而是扎实的完成软件过程的基础构建(这也是过程跃迁的一个重要组成部分),甚至非常有必要在实施CMM/CMMI前在企业内部引入PSP/TSP,然后在循序渐进的进行有针对性的软件过程改进。
然而,非常遗憾的是,本人看到不少这样的企业在短短不到一年的时间里就能通过所谓的CMM或CMMI三级(现在,国内企业对二级大多已经觉得不过瘾了,往往一上来就直接上三级)评审,效果如何可想而知。实际上这只不过是一场由咨询公司导演,软件企业主演的“评审”秀而已。
CMM/CMMI中有一个最为核心的思想就是:只有好的过程才能导致好的结果,上述的现象倒是该思想的一个非常好的反面实例。


好的过程=好的软件?——瞎子摸象故事的现代软件工程版演绎
CMM/CMMI最原始的出发点是重过程管理而轻工程方法,这对于最初的CMM应用对象--美国军方软件的承包商或许是有其合理性的,但是对于其他众多的软件企业,由其是国内的软件企业就并不是那么的合理了,个人认为国内的软件的特点是规模有限,业务领域较广,技术周期较短,软件工程基础较差,对于这样的企业,有效的工程方法往往比有效的软件过程更能让企业获得即时的效果。
软件开发管理是一个非常复杂的系统工程,其涉及到企业技术和管理的方方面面,而且其各个因素又是相互关联和制约的,不均衡的过分强调其中的某一个或某几个方面都是不科学的,也是难以取得良好效果的。


CMM实施——削足适履的痛苦旅程
CMM/CMMI的初期培训往往是最令人愉快的,参与者们在了解了大量以前没接触过的知识后往往对CMM燃起了高昂的热情,但是随着进入过程定义和项目的试运行就会渐渐发现身陷没完没了的文档编写和无休无止的各种会议,加班成了家常便饭。这时候,早先的热情早已荡然无存,而早先咨询公司宣称的能为企业带来无比效益的“先进过程”也成为了一件非常不合尺寸的紧身衣.....等咬紧牙关捱到了预评估,结果往往是当头一棒——和要求相距甚远,而正式评估的日子又已经迫在眉睫,怎么办?于是乎大家发挥国人的应试特长,将CMM正式评审变为一场期末考试,这时候,咨询公司往往扮演"枪手"的角色,将评估中可能遇到的问题及其答案罗列出来,而软件公司中的相关人员则将这些答案牢记于心。最后,在通过一场大家心照不宣的所谓“评估”,终于大功告成。


CMM评审——对皇帝新衣的自我陶醉
在上海某个高科技园区,有一个软件公司的外墙上高高的悬挂着一块牌子——"CMM5级企业",这在专业人士看来恰恰是对CMM本质的曲解,非常遗憾这种曲解竟然是发生在一个通过5级评审的企业。
SEI在他的网站上明确声明:TheSEIdoesnot"certify"organizations.即SEI不对任何组织进行"认证",它仅仅通过获得其授权的评估师们对企业的过程能力进行"Appraisal(评审)"
CMM本身只是一个可以被用来评估企业能力成熟度的过程框架,而并不是什么“标准”,CMM的重点在于软件过程的改进而不在于什么“评审”,至于所谓的“认证”那更是扯不上边的事情。
所以当我们舍本求末,将CMM作为一块可以证明其高贵身份的金字招牌到处炫耀时,令我们不由得联想起安徒生笔下的那个酷爱新衣的光屁股的皇帝

结论

CMM/CMMI本身是一套非常有价值的过程模型,但简单的将其图腾化却是整个中国软件行业的悲哀,反观CMM/CMMI的发源地——美国,除了和军方有业务往来的软件企业会寻求通过CMM/CMMI评审外,其他多数的企业并不怎么在乎是通过了CMM/CMMI的三级还是四级,象是著名的微软、甲骨文等知名企业都没听说过和CMM/CMMI沾过边,但这也丝毫不影响以他们为代表的美国软件企业在整个行业中独领风骚。

所以,我们认为,只有有效的而不是最权威的,才是最好的。


行者无疆
Nov.72005

mail:TheWalker@effective-swe.com
MSN:just_a_walker@hotmail.com

<!--Here is the bottom-->
分享到:
评论

相关推荐

    深度探索Linux操作系统——系统构建和原理解析

    《深度探索Linux操作系统——系统构建和原理解析》是一本专为那些希望深入了解Linux操作系统内核和系统构建的读者量身打造的专业书籍。它详细阐述了Linux操作系统的内部工作机制,涵盖了从内核设计到系统服务的...

    培训教材——CMM和ISO简介培训.pptx

    CMM,全称为Capability Maturity Model,中文称为能力成熟度模型,是由美国卡内基梅隆大学软件工程研究所(SEI)开发的一种用于评估和改进软件开发组织的过程成熟度的方法。CMM的核心理念是通过一系列的等级(共5级...

    软件使用心得——ERP软件之路

    软件使用心得——ERP软件之路——财务

    培训教材——CMM和ISO 简介培训.ppt

    通过以上分析,我们可以了解到CMM和ISO是两个非常重要的概念,它们分别关注于软件开发过程的成熟度和组织标准化的实现。对于技术人员而言,掌握这些概念不仅有助于提升个人的职业素养,也能帮助企业更好地管理项目和...

    cmm.rar_CMM_CMM 解释器_CMM解释器_C语言 解释器_C语言解释器

    CMM解释器是用于执行CMM源代码的软件。它不进行编译步骤,而是直接解析源代码并逐行执行。这个过程包括以下几个关键组件: 1. **词法分析(Analyse.java)**:该阶段将CMM源代码分解成一个个称为“标记”的基本单元...

    架构实战——软件架构设计的过程

    《架构实战——软件架构设计的过程》一书深入探讨了软件架构设计的方法论和技术实践,为读者提供了丰富的理论知识和实践经验。 #### 软件架构设计的重要性 软件架构是软件系统的基本结构,它定义了系统的组织方式...

    教务管理系统之子系统——学院课程安排

    学院教学主管人员根据教学任务和要求给出各个课程的相关限制(如:任课教师的职称、上课的班数、最高和最低周学时数等);任课教师自报本人授课计划,经所在教研室协调认可,将教学计划上交学院主管教学计划的人员,...

    CMM软件能力成熟度模型实践指导

    在Watts Hunaphrey和Ron Radice等人的研究成果之上,卡莱基·梅隆大学软件工程研究所将这套质量控制方法改造为能力成熟度框架并标明不同城市度等级。 CMM模型的实践指导包括配置管理、偏差、同业复审、风险管理、...

    TRACE32软件的Practice脚本 cmm脚本.zip

    标准Practice脚本的扩展名是.cmm,因此有人也称之为cmm脚本 Practice脚本是Lauterbach公司提供的一种脚本语言,运用于其TRACE32软件当中,非常容易上手、并且功能强大。 我在文章...

    CMM1.1中文版

    ### CMM1.1中文版相关知识点解析 #### 一、CMM1.1概览 **CMM**(Capability Maturity Model),即能力成熟度...此外,随着国际标准化组织对CMM理念的认可和支持,CMM1.1及相关标准将成为软件行业发展的重要指南之一。

    软件成熟度模型CMM1.1中文版

    而在已定义级,除了延续上一级的实践外,还需要建立和维护一套标准的软件过程,以确保过程的一致性和质量。 《软件成熟度模型1.1.pdf》这份文档详细阐述了这些概念,提供了评估标准和改进路径,对于软件开发团队而...

    cmm模板之立项管理

    《CMM模板之立项管理详解》 立项管理是软件开发过程中的重要环节,它涉及到项目的启动、规划和准备工作,确保项目能够顺利进行并达到预期目标。CMM(Capability Maturity Model,能力成熟度模型)是一种评估和改进...

    CMM语言解释器

    **CMM语言解释器**是一种专门用于执行CMM(一种假设的编程语言)程序的软件。解释器的主要任务是读取CMM源代码,通过词法分析、语法解析和语义分析来理解和执行代码,而无需先将其编译成机器码。在本项目中,我们将...

    第6章 软件工程——结构化软件开发——需求分析和概要设计.ppt

    第6章 软件工程——结构化软件开发——需求分析和概要设计.ppt

    CMM.rar_CMM measurement_软件度量

    综上所述,CMM是软件开发领域的一种系统性方法,它通过一系列成熟度级别引导组织提升软件开发过程的规范性和有效性。通过深入理解和应用CMM,软件企业可以提升软件质量,降低成本,增强竞争力。

    银行业数字化转型与应用——中国银行软件中心创新实践分享.docx

    银行业数字化转型与应用——中国银行软件中心创新实践分享.docx银行业数字化转型与应用——中国银行软件中心创新实践分享.docx银行业数字化转型与应用——中国银行软件中心创新实践分享.docx银行业数字化转型与应用...

    软考系统分析员备考之CMM篇

    力成熟度模型(CMM)是评估和改进软件开发组织能力的重要工具,它为软件过程的规范、管理和改进提供了一套标准框架。CMM由软件工程研究所(SEI)于1984年创建,旨在提高软件质量和生产效率,增强软件项目的可预测性...

    软件工程——实践者的研究方法

    - **第30章:未来之路** ——展望软件工程的发展趋势和前沿技术。 #### 三、作者简介 Roger S. Pressman是一位在软件工程领域拥有超过25年实践经验的专家,他在航空航天应用中的CAD/CAM系统开发方面积累了丰富的...

    CMM软件质量保证过程文件与程序文件.doc

    《CMM软件质量保证过程文件》与《CMM软件质量保证程序文件》是软件开发过程中重要的指导性文档,主要用于确保软件质量的过程管理和控制。这两份文档遵循能力成熟度模型(Capability Maturity Model, CMM)的理念,...

    CMM手册,有兴趣的可以看看

    ### CMM手册核心知识点解析 #### 一、CMM概览 - **定义**: CMM(Capability Maturity Model)即能力成熟度模型,是一种用于评估软件开发组织在其过程改进和成熟度方面的能力的方法。 - **目的**: CMM旨在帮助组织识别...

Global site tag (gtag.js) - Google Analytics