InfoQ

新闻

迭代类型

作者 Amr Elssamadisy译者 Jason Lai 发布于 2007年8月23日 下午8时30分

社区
Agile
主题
敏捷技术,
方法论,
企业级敏捷
标签
评论,
伸缩性敏捷,
Scrum

什么是敏捷世界中的迭代?它和我们软件社区中从前一直在用的迭代方式有什么区别?ScrumDevelopment用户组最近对Jeff Sutherland所定义的A、B、C三种Sprint(Sprint就是Scrum词汇中的迭代)进行了讨论,他们的想法也是整个敏捷社区应当关注的。

敏捷社区中的大多数人应该会同意下面这个对迭代的定义:

迭代是一个恒定的时间范围,开发团队在这个范围当中完整地构建系统的某个部分,用“完成(Done)状态”来定义其完整性。这样做允许团队通过从需求到尽可能接近部署中采纳概念的过程中学习领悟,并且使项目的进展真正达到透明化。

此外,迭代是连续进行的,一个迭代的结束就会紧接着下一个迭代的开始。迭代的这个定义和早先(前敏捷时代)若干种定义的主要区别就是“完成状态”——前敏捷时代的迭代会在多个时间周期内完成同一个功能的不同部分,而并不需要达到完成状态。

因此,基于这样一个根本性的理解,Jeff Sutherland在《Scrum之未来:在复杂项目中并行安排Sprint(Future of Scrum: Parallel Pipelining of Sprints in Complex Projects)》一文中给出了三种迭代的定义,我们在下面用图形描述这三种迭代:

在这里它们之间最主要的区别就是重叠。A在迭代/Sprint之间留有“喘息期”,给了项目团队一个确认上一个迭代/Sprint的完成状态的机会,并且留出时间间隔,用来沟通需求,并且为下一个Sprint确认需求。

B则和上面描述的迭代定义很像。Sprint之间存在着一小部分重叠工作,因为项目负责人/客户要为下一个Sprint/迭代准备需求,他们在下一个Sprint/迭代的准备会议中给这些需求定案。

C被用于计划管理,以便使多个相关产品的Scrum并发运行。这个图看起来更像在展示一个使用“多个Scrum的Scrum(Scrum of Scrums)”的组织中的重叠。如果你认为这看起来有点令人摸不着头脑或者表义不清,那么你不是唯一一个这么想的人;在Jeff Sutherland拜访过Serge Beaumont的公司之后,后者就尝试过澄清它们的区别。

那么,对于Scrum社区,以及更大范围的敏捷社区来说,这个概念为什么很重要呢?有些人,比如说Ken Schwaber,认为这样做会让我们注意力的焦点不再专注于真正重要的东西之上:

我一直在留意关于N、A、B、C类迭代类型和进阶Scrum的讨论帖子。尽管这些可能会代表组织在经历过Scrum的观察和适应所采用的工程、人事和产品的管理实践,但它们都不是Scrum。我认为我们把Scrum所带来结果和Scrum本身错误的混淆在一起了。这些假定的扩展最具破坏性的,就是它们会将人们的注意力从Scrum的真正实践中转移开来……

其他人则会认为反思和理解敏捷开发中的一项基础实践是非常重要的。您又是怎么认为的呢?

查看英文原文:Iteration Types

相关赞助商

InfoQ中文站敏捷社区,关注敏捷软件开发和项目管理,通过新闻、深度文章、视频访谈和演讲以及迷你书等为中国技术社区提供一流资讯。

没有回复

回复

独家内容

OpenSocial规范、实现现状与展望

OpenSocial为构建跨多个网站的社交应用程序提供了一组通用 API。开发人员可以使用标准 JavaScript 和 HTML 创建应用程序,用以访问社交网络里的朋友并更新对应的Feeds。本文是对本次QClub活动内容的一个简短总结,希望对没有到现场参会的读者了解OpenSocial有所帮助,也希望能引起大家更多的讨论。

运用Ruby纤程进行异步I/O:NeverBlock和Revactor

Ruby 1.9的纤程(Fibers)和非阻塞I/O越来越收到关注了。我们对来自NeverBlock项目的Mohammad A. Ali和来自Revactor项目的Tone Arcieri进行了访谈。

与杨巍一起探讨OpenSocial

InfoQ中文站有幸与Google中国的产品经理杨巍先生在一起探讨了OpenSocial的相关话题,包括OpenSocial的初衷、构成要素、实现方式、以及要实现它的技术储备等等。

书评:敏捷模式──指向成功的路标

Ryan Cooper对Amr Elssamadisy的新书发表了评价,并认为书中提供了一种为实施敏捷量身定做的框架。本书并没有给出一种人人可用的敏捷方法,而是为读者提供一些模式和工具,用以找出哪些敏捷实践可以最有效地达到该组织机构的特定目标。

构建的可伸缩性和达到的性能:一个虚拟座谈会

这个由业界主要专家们参加的座谈会探究了在使应用程序具备尽可能好的伸缩性及性能的过程中所面临的挑战和思考过程。

OpenSocial的分析与实现

本视频主要对OpenSocial进行了分析,并对实现的方式进行了介绍。其中包括:OpenSocial的开发经验、Container Provider的技术准备、平台的构成要素、具体的规范、以及对未来的展望。

缓存系统MemCached的Java客户端优化历程

Memcached在大型网站被应用得越来越广泛,但是Java客户端并不多,本文作者基于现有的开源客户端进行了封装优化,并翔实记录了这一过程。

超越SOA:动态业务应用的新企业应用框架(2)

在他们文章的第二部分,作者探讨了动态业务应用的架构并介绍了资源容器的概念。他们示范了如何在JEE之上构建这个架构,以及它如何影响实现生产力。