合理的软件过程是软件质量的基础-论CMM/CMMI的缺点

转载 2006年06月25日 09:14:00

CMM/CMMI被认为是一种最成熟、最有效地提高软件工程化水平的方法和标准,用来评估和改进过程,它是一个描述在软件开发过程中有待改进的关键因素的框架,描述了一个能用渐进方式进行改进的途径。它为软件过程改进提供一个基础,将软件开发从一个相对来说随意、不成熟的过程变成非常成熟的、有规律的、可管理的过程。

 

然而,CMM/CMMI也有一些与身俱来的缺点不容忽视。比如,CMM/CMMI的评估耗资不菲,一个CMM2级评估就可能达到数百万之巨,而且耗时很长,过程十分复杂,常常导致效果不太理想。不少企业的认证流于形式,评估完成后就只留下一大堆文档,而真正的软件开发过程却依然故我。而且,CMM/CMMI只告诉我们应该怎么做,而没有具体地告诉如何做。比如说,它要求必须改进需求管理,那么到底该如何做需求管理?CMM/CMMI没有提供答案。

 

还有最重要的一点是,不少软件企业陷入了一个误区,以为单单通过CMM/CMMI评估就可以解决软件质量不高的问题,而忽略了软件过程这一真正改善软件质量的环节。事实上,完全有可能出现这样的情况: 软件成熟度为CMM 1级或2级的企业开发出的软件是真正好用的,而有的企业即使通过了CMM 5级认证,也无法保证它交付好的软件。最糟糕的情形是,如果采用不好的软件过程,通过CMM/CMMI的成熟度级别越高,只会使软件企业生产差劲软件的过程变得更加有效率,而不是使企业开发出更好的软件。

 

Ivar Jacobson认为,好的软件过程首先一定是基于组件的,在此基础之上,还要符合迭代开发、用例驱动开发和以架构为中心的这三个最佳实践。

合理的软件过程是软件质量的基础

为什么会是这样呢,Ivar Jacobson举了一个非常形象的例子。这是一个农夫和他的奶牛的故事。在奶牛喝水的途中(称为“牛路”)有一片庄稼地,牛会吃掉很多庄稼。农夫看到这种情况后,意识到必须对奶牛喝水的过程进行改进,所以他就在这条道路上铺上了沥青。结果,农夫得到了一个好的“牛路”,牛走得更快了,但是并没有真正解决牛吃庄稼的问题。它应该有更好的方式,就是为牛喝水寻找一条全新的道路。

 

 

软件企业利用CMM框架进行软件质量控制的过程,就像是这个农夫为牛路铺沥青。对于软件企业来说,如果从一个错误的软件过程开始,即使你在这个上面再改进,得到的永远只是“牛路”。这里更应该考虑的是要选择一条更好的路,也就是从一开始时,就采用能够开发出好的软件的过程。然后在这个软件过程的基础上,对这个软件进行度量,改进这个软件的过程,也就是进行CMM/CMMI要求的改进。

 

Ivar Jacobson博士认为,从一个不良的软件过程出发,在此基础上进行改进,实际上会把软件开发变得更糟糕,因为你把软件开发过程固化了,使日后再想对它进行改造,变得更加困难。正确的方法是,先要有一个好的软件过程,这是不容易的,但是值得做的事情。Ivar Jacobson 说,“把一个好的软件过程变得可度量非常容易,但是把一个可度量的软件过程变成一个好的软件过程却很难”。也就是说,只有把一个好的软件过程,即能够开发出好的软件的过程变得可度量才是有益的。而把一个已经经过CMMI改进的、可度量的过程变成一个真正的能够开发出好软件的过程,这是几乎不可能的事情。

 

那么什么是一个好的软件过程?Ivar Jacobson建议从以下几个方面进行辨别: 第一,坏的过程关注文档上,而好的过程关注在可执行的程序或者系统上; 第二,坏的过程延误了揭露风险的时间,而好的过程一开始就把自己暴露在风险之下,并及时解决它; 第三,坏的过程在项目的最后才能够验证这个项目的质量,而好的过程其质量是每时每刻都能够得到验证的;第四,坏的过程有一个非常复杂的跟踪关系矩阵,从需求到代码需要一个非常复杂的矩阵,而好的过程,却是一个无缝链接; 第五,在面对变更时,坏的软件很脆弱,好的软件会很健壮。

 

