1. 任何情况下,变化是绝对的,不变是相对的,我们不要抱怨变化的发生,重要的时要有应付变化的能
力。但是那绝对不是听从别人来变化,而是自适应形势的变化。
2. 四个变量:成本、时间、质量、范围
3. 四个原则:沟通、简单、反馈、勇气
4. 所有的实践:
a) 计划游戏
i. 业务人员需要决定的内容:
1. 范围
2. 优先级
3. 版本的组成
4. 发布的日期
ii. 技术人员决定的内容:
1. 估算
2. 后果
3. 过程
4. 详细的日程计划
b) 小版本
包含最有价值的业务需求。
c) 隐喻
每个XP软件项目都是由一个全面的隐喻指导的。
d) 简单设计 任何时候,正确的软件设计都具有下面的特征:
i. 能够运行所有测试
ii. 没有重复的逻辑
iii. 陈述每个对程序员重要的意图。
iv. 有尽可能少的类别和方法
e) 测试
测试有助于增强程序员的信心;只对有可能出错的方法编写测试代码。
f) 重构
g) 结对编程
一个人思考实现此方法的最佳途径,另一个应更加偏重于战略性的角度进行思考。
h) 集体所有权
只有代码的正式所有者才可以更改代码
i) 持续集成
用一台计算机专门作集成工作
j) 每周工作40小时
加班时项目存在严重问题的征兆
k) 现场客户
指的是在系统投产后真正使用系统的人
l) 编码标准
标准应强调沟通,并必须被整个团队自愿地采纳。
5. 环境可能是最后被考虑到的东西,但是往往是非常重要的。
6. 一定要保证一个小组在工作的时候不被干扰,否则就无法真正集中精力工作。
7. 业务人员应该选择:
a) 发布的范围或时间
b) 提出的功能的相对优先权
c) 提出的功能的确切范围。
8. 开发组织必须确定:
a) 实现各种功能所需的时间估算
b) 各种可选的技术方案的后果估算
c) 适合他们的个性、业务环境和公司文化的开发过程。
d) 使用哪组时间来开始,即以使用什么样的进程来评审实践的效果和对变化进行试验。
9. 制定计划的目的:
a) 团结和组织开发团队
b) 决定范围和优先级
c) 估算成本和日程
d) 让大家对系统的成功信心百倍
e) 为反馈提供一个基准
10. 制定计划的原则:
a) 只制定下一个阶段所需的计划(计划需要不停的进行迭代)
b) 接受的责任(责任只能被接受,而不能被强加)
c) 负责实现的人进行估算
d) 忽略个部分之间的依赖关系
e) 为优先级作计划与为开发作计划的比较—谨记计划的目的
11. 首要的一个问题是如何处理好人与人之间的关系,如果大家都能够做到权责明确,并且和睦相处
,那么就具备了一个好团队所必须的一点。
12. 业务方和开发方一定要做到相互信任,相互尊重。
13. 如果能够把一项工作做的像是大家在共同进行一个游戏的话,大多数人都会乐意去做,而且很快
乐。
14. 配对编程是一种非常值得尝试的方式,可能一旦使用就会永远喜欢上这种方式。
15. 最佳设计:能运行所有测试用例的最简单的设计
16. 最简单的四种约束:
a) 系统必须能够沟通任何你希望沟通的内容
b) 系统不能够包含重复的代码
c) 系统拥有尽可能少的类
d) 系统拥有尽可能少的方法
17. 软件的设计不可能没有变化,我们要做的是如何来面对并处理这些变化。在极限编程中,对于变
化我们会返工,但是那就像是修改一篇文章一样,是一件令人快乐的事情。
18. 不停的进行测试的方法似乎与制作网页的过程有些类似,在制作网页的过程中我们会不断的进行
预览,查看在浏览其中实际的效果,而且所有的网页都是在持续集成的过程中完成的。
19. 测试先行并不意味着我们在什么情况下都要先编写测试,然后编写代码。在Eclipse中,如果没有
一定的代码,测试程序根本就是无法通过的,又来的什么正确不正确呢。而且,在编好了基本的类之后
,使用自动化的工具来生成测试程序,在一定程度上也可以提高工作的效率,何乐而不为呢?
20. 当一个人编写的程序里面Bug太多的时候,并不意味着他没有重视测试,大多时候是因为他还没有
掌握测试的方法和工具。不知道怎样来测试,怎么可能做好呢?
21. 在保存项目的时候,如果使用极限编程,应该不仅保存项目的源代码,而且要保存所有的测试用
例。而且在写注释的时候,不仅在程序的源代码里面要有详尽的注释,在测试用例的代码中也应该做到
这一点。