什么是极限编程 (XP)?
极限编程(XP) 是2000 年代初期最广为人知和使用最多的敏捷方法之一。XP 是Kent Beck、Ron Jeffries和Ward Cunningham的创意,基于他们在戴姆勒克莱斯勒的集体经验。它的名字变成了马麦酱并推迟了管理。它错误地唤起了冲浪者的幻想和缺乏专业精神。
XP 是一种迭代方法。团队计划少量工作并在称为 1 到 4 周迭代的短时间盒内构建它。XP 与其他迭代框架的主要区别在于,XP 专注于达到极端水平的软件工程实践。例如,许多研究表明代码审查是发现缺陷的最有效方法之一。XP 将这一点发挥到极致,并通过结对编程 100% 地鼓励同行评审。
XP 不仅专注于短迭代,而且还规定了较短的发布周期,以降低技术产品交付中固有的风险。进度延误、陈旧的需求与客户需求不一致、业务变更和不必要的功能都可以通过较短的发布周期来解决。
XP 实践 (Best Practices)
自 Kent Beck 首次发表“极限编程解释”以来,XP 实践一直在不断发展。但是,下图显示了与 XP 最常关联的集合。

敏捷开发方法XP的12个最佳实践
1.规划游戏 (planning game)
- 快速制定计划,随着细节的变化而改进;
- 详细说明:需结合项目进度和技术条件确定下一阶段拟开发和发布的系统范围。当计划跟不上实际变化时,应更新计划。
2. 小发布 (Small release)
- 系统的设计应该能够尽早交付;
- 详细说明:强调新版本应该在极短的时间内增量发布,这样每个迭代周期的进度很容易估计,工作量和风险也很容易控制;同时,用户的反馈也能得到及时处理。
3.系统隐喻 (System Metaphor)
- 找一个合适的比喻来传达信息;
- 详解:通过比喻来描述系统的工作原理以及系统如何添加新的功能。它通常包含一些可以参考和比较的类和设计模式。
4. 简单的设计 (Simple Design)
- 只处理当前的需求,保持设计的简单;
- 在任何时候,系统都应设计得尽可能简单。不必要的复杂性一旦被发现就会被移除。
5. 测试驱动 (Test-driven)
- 先写测试代码,再写程序;
- 说明:程序员不断地编写单元测试,只有这些测试能够正确运行才能继续开发。
6. 重构 (Refactoring)
- 重新检查需求和设计并重新清晰地描述它们以满足新的和现有的需求;
- 代码重构是在不改变系统行为的情况下,重新调整和优化系统内部结构,以降低复杂度,消除冗余,增加灵活性,提高性能。
7.结对编程 (Pair Programming)
- 两个程序员在同一台计算机上编写代码来解决同一个问题。
- 解释:通常一个人负责编写代码,另一个人负责保证代码的正确性和可读性。
8. 集体所有 (Collective Programming)
- 任何人都可以随时随地更改系统中的任何代码。
- 说明:每个会员都有修改代码的权利,每个人对所有的代码负责。
9. 持续集成 (Continous integration)
- 可以按天甚至按小时运行,供客户运行版本;
- 提倡一天集成几次系统,随着需求的变化,不断进行回归测试,避免系统集成一次的噩梦。
10. 每周40小时 (40 hour work)
- 目组成员每周工作时间不得超过40小时,加班时间不得连续超过两周,否则会影响生产效率。
11. 现场客户 (One-site customer)
- 在团队中添加一个真正的、功能性的用户,他将全职回答问题。
- 说明:在整个项目开发周期中,至少需要一名实际客户代表在现场确定需求,回答团队问题,并编写功能验收测试。
12. 代码标准 (Code Standards)
- 通过指定严格的代码规范来强调沟通,以尽量减少不必要的文档。
XP值 (Values)
XP 在Scrum 框架采用价值之前几十年就将价值纳入方法论中。4个 XP 值 (core Values)是:

- 沟通 (Communication) - 保持正确的对话流畅以减少问题的发生。
- 简单 (Simplecity) - 今天做一件简单的事情,而不是制造你可能永远不需要的镀金。
- 反馈 (Feedback) - 与系统、客户以及彼此驱动解决方案的反馈循环。
- 勇气 (Courage) - 做出艰难的决定以帮助您以最快的速度交付。
- 尊重 (Respect) - 尊重意味着分享成功和失败的同时,我们尊重彼此、我们的协议和承诺。
XP角色 (Roles)
XP 规定了特定的角色。它非常重视程序员,并希望程序员能够享受测试他们的代码的乐趣。XP 程序员不仅需要广泛的技术实践,还需要有效的沟通和人际交往能力来实施结对编程等实践。
尽管开发团队执行测试的平衡,XP 需要测试人员。测试人员的角色转变为帮助客户定义和编写验收测试。
所有软件项目都有一个客户。XP 将客户角色发挥到极致,需要与开发团队共处,他们必须能够对产品做出决策并以用户故事的形式指定系统的行为。
为支持团队,XP 包含一个跟踪器,可为团队提供有关他们使用数据执行情况的宝贵反馈。还有一位教练可以帮助 XP 团队实现更高水平的绩效。
- What is a Self-Organizing Team in Scrum?
- What is Pig and Chicken in Scrum?
- What is Cross-Functional Team in Agile?
- Classical Project Management vs Agile Project Management
什么是极限编程 (XP)?的更多相关文章
- 敏捷开发之道(三)极限编程XP续
上次的博文敏捷开发之道(二)极限编程XP中,我们了解了XP的实践中的其中四个,今天我们来一起学习一下剩余的实践. --接上文 5).结对编程 结对编程就是由结对的开发人员使用同一台电脑共同完成一项任务 ...
- 敏捷开发之道(二)极限编程XP
上次的博文敏捷开发之道(一)敏捷开发宣言中,我们介绍了一下敏捷开发宣言,在其中,我们了解到了关于敏捷开发的几个重要的价值观.今天我们来了解一个敏捷开发的方法--极限编程XP 1.介绍 极限编程(eXt ...
- 敏捷方法之极限编程(XP)和 Scrum
区别之一: 迭代长度的不同 XP的一个Sprint的迭代长度大致为1~2周, 而Scrum的迭代长度一般为 2~ 4周. 区别之二: 在迭代中, 是否允许修改需求 XP在一个迭代中,如果一个User ...
- 敏捷方法之极限编程(XP)和 Scrum区别
敏捷(Agile)作为一种开发流程, 目前为各大公司所采用, 敏捷流程的具体实践有XP 和Scrum, 似乎很少有文章介绍这两者的区别, 发现一篇外文, 见解非常深刻, 特将其翻译一把. 原文(DIF ...
- 极限编程(XP)12个最佳实践
https://blog.csdn.net/qq_25564951/article/details/68062588 现场客户 ( On-site Customer ) 代码规范 ( Code Sta ...
- 极限编程(XP)基本原则与规范
1. 坐在一起(Sitting Together) 尽可能让团队成员坐在一起,Kent Block在一次芝加哥的某个濒临困境的项目中发现,虽然这个团队都是由程序 精英组成,但是却陷入困境,后来他发现, ...
- 极限编程(xp),iso国际标准化组织
极限编程(xp):eXtreme Programming 极限编程-XP 四个价值:沟通 communication.简化 similicity.反馈 feedback.勇气 courage http ...
- [转]软件开发过程(CMMI/RUP/XP/MSF)是与非?
经常看到和听到大家在争论敏捷过程.RUP和CMM 哪个软件开发过程更好或者哪个过程不好,各自都有理由.争论得不亦乐乎......实际上,没有十全十美的过程,也不存在更好的过程.关键是什么样的过程适合自 ...
- Atitit 软件工程概览attilax总结
Atitit 软件工程概览attilax总结 1.1. .2 软件工程的发展 进一步地,结合人类发展史和计算机世界演化史来考察软件工程的发展史. 表2 软件工程过程模型 表2将软件工程的主要过程模型做 ...
- [转] Agile Software Development 敏捷软件开发
原文作者:kkun 原文地址:http://www.cnblogs.com/kkun/archive/2011/07/06/agile_software_development.html 敏捷是什么 ...
随机推荐
- Taro微信小程序获取Tab页可视区域高度
前情 公司有自己的小程序项目,因公司主要技术栈为react,所以选择了Taro来开发,Taro是京东出品的多端统一开发解决方案,用来开发小程序也相比用原生开发,在开发体验上好很多,而且还能使用成熟的R ...
- 【Amadeus原创】wordpress 从服务器收到预料之外的响应。此文件可能已被成功上传。请检查媒体库或刷新本页。此响应不是合法的JSON响应。解决方法。
两种报错方式: 1.此响应不是合法的JSON响应. 2.从服务器收到预料之外的响应.此文件可能已被成功上传.请检查媒体库或刷新本页. 情况:媒体服务器上传小文件没问题,大一点的文件报这个错误. 原因: ...
- 【COS 加码福利】COS 用户实践有奖征文,等你来投稿!
COS用户实践征文活动火热进行中,本次征集主题为:如何在生态场景下使用 COS? 优质文章将有机会被编入腾讯云官方文档库,供广大用户学习参考.更有多重好礼等你来拿,速来围观投稿吧! 投稿说明: 1.投 ...
- PG 实现 Dynamic SQL
CREATE OR REPLACE FUNCTION public.exec( text) RETURNS SETOF RECORD LANGUAGE 'plpgsql' AS $BODY$ BEGI ...
- idea 2023.1.2 破解/激活
参考:(感谢作者提供的破解教程,谢谢) IntelliJ IDEA 2023.1.1最新激活破解教程(永久激活,亲测有效) - 异常教程 (exception.site) 下载idea : 链接:ht ...
- springboot搭建http2服务器和h2c服务器 h2 的http/https 请求服务器
HTTP2.0特性通俗易懂篇:https://www.cnblogs.com/yingsmirk/p/5248506.html深入了解篇:https://www.jianshu.com/p/67c54 ...
- Qt程序员必看/关于Qt收费的官方答复
一.答复说明 Qt软件从诞生之日就是GPL/LGPL开源授权和商业授权并存的,开源不代表免费而是为了共享.关于您的问题,我做大致的回复. Qt商用版本的模块是否都是LGPL协议,所有模块是否存在GPL ...
- Qt编写视频监控系统78-视频推流到流媒体服务器
一.前言 视频推流作为独立的模块,目前并没有集成到视频监控系统中,目前是可以搭配监控系统一起使用,一般是将添加好的摄像头通道视频流地址打开后,读取视频流重新推到流媒体服务器,然后第三方可以从流媒体服务 ...
- 记一次简单的存储过程和Pivot行转列
首先我很讨厌写存储过程,其次我很讨厌 没办法,主要是需要进行 行转列,项目经理说可以用Pivot.我不是很精通sql,但是我会百度呀~ pivot需要有确定的列名.那我这个项目里面没办法确定,最后问了 ...
- 多语言越狱很棒!😊MULTILINGUAL JAILBREAK CHALLENGES IN🧜♀️LARGE LANGUAGE MODELS
写这篇的时候第一次认识到了附录内容的重要性(bushi只是这篇读了全部的附录),它可以让你明确文章全部的实验,并且其中包含很多辅助你对正文理解的表格 禁止盗用,侵权必究!!!欢迎大家积极举报