平衡敏捷与规范
基本信息
- 作者: (美)Barry Boehm,Richard Turner [作译者介绍]
- 译者: 邓辉 孙鸣
- 丛书名: 软件工程实践丛书
- 出版社:清华大学出版社
- ISBN:7302115044
- 上架时间:2005-9-28
- 出版日期:2005 年9月
- 开本:185×230
- 页码:200
- 版次:1-1
- 所属分类:
计算机 > 软件工程及软件方法学 > 综合
编辑推荐
这本书不一般。它是一本非常注重实效的书,不仅非常易于阅读,而且书中的内容还可以立即投入使用。
对于任何规模的项目,平衡敏捷和规范都是必需的。本书作者美国国家工程院院士Barry Boehm完成了一项值得称赞的工作,他们识别出了用于建立恰当的组织性和灵活性平衡的 5 个关键要素——人、危险程度、规模、文化以及动态性。
内容简介回到顶部↑
如何取得敏捷方法与规范方法的平衡,这是一个困扰着无数软件从业人员的大问题。本书针对这一现状,直接切入有效的核心概念,为定义平衡的软件开发策略提出了建设性方案。书中陈述了敏捷方法和规范方法各自擅长的领域及其各自的劣势,展示了敏捷方法和规范方法实际上是相辅相成的。本书通过介绍两个开发组一天的项目活动以及富有新意的案例分析,演示了如何平衡敏捷方法与规范方法。这对处于困惑中的软件从业人员而言,具有重要的指导意义。
通过本书客观而务实的分析,读者可针对自己的项目,找到最佳的敏捷–规范平衡点。
通过本书客观而务实的分析,读者可针对自己的项目,找到最佳的敏捷–规范平衡点。
作译者回到顶部↑
本书提供作译者介绍
Barry Boehm,美国国家工程院院士,AIAA、IEEE、ACM会员。从1955年开始,他一直致力于为软件开发的敏捷和规范找到平衡点。目前,他担任TRW公司软件工程教授、南加州大学软件工程中心主任。过去,他先后担任过DARPA信息科学与技术中心主管和TRW公司首席科学家。Boehm博士对软件领域做出了杰出贡献。其中包括COCOMO(Constructive Cost Model)模型、软件过程中的螺旋模型(Spiral Model)、适用于软件管理和需求决断的W理论(win-win),以及经典著作《软件工程经济学》。
Richard Turner,乔治·华盛顿.. << 查看详细
Richard Turner,乔治·华盛顿.. << 查看详细
目录回到顶部↑
第1章 规范、敏捷和困惑 1
1.1 困惑之源 4
1.1.1 多重定义 4
1.1.2 区分方法的正确使用和误用 4
1.1.3 从最为突出的实例引出过度一般化 5
1.1.4 普遍适用的承诺 5
1.1.5 初期的成功事例 5
1.1.6 纯粹主义论断 6
1.1.7 澄清困惑 6
1.2 两种方法 6
1.2.1 计划驱动方法 7
1.2.2 敏捷方法 11
1.3 找出中间方法 15
参考文献 17
第2章 方法的对比及各自的擅长领域 19
2.1 应用特征 20
2.1.1 主要目标 20
2.1.2 规模 21
2.1.3 环境 22
2.2 管理特征 23
1.1 困惑之源 4
1.1.1 多重定义 4
1.1.2 区分方法的正确使用和误用 4
1.1.3 从最为突出的实例引出过度一般化 5
1.1.4 普遍适用的承诺 5
1.1.5 初期的成功事例 5
1.1.6 纯粹主义论断 6
1.1.7 澄清困惑 6
1.2 两种方法 6
1.2.1 计划驱动方法 7
1.2.2 敏捷方法 11
1.3 找出中间方法 15
参考文献 17
第2章 方法的对比及各自的擅长领域 19
2.1 应用特征 20
2.1.1 主要目标 20
2.1.2 规模 21
2.1.3 环境 22
2.2 管理特征 23
译者序回到顶部↑
摆脱过程改进“黑暗面”的诱惑
邓 辉
本书已经有了三位软件方法学方面的世界级大师所做的序言,作为译者,实在是没有必要在此班门弄斧。但是作为中国软件从业者中的一员,当我看到国内软件企业在过程改进方面的一些所作所为时,我无法保持沉默。
国内软件企业在过程改进方面采用得最多的方法是CMM(能力成熟度模型),正如Arthur Pyster为本书写的序所说,基于CMM的过程改进方法如果被正确应用,可以在生产力、可预见性、质量,以及成本方面取得巨大的进步,但如果被误用,则会产生出令人窒息的过程。遗憾的是,国内有许多软件企业在推行CMM时,存在着相当程度的误用。造成误用的原因主要有两个。
首先,像CMM、RUP这样的大型方法的提出者,为了做到方法的完备性,所制定的过程框架往往涵盖了各种情形,并尽量做到一般化。要想这些方法发挥效用,必须根据自己项目的实际情况进行裁剪。糟糕的是,缺少经验和自信的开发者、客户和管理者往往把全套的计划、规格说明以及标准看作是一种安全保障,从而僵化地全套照搬。这样,那些面面俱到却无人问津的过程制品,就在这些“官僚化”的实施者的头脑中制造了一种安全假象:我们已经遵循了确保项目可预见、可控制的最佳实践。其后果是可想而知的。
其次,过程改进“黑暗面”的诱惑力是巨大的,过程改进的实施者们很容易陷入“黑暗面”的深渊之中。CMM等级所描绘的美好前景如此诱人,实施者们很容易受其诱惑而陷入只追求表面文章的等级的“黑暗面”之中。他们在应用方法时只是为了满足标准,而不是为了项目更好的运作;他们仅仅考虑认证、评分方面的事情,从而陷入了为评分而评分的境地;他们在面对真正具有挑战性的项目时,畏缩不前。难怪汤姆·迪马可会说,CMM等级是软件企业的耻辱符,等级越高,标志着企业越没有创造力。
同样,敏捷方法也存在被误用的情况。很多软件从业者片面地认为,敏捷就是规范不严格、随意的方法,甚至把敏捷和“code-and-fix”等同起来。这种错误认识源于对敏捷的核心哲学的误解。敏捷方法认为:软件开发的根本问题之一就是所处环境变化多端这一本质。不同类型的系统经受着不同的压力和约束力,这些不同导致我们很难得到一个足以涵盖所有变更的严格的定义。软件开发面向人的本质,以及人的不一致性和多变的本质,使这个问题进一步复杂化。因此,这种试图把软件开发绑定到一个严格过程上的做法是低效的,因为它忽视了执行这个过程的首要部件(人)的本性。
基于这个核心哲学,敏捷方法的重点不在于如何制定出一套可用来测量的、严格、精密的过程,而是把这种严格性放在提高软件从业者职业技能上,这些技能包括:沟通合作、优秀的软件开发实践和方法、价值观念权衡以及期望管理等等。敏捷方法对这方面的要求甚至可以说是非常苛刻的(XP,即极限编程,是其中的典型代表)。敏捷方法在根本上希望团队自行决定应该遵循的过程,敏捷方法更希望团队主动地并且定期地改变其过程。任何为了能检查一致性而定义严格过程的做法,都违背了这个核心哲学。
本书的作者在软件开发的实践和研究方面,功力深厚。在本书中,他们对方法被误用的根源进行了生动、深刻的剖析,并且为了加深读者的理解,还提供了两个来自真实项目的案例。更为重要的是,作者对在方法应用方面最为重要的一个关注点:“风险驱动”进行了详尽的阐述,并提供了一种基于风险的方法和分析技术。这种技术并非“只是另一种方法”,而是描绘了一种方式,当你在自己的实际环境内部平衡规范方法和敏捷方法时,这种方式可以组织你的思想,发挥你的个人洞察力。
正如本书中所阐述的那样,在建立最适合自己项目的过程方法方面,项目直接参与者的作用是最重要的,而那些通用的方法、原则仅仅起到辅助参考的作用。因为只有项目的直接参与者才能准确地觉察到项目的真实状况,进而做出最合适的决策。当然,决策的正确与否直接取决于决策者本身的能力。本书中所给出的基于风险的方法是非常注重实效的,如果过程方法的实施者能够在它的指导下,结合自己项目的实际情况进行思考和判断,完全能够成为胜任的过程改进者。
真心希望本书能够使国内的软件从业者们摆脱过程改进“黑暗面”的诱惑,在过程改进的工作中能够注重实效,逐步建立起最适合自己项目的过程方法,从而真正实现这些过程方法所描绘的美好目标。
译 者
2005年于上海
邓 辉
本书已经有了三位软件方法学方面的世界级大师所做的序言,作为译者,实在是没有必要在此班门弄斧。但是作为中国软件从业者中的一员,当我看到国内软件企业在过程改进方面的一些所作所为时,我无法保持沉默。
国内软件企业在过程改进方面采用得最多的方法是CMM(能力成熟度模型),正如Arthur Pyster为本书写的序所说,基于CMM的过程改进方法如果被正确应用,可以在生产力、可预见性、质量,以及成本方面取得巨大的进步,但如果被误用,则会产生出令人窒息的过程。遗憾的是,国内有许多软件企业在推行CMM时,存在着相当程度的误用。造成误用的原因主要有两个。
首先,像CMM、RUP这样的大型方法的提出者,为了做到方法的完备性,所制定的过程框架往往涵盖了各种情形,并尽量做到一般化。要想这些方法发挥效用,必须根据自己项目的实际情况进行裁剪。糟糕的是,缺少经验和自信的开发者、客户和管理者往往把全套的计划、规格说明以及标准看作是一种安全保障,从而僵化地全套照搬。这样,那些面面俱到却无人问津的过程制品,就在这些“官僚化”的实施者的头脑中制造了一种安全假象:我们已经遵循了确保项目可预见、可控制的最佳实践。其后果是可想而知的。
其次,过程改进“黑暗面”的诱惑力是巨大的,过程改进的实施者们很容易陷入“黑暗面”的深渊之中。CMM等级所描绘的美好前景如此诱人,实施者们很容易受其诱惑而陷入只追求表面文章的等级的“黑暗面”之中。他们在应用方法时只是为了满足标准,而不是为了项目更好的运作;他们仅仅考虑认证、评分方面的事情,从而陷入了为评分而评分的境地;他们在面对真正具有挑战性的项目时,畏缩不前。难怪汤姆·迪马可会说,CMM等级是软件企业的耻辱符,等级越高,标志着企业越没有创造力。
同样,敏捷方法也存在被误用的情况。很多软件从业者片面地认为,敏捷就是规范不严格、随意的方法,甚至把敏捷和“code-and-fix”等同起来。这种错误认识源于对敏捷的核心哲学的误解。敏捷方法认为:软件开发的根本问题之一就是所处环境变化多端这一本质。不同类型的系统经受着不同的压力和约束力,这些不同导致我们很难得到一个足以涵盖所有变更的严格的定义。软件开发面向人的本质,以及人的不一致性和多变的本质,使这个问题进一步复杂化。因此,这种试图把软件开发绑定到一个严格过程上的做法是低效的,因为它忽视了执行这个过程的首要部件(人)的本性。
基于这个核心哲学,敏捷方法的重点不在于如何制定出一套可用来测量的、严格、精密的过程,而是把这种严格性放在提高软件从业者职业技能上,这些技能包括:沟通合作、优秀的软件开发实践和方法、价值观念权衡以及期望管理等等。敏捷方法对这方面的要求甚至可以说是非常苛刻的(XP,即极限编程,是其中的典型代表)。敏捷方法在根本上希望团队自行决定应该遵循的过程,敏捷方法更希望团队主动地并且定期地改变其过程。任何为了能检查一致性而定义严格过程的做法,都违背了这个核心哲学。
本书的作者在软件开发的实践和研究方面,功力深厚。在本书中,他们对方法被误用的根源进行了生动、深刻的剖析,并且为了加深读者的理解,还提供了两个来自真实项目的案例。更为重要的是,作者对在方法应用方面最为重要的一个关注点:“风险驱动”进行了详尽的阐述,并提供了一种基于风险的方法和分析技术。这种技术并非“只是另一种方法”,而是描绘了一种方式,当你在自己的实际环境内部平衡规范方法和敏捷方法时,这种方式可以组织你的思想,发挥你的个人洞察力。
正如本书中所阐述的那样,在建立最适合自己项目的过程方法方面,项目直接参与者的作用是最重要的,而那些通用的方法、原则仅仅起到辅助参考的作用。因为只有项目的直接参与者才能准确地觉察到项目的真实状况,进而做出最合适的决策。当然,决策的正确与否直接取决于决策者本身的能力。本书中所给出的基于风险的方法是非常注重实效的,如果过程方法的实施者能够在它的指导下,结合自己项目的实际情况进行思考和判断,完全能够成为胜任的过程改进者。
真心希望本书能够使国内的软件从业者们摆脱过程改进“黑暗面”的诱惑,在过程改进的工作中能够注重实效,逐步建立起最适合自己项目的过程方法,从而真正实现这些过程方法所描绘的美好目标。
译 者
2005年于上海
前言回到顶部↑
我们为何要写这本书
忠实信徒提出了软件开发的不同方法在最近的几年中,两种表面上有冲突的方法在争夺着软件开发的主导权。敏捷方法的支持者发布了一个宣言,把关注的焦点从传统的计划驱动、基于过程的方法转移到更轻量、适应性更强的范型(paradigm)。传统方法则重申了对强过程规范和严格准则的需要。这两种方法的忠实信徒各自为阵,言辞激烈,有时甚至互相抨击。
本书写给我们当中的其他人这本书是写给我们当中的其他人的——即在方法学之争中保持中立,只想在异常紧张的时间和预算之内完成项目并使项目通过验收的人。我们希望能够消除他们对规范、敏捷以及软件开发过程的职能的困惑。我们对传统的计划驱动方法和新近的敏捷方法进行了客观的比较和对照,并概括了它们各自的擅长领域、强项和弱点。我们还描述了一个基于风险的方法,该方法有助于在一个软件开发项目中平衡敏捷和规范。
我们的目标是针对你的商业环境提供切实的帮助我们希望这是一本实用的书。我们不想让它过于理论化,也不想过于详尽,但希望它能够注重实效。书中的内容取材广泛,包括:我们自己的开发实践;现在以及过去的文献资料;与敏捷方法和计划驱动方法支持者的长期对话;平衡敏捷和规范的培训课程;对工业、政府和学校中软件开发的多年观察和度量。我们所讨论的主题不涉及立场的选择,只是想帮助你获取一些认识和信息,帮助你以最适合自己工作环境的方式集成方法。
谁应该阅读本书
困惑——或者只是好奇的人本书写给处于困惑状态的软件和管理专业人士,他们对敏捷方法跃跃欲试但希望分清良莠。也许,你在一家拥有CMM或者ISO认证的组织工作,想知道敏捷方法是否能帮助自己,以及会有哪些帮助。或者,你组织中的某些部分可能已经采用了敏捷方法,但你对它们的使用情况没有把握。基本上,如果你需要理解最新的软件开发方法是如何有助于满足商务目标的,那么本书就是为你写的。
·软件项目经理和中层管理者应该阅读本书,了解敏捷/计划驱动的论战,并学会如何更恰当地把新方法应用到自己的组织中。
·软件开发者应该阅读本书,更好地理解自已所从事的行业是如何发展的,以及它对自己的职业生涯有何意义。
·计算机科学和软件工程专业的学生应该阅读本书,更好地理解如何在敏捷和规范之间做出平衡,无论是在学校还是在工作中。
·教师和研究人员应该阅读本书,以便能理解学生所提出的一些问题,以及帮助自己做出有见识的决策。
·敏捷方法的支持者和计划驱动方法的支持者均应该阅读本书,使自己能冷静地看待对方的观点。
·CIO和CEO应该阅读本书,以便理解软件领域正在发生的事情及其对自己所在公司的影响。
如何阅读本书
本书有多种阅读方法大多数读者都很忙,但每天又有众多的“必读”内容随时随地从四面八方涌来。有的读者希望快速地对内容进行评估以备日后细读。有些人则希望知道如何去实施我们介绍的思想。基于此,我们尽量使本书易于快速阅读,并提供指向更深入内容的线索。
每段开头提供便于快速阅读的总结为了满足各种各样的阅读需要,我们使用了一种全新的排版格式。在每一段的开头提供段落小结,以便于快速阅读。对于书中的关键概念,还提供了图解。此外,还提供一些补充内容对正文进行详细解释。
在附录中提供了更多的信息为了使本书尽量满足更多读者的需要,我们在正文中仅提供了一些基本的信息,大部分技术内容则收入附录中。由于作者经验背景方面的原因,有一个附录覆盖了与敏捷和规范有关的最新的经验研究。如果可在附录中找到关于当前主题的附加信息,就会出现相应的提示,如“参见附录E”。
很忙?请使用快速总结进行迅速的浏览如果时间不够,可以使用快速总结来浏览本书的总体内容,在自已感兴趣或者特别符合自己需要的地方停下来细读,找到特定的技术信息。如果你发现自己需要非常详细的内容,请参见各章最后列出的参考文献。
第1章和第6章(即开头和结尾两章)是关键章节你还可以通过选择不同的章来调整阅读顺序。第1章和第6章(最后一章)以通俗的方式很好地描述了本书的思想。你可以以任何顺序来阅读本书。各章要点总结如下:
·第1章为后续章节奠定了基础。它介绍了本书的主题,并给出了本书的提要。
·第2章比较了敏捷方法和计划驱动方法,并介绍了对每种方法最为适用的项目类型(方法所擅长的领域)。
忠实信徒提出了软件开发的不同方法在最近的几年中,两种表面上有冲突的方法在争夺着软件开发的主导权。敏捷方法的支持者发布了一个宣言,把关注的焦点从传统的计划驱动、基于过程的方法转移到更轻量、适应性更强的范型(paradigm)。传统方法则重申了对强过程规范和严格准则的需要。这两种方法的忠实信徒各自为阵,言辞激烈,有时甚至互相抨击。
本书写给我们当中的其他人这本书是写给我们当中的其他人的——即在方法学之争中保持中立,只想在异常紧张的时间和预算之内完成项目并使项目通过验收的人。我们希望能够消除他们对规范、敏捷以及软件开发过程的职能的困惑。我们对传统的计划驱动方法和新近的敏捷方法进行了客观的比较和对照,并概括了它们各自的擅长领域、强项和弱点。我们还描述了一个基于风险的方法,该方法有助于在一个软件开发项目中平衡敏捷和规范。
我们的目标是针对你的商业环境提供切实的帮助我们希望这是一本实用的书。我们不想让它过于理论化,也不想过于详尽,但希望它能够注重实效。书中的内容取材广泛,包括:我们自己的开发实践;现在以及过去的文献资料;与敏捷方法和计划驱动方法支持者的长期对话;平衡敏捷和规范的培训课程;对工业、政府和学校中软件开发的多年观察和度量。我们所讨论的主题不涉及立场的选择,只是想帮助你获取一些认识和信息,帮助你以最适合自己工作环境的方式集成方法。
谁应该阅读本书
困惑——或者只是好奇的人本书写给处于困惑状态的软件和管理专业人士,他们对敏捷方法跃跃欲试但希望分清良莠。也许,你在一家拥有CMM或者ISO认证的组织工作,想知道敏捷方法是否能帮助自己,以及会有哪些帮助。或者,你组织中的某些部分可能已经采用了敏捷方法,但你对它们的使用情况没有把握。基本上,如果你需要理解最新的软件开发方法是如何有助于满足商务目标的,那么本书就是为你写的。
·软件项目经理和中层管理者应该阅读本书,了解敏捷/计划驱动的论战,并学会如何更恰当地把新方法应用到自己的组织中。
·软件开发者应该阅读本书,更好地理解自已所从事的行业是如何发展的,以及它对自己的职业生涯有何意义。
·计算机科学和软件工程专业的学生应该阅读本书,更好地理解如何在敏捷和规范之间做出平衡,无论是在学校还是在工作中。
·教师和研究人员应该阅读本书,以便能理解学生所提出的一些问题,以及帮助自己做出有见识的决策。
·敏捷方法的支持者和计划驱动方法的支持者均应该阅读本书,使自己能冷静地看待对方的观点。
·CIO和CEO应该阅读本书,以便理解软件领域正在发生的事情及其对自己所在公司的影响。
如何阅读本书
本书有多种阅读方法大多数读者都很忙,但每天又有众多的“必读”内容随时随地从四面八方涌来。有的读者希望快速地对内容进行评估以备日后细读。有些人则希望知道如何去实施我们介绍的思想。基于此,我们尽量使本书易于快速阅读,并提供指向更深入内容的线索。
每段开头提供便于快速阅读的总结为了满足各种各样的阅读需要,我们使用了一种全新的排版格式。在每一段的开头提供段落小结,以便于快速阅读。对于书中的关键概念,还提供了图解。此外,还提供一些补充内容对正文进行详细解释。
在附录中提供了更多的信息为了使本书尽量满足更多读者的需要,我们在正文中仅提供了一些基本的信息,大部分技术内容则收入附录中。由于作者经验背景方面的原因,有一个附录覆盖了与敏捷和规范有关的最新的经验研究。如果可在附录中找到关于当前主题的附加信息,就会出现相应的提示,如“参见附录E”。
很忙?请使用快速总结进行迅速的浏览如果时间不够,可以使用快速总结来浏览本书的总体内容,在自已感兴趣或者特别符合自己需要的地方停下来细读,找到特定的技术信息。如果你发现自己需要非常详细的内容,请参见各章最后列出的参考文献。
第1章和第6章(即开头和结尾两章)是关键章节你还可以通过选择不同的章来调整阅读顺序。第1章和第6章(最后一章)以通俗的方式很好地描述了本书的思想。你可以以任何顺序来阅读本书。各章要点总结如下:
·第1章为后续章节奠定了基础。它介绍了本书的主题,并给出了本书的提要。
·第2章比较了敏捷方法和计划驱动方法,并介绍了对每种方法最为适用的项目类型(方法所擅长的领域)。
序言回到顶部↑
序 言(一)
Grady Booch
虽然你手中拿着的这本书由两位敏捷人士所著,但该书序言的数量却是一般书籍的3倍。这是不是有点讽刺意味J?
嗯,这本书不一般。它是一本非常注重实效的书,不仅非常易于阅读,而且书中的内容还可以立即投入使用。
就我个人而言,我已经经历了3代方法学之争。Tom DeMarco,Ed Yourdon,Larry Constantine,Harlan Mills,Michael Jackson和其他许多方法学家一起,创造了结构化分析与设计方法的时代。从他们的集体经验当中,可以提取出一个基本的结构化方法。但在这个时代的中期,出现了一个与之不相容的竞争方法。先后出现了一些与之竞争的方法。Jim Rumbaugh,Ivar Jacobson,Peter Coad,Stephen Mellor,Watts Humphrey和我自己以及其他许多方法学家创造了面向对象分析与设计方法时代。同样可以从这些人的经验当中提取出一些基本的最佳实践(Rational统一过程就致力于此),但这个时代依然出现了一些方法,它们都想统治整个世界。目前,我们发现自己置身于“post-dot-bomb”。一种全新的软件系统构建方法已经浮出水面。Kent Beck,Martin Fowler,Robert Martin,Jim Highsmith和其他许多人都投入其中。
我期望这不是我要经历的最后的方法学之战。
实际上,存在这样一个对过程和开发者经验进行实践的生机勃勃的社团,象征着我们这个行业非常健康。正如Bjarne Stroustrup所说(我常把他的这句话挂在嘴边):“我们的文明运转在软件之上。构建具有经济价值的高品质软件在过去、现在甚至将来,都是一件很困难的事情,因此,改进过程实际上就是减少软件开发过程中的阻力。”
在以冷静、周密的方式去审视当前的方法学之争的过程中,Barry和Rich(Richard 的昵称)扮演了非常重要的角色。在本书中,他们从对规范要求较高的方法和对规范要求较低的方法中,提取出一些基本的实践。他们的软件开发生涯绝对能够彰显这个规范频谱中各种方法之间的差异和共性。
第3章“项目开发中的一天”就值这本书的价格,但作者仍然提供了另外两个来自真实项目的补充案例研究。正如他们在后文所阐述的那样,对于调整规范方法和敏捷方法优、缺点而言,选择一种风险驱动的方法是一种非常注重实效的手段。
作为一个公认的书迷和对自己职业的狂热爱好者,我所拥有的介绍软件方法的书超过了任何一个有理智的人。在我的藏书中,本书占有显著位置,因为在弥漫着噪声和硝烟的方法学之争中,它帮助我辨清了是非。
——Grady Booch
IBM Rational Software,首席科学家
序 言(二)
Alistair Cockburn
Barry Boehm和Rich Turner邀请我为他们的书写序,实在是勇气可嘉。他们是冒着风险而来的,因为他们是敏捷先锋,而我却对他们所刻画的敏捷观点持有异议。
实际上,我是同意他们的观点的。他们成功地透过那些花言巧语揭示出敏捷实践的强项和不足,对计划驱动实践的强项和不足进行了比较并指出其差异。他们进一步展示了如何根据实际情况使各种方法相得益彰。这是一个了不起的成就。我要向他们致意,因为他们做到了这一点,并且使结果非常易读。
在他们的整个讨论当中,我发现了一个有趣的单词:规范(discipline)。对于规范这个概念,计划驱动阵营和敏捷阵营有各自不同的定义。在我的Crystal Clear方法中,我尽可能使其具有低的规范等级。但是,极限编程(eXtreme Programming,XP)却要求很高的规范级别,任何尝试过它的人都可以证明这一点。事实上,我把XP和Watts Humphrey的个体软件过程(Personal Software Process,PSP)都归为我所知道的具有最高规范级别的方法之中。因此,在敏捷方法中有高规范和低规范之分,而在高规范方法中也有计划驱动和敏捷之分。
Barry和Rich以他们富有思想性的方式刻画出了这一点,并告诉我们计划驱动方法和敏捷方法所依靠的是单词“规范”的不同含义:
[T] 术语“规范的(disciplined)”,在字典中的定义既有“和既定的过程相符”的意思,又有“自控制”的意思。CMM一方的官僚主义把该词限定为“符合过程”,而敏捷一方的自由精神则把该词限定为“自控制”。
他们提醒我们:
Grady Booch
虽然你手中拿着的这本书由两位敏捷人士所著,但该书序言的数量却是一般书籍的3倍。这是不是有点讽刺意味J?
嗯,这本书不一般。它是一本非常注重实效的书,不仅非常易于阅读,而且书中的内容还可以立即投入使用。
就我个人而言,我已经经历了3代方法学之争。Tom DeMarco,Ed Yourdon,Larry Constantine,Harlan Mills,Michael Jackson和其他许多方法学家一起,创造了结构化分析与设计方法的时代。从他们的集体经验当中,可以提取出一个基本的结构化方法。但在这个时代的中期,出现了一个与之不相容的竞争方法。先后出现了一些与之竞争的方法。Jim Rumbaugh,Ivar Jacobson,Peter Coad,Stephen Mellor,Watts Humphrey和我自己以及其他许多方法学家创造了面向对象分析与设计方法时代。同样可以从这些人的经验当中提取出一些基本的最佳实践(Rational统一过程就致力于此),但这个时代依然出现了一些方法,它们都想统治整个世界。目前,我们发现自己置身于“post-dot-bomb”。一种全新的软件系统构建方法已经浮出水面。Kent Beck,Martin Fowler,Robert Martin,Jim Highsmith和其他许多人都投入其中。
我期望这不是我要经历的最后的方法学之战。
实际上,存在这样一个对过程和开发者经验进行实践的生机勃勃的社团,象征着我们这个行业非常健康。正如Bjarne Stroustrup所说(我常把他的这句话挂在嘴边):“我们的文明运转在软件之上。构建具有经济价值的高品质软件在过去、现在甚至将来,都是一件很困难的事情,因此,改进过程实际上就是减少软件开发过程中的阻力。”
在以冷静、周密的方式去审视当前的方法学之争的过程中,Barry和Rich(Richard 的昵称)扮演了非常重要的角色。在本书中,他们从对规范要求较高的方法和对规范要求较低的方法中,提取出一些基本的实践。他们的软件开发生涯绝对能够彰显这个规范频谱中各种方法之间的差异和共性。
第3章“项目开发中的一天”就值这本书的价格,但作者仍然提供了另外两个来自真实项目的补充案例研究。正如他们在后文所阐述的那样,对于调整规范方法和敏捷方法优、缺点而言,选择一种风险驱动的方法是一种非常注重实效的手段。
作为一个公认的书迷和对自己职业的狂热爱好者,我所拥有的介绍软件方法的书超过了任何一个有理智的人。在我的藏书中,本书占有显著位置,因为在弥漫着噪声和硝烟的方法学之争中,它帮助我辨清了是非。
——Grady Booch
IBM Rational Software,首席科学家
序 言(二)
Alistair Cockburn
Barry Boehm和Rich Turner邀请我为他们的书写序,实在是勇气可嘉。他们是冒着风险而来的,因为他们是敏捷先锋,而我却对他们所刻画的敏捷观点持有异议。
实际上,我是同意他们的观点的。他们成功地透过那些花言巧语揭示出敏捷实践的强项和不足,对计划驱动实践的强项和不足进行了比较并指出其差异。他们进一步展示了如何根据实际情况使各种方法相得益彰。这是一个了不起的成就。我要向他们致意,因为他们做到了这一点,并且使结果非常易读。
在他们的整个讨论当中,我发现了一个有趣的单词:规范(discipline)。对于规范这个概念,计划驱动阵营和敏捷阵营有各自不同的定义。在我的Crystal Clear方法中,我尽可能使其具有低的规范等级。但是,极限编程(eXtreme Programming,XP)却要求很高的规范级别,任何尝试过它的人都可以证明这一点。事实上,我把XP和Watts Humphrey的个体软件过程(Personal Software Process,PSP)都归为我所知道的具有最高规范级别的方法之中。因此,在敏捷方法中有高规范和低规范之分,而在高规范方法中也有计划驱动和敏捷之分。
Barry和Rich以他们富有思想性的方式刻画出了这一点,并告诉我们计划驱动方法和敏捷方法所依靠的是单词“规范”的不同含义:
[T] 术语“规范的(disciplined)”,在字典中的定义既有“和既定的过程相符”的意思,又有“自控制”的意思。CMM一方的官僚主义把该词限定为“符合过程”,而敏捷一方的自由精神则把该词限定为“自控制”。
他们提醒我们:
评论交流
共有6人开贴评论 7人参与评论 5人参与打分 查看
评价等级:







