论坛首页 综合技术论坛

CMM到底给我们带来了什么?

浏览 193071 次
该帖已经被评为精华帖
作者 正文
   发表时间:2005-05-27  
ozzzzzz 写道
to partech
CMM关注的恰恰是过程而非结果,否则其也不是过程标准,而是一种产品质量标准了。其实恰恰就是因为CMM不能很好的提供外部人员所关系的种种数据,才造成了其尴尬的地位。
你说你提供给客户一个报告说,我们的软件有可能有多少个bug,各个级别的bug分可能是多少,这些bug可能在什么情况下出现的几率是多少。这样的数据对于那些不了解软件的客户有什么价值呢?
CMM的说白了还是一个开发导向的东西,而不是客户导向的东西。不解决这个问题,CMM将永远只是一种玩具化的标准。

我说的结果是指过程中各个阶段的结果,而不是指最终交付给客户的产品。比如需求文档化就是需求分析的结果。
关于BUG,我认为这个报告,主要不是给客户看的,而是因为管理者认为需要知道这些,是对开发过程的一种度量。
CMM是一个过程标准,但不是过程本身,就如同JAVA有标准同实现的区分一样。
开发人员更关心,每日都会用到的具体过程和方法,因为能够马上看到效果。
相反CMM只是度量这种过程,这是不同层次上的问题。
打个比方:可以把CMM的等级看作英语考试的等级,我们具体学习英语时,并不会太在意考试,“功到自然成”相信是很多人观点。考试只是作为自己英语能力的一种检验。但是要毕业就需要达到4级,这是国家的规定。
所以说用具体学习英文的方法同4级考试要求达到的能力作比较,是不恰当的。
CMM在中国实现的并不理想,这是事实。因为能力是需要长期的培养和训练才能提高。认为通过实践CMM就能提高软件开发的
能力,同说天天作英语试题就能提高自己的英文水平一样,毫无道理。
所以就软件开发能力的问题,我认为也是“水到渠成”的事情。通过敏捷,RUP以及Dlee提到的精益求精等方法和过程的引导,加上经验的不断增强,自然会把开发引向成熟的方向。
0 请登录后投票
   发表时间:2005-05-28  
askycn
引用
完整和严谨是指其定义的精确性,灵活的实施是指其开放性。这就跟C++的定义和用C++来写程序一样没有任何冲突。至于由谁来掌握,你见过C++的开发者指望C++标准中告诉他如何开发一个程序么?

一个系统的完整和严谨所带来的必然是起可扩展和可被扩展性的下降,这一点我希望你仔细体会。
就如同你举的例子cpp的体系定义越是严谨,构造越是紧密,系统越是完备,对于其的使用就越是要小心和谨慎,其对于人类思想转化为机器过程的难度就会越大,而不是相反。
其实正是由于CMM支持者从感情上去面对CMM存在缺陷,存在不合理因素,造成其对于CMM的种种判断都是最好的,没有更好的,而忘记其实跟着因素往往是存在内在矛盾的,需要协调的。
我想你也应该知道CMMI模型的建立的动机之一,就是要解决其和其他系统的兼容问题,因此才会有集成模型的说法。
引用
支持信仰的说法,而你说指的逻辑,恰恰是你们自己在发言时的一个问题。这一点,o6z在CSDN的时候就没少被人这样指责过,至于其它人嘛,对不起,你们的发言我看的不多。当然,作为我个人,只要你们说的有理有据,我完全包容你们犀利的文风。

什么是基于信仰的呢?其实这个问题很简单,就是用一个体系的来判断其自身的价值,排斥其他系统的观点。可以这样作的一个前提是其系统必须完备和严谨,从而才能带来一个可以解决一切问题的答案。
问题在于我们这里的人多数都是自由主义者,或者干脆的说多少都有些不可知论的信仰,因此基于信仰的说法对于我们来说是高抬我们了。只有你们才能有信仰,我们没有这个资格谈信仰。
引用
真是欲加之罪何患无辞。我不是天才,我的知识不可避免地有所欠缺,这也是我在这里讨论的原因,但是我绝对不会想来教育你们谁。让青海渔风到这里看看,也只是想让他了解一下这里的各种看法并且分享他的经验。你绝对应该承认,他的经验比你丰富得多,但是我很奇怪,这个号称开放的论坛,却不能让他产生兴趣。你这种思路,我只能认为是“以小人之心度君子之腹”。

