极限编程(eXtreme Programming,简称XP)是一种轻量级、高效、低风险、柔性、可预测的、科学的软件开发方法,其特性包含在12个最佳实践中。
1. 计划游戏 ( Planning Game )
(1)快速制定计划、随着细节的不断变化而完善;
(2)详解:要求结合项目进展和技术情况,确定下一阶段要开发与发布的系统范围。当计划赶不上实际变化时就应更新计划。
2. 小型发布 ( Small Release )
(1)系统的设计要能够尽可能早地交付;
(2)详解:强调在非常短的周期内以递增的方式发布新版本,从而可以很容易地估计每个迭代周期的进度,便于控制工作量和风险;同时,也可以及时处理用户的反馈。
3. 系统隐喻( System Metaphor )
(1)找到合适的比喻传达信息;
(2)详解:通过隐喻来描述系统如何运作、新的功能以何种方式加入到系统。它通常包含了一些可以参照和比较的类和设计模式。
4. 简单设计( Simple Design )
(1)只处理当前的需求使设计保持简单;
(2)详解:任何时候都应当将系统设计的尽可能简单。不必要的复杂性一旦被发现就马上去掉。
5. 测试驱动( Test-driven )
(1)先写测试代码再编写程序;
(2)详解:程序员不断地编写单元测试,在这些测试能够准确无误地运行的情况下开发才可以继续。
6. 重构( Refactoring )
(1)重新审视需求和设计,重新明确地描述它们,以符合新的和现有的需求;
(2)详解:代码重构是指在不改变系统行为的前提下,重新调整、优化系统的内部结构以减少复杂性、消除冗余、增加灵活性和提高性能。
7. 结对编程( Pair Programming )
(1)由两个程序员在同一台电脑上共同编写解决同一问题的代码。
(2)详解:通常一个人负责写编码,而另一个负责保证代码的正确性与可读性。
8. 集体所有权(Collective Ownership)
(1)任何人在任何时候都可以在系统中的任何位置更改任何代码。
(2)详解:每个成员都有更改代码的权利,所有的人对于全部代码负责。
9. 持续集成( Continuous Integration )
(1)可以按日甚至按小时为客户提供可运行的版本;
(2)提倡在一天中集成系统多次,而且随着需求的改变,要不断的进行回归测试,避免了一次系统集成的恶梦。
10. 每周工作40小时 ( 40-hour Week )
(1)要求项目团队人员每周工作时间不能超过40小时,加班不得连续超过两周,否则反而会影响生产率。
11. 现场客户( On-site Customer )
(1)在团队中加入一位真正的、起作用的用户,他将全职负责回答问题。
(2)详解:要求至少有一名实际的客户代表在整个项目开发周期在现场负责确定需求、回答团队问题以及编写功能验收测试。
12. 编码标准( Code Standards )
(1)强调通过指定严格的代码规范来进行沟通,尽可能减少不必要的文档。