<!-- #EndEditable --><!-- #BeginEditable "3" -->
CMM/CMMI是中国软件外包走向世界的不二法门?——自欺还是欺人?
能够帮助中国的软件外包企业走向世界一直是咨询公司们不遗余力推广CMM/CMMI的一个重要的说词,那么果真是这样吗?
目前外包市场上主要分为“对日外包”和“欧美外包”,日本人对我们中国人好像从来就不怎么相信,给我们的外包绝大多数都是比较初级的编码工作,有些甚 至将厚厚的伪码都拿来过来,我们做的基本上都是些体力活,同时承接对日外包的公司大多有日资的背景,且大多都延习了日本企业的那一套管理和协调机制。
相对来说欧美人对我们国人的期望要高一些,不过本人曾经有幸在境外参加了一个旨在为国外发包商和国内软件企业牵线搭桥的科技展会,接触了不少有意向中 国软件公司发包的外商,他们最关心的是两个事情,一个是对知识产权的保护,另一个则是人力资源上是否具备和甲方进行有效沟通的能力。关于开发的管理,有一 个老外的话让我感到深深的悲哀,他说,如果在美国,一个企业如果拿出任何能够证明其公司管理能力的资料,他都不会有任何怀疑,而在中国:"No,I only believe my eyes!"
有一个很有趣的事例是,国内有一家非常知名的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在他的网站上明确声明:The SEI does not "certify" organizations. 即SEI不对任何组织进行"认证",它仅仅通过获得其授权的评估师们对企业的过程能力进行"Appraisal(评审)"
CMM本身只是一个可以被用来评估企业能力成熟度的过程框架,而并不是什么“标准”,CMM的重点在于软件过程的改进而不在于什么“评审”,至于所谓的“认证”那更是扯不上边的事情。
所以当我们舍本求末,将CMM作为一块可以证明其高贵身份的金字招牌到处炫耀时,令我们不由得联想起安徒生笔下的那个酷爱新衣的光屁股的皇帝
结论
CMM/CMMI本身是一套非常有价值的过程模型,但简单的将其图腾化却是整个中国软件行业的悲哀,反观CMM/CMMI的发源地——美国,除了和军方 有业务往来的软件企业会寻求通过CMM/CMMI评审外,其他多数的企业并不怎么在乎是通过了CMM/CMMI的三级还是四级,象是著名的微软、甲骨文等 知名企业都没听说过和CMM/CMMI沾过边,但这也丝毫不影响以他们为代表的美国软件企业在整个行业中独领风骚。
所以,我们认为,只有有效的而不是最权威的,才是最好的。
分享到:
相关推荐
《深度探索Linux操作系统——系统构建和原理解析》是一本专为那些希望深入了解Linux操作系统内核和系统构建的读者量身打造的专业书籍。它详细阐述了Linux操作系统的内部工作机制,涵盖了从内核设计到系统服务的...
CMM,全称为Capability Maturity Model,中文称为能力成熟度模型,是由美国卡内基梅隆大学软件工程研究所(SEI)开发的一种用于评估和改进软件开发组织的过程成熟度的方法。CMM的核心理念是通过一系列的等级(共5级...
软件使用心得——ERP软件之路——财务
通过以上分析,我们可以了解到CMM和ISO是两个非常重要的概念,它们分别关注于软件开发过程的成熟度和组织标准化的实现。对于技术人员而言,掌握这些概念不仅有助于提升个人的职业素养,也能帮助企业更好地管理项目和...
CMM解释器是用于执行CMM源代码的软件。它不进行编译步骤,而是直接解析源代码并逐行执行。这个过程包括以下几个关键组件: 1. **词法分析(Analyse.java)**:该阶段将CMM源代码分解成一个个称为“标记”的基本单元...
《架构实战——软件架构设计的过程》一书深入探讨了软件架构设计的方法论和技术实践,为读者提供了丰富的理论知识和实践经验。 #### 软件架构设计的重要性 软件架构是软件系统的基本结构,它定义了系统的组织方式...
在Watts Hunaphrey和Ron Radice等人的研究成果之上,卡莱基·梅隆大学软件工程研究所将这套质量控制方法改造为能力成熟度框架并标明不同城市度等级。 CMM模型的实践指导包括配置管理、偏差、同业复审、风险管理、...
标准Practice脚本的扩展名是.cmm,因此有人也称之为cmm脚本 Practice脚本是Lauterbach公司提供的一种脚本语言,运用于其TRACE32软件当中,非常容易上手、并且功能强大。 我在文章...
### 软件——汉字库:深度解析与应用 #### 引言 在数字化时代,汉字库作为连接传统文化与现代科技的桥梁,扮演着至关重要的角色。本文将深入探讨“软件——汉字库”的核心概念,从其历史背景、技术原理到实际应用...
总的来说,《软件工程——实践者之路》不仅教授技术知识,更注重培养学生的实践能力和团队协作精神,使他们能够应对软件行业的挑战,成为一名合格的软件工程师。通过这门课程的学习,学生将具备解决复杂问题的能力,...
词法分析器负责识别源代码中的一个个最小单元——记号(Token),而语法分析器则进一步将这些记号组合成抽象语法树(AST),以便理解和执行代码。 "实验二:CMM语言词法分析"实验报告文档(.doc和.docx版本)很可能...
第6章 软件工程——结构化软件开发——需求分析和概要设计.ppt
第2次-2(第3章 测试分析与设计——软件测试依据和规范)第2次-2(第3章 测试分析与设计——软件测试依据和规范)第2次-2(第3章 测试分析与设计——软件测试依据和规范)第2次-2(第3章 测试分析与设计——软件测试...
《CMM模板之立项管理详解》 立项管理是软件开发过程中的重要环节,它涉及到项目的启动、规划和准备工作,确保项目能够顺利进行并达到预期目标。CMM(Capability Maturity Model,能力成熟度模型)是一种评估和改进...
置管理之下,以确保在整个开发过程中的一致性和可追溯性。 CMM,即能力成熟度模型(Capability Maturity Model),是一种评估和改进软件开发组织能力的框架,它为软件过程的改进提供了指导。CMM软件配置管理过程是...
银行业数字化转型与应用——中国银行软件中心创新实践分享.docx银行业数字化转型与应用——中国银行软件中心创新实践分享.docx银行业数字化转型与应用——中国银行软件中心创新实践分享.docx银行业数字化转型与应用...
力成熟度模型(CMM)是评估和改进软件开发组织能力的重要工具,它为软件过程的规范、管理和改进提供了一套标准框架。CMM由软件工程研究所(SEI)于1984年创建,旨在提高软件质量和生产效率,增强软件项目的可预测性...
《CMM软件质量保证过程文件》与《CMM软件质量保证程序文件》是软件开发过程中重要的指导性文档,主要用于确保软件质量的过程管理和控制。这两份文档遵循能力成熟度模型(Capability Maturity Model, CMM)的理念,...
在中国,CMM已成为众多软件企业追求的目标,但实现CMM的成功并不仅仅在于通过评估,更重要的是通过过程改进提升企业的管理水平。 策略一:自低向上,主动改进 在实施CMM的过程中,避免自上而下的强制性推行,而是...