究竟是你的同事经验丰富还是庄的水准更高,我想在你没有接触过庄之前,就下定义是不合适的。而恰恰是你的这种先入为主的想法,造成你对于问题的认识往往本者一种情绪化的思维方式进行思考,从而不愿意也不承认你们自己存在缺陷。
引用
CMMI的一个出发点是整个企业的健康进步,如果你是老板你会希望低下有一个不可替代的下属么?至于是不是容易抵触,我想技术人员抵触发不出工资的情绪会更强一些。

这个问题你确实应该问问庄,因为这个问题对于庄来说是今后将是一个非常重要的问题。
但是你是不是也要问问自己,CMM是否就可以让老板达到其下属不能取得不可替代的地位呢?我们就假设CMM可以达成技术核心人员可以在系统中边缘化,但是你是否想过是由什么人替代了他们的位置呢?那些替代的人是不是本身也已经不可替代了呢?同时你是否想过企业经营的目标是不是就是老板个人的过家家,不希望别人成为主角呢?是不是经验利润要让位给权利斗争呢?若如此是不是暗示CMM其实是在违背企业管理和经营的基本原则呢?
引用
1. 不要误解了我说的比较,否则我前面那么多的话真是自说自话了。不要纠缠于同方法论的比较,是因为CMMI本身不是方法论,这是个公认的事实,比较起来没什么意思只会沦为口水战。你见过拿GMP和药品生产流水线比较的么?
2. 如何看清CMMI的优缺点,你忘了o6z的教导了:实践是检验真理的唯一标准。也许你确实经历和很多失败的实践,而比如GMP在执行过程中也会遇到诸多挫折,但是我确实可以告诉你很多正确的成功的实践。我几天前来到这里的时候就是为了找一些有兴趣的人来探讨实践,而且也预料到在这里说多了背离这个论坛主流的观点肯定会卷入离开主题的争论,但是也许是我太年轻沉不住气,最终还是被卷了进来。
3.关于CMMI的真正价值,我愿意向你重复一遍前几天写的那段小小的比喻(o6z的批评使我改进了一些说法以更精确地表达我的理解):
引用:

有句老话叫“条条道路通罗马”,我认为对软件业来说,这座罗马城里的地标至少包括:
1.按时交付
2.高质量
3.团队进步

而XP, RUP, MSF以及其它一些公司自己总结的过程方法论,都是软件项目走向罗马所穿的鞋。有些人喜欢XP牌的,它跑起来轻快;有些人喜欢RUP牌的,它结实耐用而且能够在路上留下深深的脚印方便后来者避开泥潭;有些人还喜欢自己做个布鞋呢。猫无所谓黑白,鞋也无所谓好坏,耐克是穿,草鞋也是穿,能保护你抵达,自己觉得舒服而且买的起就行了。

CMMI是什么?CMMI是一本你可以放在口袋中的SEI出版的旅行地图,告诉你一条通往罗马的路。这本地图跟你穿的鞋有关系么?完全不应该拿书和鞋来比较,非要辩出过谁好谁坏。你指望这本地图能带你飞到罗马?你要的不是地图而是阿拉伯飞毯。不用这本地图可以么?可以,比如MS同学去罗马来回许多次了,都用的自家的地图,而且现在把这副地图绣在他家的MSF牌鞋子上了。没有地图你能行吗?可以,但是当然你要多花些力气多走写弯路直到你拥有了和地图相当的经验。你认为按这本地图走起来太曲折和困难?记住,容易到达的地方就不是罗马。最后重复一句老话“尽信书不如无书”,只顾埋头按这本地图往前走,而不抬头看看自己是不是还在正确的方向上,很有可能是要误入地中海的。

