什么是极限编程 (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 敏捷是什么 ...
随机推荐
- PDFSharp - Graphics
PDFSharp - Graphics Graphics - PDFsharp and MigraDoc Wiki 所有的 Graphics 类型都设计成模仿来自 System.Drawing 命名空 ...
- JavaWeb HttpSession
/** * 使用session共享数据 */ public class SessionDemo1 extends HttpServlet { @Override protected void doPo ...
- 【Mybatis】学习笔记02:实现简单的查
Mybatis02:简单的查 如果你没先去学 增删改 ,然后直接看这篇记录,我想会有些困难.因为该文写的很粗劣,只是简单的截图.所以没基础的建议先去看 [Mybatis]学习笔记01:连接数据库,实现 ...
- 智谱开源CogAgent的最新模型CogAgent-9B-20241220,全面领先所有开闭源GUI Agent模型
在现代数字世界中,图形用户界面(GUI)是人机交互的核心.然而,尽管大型语言模型(LLM)如ChatGPT在处理文本任务上表现出色,但在理解和操作GUI方面仍面临挑战,因此最近一年来,在学界和大模型社 ...
- Qt编写推流综合应用示例-文件推流
一.功能特点 1.1 文件推流 指定网卡和监听端口,接收网络请求推送音视频等各种文件. 实时统计显示每个文件对应的访问数量.总访问数量.不同IP地址访问数量. 可指定多种模式,0-直接播放.1-下载播 ...
- Qt数据库应用17-通用数据库请求
一.前言 数据库请求是在数据库采集的基础上,换成http请求的形式来获取数据,这样就脱离了数据库组件,而采用的通用的http请求的形式从数据库拿数据库,这个通用性就非常广泛了,比如对方用java采集到 ...
- PostgreSQL 数据库的启动与停止管理
title: PostgreSQL 数据库的启动与停止管理 date: 2024/12/28 updated: 2024/12/28 author: cmdragon excerpt: 作为一个强大的 ...
- Intellij IDEA开发环境中Springboot项目无Run ****main()的菜单
问题描述: Intellij IDEA开发环境中Springboot项目无Run ****main()的菜单. 解决办法有以下几种: 方法1:Idea无右键run选项, 无法通过main方法启动sp ...
- 即时通讯安全篇(十):IM聊天系统安全手段之通信连接层加密技术
本文由融云技术团队分享,原题"互联网通信安全之端到端加密技术",内容有修订和改动. 1.引言 随着移动互联网的普及,IM即时通讯类应用几乎替代了传统运营商的电话.短信等功能.得益于 ...
- CDS标准视图:催款范围描述 I_DunningAreaText
视图名称:催款范围描述 I_DunningAreaText 视图类型: 视图代码: 点击查看代码 @EndUserText.label: 'Dunning Area - Text' @Analytic ...