极限编程实践
1. 客户作为团队成员
2. 用户素材:对项目需求的简单的、模糊的概括,而不是详细的需求细节
3. 短交付周期:迭代计划——两周;发布计划——三个月(大约六次迭代)
4. 验收测试:使用简单脚本,在迭代开始前或迭代过程中逐步完成
5. 结对编程:结对的关系每天至少要改变一次
6. 测试驱动的开发方法:首先编写一个单元测试,然后编写代码使测试通过
7. 集体所有权:每个程序员对项目的每个模块都有接触,都编写有自己的代码
8. 持续集成:每隔一到两个小时就进行一次签入(check-in),并使所有测试都通过
9. 可持续的开发速度:团队必须保持旺盛的精力和敏锐的警觉,不允许加班工作(发布前一周例外)
10. 开放的工作空间
11. 计划游戏:划分业务人员(也就是客户)与开发人员的职责。业务人员决定特性的重要性,开发人员决定实现一个特性所需要的代价
12. 简单的设计:1.考虑能够工作的最简单的事情;2.你将不需要它;3.一次,并且仅有一次
13. 重构:经常性地重构:每隔一个小时或半个小时一次
14. 隐喻:构造一个将整个系统联系在一起的全局视图(一个恰当的比喻),这有助于从整体上考虑系统。