前 言 选择本书的理由 本书向您解释了为何结合使用敏捷方法与CMMI1过程改进框架[1]是迅速实现业务目标2的最佳途径,并为完成此目标提供切实可行且经过证实的方法。但是,这本书的最大价值可能是如何才能真正实现绩效提高方面的真理,即集中精力应对“重复出现的特定弱点”。而每个组织的弱点往往各不相同,且与企业文化密切相关。本书提供以下内容: ●传统的 CMMI 实践实施方法的备选方法,经过证实可提高敏捷性。 ●经过验证的标准,可帮助您及时有效地做出决策。 ●经过验证的技术,用于将敏捷方法扩展到系统工程管理和项目管理领域。 ●全面的深刻见解、经验和注意事项。 ●特定的“实施方法”示例,用于迅速开展敏捷方法与CMMI的成功结合。 ●实施敏捷方法时易犯的错误。 首先您必须了解下面介绍的问题,才能明白为何较多的公司不愿欣然接受这个良机。 问题 坚持认为能力成熟度模型集成(CMMI)与敏捷方法互相冲突是错误的观点。软件工程学会(SEI)网站[2]在2008年11月发布的技术说明3号召敏捷方法和CMMI两大阵营应相互配合。一方面他鼓励CMMI领域的专家通过提供来自不同组织类型的示例加入敏捷方法社区;另一方面他鼓励敏捷方法领域的专家深入了解CMMI以及如何使 CMMI实践与敏捷方法相辅相成。技术说明的作者普遍赞同敏捷方法与CMMI“不仅可以共存,而且还能成功结合,为敏捷组织和传统的软件开发组织带来巨大的利益”。 继续引发冲突的原因 结合使用CMMI和敏捷方法时之所以引发多个冲突,其中一个原因要追溯到在开发CMMI前身CMM模型的过程中发现的CMMI起源。以下内容摘自参考的技术说明: If we look at the genesis of the CMM, it predates the internet and nearlyeverything associated with internet technology. For that matter, CMM predatesmany software development, deployment, and infrastructuretechnologies, languages, and methods… …In today’s frequent discussions of increasing globalization and the important role played by trust in making effective collaboration happen across stakeholders, one might describe such a development context as exhibiting low trust. Users were typically not direct contributors to the evolution of the end product prior to field-testing. They instead had to depend on the contracting relationship, requirements, and standards to deliver the product they needed. These comments may be an over-generalization, but they are intended to summarize the DoD software acquisition environment that existed at the time. Further, these comments explain why the practices in the CMMI sometimes exhibit some of these same high ceremony and low trust characteristics found in the high-risk, government-contractor environment in which software failure could equal lives lost. 引起冲突的另一原因正是对“敏捷(Agile)”含义的不同看法。有些观点认为“敏捷”仅意味着能快速做出决策或者当把事情记录下来时就能明白。但这类对敏捷普遍性的错误观点导致许多组织误入歧途。 创作本书的原因 创作本书的出发点是帮助消除前面提到的错误观点。本书解释了发生冲突的核心原因以及为此采取的措施。通过案例研究总结出如下的基本结论: CMMI与敏捷方法之间之所以引发冲突,大部分是源自实施时对何为“良好 实践”的历史观点,或者对何为“敏捷实践”以及应如何实施这些实践的误解。 希望包括顶级评估师在内的CMMI领域的专家能关注本书的内容,如果可能的话,希望他们对无意间接受的与何为“符合CMMI要求的良好实践”有关的信息能重新进行思考。此外,我还期望当前误用敏捷理念的组织立即采取行动,了解他们的实践存在哪些不足,并根据当前的经营状况探索CMMI帮助他们确定最佳敏捷性级别的方法。 在整本书中,我将借助众多的示例与大家分享CMMI如何帮助敏捷方法,敏捷方法如何帮助CMMI。 CMMI如何为敏捷方法提供帮助 本书的目标之一就是展示“看似敏捷(Agile-like)”4的成长型组织中普遍呈现的敏捷方法误用特点,通过提供关键性的实践,“提醒”这些组织避免随着自身的发展壮大和项目压力的增加而经常失去透明度,与大家分享CMMI以何种方式为此类组织提供帮助。另外针对按照预期应用基本的敏捷实践并且发展十分成功的组织,本书中也将介绍CMMI如何提供帮助。 敏捷方法如何为CMMI提供帮助 在本书中我针对传统的CMMI实践实施“方法”提供了众多的选项。其中一些选项并不广为人知,同时在本人的一个案例研究中,就CMMI的用法我提出一些“打破常规”的想法,帮助组织认识到除了一致性以外,更应关注于有效并且连续超越竞争对手所需的绩效水平。 对本书的误解 尽管您将在本书中阅读到从应用Scrum、Extreme Programming(极限编程)、Crystal Methodologies(水晶开发方法)软件方法中积累的经验,并可以了解许多与这些方法同步发展、并经过验证的系统工程管理和项目管理方法,但它不是一本介绍CMMI基础知识的书籍,也不是一本有关这些敏捷方法的着作。 本书读者对象 本书的某些章节假定读者熟悉基于CMMI的传统开发和管理方法或者敏捷开发方法,并热衷于学习如何高效地结合使用这两种方法帮助组织快速实现其业务目标。 本书适用于当前采用基于CMMI的传统过程、敏捷方法或混合使用这两种方法的大小组织中各个阶层的管理人员、系统工程师、软件工程师和过程专家。同时,本书还同样适用于CMMI和敏捷领域的专家、缺乏经验的人员以及那些为组织寻求最有效的实施方法而刚开始制定新过程开发方案的人员。 本书组织结构 本书介绍了6个主要的案例研究,每个案例研究都包含相关的经验、深刻见解、误解和注意事项。经验涵盖关键性的基础信息;深刻见解包含可能需要读者深刻反省的重要内容;误解包含对CMMI模型或敏捷方法的一些看法,大多数人都知道这些看法是错误的,但组织通常将其视为真理;注意事项提醒读者注意通常易犯的错误。 第2章~第10章将为您提供16个深刻见解、15个误解、16条注意事项以及62条经验,每章都按顺序对经验进行编号。本书由五大部分组成:第I部分包含简介以及CMMI和敏捷入门知识;第II部分重点介绍帮助CMMI过程成熟组织提高其敏捷性的方法;第III部分论述一个成功的敏捷组织如何在不牺牲帮助其走向成功的敏捷性的前提下提高自身的CMMI过程成熟度;第IV部分提供多个示例说明对于努力具备敏捷性、但忽略真正敏捷性的关键因素的组织,CMMI 如何才能提供帮助。 第V部分集中说明“重复出现的特定弱点”在真正实现绩效改进过程中发挥的作用。第9章介绍通过结合使用敏捷方法和关键的CMMI实践,帮助解决与工作无关的问题,旨在帮助您“打破常规”来思考问题。借助这个问题,我得出几个非传统的结论,而这些结论都以案例研究数据为基础。该案例研究让我们超越基础原则,探索如何才能以最佳方式实现“一致的高绩效”。该案例让我们更容易形成自己对过程改进的认识,并深入了解优秀的组织是如何从竞争中脱颖而出的。在第10章中,我们回顾、总结从这些案例研究中学习到的信息,得出对何为真正并且一致绩效的真知灼见。 不同的读者从本书中获取信息的方式也不同 不同的对象可以通过不同的方式阅读本书。第一,对于只关注重点部分的执行人员和高管而言,建议阅读本书五大部分开头的前言内容,然后浏览本书,重点放在每章开头的假设场景、假设场景后面的“本章的学习内容”段落、所有章节中都强调的深刻见解、经验、注意事项、反思和后续内容简介部分,以及每章结尾处标题为“CMMI 如何为敏捷方法提供帮助”和“敏捷方法如何为 CMMI 提供帮助”的总结表格。然后,再返回阅读更多与最为重要的主题相关的特定案例研究信息。此外可以使用第I部分中的内容分布图,这有助于找到相应的重要信息。 第二,对于希望深入了解专业内容的技术负责人和开发人员,可以阅读所有的案例研究,了解所采取方法的基本原理以及在不同情况下应用 CMMI 模型时所经历的思考过程。这一深度的详细信息对理解为何每个特定组织选择这些选项十分必要,而且也有助于您在特定情况下做出正确决策。 第三,对于过程专家和寻求更为详细的“入门指导”信息的人员,首先应花费时间消化案例研究信息,了解已采取的措施和原因,这有助于您领悟有关“实施方法”的信息。为帮助理解“实施方法”信息,附录中将提供具体的示例。这些给“实施方法”信息作注解的示例来源于案例研究章节内的脚注,有助于您的过程改进工作步入正确的轨道,进而成功实现敏捷方法与CMMI的集成。 第四,对于初学者(例如刚结束大学生活或学生身份的软件工程师)或获取基础知识的人员,鼓励他们首先阅读第1章。然后依次阅读每章结尾的总结表格、第4章、第5章、第8章和第V部分。第4章和第5章为基础知识奠定良好的基础,第8章论证传统组织在初期尝试实施敏捷方法以及实际可行且已获验证的解决方案时,通常都会遇到的一些挑战。