极限编程
极限编程是一个轻量级的、灵巧的软件开发方法;同时它也是一个非常严谨和周密的方法。它的基础和价值观是交流、朴素、反馈和勇气;即,任何一个软件项目都可以从四个方面入手进行改善:加强交流;从简单做起;寻求反馈;勇于实事求是。
XP是一种近螺旋式的开发方法,它将复杂的开发过程分解为一个个相对比较简单的小周期;通过积极的交流、反馈以及其它一系列的方法,开发人员和客户可以非常清楚开发进度、变化、待解决的问题和潜在的困难等,并根据实际情况及时地调整开发过程。
角色
XP的客户角色负责编写、排列故事优先以及编写和执行测试,已验证故事按照预期进行开发。
12个实践
XP的12个实践是高度协作和相互依存的。
- 短交付周期(small releases)
- 计划游戏(the planning game)——计划游戏的主要思想就是先快速地制定一份概要的计划,然后,随着项目细节的不断清晰,再逐步完善这份计划。计划游戏产生的结果是一套用户故事及后续的一两次迭代的概要计划。
- 重构(refactoring)——重构的目的是降低变化引发的风险、使得代码优化更加容易。
- 测试(testing)
- 结对编程(pair programming)——主要是结对编程大大降低了沟通的成本,提高了工作的质量。
- 持续一致的速度(sustainnable pace)
- 团队代码所有权(team code ownership)
- 编码标准(coding standard)——拥有编码标准可以避免团队在一些与开发进度无关的细枝末节问题上发生争论,而且会给重构、结对编程带来很大的麻烦。不过,XP 方法的编码标准的目的不是创建一个事无巨细的规则列表,而是要能够提供一个确保代码清晰,便于交流的指导方针。
- 简单设计(simple design)——定义了四个约束:业务代码和测试代码充分表达程序员的意图、没有重复代码、系统使用最少数量的类、系统使用最少数量的方法
- 隐喻(metaphor)——隐喻常用于四个方面:寻求共识、发明共享语汇、创新的武器、描述架构。
- 持续集成(continuous intergration)
- 客户现场(on-site customer)——客户讲和开发团队坐在一起,客户编写故事和验收测试,并当场尽快回答团队的问题。
极限编程的价值——四大价值
- 沟通——XP重视沟通,面对面沟通、谈话、回应等
- 简单——关注当下遇到的问题创建解决方案
- 反馈——XP团队重视反馈,反馈越快越好
- 勇气——XP团队重视勇气,例如有勇气重构他们的代码
极限编程的原则——五项基本原则
- 快速反馈
- 假设简单
- 增量变化
- 拥抱变化
- 高品质的产品