至于路么?世界上本没有路,走得人多了,也便成了路,至于XP那样的新款风火轮,连路都不会留下了,天空中只有高手飞过的踪迹,等你成了高手再去追他们吧。

CMM不是方法论,它只是一个标准。这一点你是承认的。
但是你是也承认就因为CMM不是方法论,因此你们需要进行方法论的学习呢?是否你们还可以承认你们对于方法论的研究存在着及其严重的理论和实际经验的缺陷呢?是否能够承认你们对于当代软件工程的方法论体系还缺乏最基础的了解呢?是否应该去学习学习例如什么是迭代这样的基本的概念知识呢?
当我们指出你们的缺陷的时候你们是否真的理解了我们所表达的意思,真正知道我们所表达的含义呢?你们受的训练是否能够支持你们对于我们的经验可以无障碍的分享呢?
实践是检验真理的唯一标准。但是我看到你们却把现在CMM在国内企业推广的普遍失败归结为推广者水平不够,实施者三心二意,企业拥有者不能下定决心。如果你们面对事实都是以这样的态度寻找种种的借口,你们由如果进步呢?
其实你对于地图的比喻是不合适的(当然我在这里要声名,我们这里所有的人不要去讨论比喻是一种对概念含义的污染的问题了,这样的讨论我们已经可以结束了)。所谓的CMM是地图的说法,首先就暗示了CMM是有方法论的内容的。方法论是软件开发的方法体系,其作用是包括如何按照某种方式,使用某种手段,经过某些过程,从而按照某种要求去得到软件。地图至少就包括了过程和方式的内容,只是它不会提供手段而已。这里是不是又说明你缺乏基本的方法论基础呢?同时是不是应该看到地图如果单纯以方位为其体系,也就是说其不反对人们按照自己的希望选择达到目标的路线,是不是合乎CMM的基本原则呢?是不是你自己就在暗示那些KPA其实并不重要,重要的是达到最后的目标罗马呢?

最后我要提醒你,判断一个体系的好坏不能以立足于体系自身的内部,也不能用另外一个平等的体系去进行评价。你需要的是站在更高的层次使用第三方的数据来进行你的评价工作。而你们这些CMM的支持者恰恰不喜欢脱离CMM体系去想问题和进行研究。同时你们是否可以理解找到一个系统的适应范围,发现其缺陷所在,往往才是其根本价值得以实现的最佳前提。
我最后还要解释一下,我们这个论坛从来就没有希望满足各种各异的人的喜欢,开放也不是就需要容纳所有的各种各样的学术和论点。因此有些人会不喜欢我们这里,有些人会喜欢这里,这恰恰是我们所追求的一个目标。同时你是不是应该仔细考虑一下我们提出的那些作为软件过程研究的基本概念,考虑一下你接触的人有几个是对于这些概念能够做到了然于胸,而不是故步自封自说自话,企图建立一个大一统的概念体系呢?
承认自己存亡缺陷是痛苦的,这种痛苦是需要勇气克服的。如果只是口头上承认,却从来都不去真正的寻找其缺陷所在,是不是一种好的做法呢?或者说你们自己承认CMM不能解决目前国内软件行业的现实问题,但是你们却不敢承认实施CMM不是国内软件行业迫切需要作的事情呢?同时你们还承认CMM的推广需要有某种特殊技能的人才可以,那么你是不是应该承认这些人实际上是企业不可替代的的呢?不是你还应该承认,在没有找到这些人之前,推广CMM是一种不合适的做法呢?
同时你是不是应该也想一想你所谓的经验丰富的人是不是同你讨论过这些问题,是不是他们曾经与你认真的研究过从一个比CMM更高的层次去思考问题的方法,是不是他们曾经告诉过你应该接触更多的不同学术说法,选择一个最适合你的路线,而不是告诉你自古华山一条路,除此之外别无他图呢?
0 请登录后投票
   发表时间:2005-05-28  
