CMM/CMMI与敏捷的比较2011-10-01张恂多年来网络上存在一些对 CMM、敏捷似是而非的观点,这里纠正一下,望读者朋友和 CMM/CMMI 专家 们指正。张恂认为,CMM 基本上是 15 年之前比较传统、陈旧的东西,现在我们更多地应该拿 CMMI-SW 与 Agile 进行比较。目前有关 CMM/CMMI 与 Agile 比较的最权威的一本名著是:Barry Boehm 与 Richard Turner 大师的 Balancing Agility and Discipline: A Guide for the Perplexed(BAND)。CMMI 到底 与 Agile 有何不同?我向国内每一位软件项目经理、架构师和过程改进相关负责、研究人员推荐这本必 读之作。cmm/cmmi 与 agile 的区别主要有:1、CMM更注重质量,Agile更注重生产率错。Agile 至少与 CMM 一样注重质量,只不过它采取了更为轻便的、成本更低的方式来保证质量。生产率 并不是 Agile 追求的主要目标,只是一个迭代轻量过程的副产品。正确的说法是:Agile 与 CMM/CMMI 都非常注重质量,差别在于一种是轻量方法,另一种是重量方法,分别有各自适 用的项目开发环境。2、CMM强调过程的可观测性,Agile强调可观测的结果(可运行软件)大致对。3、CMM注重管理和过程,Agile注重技术和效率错。Agile 不但包含敏捷工程技术,也包含敏捷管理和敏捷过程。Agile 至少与 CMM 一样注重管理和过程 ,区别在于 Agile 采用的是一种更为轻便、灵活、高效的方式。难道一定要采用重型方法,制定大量的细节行为规范,编写大量的文档,采集大量的数据,才叫管理 和过程?轻型方法就不能做好软件研发的管理和过程?显然,这没有道理。在 Agile 支持者眼中,对于他们所从事的项目开发环境,Agile 是远比 CMM 更为有效、先进和成熟 的方式方法。认为只有 CMM 注重管理、过程和质量,而 Agile 不注重管理、过程和质量,显然是一种错误的偏见 。正确的说法是:CMM/CMMI 与 Agile 是两种不同的软件研发管理和过程体系,区别在于前者重量,后者轻量;Agile 包含了更多具体、实用的软件工程技术方法,而 CMM/CMMI 提供了更多以数学统计为基础的过程管理和质 量控制技术方法。在适用条件下,轻量过程通常会带来了更高的开发效率。4、CMM注重组织,Agile注重个人错。Agile 不但注重个人,也注重团队和组织。敏捷可以分为三个层次:敏捷个人、敏捷团队、敏捷企业 。正确的说法是:CMM/CMMI 与 Agile 都注重组织、团队,Agile 更强调发挥个人的主观能动性。由于价值观、出发点 和适用条件不同,导致两者的具体做法和关注面有所不同。