《超越传统的软件开发 极限编程的幻象与真实》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:雷剑文,陈振冲,李明树著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2005
  • ISBN:712100657X
  • 页数:356 页
图书介绍:

第1章 软件和模型 1

第一部分 旅程前的准备 2

1.1 冒险的成功 2

1.1.1 瀑布模型的特点 3

1.1.2 可接受的失败 4

1.1.3 与工程项目的比较 5

1.1.4 项目失败的实例 5

1.2 能力成熟度模型 7

1.2.1 第一级——初始级 8

1.2.2 第二级——可重复级 9

1.2.3 第三级——定义级 9

1.2.4 第四级——管理级 10

1.2.5 第五级——优化级 11

1.2.6 关键过程域 11

1.3 即时上市达成即时上市的方法 15

1.4 足够好的软件 18

1.5 优秀的程序员 20

1.5.1 程序员的差异 20

1.5.2 魔术数字28 21

1.5.3 真正的才能 23

1.6 编程心理学 23

1.6.1 不同的诠释 24

1.6.2 编码≠软件项目 24

1.7 不要从经验学习 25

1.7.1 信念 25

1.7.2 从经验中学习 26

1.7.3 经验与实验 28

1.8 总结  28

思考与练习 29

参考文献 32

第2章 极限编程 35

2.1 极限编程的诞生 35

2.2 快速改变的软件需求 37

2.3 角色 42

2.3.1 权利和责任 43

2.3.2 单元测试和验收测试 45

2.3.3 客户 45

2.3.4 程序员 46

2.4 价值 47

2.5 原则 48

2.6 活动 49

2.7 12个实践 51

2.7.1 小版本 52

2.7.2 规划游戏 53

2.7 3 现场客户 54

2.7.4 隐喻 55

2.7.5 简单设计 55

2.7.6 重构 56

2.7.8 持续集成 57

2.7.7 测试驱动开发 57

2.7.9 结对编程 58

2.7.10 代码共有 59

2.7.11 编码标准 60

2.7.12 每周40小时工作制 60

2.8 极限编程实践的追溯 61

2.9 软件过程改进 63

2.10 总结 66

思考与练习 69

参考文献 72

第3章 敏捷软件开发 74

3.1 敏捷软件开发 74

3.1.1 敏捷宣言 76

3.1.2 敏捷开发的原则 77

3.2 软件方法 78

3.2.1 控制元素 78

3.2.2 方法的设计 79

3.2.3 轻量级和重量级方法 81

3.3 Scrum 82

3.3.1 橄榄球的团队精神 83

3.3.2 简史 83

3.3.3 Scrum的开发方式 84

3.3.4 Scrum实践 85

3.4 极限编程和Scrum 88

3.4.1 极限编程和Scrum的比较 89

3.4.2 xP@Scrum 91

3.5 总结 92

思考与练习 92

参考文献 93

第二部分 幻象和真实 95

4.1 科学和艺术 96

4.1.1 结对编程的方法 96

第4章 结对编程 96

4.1.2 经济上的争议 98

4.1.3 管理上的疑问 100

4.2 无工资世界和真实世界 101

4.2.1 无工资世界 102

4.2.2 真实世界 105

4.3 结对编程的效率 105

4.3.1 Nosek的实验 105

4.3.2 Williams的实验 106

4.3.3 Nawrocki的实验 107

4.3.4 结对编程效率的矛盾 109

4.4 结对编程的普查 110

4.4.1 百分比分析 110

4.4.2 比例问题 113

4.4.3 开放式评论 115

4.5 结对编程的扩展 117

4.5.1 结对学习 118

4.5.2 结对程序员的组合 119

4.5.3 分布式结对编程 121

4.5.4 三结编程 123

4.6 总结 123

思考与练习 124

参考文献 125

第5章 群动力 127

5.1 群体动力学与结对编程 127

5.2 群体的特性 128

5.2.1 互动 129

5.2.2 结构 129

5.2.3 凝聚力 129

5.2.4 社会认同 129

5.2.5 目标 130

5.3 群体的生命周期 131

5.4.1 系统理论 132

5.4 群体动力学 132

5.5 工作性质 134

5.5.1 累积性工作 136

5.5.2 补偿性工作 136

5.5.3 分离性工作 137

5.5.4 联合性工作 138

5.5.5 自由决定性工作 139

5.6 两个脑袋 139

5.7 群体生产力下降 140

5.7.1 评价忧虑 143

5.7.2 社会两难 143

5.7.3 生产力假象 144

5.8 头脑风暴 144

5.9 总结 147

思考与练习 148

参考文献 149

6.1 结对编程的争议 151