partech
用户真正关心的是什么?他们会真正的关心需求文档是不是真正表达了他们的意思吗?还是他们更加关心软件究竟解决了他们的什么问题?
CMM所追求的是开发过程的可度量,而不是开发结果的可度量。而如果客户可以得到其结果的可度量,过程的可度量性就会显得不重要了。
CMM自身不是过程,但是其确实有过程癖好,这一点我想你是有认识的。这同java标准不同。同时你也要看到既便是java标准,也是对其实现方式进行的约束,而不是单纯的只告诉你一个接口。
0 请登录后投票
   发表时间:2005-05-28  
to askycn
你对于Quality is free的理解是有误解的。但是这个问题并不重要。你只需要认识到生产高质量的产品并不会带来成本的上升就可以了。毕竟我们这里不是TQC论坛,过多的讨论这个问题意义不大。
同时我可以告诉你的是,你的同事对于迭代定义根本就不理解,而其对于在CMM下实施迭代的发言更是漏洞百出。具体情况我建议你参考
http://www.china-pub.com/computers/common/info.asp?id=22246
《敏捷迭代开发》这本书,其作者是大名顶顶的Craig Larman。他就是《UML和模式应用》的作者。其实这本说完全是说迭代的,加上敏捷这个词必要性不大。这就如同《敏捷软件开发》是BOB大叔说面向对象设计和重构的原因一样,只是他们个人的喜欢。
我这里只说一点就够了。迭代恰恰是可以克服团队的不稳定,而不是以稳定的团队为基础的一项实践。当然团队的稳定在任何方法体系下都是应该追求的,是非常重要的。其实道理很明显,因为使用的是迭代的开发,在一个周期内完全可以做到需求的冷冻,也能够达成团队的稳定。而各个周期之间给组织提供了更多引入变化的机会,而不是相反。
当然你还应该要明白需求的改变不是需要达到客户的理解,而是要达到开发者的理解,因为需求的改变是客户所发出的,而不是开发者发出的。因为本质上说开发者和客户存在着利益的部分冲突,开发者希望能够对需求进行冻结,以便于更顺利的完成项目。而客户则永远希望随时保持修改需求的权利,以面对外界随时变化的环境。
其实通过你和你同事的发言,我已经判断说你们对于软件工程基本常识是非常匮乏的。而你可能已经意识到了这一点,而开始学习一些基本的软件工程知识。但是你的同事觉得其软件工程基本知识是非常遗憾的低,水准已经到了不可理解的程度。以这样的水准去推动CMM其前途必将是可悲的,然而其自身的骄傲和素养,造成了其已经不可能去学习那些基础的理论常识。
最后我要说CMM和GMP不同,GMP是不可能存在走过场的事情的,因为你的机器设备在那里放着,厂房在那里放着,产品在那里放着,你不可能放弃这些资源,而去另起炉灶。同时GMP的保证体系要比CMM强的多,你不可能只是这个车间通过,其他不通过。当然GMP过程里面会存在走过场的行为,但是那些都是局部性的,而非全局普遍性的。除非一个企业自身就不希望以后再作药品了,否则他们是不敢去越过GMP的红线的。
0 请登录后投票
   发表时间:2005-05-28  
askycn 写道
而CMMI,除了关注一个项目的表现之外,提供了基于整个企业的视角。

而在CMMI的统计学项目控制框架下,针对个人的effort统计数据可以评估个人效率,而且按照统计学原理对大量历史数据的综合分析可以得到相对合理的参考数据,这两个问题都可以迎刃而解。这也是统计学原理在工程项目中的价值所在。

但是CMMI的另一个特征是关注如何把经验转化成知识,如何把知识高效的传播。至于具体如何做,我们公司有成型的流程和方法。至于证据,公司对于我这个没有什么经验的人也能委以这样的任务,而我做起来并不困难,这就说明了知识传播体系的成功。


呵呵,前一段时间和我们公司的SEPG成员有一些关于CMMI实施的讨论,他也提到了和你很类似的一些观点。

传统行业的质量控制其本质就是将统计学的原理应用到质量控制中,无论是全面质量控制还是6σ管理法都是以此为理论基础的。这是有严格数据依据的,确实相当有效。
然而统计规律都有两个隐含的前提:
1、就是需要一个很大的基数,越大它就越稳定越准确。
2、作为统计对象的个体是无差别的(或者说其误差是可控制的)
   如果是将人作为统计对象,就意味着在市场上有充足的类似人力资源可供获取。

