第1章 软件质量保证 1
1.1 引言 1
1.2 质量 1
1.3 软件 3
1.4 软件质量 3
1.5 软件质量保证 4
1.6 软件质量控制 6
1.7 软件质量人员认证 7
1.8 软件可靠性 8
1.9 软件可维护性 9
1.10 验证和确认 10
1.11 测试与评价 11
1.12 软件过程改进 12
1.13 ISO 9000软件认证 14
1.14 全面质量管理 16
参考文献 18
第2章 软件质量保证在各类软件开发中的作用 21
2.1 引言 21
2.2 SQA与操作系统软件 23
2.3 SQA与关键任务软件 24
2.4 SQA与实时系统软件 27
2.5 SQA和交互式软件 29
2.5.1 交互式软件的开发人员 30
2.5.2 交互式软件的用户 31
2.6 SQA与商用软件 32
2.7.1 Y2K和遗留系统 34
2.7 商业过程再工程和Y2K 34
2.7.2 SQA与Y2K的商业过程再工程 35
2.8 SQA与软件配置管理 37
2.9 SQA与软件维护 38
2.10 SQA和IV V 39
2.11 小结 39
参考文献 40
通用参考文献 41
第3章 质量专家谈软件质量 43
3.1 引言 43
3.2 Kaoru Ishikawa 44
3.3 Joseph M.Juran 46
3.5 W.Edwards Derning 49
3.4 Yoji Akao 49
3.6 Genichi Taguchi 53
3.7 Shigeo Shingo 54
3.8 Philip Crosby 55
3.9 小结 58
参考文献 59
第4章 软件质量保证的标准化 63
4.1 引言 63
4.2 历史回顾 64
4.3 商业标准 66
4.3.1 MIL-STD-498 66
4.3.2 IEEE-STD-1074 66
4.3.3 ISO/IEC 12207 67
4.3.4 498/12207 69
4.3.5 498/CMM 70
4.4 要求的比较 71
4.5 小结 73
参考文献 73
通用参考文献 74
附录:标准表格 76
第5章 软件质量计划组织 81
5.1 引言 81
5.2 SQP概念 82
5.2.1 建立需求 83
5.2.2 建立方法学 84
5.2.3 过程和产品质量评价 85
5.3 SQP的组织特性 87
5.3.1 SQP的组织关系 88
5.3.2 SQP功能与项目组织结构对应 91
5.3.3 软件质量计划实施实例 94
5.4 小结 98
参考文献 98
第6章 有效实施SQA的人员需求 101
6.1 引言 101
6.2 面对挑战 102
6.3 组织结构 103
6.4 确定SQA的人员需求 104
6.4.1 步骤1:确定团队 104
6.4.2 步骤2:将过程流程化 105
6.4.4 步骤4:将岗位产品化 106
6.4.5 步骤5:提出解决方案 106
6.4.6 步骤6:创建实施计划 106
6.4.3 步骤3:定义岗位需求 106
6.4.7 步骤7:获得管理层认可 107
6.4.8 步骤8:实施解决方案 107
6.4.9 步骤9:监督解决方案 107
6.4.10 步骤10:检验并报告结果 107
6.5 优秀SQA工程师的特征 107
6.6 培训硬件QA工程师 109
6.7 培训软件工程师 109
6.8 轮换软件工程师 110
6.10 招募SQA雇员 111
6.9 新的大学毕业生 111
6.11 对SQA工程人员的期望 113
6.12 发展职业生涯规划 113
6.13 建议 114
参考文献 114
通用参考文献 115
附录:典型的与软件质量相关的工作描述 115
第7章 美国质量协会软件质量工程师认证大纲 119
7.1 ASQ背景介绍 119
7.2 ASQ认证大纲 120
7.2.1 什么是认证 120
7.2.4 成为一名CSQE需要什么资格条件 121
7.2.3 什么是CSQE 121
7.2.2 为什么要通过认证 121
7.3 认证考试是如何开发出来的 122
7.3.1 A.提议新认证 122
7.3.2 B.工作分析 122
7.3.3 C.批准认证 124
7.3.4 D.创建考试 124
7.3.5 E.初期考试开发 125
7.3.6 F.考试管理 125
7.3.7 G.考试的可持续性 125
7.4 如何准备考试 126
7.5 知识体系是什么 126
7.6 ASQ软件质量工程师认证参考书目 134
7.7 重新认证 135
参考文献 136
第8章 软件质量的成本 137
8.1 引言 137
8.2 关于软件质量成本的一些概念 137
8.2.1 可视性 138
8.2.2 质量的本质 138
8.2.3 为什么软件质量会有成本 138
8.2.4 活动评估 139
8.3 输入 139
8.3.1 数据 139
8.3.5 资源 140
8.3.4 培训 140
8.3.2 材料 140
8.3.3 客户需要 140
8.3.6 规程 141
8.3.7 标准 141
8.4 增值活动 141
8.5 输出 141
8.5.1 产品 141
8.5.2 服务 142
8.5.3 信息 142
8.6 质量的总成本 142
8.7 活动分析 143
8.9.1 非质量成本 147
8.9.2 质量成本 147
8.9 任务要素 147
8.8 焦点 147
8.10 可能的错误使用 149
8.11 生产率 150
8.12 主要成本组成 150
8.13 小结 152
参考文献 152
第9章 审查——前期软件质量保证技术 153
9.1 引言 153
9.2 审查的过程 153
9.2.1 主要目标 153
9.2.2 辅助目标 154
9.2.3 审查阶段 154
9.2.4 审查的类型 156
9.2.6 审查初始化 159
9.2.5 审查缺陷类型与定义 159
9.2.7 审查前提 160
9.2.8 审查组 160
9.3 吸取的教训 163
9.3.1 心理学因素 163
9.3.2 审查要客观 164
9.3.3 审查者的限制 164
9.3.4 数据的收集要一致 164
9.5 规约审查 165
9.5.1 软件规约的问题 165
9.4 需求审查 165
9.5.2 记录审查 166
9.5.3 结构化语言的优点 166
9.6 文档审查 167
9.7 审查度量 168
9.7.1 目标—问题—度量 168
9.7.2 九种度量 169
9.7.3 数据项 171
9.8 国家软件质量实验 172
9.9 8个案例 173
9.9.1 AT T贝尔实验室 173
9.9.2 贝尔北方研究院 173
9.9.4 大型卫星通信系统 174
9.9.5 惠普公司 174
9.9.3 General Experience 174
9.9.6 雷神公司 175
9.9.7 Litton公司 176
9.9.8 Bull HN信息系统公司 177
参考文献 177
第10章 软件配置管理 179
10.1 下雨了——雨伞在哪里 179
10.2 软件配置管理概览 181
10.3 配置管理的现实考虑 185
10.3.1 管理者的承诺 186
10.3.2 SCM人员组成 188
10.3.3 建立CCB 189
10.3.6 测试周期中的CCB的角色 192
10.3.5 SCM的必要性 192
10.3.4 验收测试中的SCM 192
10.3.7 审计的理由和实践 196
10.3.8 避免大量的“文书工作” 198
10.3.9 在CM活动间分配资源 200
10.4 小结 201
参考文献 202
第11章 软件质量保证中的Pareto原理 203
11.1 引言 203
11.2 历史背景 204
11.3 WWMCCS——经典实例之一 205
11.3.1 人力资源 205
11.3.2 合同成本 207
11.3.3 版本 208
11.3.4 职责 209
11.4 联邦储备银行——经典实例之二 210
11.5 缺陷识别 214
11.6 审查 224
11.7 统计技术 226
11.8 Pareto图表比较 229
11.9 小结 230
参考文献 232
通用参考文献 233
第12章 理解能力成熟度模型和SQA在软件开发成熟度中的作用 235
12.1 介绍CMM 235
12.2 作为持续过程改进框架的CMM的进化 235
12.3 采用CMM的好处 236
12.4 CMM的结构 237
12.5 理解CMM中的软件质量保证 240
12.6 成熟中的QA组织 246
参考文献 249
通用参考文献 250
第13章 SEI CMM5级:波音太空运输系统软件 251
13.1 引言 251
13.1.1 波音STS组织 251
13.1.2 过程焦点 253
13.1.3 评估过程 253
13.2 STS过程改进历史 253
13.2.1 过程定义和波音软件标准 253
13.2.2 过程管理 254
13.3 挑战 255
13.2.3 CQI技术 255
13.2.4 SEI CMM框架 255
13.3.1 管理层支持 256
13.3.2 利益实现 256
13.3.3 SEPG 256
13.3.4 文化变革 258
13.3.5 过程知识 259
13.3.6 获取过程 259
13.3.7 过程证据 260
13.3.8 团队环境 260
13.3.9 解释CMM4级和CMM5级 261
13.3.10 启动项目实施CMM 262
13.3.11 更多挑战 262
13.4.1 软件缺陷 263
13.3.12 挑战回顾 263
13.4 过程改进结果 263
13.4.2 成本/收益数据 265
13.4.3 软件生产率 265
13.5 客户和员工满意度 266
13.5.1 客户满意度 267
13.5.2 员工满意度 267
13.6 未来商业潜质 268
13.6.1 能力基线 269
13.6.2 对SDCE和SCE的影响 269
13.6.3 客户期望 269
参考文献 270
13.7 小结 270
第14章 软件质量保证CASE工具 271
14.1 引言 271
14.2 CASE工具的使用环境 272
14.2.1 什么是CASE 272
14.2.2 软件工程环境 272
14.3 CASE案例 273
14.3.1 CASE的好处 273
14.3.2 与CASE相关的问题 273
14.3.3 在SQA中应用CASE工具的好处 274
14.4 工具的适用性 276
14.5.1 专业组织 277
14.5 到哪里发现工具 277
14.5.2 会议和研讨会 279
14.5.3 杂志 279
14.5.4 因特网 283
14.5.5 供应商 285
14.6 展望 285
参考文献 286
通用参考文献 287
第15章 软件质量保证的度量 289
15.1 引言 289
15.1.1 软件质量调查 290
15.1.2 数据采集 291
15.2 软件质量度量方法学 292
15.1.3 度量的有效性 292
15.2.1 IEEE 293
15.2.2 建立软件质量需求 293
15.2.3 识别软件质量度量 293
15.2.4 实施软件质量度量 295
15.2.5 分析软件度量结果 295
15.2.6 确认软件质量度量 295
15.2.7 基于过程 295
15.3 综合性的软件质量度量 296
15.4 软件质量指标 301
15.5 应用实施 302
15.5.1 惠普 302
15.5.2 量化的SQA 303
15.5.3 实用的质量度量 304
15.5.4 MIL/SOFTQUAL 305
15.5.5 技术性能测量 305
15.5.6 有效性测量 308
15.5.7 个人软件过程 308
15.5.8 AT T和Bellcore 308
15.5.9 测量软件过程改进 309
15.5.10 预测软件质量 311
15.5.11 微软公司 313
15.6 小结 313
参考文献 315
第16章 软件质量保证在关键任务软件中的实际应用 319
16.1 关键任务软件的特殊问题 319
16.2 嵌入式关键任务软件 322
16.3 关键任务软件的特殊开发生命周期 323
16.4 SQA在关键任务软件中的角色 326
16.5 SQA在系统需求和系统设计阶段中的角色 332
16.6 SQA在关键软件的需求阶段 333
16.7 SQA在项层设计阶段 335
16.8 SQA在详细设计阶段 340
16.9 SQA在编码和单元测试阶段 346
16.10 SQA在软件集成和测试阶段 350
16.11 SQA在CSCI测试阶段 353
16.12 SQA在子系统和系统集成测试阶段的作用 357
16.13 软件的功能和物理配置审计 358
16.13.1 功能配置审计 358
16.13.2 物理配置审计 361
16.14 开发和操作测试 362
参考文献 365
通用参考文献 366
第17章 软件质量保证在商业软件中的实际应用 369
17.1 引言 369
17.2 商业软件的定义 369
17.3 商业部门的软件质量任务 370
17.4 商业软件与关键任务软件质量保证计划的比较——概述 371
17.5 软件质量保证计划实现体系 371
17.6 软件质量框架内的检测 372
17.7 实现商业软件质量保证计划——成功的关键 373
17.7.1 一般性框架 373
17.7.2 经验和提示 376
17.8.1 目标 378
17.8.2 建立——定义产品环境 378
17.8.3 方法——设置改进阶段 378
17.8 实现软件质量保证计划:问题、收益和经验教训 378
17.8.4 需要——为什么要改进软件质量过程 380
17.8.5 问题、收益和经验教训 381
17.9 其他的实际应用 391
17.9.1 自适应的质量和测试策略 391
17.9.2 过去项目的评审与经验教训总结 393
17.10 商业软件与关键任务软件质量保证计划——最后的比较 394
17.10.1 独有的特点 395
17.10.2 共同特点 395
17.12 小结 396
17.11 关于SEI CMM和ISO 9001 396
参考文献 397
通用参考文献 397
第18章 有效的信息服务质量保证方法 399
18.1 什么是质量保证 399
18.2 质量保证推动整个信息服务业质量的提高 411
18.2.1 如何管理——QAI方法的策略 412
18.2.2 I/S如何开展活动不断实现过程成熟的策略 414
18.2.3 QAI战术:需要管理的六类过程 416
18.3 作为测量科学的质量保证 417
18.3.1 应用测量来改进软件质量的范例 418
18.3.2 重要质量因素的识别过程 419
18.4 质量保证从概念到实现 424
18.4.1 将质量保证作为一个优先活动来定义和实施 425
18.4.2 质量保证经理的地位 426
18.4.3 厂商和用户的开放性沟通 426
18.4.4 质量保证的成长与成熟 426
通用参考文献 427
第19章 软件质量控制中的统计方法 429
19.1 质量控制 429
19.2 软件质量控制 431
19.3 质量编程 433
19.3.1 Ⅰ.建模 433
19.3.2 Ⅱ.需求规约 435
19.3.3 Ⅲ.并发的软件设计和测试设计 440
19.3.4 Ⅳ.软件实现 443
19.3.5 Ⅴ.测试和集成 443
19.3.6 Ⅵ.软件验收 444
19.4 质量编程实践经验 444
19.4.1 Ⅰ.应用和工具经验 444
19.4.2 Ⅱ.实践示例 446
19.5 软件工程项目管理中的一些技术问题的建议解决方案 459
19.6 高级管理者应该做什么 459
19.7 小结 460
参考文献 460
通用参考文献 462
20.1 引言 463
20.2 回顾与展望 463
第20章 软件可靠性管理 463
20.3 软件可靠性测量的根本要求 465
20.3.1 原始数据 465
20.3.2 灵活性 466
20.3.3 图形 466
20.4 优点 466
20.5 标准化 467
20.6 政府的态度 469
20.7 应用 469
20.8 选择测量指标 469
20.9 优化可靠性 470
20.10 可靠性管理 470
20.11 矩阵控制 471
参考文献 472
20.12 小结 472
附录:软件可靠性测量样本 475
第21章 软件安全性及其与软件质量保证的关系 481
21.1 引言 481
21.2 软件导致的事故 481
21.3 软件安全性术语详解 482
21.4 标准、指南和法规 483
21.5 如何开发软件安全保证计划 483
21.6 组织要求和职责 485
21.7 隐患规避和缓解技术 486
21.8 推荐 487
参考文献 487
附录 缩略语 491