结合瀑布模式和Scrum模式的敏捷开发最佳实践

日期: 2010-11-24 作者:Christina Torode翻译:木易 来源:TechTarget中国 英文

敏捷开发颠覆了传统的瀑布式(waterfall)开发方式,后者通常是一种串行且缺乏弹性的流程。   但是目前越来越多的项目经理发现将瀑布模式和Scrum模式(一种具体的敏捷模式)结合起来更加合适。   Joseph Flahiff是一家大型健康保险商的项目经理,由于HIPAA(美国联邦政府医疗保险财政管理委员会)5010法案的出台,Flahiff正在负责一个价值约2千万美元的相关项目,领导大概100人的团队推进电子数据交互(EDI)项目,整个团队由Scrum组、Web平台组和硬件平台开发组构成。   由于5010法案包含了各种联邦法定的、固定的要求,使得整个项目具有精确明晰的目标,从这一点来看……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

敏捷开发颠覆了传统的瀑布式(waterfall)开发方式,后者通常是一种串行且缺乏弹性的流程。

  但是目前越来越多的项目经理发现将瀑布模式和Scrum模式(一种具体的敏捷模式)结合起来更加合适。

  Joseph Flahiff是一家大型健康保险商的项目经理,由于HIPAA(美国联邦政府医疗保险财政管理委员会)5010法案的出台,Flahiff正在负责一个价值约2千万美元的相关项目,领导大概100人的团队推进电子数据交互(EDI)项目,整个团队由Scrum组、Web平台组和硬件平台开发组构成。

  由于5010法案包含了各种联邦法定的、固定的要求,使得整个项目具有精确明晰的目标,从这一点来看很适合用于事先设计的瀑布模式。但是,EDI项目中大量工作还是依照敏捷模式来进行的。

  Flahiff表示:“敏捷模式带来的好处是通过迭加式的功能实现,我们可以在局部先取得成功,然后再一步步地扩充。”他用金字塔的建设来描述了敏捷模式的特点:因为法老的过世是无法预测的,所以就先建造金字塔的塔尖,而后才是在塔尖之下一层层地修建。

  Flahiff认为对于那些在平台和服务端工作的人来说,运用敏捷方法就象试图把一个方木桩放到一个圆洞里:“当然,如果努力的话也能完成工作,但是用传统的瀑布式方法对于部署20台服务器来说更合适。”

  购买并使用服务器的工作因为其过程的可预见性而适用于瀑布模式:订购、装配、运输、预留数据中心空间、安装操作系统并测试。

  边开发边测试

  相较于瀑布方法,Scrum模式的一个好处是随时解决问题的弹性。瀑布模式依循固定的流程,通常在最后才进行测试,是一种高举高打的软件开发方式。而敏捷开发则允许在三周的开发阶段中随时修改bug,使得IT团队不会在最后面对成堆的待修改代码或者系统致命缺陷。

  “在瀑布模式下,当你开始测试时,对于错误的数量和严重程度将是一无所知的。”Flahiff说。

  Scrum方法同样能使Flahiff更好地对工作进行预测,通过每个阶段的推进,能够判定目标和进度是否达成。“你能及时地将相关事宜告知执行委员会,而不是堆积到项目的最后阶段。”他表示。

  由此,分析出项目中哪些工作适用于敏捷模式(比如Scrum方法)或者串行模式(比如瀑布方法)对于最后的成功具有决定意义。

  有一种情况通常会导致项目的失控:在规划阶段使用瀑布方法进行预先设计(定义项目范围、目标、要求和实施进度),而在开发阶段却转变为敏捷模式。失控的原因在于瀑布模式无法应对变化或者失败(而这正是Scrum方法的长处)。

  Ross Pettit是位于芝加哥的ThoughtWorks公司的客户代理人,他表示:“瀑布模式假设了在项目周期中所有方面都不会发生变化。可是如果一个预定的要求不再需要了该怎么办呢?技术在性能或可扩展性方面不能达到要求呢?团队中关键人员流失了又该如何应对?”

  瀑布模式运用在一个串行的子阶段时会导致矛盾发生。“在敏捷模式下你可以在每个阶段修改要求和相应的优先级,如果用瀑布模式则使一切都是事先固定好,也就无法在工作过程中逐渐改进。”Pettit表示。

  Scrum方法不适用的情况

  Alex Keenan是一家大型零售连锁商的遗留系统分析师,无论瀑布模式还是Scrum模式对他来说都有各自的问题。Keenan目前正在为一个有30年历史的老系统开发新Web界面和商业智能应用,其中构建SAP/ BusinessObjects universe的团队运用的是瀑布方法,而为后端报告系统开发Web界面的2人团队则采用Scrum方法。

  Keenan和团队中其他人员一样负责整体中的一小块,但是最终所有模块都必须整合在一起。

  “敏捷方法下的项目就像把工作分块,然后各块独立地分阶段进行,从不顾及系统整合和模块之间的相互依赖。”Keenan说:“Scrum方法的执行效果依赖于事先规划好的分级和整合。”

  根据敏捷宣言(Agile Manifesto),敏捷方法的核心优势是有效协同团队工作并递进式地开发软件。但是,这样的论断过于理想化了。

  通常团队成员都有其他的全职工作,比如Keenan自己就是这样。“我曾经见过同时有7个Scrum团队,这种情况下如果事先没有进行相关规则和架构的梳理,而项目经理也没进行相应的工作,那么一切都将会乱成一团。”Keenan说。

  Keenan同样身处在一个敏捷项目中,项目经理要求他每天提交所有的问题,或者在周或双周例会上提出(从时间长度上看更象瀑布方法)。“瀑布方法无法象Scrum方法那样使你更快地提升自己。”

  对多个Scrum团队的工作进行有效管理也是Flahiff面对的问题。“我们这有一个组在某一个部件上进行工作,而其他组在其他可能不相关的模块上工作,而这恰恰就是问题所在因为他们都需要交付同样的功能。”Flahiff说到。

  运用瀑布模式等进行的事先设计思路对于决定每个团队成员的工作目标是至关重要的 – 而相对地,敏捷模式则可用于实现目标的具体工作过程中。

  “良好的项目视角和边界定义有助于在每个敏捷模式工作循环中进行迭代开发,这就是说各模块的组合工作是贯穿整个工作流程的,而不是在最后才进行合并。”Flahiff说到。

作者

Christina Torode
Christina Torode

Senior News Writer Editorial Director

相关推荐