所以,在传统行业的质量控制中,面对的过程和对象主要仍然是针对底层操作者和中下层的管理者,从来没有一个过程可以控制高层管理者的,也从来没有一个过程说高层管理者可以被随便替代而不会对企业造成关键影响的。
(很多大公司的CEO确实可以被换来换去,但是要注意到每一次调换都可能产生根本性的影响)
类似的,一些具有创造性要求的岗位也是很难被过程所控制的,因为其所对应的人力资源的稀缺性造成过程的所有者无法按照过程来选择合适的人。

我和同事讨论的结果是:这种以统计为基础的质量控制和过程控制必然带来一个结果就是不单不容许负的偏差(表现的比平均值为差),同样也不鼓励正的偏差(表现的比平均值为好)。因为正的偏差同样会带来管理上的复杂性。

具体到软件行业,一个熟练的且受过良好训练的程序员的开发效率很可能是一个一般程序员的十倍以上。
在国内大量的中小公司中,都会要求每一个人都尽可能的发挥出自己的能力。
然而在CMM中,会试图让每个人以较为平均的水准发挥自己的能力,否则的话整体的估算立刻会有问题。因为CMM是针对过程的,不是针对人的。

如果你在估算项目进度的时候,会认为A程序员做A模块要3天,但是B程序员做A模块要7天,那么我认为你们已经把CMM剪裁的完全不是CMM了。

当然你可能会说CMM也可以针对单个人来做效率统计,从而进行估算,但是这里同样无法避免我前面提到的两个统计要素:
1、这个人必须有足够的历史数据积累以便进行统计。
2、这个人整体的表现要足够平稳。


然而,一旦所有的估算都基于标准过程而不是基于人的能力差异,对于小规模的公司来说,立刻会发生极大的成本问题,这个成本不是由于叠加了所谓的“质量成本”引起的,而是由于降低了原有的开发效率引起的。因为所估算的平均水准一定是更偏向于水平较低的成员。

换句话说,统计规律在某个公司适用的前提是:
该公司有足够多的一线生产人员(包括分析人员、开发人员、测试人员、……)
并且这些人员水平比较接近
并且这些人员水平在相当长的一段时间内都保持稳定

这里的“足够多”、“比较接近”、“相当长的时间”可以由不同组织根据自己实施的经验给出。
但我个人认为,对于目前国内绝大多数规模不超过300人,有效历史数据积累不超过1年的公司来说,统计规律是没有意义的。

而如果这类公司在现阶段开始真正的实施CMM,那么在统计规律发生作用之前,它就已经死掉了……在这么残酷的市场环境下,降低开发效率简直和找死没什么两样……
0 请登录后投票
   发表时间:2005-05-28  
引用
我和同事讨论的结果是:这种以统计为基础的质量控制和过程控制必然带来一个结果就是不单不容许负的偏差(表现的比平均值为差),同样也不鼓励正的偏差(表现的比平均值为好)。因为正的偏差同样会带来管理上的复杂性。

风险可以定义为一种不确定性
0 请登录后投票
   发表时间:2005-05-28  
最近一直忙于Martin Fowler上海活动的组织,没有什么时间来看论坛。也是今天才注意到这个帖子。很遗憾的看到这个帖子当中充斥了太多非理智的口水,我也尽量删除了一部分,希望讨论回归理性和自由。

CMMI3我所在的公司也在实施,大概从去年年中就请了CMMI顾问培训和咨询,在今年过年以后又请了评估师来评估和实施。为此,公司还专门成立了质量部门配合CMMI的实施。下的决心不可谓不大,投入不可谓不少。至于效果,至于出现的方方面面的问题,和很多公司都是大同小异的,所以我也不赘述了。

因为前面有CMMI比较精通的专家说了这么一句话,说那些批评CMM,实施CMM效果不好的公司是因为缺乏对CMM的了解和认识。所以,这个评语一出,我就不好说什么CMM的坏话了,反正不是CMM不好,是我不懂,所以弄不好。