Ivar Jacobson提醒软件开发人员要做聪明的农夫,首先得到一个正确的软件过程; 然后,再考虑去度量它、定义它。因为软件项目管理的本质不是能否描述并度量软件过程以及过程到底怎么样,而是首先关注软件,你是否能很好地开发出合格软件。重点是得到结果,通过软件过程得到这个结果,也就是交付的软件产品。

敏捷开发企图终结软件危机(但也是很难的,敏捷开发适合小团队,不适合需求清楚的大项目、军工项目、...)

合理的软件过程是软件质量的基础-论CMM/CMMI的缺点

CMM/CMMI被认为是一种最成熟、最有效地提高软件工程化水平的方法和标准,用来评估和改进过程,它是一个描述在软件开发过程中有待改进的关键因素的框架,描述了一个能用渐进方式进行改进的途径。它为软件过程...
  • wssmao
  • wssmao
  • 2009年10月26日 16:03
  • 289

合理的软件过程是软件质量的基础-论CMM/CMMI的缺点

2006年06月25日 09:14:00 CMM/CMMI被认为是一种最成熟、最有效地提高软件工程化水平的方法和标准,用来评估和改进过程,它是一个描述在软件开发过程中有待改进的关键因素的框架,...
  • softart
  • softart
  • 2007年10月28日 06:48
  • 345

CMM,CMMI,PSP,TSP

CMM 培训 ...
  • tanliyoung
  • tanliyoung
  • 2007年06月25日 14:00
  • 2113

基于ISO9000、CMMI、六西格玛软件质量度量及其保证的分析与比较

1  引  言 质量是任何一个产品赖以生存的基础,软件产品也不例外。但是软件产品作为一个知识和智力型的特殊产品,相对其他的物质产品而言具有许多的特殊性,尤其是软件产品的开发和生产处处体现出“人脑工程...
  • joeyon
  • joeyon
  • 2014年12月23日 16:43
  • 823

CMM软件能力成熟度模型

 CMM软件能力成熟度模型 一、什么是cmm评审   简单来说: 通过实施CMM认证和评审,能够帮助你们公司建立一些软件开发、质量管理等方面的规范(质量体系)来,能够帮助你们公司的软件开发有...
  • mimi_endeavor
  • mimi_endeavor
  • 2014年10月23日 10:03
  • 620

山东大学软件过程管理复习纲要

1、项目管理支持活动有哪些? 配置管理,度量和分析,决策分析。 2、CMM/CMMI、PSP、TSP、RUP、XP、SCRUM、PDCA、MSG、SEPG、WBS、SPI CMM——软件能力成熟...
  • dkbnull
  • dkbnull
  • 2016年06月29日 09:49
  • 1672

质量体系——CMMI及整体介绍

这周公司给我们做了个质量体系理论的培训,还进行了一场培训后考试。     我就在这里把这次培训的内容总结一下。大家也可以参考参考。     首先是岗位课程图,不同的岗位需要了解的课程有些不同,如下图所...
  • wanghuan203
  • wanghuan203
  • 2013年11月30日 16:59
  • 10638

CMM/CMMI与敏捷的比较

原文:http://tech.chinaunix.net/a2008/0718/197/000000197890.shtml 多年来网络上存在一些对 CMM、敏捷似是而非的观点,这里纠正一下,望读者朋...
  • Testing_is_believing
  • Testing_is_believing
  • 2014年01月01日 21:00
  • 1854

CMMI和提升软件质量

最近公司在搞CMMI四级评审,有人支持,有人不理解,有人无所谓,不过既然是领导的意思那么就不管你想不想搞都的搞了,于是各种培训,预评估会议,各色报表,文档,流程软件什么的都整出来了,倒也热闹。我作为一...
  • psy
  • psy
  • 2007年11月19日 01:41
  • 468

浅谈敏捷与CMMI

首先,可能还会有人质疑敏捷是什么,CMMI是什么。不过这已经不是我想说的重点,所以对于他们的定义,大家就自己找度娘和谷娘吧! 开篇,我给大家一个私人的总结。大家可以试着去找找各自所在公司的项目,...
  • yuhuijun_1
  • yuhuijun_1
  • 2013年02月25日 12:50
  • 3746
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:合理的软件过程是软件质量的基础-论CMM/CMMI的缺点
举报原因:
原因补充:

(最多只允许输入30个字)