CMM/CMMI与敏捷的比较

原文:

http://tech.chinaunix.net/a2008/0718/197/000000197890.shtml

 

多年来网络上存在一些对 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 更强调发挥个人的主观能动性。由于价值观、出发点和适用条件不同,导致两者的具体做法和关注面有所不同。

    5、CMM无所不包(Universal),Agile有明确的适用范围

    错。

    我不知道有什么理由说 CMM/CMMI 无所不包?通常一个号称无所不包的东西,同时也意味着它是一件无用的东西。

    事实上,仅管 CMM/CMMI 体系庞大、内容繁杂,但它的目标依然只是作为一个成熟的过程改进和评价模型,必然缺少了软件工程领域的其他许多内容。张恂认为,CMM/CMMI 体系对于国内大多数软件企业、研发机构而言,可能过度成熟了,有点过犹不及。CMM/CMMI 中不包括如何写好需求,如何做好设计,如何写好测试等许多方面的软件工程技术、技能方面的指导,而这些恰好是敏捷的强项。敏捷方法整合了一套轻量的管理、过程和工程技术方法,这是它作为 21 世纪的先进方法体系优于 CMM 的地方。

    正确的说法是:

    CMM/CMMI 与 Agile 都有各自明确的适用范围。在一些价值观、原则和实践做法上,它们既存在着明显的区别或对立,同时又存在着一定的互补关系。

    6、它们都包含了一些软件工程的好的实践(Practices)

    对。

    CMM/CMMI 作为一个复杂的过程体系,有着大量的参考实践做法。Agile 的实践做法数量要少得多,也更容易操作。两套实践做法集在各自的适用环境下,可能都是最优的。

    为什么 CMMI 与敏捷的许多最佳实践看上去差异较大?张恂认为,这是因为它们是两套分别归纳自工作在不同软件工程行业、领域的科学家、工程师群体的成熟经验,而两者的价值观、目的和用途也有着较大的差异。

    科学的结论

    那么,CMM/CMMI 与 Agile 方法或体系到底有哪些异同,什么是更为科学和准确的说法?CMMI 与 Agile 到底是完全对立,还是可以彼此借鉴,扬长避短、互补融合?...

    为解答这一连串有趣而有益的问题,我建议您首先认真地研读 BAND 这本名著,了解国际上前沿的研究成果和结论,并独立思考,大胆地进行实践和尝试。期待您的反馈意见。

 

你可能感兴趣的:(CMM/CMMI与敏捷的比较)