在这里我不想把精力放在评价CMM上面,而是在思考,CMM究竟施加在哪类企业身上会取得比较好的效果上?根据我的了解和掌握的情况来看,CMM会比较适合外包型企业。外包型企业的特点决定了它可以能够以比较小的代价接受CMM的约束。

2002年毕博刚刚在上海设立GDC的时候,招聘骨干人员,准备送去美国培训。当时我正在找工作,很希望能拿到这个offer,但是竞争很激烈,名额很少,我倒在了最后一轮面试上。在面试的时候和面试的老美也谈了很多CMM的话题,他们告诉我,毕博要实施CMM5,准备在上海GDC招聘大量员工(超过600人)。前两周看央视对话节目,毕博老板的那一期,有个毕博的女孩也出来了,说是毕博在上海的第1000名员工,老板还说,还要再招2000人。

和毕博比较类似还有上海花旗软件研发中心,也是成百上千的开发人员。我也朋友在这两家公司,相信论坛也有很多朋友在这两家公司,里面的情况我也不在这里谈了。

我举这两个例子是想说明,CMM适合这样的公司,这样的公司软件设计都在国外完成了,详细到了单元模块,中国的员工要做的就是单元模块的编码,更加直接的来说,就是拷贝和粘贴。这种类型的企业,软件生产活动高度类似制造行业的生产流水线,不需要你有多高深的编程水平,不需要你思考和设计,所有的模板都放在你面前,所有的模块要求都规定好了,你就是把模板代码拷贝过来,改几个变量名称而已。不客气的说就是代码工人。

在这类高度符合制造行业特征的软件企业中,特别是代码工人的数量非常庞大,一定需要一个生产流程化管理的规范来提高生产率,有序的组织生产。这就是CMM之于这样类型公司的意义所在。

客观的来说,这样的代码工厂,它也不在乎工人的流失,走了一个工人,招聘一个工人简单的生产培训完毕立刻就可以熟练的投入生产。

这样的代码工厂开发效率高吗?软件质量好吗?成本低吗?

首先肯定的是成本很低,他们给代码工人的工资通常都是比较低的,代码工人如果不满意,跳槽了,他们立刻可以从劳动力市场上招聘到更加廉价的代码工人。

开发效率高吗?不高,一个软件模块设计错误的修改,可能就要从中国到新加坡,从新加坡到印度转一圈回来才行。

软件质量好吗?还得的去,都是模块复制粘贴出来了,就算差也差不到哪里去。

插几句题外话,现在外包公司也有很多在用Hibernate,我看过他们的模板代码了,我真的很佩服他们把一个入门门槛很高的Hibernate肢解成为他们简单有效的代码模板的能力。而且完全可以让一个没有用过Hibernate的代码工人在几天之内熟练的进行生产。

我不想对代码工厂类型的公司进行评价,我只是列举出来代码工厂公司的特征,大家可以发现,CMM对于他们来说是必要的。并且大家可以想一下,我们非外包型软件公司和代码工厂类型软件公司在业务特征和软件开发要求上有什么本质的差别?想明白了这一点就知道为什么CMM不时候非外包软件公司了,并且大家也应该明白什么样的公司才应该实施CMM。
0 请登录后投票
   发表时间:2005-05-28  
同意楼上的观点 很理智也很克制.

中国的软件业要健康发展 就少一些外包 少一些蓝领 少一些软件学院 少一些CMM .
0 请登录后投票
   发表时间:2005-05-28  
winterwolf 写道

中国的软件业要健康发展 就少一些外包 少一些蓝领 少一些软件学院 少一些CMM .


什么逻辑
0 请登录后投票
   发表时间:2005-05-28  
外包 蓝领 软件学院 CMM 都是一丘之貉.都是出卖市场 出卖人才 培养买办的经济模式下的产物.  这样下去中国还有自己的软件业吗 ?

借助开源的力量 摆脱旧商业模式的束缚 开辟新的商业模式才是值得关注 值得研究的.

外包 CMM 算什么. 今天学印度 明天学刚果 ?
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics