《完美软件 缺陷预防最佳实践》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:李滋堤编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2010
  • ISBN:9787302224228
  • 页数:397 页
图书介绍:本书是一本非常实用的缺陷预防技术应用手册,它提供一整套技术可以用来帮助软件开发人员、项目管理人员和测试人员避免在软件中出现人为错误或缺陷。本书的目标读者是从事软件行业的开发人员、项目管理人员和测试人员。

第Ⅰ部分 缺陷预防简介 3

第1章 缺陷预防 3

1.1 什么是软件缺陷 5

1.2 以高质量软件为目标 6

1.3 理解软件缺陷的产生原因 7

1.4 可以做些什么 9

1.4.1 使用检测、分析与预防技术 9

1.4.2 进行缺陷预防的组织有何不同 10

1.5 使用缺陷预防技术 11

1.5.1 缺陷检测技术 11

1.5.2 缺陷分析技术 12

1.5.3 缺陷预防技术 12

1.6 选择质量提高技术 12

1.6.1 考虑的因素 13

1.6.2 选择一种策略 14

1.7 组织考虑的因素 14

1.8 在上游阶段提高质量 15

1.9 从错误中学习 15

1.10 为未来投入 15

1.11 小结 16

第2章 缺陷预防框架 17

2.1 研究一种示例框架 19

2.2 提出模型 20

2.3 缺陷预防模型 20

2.3.1 能力成熟度模型 21

2.3.2 能力成熟度模型集成 26

2.3.3 Malcolm Baldrige框架 26

2.3.4 ISO模型 29

2.3.5 其他模型 30

2.3.6 对比这些模型 30

2.4 选择和使用模型 30

2.5 小结 32

第3章 缺陷预防的经济学 34

3.1 预防缺陷对企业有好处 35

3.1.1 缺陷预防的经济理论与价值 36

3.1.2 盈利能力 37

3.2 对软件开发进行边际成本分析 38

3.2.1 估计成本 39

3.2.2 确定回报 45

3.3 小结 47

第Ⅱ部分 缺陷检测技术 51

第4章 质量与开发过程 51

4.1 什么是软件质量 52

4.1.1 开发方法与质量 52

4.1.2 完全可测试性的神话 53

4.1.3 当前测试方法与质量 54

4.1.4 不可能测试所有内容 56

4.2 作为一种转换过程的产品开发 57

4.2.1 向产品周期内添加验证步骤 58

4.2.2 承认原始说明书中的缺陷 61

4.2.3 将设计转换为代码 62

4.3 小结 72

第5章 利用生产效率游戏预防缺陷 73

5.1 什么是游戏理论 75

5.1.1 历史上的游戏 76

5.1.2 游戏玩家时代 77

5.1.3 游戏为什么改变行为 79

5.2 游戏的类型 79

5.2.1 机会游戏和技能游戏 80

5.2.2 微型游戏 80

5.2.3 预测市场 81

5.2.4 交替现实游戏 82

5.3 缺陷预防游戏的实践指导 82

5.3.1 从排名榜开始 82

5.3.2 保持简单 82

5.3.3 仔细考虑记分方式 83

5.3.4 奖励正确的行为 83

5.3.5 利用记分方式鼓励参与 84

5.3.6 使玩家时常查看自己的分数 84

5.3.7 竞赛内容多样 84

5.3.8 留出调整空间——设置一个时间段 85

5.3.9 通过分级来保持兴趣 85

5.3.10 保留玩家的历史 85

5.3.11 以小型实验版本作为开始 85

5.3.12 让人们按自己的步调进行 86

5.3.13 使用现金和奖品来提高兴趣 86

5.3.14 使用随机抽奖 86

5.4 应用缺陷预防游戏的实例 86

5.5 游戏设计的提示 87

5.6 游戏设计的清单 88

5.7 小结 88

5.8 推荐阅读资料 89

第6章 提高软件的可测试性 90

6.1 认识可测试性的好处 91

6.2 实施可测试性 92

6.2.1 简单性:开发不复杂的软件 92

6.2.2 可观察性:使软件可观察 95

6.2.3 控制:加强对被测试软件的控制 97

6.2.4 知识:明白期待什么样的结果 98

6.3 避免实施可测试性的风险 100

6.4 小结 100

第Ⅲ部分 缺陷分析技术 103

第7章 软件测量与量度 103

7.1 理解构建一个成功记分卡的关键 104

7.2 明确确定战略目标 106

7.2.1 确定客户战略 106

7.2.2 确定内部业务战略 107

7.2.3 确定财务战略 108

7.2.4 定义创新战略 108

7.3 明确定义业务、过程和改进目标 109

7.3.1 理解目标类型 109

7.3.2 确定目标 110

7.3.3 确定量度 110

7.3.4 划定量度的优先级 111

7.3.5 确定量度的权重 111

7.3.6 避免量度操纵 113

7.3.7 适当确定目标的范围 114

7.3.8 划定目标的优先级 114

7.3.9 创建SMART目标 114

7.4 将所确定的目标通知各级管理人员 115

7.4.1 收集并显示数据 115

7.4.2 自动收集和报告数据 117

7.4.3 回顾 118

7.5 使人们广泛接受已确定的目标 118

7.6 小结 120

第8章 风险分析 121

8.1 什么是风险 122

8.2 什么是风险分析 122

8.2.1 将风险分析应用于漂流 124

8.2.2 确定风险分析阶段 125

8.2.3 风险分析的好处 127

8.2.4 理解风险 128

8.2.5 实施风险分析 129

8.3 创建风险预测模型 129

8.3.1 特征:确定代码特征 129

8.3.2 数量:跟踪改动 133

8.3.3 影响:理解变更的结果 133

8.3.4 理由:理解为什么进行变更 137

8.3.5 所有权:知道一个改变归谁拥有 138

8.4 应用风险预测模型 139

8.5 小结 142

第9章 利用仿真和建模进行组织改革 144

9.1 理解随机建模 145

9.2 使用建模过程 153

9.2.1 定义目标 154

9.2.2 确定起始过程 154

9.2.3 确定过程的输入和输出 155

9.2.4 构建所倡导的过程 156

9.2.5 将过程结果与组织结果进行对比 157

9.2.6 开发实际过程 157

9.2.7 根据需要进行重复 157

9.3 基线过程模型举例 158

9.3.1 简单规划模型 158

9.3.2 经过改进的计划模型 161

9.3.3 详尽的质量模型 165

9.3.4 过程改进模型 170

9.3.5 开发生产能力模型 176

9.4 与CMM框架的关系 180

9.5 小结 181

第10章 缺陷分类法 182

10.1 从大型软件项目中的缺陷进行学习 183

10.2 指定缺陷分类的目标 185

10.3 理解缺陷分类的组织原则 185

10.4 明确缺陷分类法中做出的假设 186

10.4.1 假设:我们只能进行特定类型的更改 187

10.4.2 假设:人们是会犯错误的 187

10.4.3 假设:缺陷在产品周期的后期被发现 187

10.4.4 假设:在产品周期中生成缺陷的阶段未能检查出这些缺陷 188

10.4.5 假设:测试可能是不平衡的 188

10.4.6 假设:您可能过度使用工具和过程 189

10.4.7 假设:您可能是在进行后期设计纠正 189

10.5 构建缺陷分类法实例 189

10.5.1 发生阶段 192

10.5.2 促成原因阶段 196

10.5.3 改变阶段 200

10.5.4 检测阶段 202

10.5.5 缓解阶段 204

10.6 经过分类的缺陷举例 205

10.7 小结 208

第11章 根本原因分析 209

11.1 理解根本原因分析研究如何帮助预防缺陷 210

11.2 何时进行RCA研究 211

11.3 合理配置人员以成功完成研究 211

11.4 RCA研究的阶段 212

11.4.1 阶段一:事件确定 213

11.4.2 阶段二:数据收集 216

11.4.3 阶段三:数据分析与评估 218

11.4.4 阶段四:纠正操作 222

11.4.5 执行纵向分析 223

11.4.6 阶段五:通知与应用 224

11.4.7 阶段六:遵循、测量和建议 225

11.5 根本原因分析的好处 227

11.6 根本原因分析的风险 228

11.7 小结 229

第Ⅳ部分 缺陷预防技术 233

第12章 采用过程 233

12.1 理解传统的开发过程 235

12.2 实施敏捷过程 236

12.2.1 需求管理 237

12.2.2 项目计划 237

12.2.3 项目跟踪与监督 238

12.2.4 软件质量保证 239

12.2.5 软件配置管理 240

12.3 Scrum 240

12.4 个体软件过程 241

12.5 团队软件过程 244

12.6 鼓励采用创新性的实践方式 244

12.7 部署一体化过程 245

12.8 小结 246

第13章 FMEA、FTA与故障建模 248

13.1 故障模式和效果分析 249

13.2 实施FMEA 250

13.2.1 预备知识 250

13.2.2 程序 251

13.2.3 FMEA小结 262

13.3 故障树分析 263

13.4 实施FTA 264

13.4.1 预备知识 265

13.4.2 程序 265

13.4.3 故障树开发过程 269

13.4.4 故障树小结 275

13.5 故障建模:结合FMEA和FTA 275

13.5.1 故障建模 276

13.5.2 对比威胁建模与故障建模 277

13.6 小结 277

第14章 预防标签 279

14.1 预防标签如何工作 282

14.2 在整个生产周期中使用预防标签 284

14.2.1 编写高质量的预防标签 284

14.2.2 谁可以推动预防技术 284

14.2.3 寻找“缺陷引入”行为的样式 287

14.3 实施预防标签计划 287

14.3.1 确定目标 288

14.3.2 确定进度跟踪和交流方法 288

14.3.3 确定存储预防数据的位置 288

14.3.4 为预防相关工作提供激励机制 288

14.3.5 确保有足够的分析人员 289

14.3.6 定期报告并进行更改测量 289

14.4 对预防标签数据采取行动 289

14.4.1 对预防技术进行分类 290

14.4.2 深入分析 292

14.5 使用预防标签的好处 292

14.5.1 帮助个人转向全局考虑 293

14.5.2 预防技术和知识易于共享 293

14.5.3 预防数据与发现和修复数据存储在一起 293

14.5.4 提供用于过程改进的反馈机制 293

14.5.5 简化数据收集 293

14.5.6 可用于所有阶段 294

14.6 使用预防标签的风险 294

14.6.1 变为一个指责平台 294

14.6.2 面对有偏差的数据 294

14.6.3 容易过分重视或反应过度 294

14.6.4 需要编译与分析 295

14.6.5 预防方法可能过于笼统或者过于具体 295

14.7 小结 295

第Ⅴ部分 预防文化 299

第15章 方案投票 299

15.1 应用大数定律 300

15.2 利用方案投票来帮助预防缺陷 301

15.3 理解方案投票流程 303

15.3.1 创建功能说明文件 304

15.3.2 编写高质量的方案 305

15.3.3 对方案进行分类 305

15.3.4 了解投票人员都是哪些人 306

15.4 实施方案投票计划 307

15.4.1 了解适当的项目阶段 307

15.4.2 了解产品 308

15.4.3 开发体验树 308

15.4.4 为反馈设定明确目标 309

15.4.5 为方案建立文档以及制订方案 309

15.4.6 征集用户制订的方案 311

15.4.7 理解用户群 312

15.4.8 获取反馈 313

15.4.9 启动引导项目 314

15.4.10 部署投票项目 315

15.4.11 保持项目的活力 316

15.4.12 报告结果 316

15.4.13 分析结果 317

15.4.14 鼓励投票者持续参与 318

15.4.15 将结果提交给支持团队 319

15.4.16 采取行动 321

15.5 方案投票的好处 323

15.5.1 简化数据收集 323

15.5.2 能够收集涉及大范围功能和用户的大量数据 323

15.5.3 适用于项目周期的所有阶段 324

15.6 方案投票的风险 325

15.6.1 投票结果受投票人群构成的影响 325

15.6.2 投票结果仅提供了用户意见的概要信息 325

15.6.3 不完整的方案选择可能会使结果产生偏差 326

15.6.4 设计不佳的方案可能会使结果产生偏差 326

15.7 小结 327

15.8 推荐阅读资料 327

第16章 创建一种质量文化 328

16.1 评价您的现有文化 329

16.1.1 常见的文化缺陷 330

16.1.2 用于检测设计不当的量度 332

16.2 改进您的文化 333

16.3 小结 338

第17章 在上游阶段提高质量 339

17.1 质量与客户导向是相互联系的 340

17.2 将开发过程理解为一系列转换 341

17.3 避免阻碍上游质量的提高 344

17.3.1 测试不会提高质量 344

17.3.2 质量是不可见的 344

17.3.3 重功能,轻质量 345

17.3.4 工程态度妨碍了注重质量的文化 346

17.3.5 任务和团队的短视妨碍了全局观 346

17.3.6 团队回避适当行为 347

17.3.7 价值和奖励没有促进质量的提高 348

17.4 缺陷具有不同风险 349

17.5 查明下游质量不佳的原因 350

17.6 未来产品开发的模型 351

17.6.1 开发工作以客户为导向 352

17.6.2 产品信息是可执行的 354

17.6.3 客户方案被移向上游 355

17.6.4 测试过程和测试生成被自动化 355

17.6.5 静态测试普遍深入 356

17.6.6 开发过程被修改 357

17.6.7 在组织、角色和职业生涯中所导致的变化 358

17.7 小结 359

第18章 回报、动机和激励 360

18.1 应用激励技巧 361

18.1.1 消除“抑制激励”的因素 362

18.1.2 为缺陷预防工作设立SMART目标 362

18.1.3 衡量在缺陷预防工作上花费的时间和精力 363

18.1.4 确保领导者行为体现了对缺陷预防工作的重视 363

18.1.5 创造缺陷预防的文化 363

18.1.6 使组织目标与缺陷预防工作保持一致 364

18.1.7 在设计组织进程时,要考虑到缺陷预防 364

18.1.8 建立奖励机制,鼓励员工发表不同观点 365

18.2 激励——不只是金钱奖励 365

18.2.1 庆祝成功 366

18.2.2 使用游戏和竞赛 366

18.3 理解个人的动机 366

18.4 明白什么是成功 368

18.5 衡量成功 368

18.6 小结 369

第19章 知识管理与交流 370

19.1 交流不畅所产生的问题 371

19.1.1 孤立知识 372

19.1.2 知识传播不足 372

19.1.3 不能找出最佳实践 373

19.1.4 缺乏向上交流 373

19.2 交流方法 373

19.3 利用规模优势 374

19.3.1 优秀交流模型的特性 374

19.3.2 分类法 375

19.3.3 有机的专家系统 375

19.3.4 预防标签 377

19.3.5 方案投票 378

19.4 小结 378

第20章 融为一体 379

20.1 了解标准与约定 380

20.1.1 火车、汽车和PF 381

20.1.2 公共结果标准 382

20.2 各司其职 383

20.2.1 质量保证 383

20.2.2 代码开发 388

20.2.3 项目管理 394

20.3 小结 397