当前位置: 首页 > news >正文

敏捷方法之极限编程(XP)和 Scrum区别

敏捷(Agile)作为一种开发流程, 目前为各大公司所采用, 敏捷流程的具体实践有XP 和Scrum, 似乎很少有文章介绍这两者的区别,

发现一篇外文, 见解非常深刻, 特将其翻译一把.

原文(DIFFERENCES BETWEEN SCRUM AND EXTREME PROGRAMMING )在此:

http://blog.mountaingoatsoftware.com/differences-between-scrum-and-extreme-programming

作者总结的大致区别如下:

区别之一:  迭代长度的不同

XP的一个Sprint的迭代长度大致为1~2周, 而Scrum的迭代长度一般为 2~ 4周.

区别之二: 在迭代中, 是否允许修改需求

XP在一个迭代中,如果一个User Story(用户素材, 也就是一个需求)还没有实现, 则可以考虑用另外的需求将其替换, 替换的原则是需求实现的时间量是相等的。 而Scrum是不允许这样做的,一旦迭代开工会完毕, 任何需求都不允许添加进来,并有Scrum Master严格把关,不允许开发团队收到干扰

区别之三: 在迭代中,User Story是否严格按照优先级别来实现

XP是务必要遵守优先级别的。 但Scrum在这点做得很灵活, 可以不按照优先级别来做,Scrum这样处理的理由是: 如果优先问题的解决者,由于其它事情耽搁,不能认领任务,那么整个进度就耽误了。 另外一个原因是,如果按优先级排序的User Story #6和#10,虽然#6优先级高,但是如果#6的实现要依赖于#10,则不得不优先做#10.

区别之四:软件的实施过程中,是否采用严格的工程方法,保证进度或者质量

Scrum没有对软件的整个实施过程开出养个工程实践的处方。要求开发者自觉保证,但XP对整个流程方法定义非常严格,规定需要采用TDD, 自动测试, 结对编程,简单设计,重构等约束团队的行为。因此,原作者认为, 这点上,XP的做法值得认同的,但是却把敏捷带入了一个让人困惑的矛盾, 因为xp的理念,结合敏捷模式,表达给团队的信息是“你是一个完全自我管理的组织, 但你必须要实现TDD, 结对编程, ...等等”

不难发现,这四个区别显见的是: Scrum非常突出Self-Orgnization, XP注重强有力的工程实践约束

作者建议, 在管理模式上启用Scrum, 而在实践中,创造一个适合自己项目组的XP(“start with Scrum and then invent your own version of XP.”)

非常不错, 文武之道,有张有弛。

该博客之后有很多人提出了异议, 稍后将其推出,  看看其它敏捷高手是如何看待这个问题的, 也防止误导读者:

待续。。。。

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ostrichmyself/archive/2010/03/12/5375223.aspx

相关文章:

  • squid vary机制实现详解(附流程图)
  • 构建办公环境网络
  • ttylinux 设置
  • extmail显示天气预报
  • SQLite基本使用
  • RHEL 6 简易搭建samba服务 RHCE
  • android开发(8) 使用ViewFlipper来用手势切换画面
  • linux LAMP 下我们首选DDOS default 来防御DDOS!
  • Gartner:XenServer你是领导者!
  • C++用数组和链表分别实现Queue
  • Symfony2博客应用程序教程:第四部分(续)-测试安全页
  • 用vs2008打framework2.0的包
  • 网页的学习语言将仿佛使你生活更动人
  • 四级词汇(俞敏洪)-词根与词缀(二)
  • zBrow发布倒计时:对不起,让大家久等了
  • 《用数据讲故事》作者Cole N. Knaflic:消除一切无效的图表
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • 03Go 类型总结
  • Apache Pulsar 2.1 重磅发布
  • Javascript编码规范
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • magento2项目上线注意事项
  • Redis 懒删除(lazy free)简史
  • vue学习系列(二)vue-cli
  • 飞驰在Mesos的涡轮引擎上
  • 给第三方使用接口的 URL 签名实现
  • 猴子数据域名防封接口降低小说被封的风险
  • 欢迎参加第二届中国游戏开发者大会
  • 解决jsp引用其他项目时出现的 cannot be resolved to a type错误
  • 学习笔记DL002:AI、机器学习、表示学习、深度学习,第一次大衰退
  • Java数据解析之JSON
  • Play Store发现SimBad恶意软件,1.5亿Android用户成受害者 ...
  • 如何在招聘中考核.NET架构师
  • # 数据结构
  • #{}和${}的区别是什么 -- java面试
  • $NOIp2018$劝退记
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (附源码)spring boot公选课在线选课系统 毕业设计 142011
  • (附源码)ssm高校实验室 毕业设计 800008
  • (附源码)计算机毕业设计ssm-Java网名推荐系统
  • (学习日记)2024.02.29:UCOSIII第二节
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)
  • (转)ABI是什么
  • (转)重识new
  • .babyk勒索病毒解析:恶意更新如何威胁您的数据安全
  • .NET 4.0中使用内存映射文件实现进程通讯
  • .net core 6 redis操作类
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .NET 编写一个可以异步等待循环中任何一个部分的 Awaiter
  • .NET单元测试
  • .NET框架类在ASP.NET中的使用(2) ——QA
  • @GlobalLock注解作用与原理解析
  • [ 代码审计篇 ] 代码审计案例详解(一) SQL注入代码审计案例
  • [【JSON2WEB】 13 基于REST2SQL 和 Amis 的 SQL 查询分析器