极限编程与敏捷开发

我的理解是极限编程是敏捷开发的一种实践方法。敏捷开发是一个比较大的概念。我猜你指的敏捷开发是scrum吧。下面我对scrum和极限编程说说我的理解。就像开头说的,敏捷开发是一个大的概念。scrum其实是一种敏捷方法而已。在我看来,scrum是道,极限编程是术。两者并不冲突,而且是可以结合使用的。scrum更强调的是一套核心价值观,在这个价值观的指导下推导出的一系列行为准则,产生了一系列的scrum活动(站会,冲刺,评审,回顾等)。只要和scrum价值观匹配的实践方法都可以引入到scrum过程中来,比如在scrum中经常会使用的看板,其实来源于丰田的精益方法。TDD,结对编程等极限编程的同样可以应用在scrum的过程中。所以,并不是极限编程有什么重大的不足才导致scrum的产生,它们生来不同,关注的软件开发当中不同层次的内容。
■网友
谢邀!极限编程已经是轻量级的开发了,为什么还要提出敏捷开发呢?没错,Scrum、XP 都诞生于上世纪 90 年代。其实 90 年代出现的轻量级开发方法不只这两个,还有 FDD、DSDM、Crystal、ASD 等等。那么为什么还要在 2001 年成立敏捷联盟,提出敏捷开发呢?简单回答:团结力量大!1995-2001 年那段时间,在软件工程界占据主导思想的一度是 SEI CMM、RUP、IEEE、ISO 等主流软件开发过程标准和模型,大多是重型的,包括 XP 在内的许多轻量级方法还处于萌芽阶段,非常的弱小,上不了台面。所以,面对强大的对手,XP、Scrum 最好不要单干,最佳策略显然是联合其他相近流派各掌门,组成一个统一的联盟发起一场运动,大家一起来干,人多力量大嘛。中国人讲的合纵连横,这个道理大家都懂。最权威的几个解释:History: The Agile ManifestoMartin Fowler: The New Methodology是因为敏捷开发又对极限编程的不足进行了改正吗?。。。
■网友

1996年,Kent Beck提出“极限编程”(Extreme Programming,简称XP)这一软件开发概念。
2000年,Kent Beck与Rogue River Lodge组织的极限编程支持者和一些“局外人”组织了一次会议,他们在会议中表示支持“轻”方法论。(人们认为“轻量”一词不能展现方法论的实质。)
2001年,在名叫雪鸟的滑雪胜地的小屋中,十七位代表宣布成立敏捷联盟,发布《敏捷宣言》。(“轻量”被“敏捷”所取代)
极限编程通过以下五种基本方式实现一个简单、高效的合作环境。
团队奉行“简洁”价值观,利用现有投资实现价值最大化,在实现目标的时候尽可能地用简单的步骤,以防试错成本过高;成员之间面对面“沟通”,对开发过程中的每一件事都共同寻求最优解;每一次迭代成果都尽早演示,通过“反馈”及时调整流程来适应整个项目的进行;“尊重”团队成员所付出的努力,客户与开发人员、管理层三方互相理解;信任自己的伙伴,有“勇气”说出自己的失败或者错误,以确保团队及时适应变化。敏捷宣言内容如下:
我们遵循以下 原则 :我们最重要的目标,是通过持续不断地及早交付有价值的软件使客户满意。欣然面对需求变化,即使在开发后期也一样。为了客户的竞争优势,敏捷过程掌控变化。经常地交付可工作的软件,相隔几星期或一两个月,倾向于采取较短的周期。业务人员和开发人员必须相互合作,项目中的每一天都不例外。激发个体的斗志,以他们为核心搭建项目。提供他们所需的环境和支援,辅以信任,从而达成目标。不论团队内外,传递信息效果最好效率也最高的方式是面对面的交谈。可工作的软件是进度的首要度量标准。敏捷过程倡导可持续开发。责任人、开发人员和用户要能够共同维持其步调稳定延续。坚持不懈地追求技术卓越和良好设计,敏捷能力由此增强。以简洁为本,极力减少不必要工作量的艺术。最好的架构、需求和设计出自于自组织的团队。团队定期地反思如何能提高成效,并依此调整自身的行为举止。
通过比较XP的五种基本方式以及敏捷十二原则,我们可以看到这两者有许多互通的地方。


推荐阅读