<!-- #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沾过边,但这也丝毫不影响以他们为代表的美国软件企业在整个行业中独领风骚。
所以,我们认为,只有有效的而不是最权威的,才是最好的。
分享到:
相关推荐
**总的来说,"武汉大学国际软件学院解释器构造作业四——CMM解释器"提供了一个宝贵的实践平台,让学生将理论知识应用于实际项目,体验从语言设计到代码执行的完整过程,是深入学习编译原理和解释器构造的宝贵资源。...
CMM,全称为Capability Maturity Model,中文称为能力成熟度模型,是由美国卡内基梅隆大学软件工程研究所(SEI)开发的一种用于评估和改进软件开发组织的过程成熟度的方法。CMM的核心理念是通过一系列的等级(共5级...
软件使用心得——ERP软件之路——财务
通过以上分析,我们可以了解到CMM和ISO是两个非常重要的概念,它们分别关注于软件开发过程的成熟度和组织标准化的实现。对于技术人员而言,掌握这些概念不仅有助于提升个人的职业素养,也能帮助企业更好地管理项目和...
学院教学主管人员根据教学任务和要求给出各个课程的相关限制(如:任课教师的职称、上课的班数、最高和最低周学时数等);任课教师自报本人授课计划,经所在教研室协调认可,将教学计划上交学院主管教学计划的人员,...
### 软件——汉字库:深度解析与应用 #### 引言 在数字化时代,汉字库作为连接传统文化与现代科技的桥梁,扮演着至关重要的角色。本文将深入探讨“软件——汉字库”的核心概念,从其历史背景、技术原理到实际应用...
总的来说,《软件工程——实践者之路》不仅教授技术知识,更注重培养学生的实践能力和团队协作精神,使他们能够应对软件行业的挑战,成为一名合格的软件工程师。通过这门课程的学习,学生将具备解决复杂问题的能力,...
### CMM1.1中文版相关知识点解析 #### 一、CMM1.1概览 **CMM**(Capability Maturity Model),即能力成熟度...此外,随着国际标准化组织对CMM理念的认可和支持,CMM1.1及相关标准将成为软件行业发展的重要指南之一。
第6章 软件工程——结构化软件开发——需求分析和概要设计.ppt
《软件能力成熟度模型(CMM1.1)》是针对软件开发组织的一种评估和改进框架,主要用于提升软件开发过程的质量和效率。CMM,全称为Capability Maturity Model,是由美国卡内基梅隆大学软件工程研究所(SEI)在20世纪80...
《CMM模板之立项管理详解》 立项管理是软件开发过程中的重要环节,它涉及到项目的启动、规划和准备工作,确保项目能够顺利进行并达到预期目标。CMM(Capability Maturity Model,能力成熟度模型)是一种评估和改进...
综上所述,CMM是软件开发领域的一种系统性方法,它通过一系列成熟度级别引导组织提升软件开发过程的规范性和有效性。通过深入理解和应用CMM,软件企业可以提升软件质量,降低成本,增强竞争力。
CMM是由美国卡内基梅隆大学软件工程研究所开发的一种评估和改进软件开发组织能力的框架,它分为五个等级:初始级、可重复级、已定义级、已管理级和优化级。CMM的核心理念是通过逐步改进和标准化流程,提升软件开发的...
银行业数字化转型与应用——中国银行软件中心创新实践分享.docx银行业数字化转型与应用——中国银行软件中心创新实践分享.docx银行业数字化转型与应用——中国银行软件中心创新实践分享.docx银行业数字化转型与应用...
《CMM软件质量保证过程文件》与《CMM软件质量保证程序文件》是软件开发过程中重要的指导性文档,主要用于确保软件质量的过程管理和控制。这两份文档遵循能力成熟度模型(Capability Maturity Model, CMM)的理念,...
综上所述,CMM解释器是用C#编写的一个完整的解析工具,它覆盖了从源代码到执行的整个生命周期,提供了一个易于理解和定制的用户界面。对于学习编译原理、解释器实现或者CMM语言的开发者来说,这是一个非常有价值的...
Visual C++开发技术大全——软件工程师典藏 明日科技 源代码 解压后410M 本书是一本Visual C++ 6.0综合开发参考手册,书中几乎囊括了使用Visual C++进行程序开发的全部知识,同时在讲解中结合了大量实用而又有代表...
CMM(Capability Maturity Model),即能力成熟度模型,是一种用于评估软件开发单位过程能力和成熟度的标准模型。该模型由美国卡内基梅隆大学软件工程研究所(SEI)开发,并自1986年以来不断发展完善,最终形成了CMM ...
IEC 62304 2015 医疗器械软件——软件生命周期过程.pdf