2021-技术资料收集

试论CMM/CMMI不适合在当前软件开发当中应用的原因

2018-12-01  本文已影响0人  一梦换须臾_

作为最著名的软件过程管理参考模型之一,能力成熟度模型CMM以及后续的集成模型CMMI,该模型在实践当中经常被误用。Brooks在《没有银弹》一章中提到的——“软件开发的四个内在特性是: 复杂性 不一致性 不可见性 可变性”,由于软件开发的这些内在特性,使得描述软件开发过程的软件开发与组织方法也天然带着一定的抽象性,由此带来了很多概念上的误导和实践中的争论。

因此在我们探讨CMM/CMMI不适合应用在当前软件开发中之前,需要先探讨什么是软件过程,什么是软件过程管理,然后讨论CMM/CMMI的概念,最后再探讨为什么CMM/CMMI不适用于软件开发。


软件过程的由来

软件自诞生开始,其规模以及在一个完整计算机系统中所占的比重一直呈上升趋势,类似硬件产品的“摩尔定律”,软件产业也有一个类似的“摩尔定律”,即: 类似功能的软件产品的规模每隔18个月,其规模(比如代码行)会翻倍,而用户获取该软件或者服务的代价将下降。“摩尔定律”对于软件系统的开发和维护带来很多负面影响,为了解决这些问题,对软件开发进行有效地组织和管理非常重要,由此诞生并且演化了一系列的所谓软件过程与方法。

伴随着不断演化的软件过程与方法,软件开发的组织与管理当中出现了大量方法上的争议和由此带来的各种误解以及混乱,其根源在于对软件项目管理软件过程管理概念区分不清晰。所以接下来我们需要先对这两个概念进行解析。

软件项目管理

软件项目管理被称为规划和带领项目团队的艺术和科学。其管理的对象是各类软件项目,具体而言是应用方法、工具、技术以及人员能力来完成软件项目,实现项目目标的过程。可以再细分为两种管理视角——软件过程与生命周期模型

软件过程管理

软件过程管理的管理对象是软件过程,这种管理的直接目的是为了让软件过程在开发效率、质量等方面有着更好性能绩效。如果将软件项目管理视为传统行业的产品生产管理的话,软件过程管理则应该是对生产该产品的流水线的设计、建设、维护、优化以及升级改造。软件过程管理一般包括了软件过程的建立、执行、监控、评估以及改进等活动。


CMM/CMMI是什么

  1. 改进进度和预算的可预测性
  2. 改进开发周期
  3. 提高生产率
  4. 改进质量(质量缺陷)
  5. 增加客户的满意度
  6. 提高员工的士气
  7. 增加投资回报和低质量成本

有两种通用的评估方法用以评估组织软件过程的成熟度: 软件过程评估和软件能力评价。


CMM/CMMI不适用于软件开发的原因

根据Humphrey再《Managing the Software Process》一书中对软件过程管理这一术语的解释来看,所谓软件过程管理应该同时包含按照既定过程的执行和不断提升过程能力两个方面的内容,所以,软件过程改进应被视为软件过程管理的一部分。其常用的参考模型就是PDCA和IDEAL,这两个过程改进的元模型。软件过程管理和软件过程改进两者不能割裂,既不能脱离改进谈管理,也不能脱离管理谈改进。因此CMM/CMMI模型可以被称为软件过程管理参考模型,也可以被称为软件过程改进参考模型,但并不是软件过程模型或软件过程管理模型。


对CMM/CMMI模型的误解


引用

  1. 本文大部分观点是基于《软件过程与管理方法综述》 荣国平,张贺,邵栋,王青
  2. 只言片语说软件的新浪博客系列
  1. 南京大学软件学院《软件工程与管理》课程ppt

最后,再次感谢荣国平老师以简明扼要的文字,阐明了软件开发领域容易混淆的部分,发人深思,值得我继续潜心钻研。

上一篇下一篇

猜你喜欢

热点阅读