与推和拉开发模型有什么区别?


14

我正在阅读《极限编程说明》第二版,在第11章“约束理论”中,作者讨论了过时和过时的“推”开发模型以及XP方式(“拉”开发模型)。它看起来像一个非常重要的概念,但是只用了一个很小的段落和两个图像,它们只是“瀑布”和迭代过程的说明,除了图像标题外,这些模型没有其他具体说明。我进行了搜索,在本书的其余部分中对此没有任何进一步的说明。我也无法在Internet上找到任何进一步的解释或讨论。

如果关于它们的唯一区别是一个是“瀑布”而另一个是迭代的,那么它们为什么推,为什么拉?

有人知道这两者之间的真正区别是什么,并举一些很好的例子吗?



1
连续与增量是另一个可能混淆问题的基本概念。例如,XP是增量拉式系统,而看板则依赖于连续拉式(即没有时间限制的冲刺)。
Michael

Answers:


16

推拉系统之间的区别在于,如何将工作单元分配给将要执行该工作单元的人员。推拉的概念并不是软件开发所独有的- 该思想起源于物流和供应链管理

在推送系统中,将创建某种任务,然后将其分配给开发人员。从需求的实现(或实现需求所需的组件)到要编写的文档的错误修复,任务可以是任何东西。通常是某种类型的经理或团队负责人的某人将需要完成的工作单元,然后分配给团队成员以完成。简而言之,将工作推给将要从事的人。

在拉式系统中,必须完成的任务存储在队列中,通常是各种优先级队列。一个示例可能是Scrum的产品和sprint积压,其中包含要完成的用户案例。当前不进行任何工作的开发人员将进入队列,并摘下他们能够做的最优先的事情。从事这项工作的人将工作从清单中剔除并去做。

推和拉的概念与迭代/增量开发与顺序开发无关。使用迭代/增量/敏捷技术的团队可以使用推式系统,而使用顺序开发的团队可以使用拉式系统。但是,通常情况下,敏捷方法(XP,Scrum)有利于自组织团队,因此有利于拉动系统。

有关更多信息,您可能对此博客文章Push vs. Pull in Scrum中的内容感兴趣。看板也许也很有趣-看板是一种来自制造的方法,但是可以应用于软件开发,该软件强调即时开发并减少工人的负担。看板还与精益(Lean)有关,并且常与精益(Lean)一起使用,精益(Lean)是另一种制造概念,可应用于软件开发


现在我了解了,我发现书中并没有真正解释它,只是使用过。我喜欢我的书简短,但是那段不仅没有用,而且具有误导性。
michelpm 2012年

@michelpm我没有这本书,所以我无法评论他们在说什么的有效性,但是我从未听说过以我所描述的任何其他方式使用推拉。也许如果您可以编辑问题以包含描述推拉的一两段,那么我可以进一步完善此答案。
Thomas Owens

这些图像专门将瀑布与推相关联,我现在所了解的是,这不是规则,并且实际上并不能帮助理解模型。那不是你说的吗
michelpm 2012年

1
@michelpm没错,这是正确的。通常,顺序模型是推式方法,而敏捷方法则倾向于拉式方法,但根本不必那样做。
Thomas Owens
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.