什么是极限编程 (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 敏捷是什么 ...
随机推荐
- Python 潮流周刊#81:在个人电脑上运行 GPT-4 级别的大模型(摘要)
本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...
- 在 .NET 下使用 Pdfium 渲染和打印 PDF
在 .NET 下使用 Pdfium 渲染和打印 PDF 大家可能已经看到这条 新闻,Google最近又新推出一个开源项目,名叫 PDFium,将成为Chrome浏览器的PDF渲染引擎组件.与已有的开源 ...
- 渗透测试-前端加密分析之RSA响应加密
本文是高级前端加解密与验签实战的第7篇文章,本系列文章实验靶场为Yakit里自带的Vulinbox靶场,本文讲述的是绕过请求包和响应包加密来爆破登录界面. 分析 这里的公私钥同上文一样是通过服务端获取 ...
- 【人工智能】深度学习框架值TF入门-模型保存与加载
资料:https://tensorflow.google.cn/tutorials/keras/save_and_load#选项 Keras的方式 Keras版本模型保存与加载 函数 保存模型权重:m ...
- error C2664: “HANDLE FindFirstFileW(LPCWSTR,LPWIN32_FIND_DATAW)”: 无法将参数 1 从“const _Elem *”转换为“LPCWSTR”
Error 30 error C2664: 'HANDLE FindFirstFileW(LPCWSTR,LPWIN32_FIND_DATAW)' : 不能将参数 1 从"char [260 ...
- [转]axios 的理解和使用
有废话少说,直接附上原文链接: axios 的理解和使用 axios.create(对axios请求进行二次封装) 拦截器 取消请求(axios.CancelToken) 其它链接: 1.axios中 ...
- IM开发者的零基础通信技术入门(十):零基础,史上最强5G技术扫盲
本文引用了"鲜枣课堂"的<史上最强5G科普>文章内容.为了更好的内容呈现,在引用和收录时内容有改动,转载时请注明原文来源. 1.内容概述 ➊ 5G技术的关注度越来越高: ...
- CDS标准视图:催款冻结描述 I_DunningBlockingReasonText
视图名称:催款冻结描述 I_DunningBlockingReasonText 视图类型:基础视图 视图代码: 点击查看代码 @EndUserText.label: 'Dunning Blocking ...
- [docker逃逸] Privileged 特权模式逃逸复现
本文作者CVE-柠檬i CSDN:https://blog.csdn.net/weixin_49125123 博客园:https://www.cnblogs.com/CVE-Lemon 微信公众号:L ...
- Linux配置Golang 依赖包安装
Linux Golang安装 安装版本查看,可自行选择 https://studygolang.com/articles/13957?fr=sidebar 此次选择 go1.14.2.linux-am ...