敏捷软件开发(二):极限编程概述
极限编程是一组简单、具体的实践,这些实践结合在一起形成了一个敏捷开发过程。项目团队可以直接拿来使用,也可以增加一些实践,或者对其中一些实践进行修改后再采用。
1. 客户作为团队成员
2. 用户素材
对于做计划而言,了解需求需要做到能够估算它的程度就够了。用户素材(user stories)就是正在进行的关于需求谈话的助记符。他是一个计划工具,客户可以使用它并根据它的优先级和估算代价来安排实现该需求的时间。
3. 短交付周期
迭代计划:XP项目每两周交付一次可以工作的软件。每次迭代由客户根据开发人员确定的预算而选择的一些用户素材组成。
发布计划:通常创建一个计划来规划后大约6次迭代的内容。不是一成不变的。
4. 验收测试
5. 结对编程
一人书写代码,另一人观察代码并寻找代码中的错误和可以改进的地方。两人角色频繁互换。
6. 测试驱动的开发方法
测试用例和代码共同演化,其中测试用例循序渐进地对代码的编写进行指导。编写测试用例和代码之间的更迭频繁(通常几分钟)
7. 集体所有权
没有程序员对任何一个特定的模块或技术单独负责。
8. 持续集成
使用非阻塞的源码控制工具。
9. 可持续性的开发速度
10. 开放的工作空间
每个人都了解对方的工作状态。
11. 计划游戏
划分业务人员和开发人员之间的职责。业务人员(客户)决定feature的重要性,开发人员决定实现一个feature所花费的代价。
12. 简单的设计
XP指导三原则:
a. 考虑能够工作的最简单的事情
b. 你将不需要它(只有存在证据或十分明显的迹象表明引入新的基础结构比继续等待更加合算时,才引入它)
c. 一次,且仅有一次(避免代码重复)
13. 重构(持续进行,抵制退化)
14. 隐喻
他是将整个系统联系在一起的全局试图;是未来的景象,使所有单独模块的位置和外观变得直观。如果模块的外观与整个系统的隐喻不符,那你就会知道这个模块是错误的。
举例:将文字输出到屏幕的系统——用卡车运垃圾比喻,缓冲区是卡车,屏幕是垃圾场,程序是制造垃圾者。所有名字相互符合,有利于从整体考虑系统。