发表于:2005-10-12 12:41:00
由于沟通上的问题,导致了一些纰漏,现将几个明显的不妥之处罗列如下,还请读者朋友见谅。
第2页,倒数第2行“尝试实现可重用或者...” 更改为 “尝试实现可重复或者...”,这里的repeatable是CMM等级用语。
第3页,倒数第3行“更为复杂的是,这两种方法一直在演化并推动着目标。”,更改为 “更为复杂的是,这两种方法目前正处在演化、变动之中。” 原文中的“…both of the approaches are evolving, moving target”,是应该是形容方法目前处在演化、变动中,不是个固定的靶子,所以比较难以准确弄清楚方法到底是什么?
第9页,第16行 “(构建正确的产品)” 更改为 “(正确地构建产品)”,这里是指构建出来的产品符合规格说明。
第9页,第18行 “(做正确的产品)” 更改为 “(构建正确的产品)”,这里指构建出来的产品是用户真正想要的。
第61页,第3行 “...我们将坚持把整个应用中较传统的图像或者图片所示的开发和持续更新作为每次迭代中任务的一部分” ,这句话有些晦涩,更改为 “...我们将坚持把整个应用更为传统意义上的景象或者图示(也就是传统意义上的架构)的开发和持续更新,作为每次迭代任务的一部分”,这里主要是想表明:XP中缺少预先架构的做法,在项目变大后会出现问题,所以要在每次迭代中都要考虑传统意义上的关于架构的图示或者景象的开发和持续更新。
第148页,第4段,第一行“这样做不仅能够增加其真实性外,还有助于…”,更改为 “这样做不仅能够增加其真实性,还有助于…”
第2页,倒数第2行“尝试实现可重用或者...” 更改为 “尝试实现可重复或者...”,这里的repeatable是CMM等级用语。
第3页,倒数第3行“更为复杂的是,这两种方法一直在演化并推动着目标。”,更改为 “更为复杂的是,这两种方法目前正处在演化、变动之中。” 原文中的“…both of the approaches are evolving, moving target”,是应该是形容方法目前处在演化、变动中,不是个固定的靶子,所以比较难以准确弄清楚方法到底是什么?
第9页,第16行 “(构建正确的产品)” 更改为 “(正确地构建产品)”,这里是指构建出来的产品符合规格说明。
第9页,第18行 “(做正确的产品)” 更改为 “(构建正确的产品)”,这里指构建出来的产品是用户真正想要的。
第61页,第3行 “...我们将坚持把整个应用中较传统的图像或者图片所示的开发和持续更新作为每次迭代中任务的一部分” ,这句话有些晦涩,更改为 “...我们将坚持把整个应用更为传统意义上的景象或者图示(也就是传统意义上的架构)的开发和持续更新,作为每次迭代任务的一部分”,这里主要是想表明:XP中缺少预先架构的做法,在项目变大后会出现问题,所以要在每次迭代中都要考虑传统意义上的关于架构的图示或者景象的开发和持续更新。
第148页,第4段,第一行“这样做不仅能够增加其真实性外,还有助于…”,更改为 “这样做不仅能够增加其真实性,还有助于…”
| 我要写评论 |
| 查看所有评论交流(共6条) |








点击看大图




加载中...

