本人经历过CMM2、CMM3、CMMI4和5的实施过程,随着对CMM的理解的深入,越发产生了深层次的思考。CMM对我个人影响也很大,的确有很多好的实践和理念供我们学习和借鉴。本文不是全面否定CMM,而是从批判的角度审视我们对CMM的认识。大家可以共同探讨。
中国人实际是一个很特殊的人群,中国人的思维方式、价值观和处世方式与西方国家的区别很大,这与中国历史5000年漫长的封建文化有直接的关系。
西方历史的发展是以科技为主线的,因此在西方的管理学中明显体现的是科学学科的态度和方法。在西方的管理学中分权和量化是两个重要的特点,而在中国的管理学中,为人处世却是主体,西方管理以事为主体,中国的管理以人为主体。
国内现在通过了CMM/CMMI从二级到五级那么多的企业,有多少企业生存的比以前好?又有多少家企业从此就消失在这个行业中了?
纵观国内软件行业的大局,究其原因有如下:
1. 引入了模型却引入不了文化:
任何一项管理制度和管理的方法模型都有其生长的根源和文化背景。比如独裁的管理、民主的管理等等。CMM起源于西方的软件行业,很多考虑问题的思路是有其背景的。比如分权治之的思想、量化管理的思想等。
管理不仅仅是科学,尽管我个人认为过程管理更多是一门科学。但是管理离不开对人的管理,只要涉及到人在中国就不是一件单纯的事情了。
另外国内的软件企业很少有成熟的企业文化的,这也是不论是CMM还是ISO9K都面临失败的原因之一。实施CMM更是一种文化的塑造和改革,是全体意识的提高和变革。自己本身都没有成熟的企业价值观和文化观,怎么可能让CMM在企业生根?不能在企业每个人的头脑中生根的CMM又怎么能发芽、开花、结果呢?国内企业通过CMM基本上都只是一个研发部或者产品部通过的。
2. 软件,人的因素更重要:
从软件技术开始,其质量和产出就是人的创造性和智力的结晶。尽管很多人鼓吹“软件蓝领”、“软件工厂”的概念,但是至少在二十年内,还看不到曙光。凡是可以用蓝领进行工厂化实现的技术具有如下的特点:
■ 机械性,可明确切割动作(如泰勒实验中描述的);
■ 可替代性,入门容易,任何一个人的工作是可替代的,或者替代的成本是比较低的;
■ 成本主要是材料,而不是人工;
■ 标准化,生成工艺和成品是可以标准化的。
从上面可以看到,软件行业明显与此是不同的。软件从最开始的Coding、Debug阶段都引入工程的概念在生产效率上提高了很多。但是目前不论是组件开发和面向对象还是代码生成都没有显著改变软件开发的质量和效率。我不否认软件工程或者传统行业的很多实践是可以引入到软件行业中的,但是我反对把软件生产当作传统行业生产的。至少在目前是做不到的,也许到了未来的人比现在聪明数倍、软件的标准和工具发展到想现在的扳手和车床一样。这似乎是个奢望。
大家知道,同一个学校出来的学软件的学生,其生产效率和开发质量相差几倍甚至十倍是非常正常的事情,即便是同一个人,在受到公司重视,心情好的时候比他即将离职,对公司不抱有希望的时候的生产效率差几倍也是再正常不过的事情了。
软件行业的人比其他行业的材料、工具和技术工人更复杂,其工作的动机更复杂、其社会和心理需求层次更高、人的个性差异性比较大。因此对于软件企业的人力资源的管理就更富有挑战性和以人为本。而CMM是过程模型,因此除了培训过程几乎是不关心人的。
3. CMM更适合大型项目
这是不争的事实,因为当初CMM的起源就是美国国防部为了有效控制和管理其项目而委托SEI的研究成果。国防部的项目100人月的项目就算是小项目,大部分都是几百人月甚至上千人月的项目。这种情况下没有规范的过程是不可行的事情。回头看看中国国内的情况,100人月的项目绝对算是大项目了,超过500万合同额的软件项目很少,有些甲方为了将项目分给更多的关系企业,往往人为地分成不同的项目来分包给不同的开发商。这些小项目往往是3-6个月的工期,交付的压力很大,客户的不成熟又往往看眼前的进度,而不是日后的质量。这就导致了国内很多项目是摇摇晃晃上线,提心吊胆维护,最好软件改的差不多稳定了,钱也花的差不多了。看起来是花很少的钱开发完成了,但是花更多的钱来修补。其实如果前期就能够按部就班,按照客观规律来做事,Total Cost就会减少很多。
4. 分权与量化的尴尬
在中国的历史中,最高管理者往往利用制衡的手段来统治和管理国家的。但是大家注意的是制衡,而不是分权。5000年的历史形成的文化和价值取向,分权是不现实的。从台湾的民主分权政治中我们也会发现缘由,中国人的民主分权意味着低效和成为独裁的幌子。再看软件企业,实施CMM的单位大部分都是在部门级或者技术范围内,很难看到分权和监督的作用。
关于量化也是一样,我相信大多数中国人不是太相信数字的。因为中国人的头脑中都有自己的标准,而很少有人优先想到别人或者另外的标准。台湾曾仕强老师讲过一个例子,就是一家德国的机床厂家发现卖到中国的机床很容易坏,经常更换配件,对质量一贯比较严谨的德国人派人到中国考察原因。原来是说明书中说在机床底座固定螺丝在安装的时候必须要做到拧四圈后要放半圈。自以为聪明的中国人便按照自己的标准计算,拧四圈放半圈,那不就是拧三圈半吗?这样的量化出问题就不奇怪了。
还有就是国家权威部门的统计数字往往是相互矛盾,口径不一,让劳动人民看得一头雾水。
在中国要让数字说话,就很容易滋生造数字,大到国家政府统计部门,小到企业财务,再小就到每个人年龄、财产填报。只要是对自己有利,而别人又不容易发现,那就可以造假,因为造假成本低,打假成本高。
再有就是哪个老板相信别人的数字?
5. 是什么推动了CMM在中国的风行?
CMM其实在欧洲和美国知名度并不高,很多大的软件企业甚至都不知道这是个什么东西,但是在中国,随着各地政府的优惠,加上不成熟的客户的跟风。大部分的企业看中的是一纸证书和政府的买单。很多国内知名的软件企业拿到证书后就解散了CMM的SEPG小组。而且国内的通过率历来是100%的事情,大家相信这其中没有猫腻?不在少数的通过CMM3级甚至5级的软件企业,这一两年过去后反而关门了。因此说如果没有一个正确的态度和企图来过CMM,那么再好的模型可能也起不到它的效果。
分享到:
相关推荐
CMMI(Capability Maturity Model Integration,能力成熟度模型集成)和 CMM(Capability Maturity Model,能力成熟度模型)都是软件过程改进的模型,但它们之间存在着一些关键的区别。 1. 需求管理(RM) CMMI 中...
### 软件过程改进与CMM #### 概述 在现代高新技术产品研制中,计算机软件的应用变得日益广泛和重要。随着软件在产品研制中扮演的角色愈发关键,软件的质量和可靠性问题也随之凸显。其中一个重要原因在于:军工软件...
《软件工程CMM:概述 软件工程能力成熟度模型(Capability Maturity Model,CMM)是一种评估和改进软件开发组织过程能力的方法。由美国卡内基梅隆大学软件工程研究所(Software Engineering Institute,SEI)在20世纪...
CMM与项目管理的结合,是为了在软件开发过程中引入更规范、更成熟的管理实践。CMM提供了一套评估和改进软件开发流程的方法,而项目管理则关注如何在具体项目中有效地应用这些流程。 在实际操作中,项目经理需要依据...
【CMM中的软件质量保证实施准则】是软件开发过程中一项至关重要的规范,旨在确保软件产品的质量和过程的稳定性。CMM(Capability Maturity Model,能力成熟度模型)是一种评估和改进软件开发组织能力的方法论,其...
**CMM(Capability Maturity Model,能力成熟度模型)**是一种评估和改进软件开发组织能力的方法论,由美国卡内基梅隆大学软件工程研究所(SEI)在20世纪80年代末期提出。CMM是软件工程领域的一个重要里程碑,它为...
CMM-manager
《软件测试CMM文档》是针对软件开发过程中的测试阶段所建立的一套成熟度模型,旨在提高软件质量、降低风险并提升测试效率。CMM,全称为Capability Maturity Model(能力成熟度模型),是由卡内基梅隆大学软件工程...
很多时候,人们提到CMM,其实指的是SW-CMM,即软件CMM。除了SW-CMM以外,还有P-CMM,SE-CMM,SA-CMM和CMMI等,这些CMM都是美国Carnegie Mellon大学软件工程研究所(SEI)的产品。每个CMM都是独立的产品,有各自不同...
**CMM与软件质量概述** CMM,全称为Capability Maturity Model,中文译为“能力成熟度模型”,是由美国卡内基梅隆大学软件工程研究所(SEI)于1986年为评估软件供应商能力而开发的一种模型。CMM模型自诞生以来,...
4. **CMM与软件度量** - **度量的重要性**:软件度量是CMM中的关键元素,它用于评估软件过程和产品的质量和效率,如代码行数、缺陷密度、开发周期等。 - **度量的类型**:包括过程度量(如开发速度、缺陷修复率)...
近年来,随着中国加入WTO,经济的飞速...在未来两三年内,国内软件业势必将出现实施CMM的高潮。从这一趋势看,中国的软件企业已经开始走上标准化、规范化、国际化的发展道路,中国软件业已经面临一个整体突破的时代。
CMM与软件测试相结合,形成了软件测试CMM管理标准,它为测试团队提供了系统化、规范化的测试流程和质量控制体系。 首先,我们要理解CMM的基本概念。CMM分为五个级别:初始级、可重复级、已定义级、已管理级和优化级...
### CMM与软件质量的关系 CMM的核心在于过程控制和标准化,这直接关系到软件质量的提升。通过CMM的实施,组织能够: 1. **建立规范化的开发流程**:明确各个阶段的任务、职责和标准,减少项目中的不确定性,提高...
在软件业中实质上就是指Software Capability Maturity Model(SW-CMM),即软件能力成熟度模型,通常简化描述成CMM。所以,CMM就是指软件能力成熟度模型,它是美国国防部对软件承包商软件能力评估的一种模型,也是...
CMM软件能力成熟度模型实践指导 在软件开发过程中,CMM(Capability Maturity Model)软件能力成熟度模型扮演着至关重要的角色。CMM是一个衡量软件开发组织的过程能力和成熟度的模型。通过对CMM的研究和实践,我们...
基于CMM的软件质量管理