6.1.1 不可重复的实验 151

第6章 重复编程 151

6.1.2 三结编程、四结编程、五结编程,等等 153

6.1.3 编程不是什么大不了的工作 154

6.2 经济和生产力 155

6.3 重复编程 156

6.3.1 重复的编写程序 158

6.3.2 效率差异 160

6.3.3 挑战 163

6.3.4 一加一等于三 164

6.3.5 三结编程的效率 166

6.4 程序算法 167

6.4.1 不想输的实验 168

6.4.2 实验结果 169

6.5 生命游戏 170

6.5.1 轮转式的实验 170

6.5.2 先输后赢的结果 171

6.6 编程认知模型 172

6.6.1 “定义” 173

6.6.2 “表示” 174

6.6.3 “模型” 174

6.6.4 “模式” 175

6.6.5 “算法” 175

6.6.6 “编码” 175

6.6.7 认知模型的运用 176

6.6.8 演绎和算法 179

6.7 总结 180

思考与练习 181

参考文献 184

第7章 重构 186

7.1 重做和重构 186

7.1.1 优化 187

7.1.2 修改 189

7.2 重构理论 191

7.2.1 重构和极限编程 193

7.2.2 可读性和可维护性 193

7.3 坏气味 195

7.3.1 重复 196

7.3.2 过大 196

7.3.3 功能 196

7.3.4 依赖 196

7.3.5 设计 197

7.3.6 注释 197

7.4 重构技巧 197

7.4.1 提取 198

7.4.2 内联化 198

7.4.3 重命名 199

7.4.4 移动 200

7.4.5 替换算法 201

7.5 总结 202

思考与练习 203

参考文献 204

第8章 测试驱动开发 205

8.1 逆流瀑布 205

8.1.1 设计—编码—测试 206

8.1.2 测试—编码—设计 207

8.2 测试和编码 208

8.2.1 测试 209

8.2.2 编码 210

8.2.3 测试驱动开发 211

8.2.4 测试驱动开发和其他极限编程实践 213

8.2.5 科学方法 214

8.3 测试驱动开发的工具 215

8.3.1 XUnit系列 216

8.3.2 代码覆盖 216

8.3.3 Jester 217

8.3.5 重构浏览器 218

8.3.4 模仿对象 218

8.3.6 测试数据 219

8.4 软件缺陷评估 219

8.4.1 传统方法 221

8.4.2 减少缺陷 221

8.5 测试驱动开发在中国软件业中的应用 222

8.5.1 对缺乏经验的编程组的TDD指引 223

8.5.2 项目计划 223

8.5.3 项页目进度跟踪 224

8.5.4 质量保证 224

8.5.5 纪律 225

8.5.6 回溯 225

8.5.7 推销员问题 226

8.6 极限编程和测试驱动开发 227

8.6.1 极限编程成熟度模型 228

8.6.2 测试驱动开发演化模型 231

总结 232

思考与练习 233

参考文献 233

第三部分 旅程结束,回到工作 235

第9章 极限编程的实施 236

9.1 环境和工序 236

9.1.1 工效学 237

9.1.2 每天的工作程序 238

9.1.3 标准 239

9.2 实施 240

9.2.1 故事卡 241

9.2.2 探棒 243

9.2.3 故事的优先次序 244

9.2.4 分开故事 244

9.2.5 选取结队伙伴 245

9.2.6 迭代 246

9.2.8 集成 247

9.2.7 编程 247

9.3 模板应用实例 248

9.3.1 迭代准备 249

9.3.2 第一迭代 251

9.3.3 第二迭代 257

9.3.4 第三迭代和第一次发布 260

9.4 总结 262

参考文献 263

第10章 极限编程的评语 264

10.1 不愉快的经验 264

10.1.1 假结对编程 264

10.1.2 硬性极限编程 265

10.1.3 梦想里的现场客户 266

10.1.4 曲解失败为成功 266

10.1.5 现实中的极限编程 266

10.2 Humphrey的评语 266

10.3.1 大型软件开发 269

10.3 反极限编程 269

10.3.2 做和道 270

10.3.3 小教派 271

10.4 解破幻象 273

10.4.1 格列佛游记 274

10.4.2 主观和客观 275

10.4.3 太极软件开发 276

10.5 总结 278

参考文献 279

思考与练习 279

附录A 测试驱动开发的形式化描述 281

附录B JUnit及BubbleSort实例 284

附录C 重构浏览器RefactorlT概览 298

附录D 重构实例 304

附录E Jester安装和应用 314

附录F Jcoverage安装和应用 324

附录G Jester和Jcoverage实例比较 328

附录H 参考答案 355