第Ⅰ部分 软件过程改进方法论 3
第1章 绪论 3
1.1软件生产过程的变迁 3
1.2硬件与软件的故障特性对比 4
1.3软硬件的开发过程比较 5
1.4软件质量观点 7
1.4.1先验论的质量观 7
1.4.2用户的质量观 8
1.4.3基于产品的质量观 8
1.4.4基于价值的质量观 9
1.4.5基于过程的质量观 9
1.5传统工业化生产中的产品质量控制 10
1.5.1 Juran的质量三部曲 10
1.5.2 Deming的十四点 11
1.5.3六西格玛方法 13
1.5.4 Crosby的质量成熟度表 13
1.6软件过程改进的起源 14
1.7总结 15
思考题 15
参考资料 15
第2章 软件开发过程 17
2.1企业生产与组织方式 17
2.1.1企业结构 18
2.1.2产品生产流程 18
2.1.3生产检查与质量控制 19
2.2软件过程模型 20
2.2.1瀑布模型 20
2.2.2迭代模型 21
2.2.3面向对象模型 23
2.2.4微软的同步与稳定模型 24
2.2.5 V-模型 25
2.2.6各种模型的比较 25
2.3过程的体系结构 26
2.3.1过程模型的表示 28
2.3.2复杂的过程模型的表示 29
2.4软件过程自动化问题 30
2.5软件过程与其他工业过程的对比 30
2.6软件开发过程的特性 32
2.6.1可视性 32
2.6.2可预测性 32
2.6.3文档化 33
2.6.4标准化 33
2.6.5可审计 33
2.6.6多样化 33
2.6.7简单性(复杂性) 33
2.6.8可剪裁性 34
2.6.9一致性 34
2.6.10可追溯性 34
2.7总结 34
思考题 34
参考资料 35
第3章 软件过程度量 37
3.1企业的商业目标 37
3.2过程度量的目的 37
3.3统计过程控制 38
3.4项目挣值度量方法 38
3.5度量指标开发方法 39
3.5.1标题法 39
3.5.2符合SMART标准的方法 40
3.5.3问卷调查法 40
3.5.4头脑风暴法 40
3.5.5结构树法 41
3.5.6流程图识别法 41
3.5.7GQM方法 42
3.5.8度量指标评估确认 43
3.6绩效目标度量模型 43
3.7目标驱动的度量 45
3.7.1目标驱动的管理体系 45
3.7.2目标驱动的软件过程度量 46
3.7.3将商业标分解为软件过程 48
3.8总结 50
思考题 50
参考资料 50
第Ⅱ 部分SW-CMM与CMMI模型 55
第4章SW-CMM模型 55
4.1SW-CMM模型的分级结构 55
4.2CMM各等级的具体特征 56
4.2.1初始级 57
4.2.2可重复级 57
4.2.3已定义级 58
4.2.4定量管理级 58
4.2.5优化级 59
4.3等级可视性和可预性讨论 59
4.3.1等级1 59
4.3.2等级2 60
4.3.3等级3 61
4.3.4等级4 62
4.3.5等级5 63
4.4 CMM的结构 64
4.5 CMM的关键过程域 64
4.5.1关键过程域描述举例 66
4.5.2共同特征的表述 67
4.5.3关键实践的表述 67
4.5.4目标的描述 68
4.6 SW-CMM的应用 69
4.6.1模型的基本用途 69
4.6.2软件评估和评估过程 69
4.7GJB 5000及其应用 71
4.8CMM与ISO 9000 71
4.9总结 74
思考题 74
参考资料 74
第5章 可重复性管理 76
5.1需求管理 76
5.1.1需求的获取过程 77
5.1.2需求管理的目标 78
5.1.3需求与项目的可重复性 78
5.2项目策划 79
5.2.1策划的目的和目标 79
5.2.2项目计划的开发过程 79
5.2.3项目策划中的问题 80
5.3项目跟踪与监督 81
5.3.1项目跟踪与监督的作用和目的 81
5.3.2跟踪的准确性 81
5.4软件质量保证 82
5.4.1建立SQA的需要 82
5.4.2软件质量保证的目的 83
5.4.3对SQA的误解 83
5.4.4SQA责任和人员培养 84
5.5软件配置管理 84
5.5.1建立SCM的需要 85
5.5.2实现SCM的关键 86
5.5.3SCM的流程 87
5.5.4配置管理的颗粒度 88
5.5.5SCM对共性软件产品的推动作用 88
5.6总结 89
思考题 89
参考资料 89
第6章 标准化和一致性管理 91
6.1建立标准软件过程的必要性 91
6.2软件标准的建立和剪裁 92
6.2.1标准的建立 92
6.2.2标准的裁缝 94
6.2.3标准可剪裁性的例子 95
6.3洛克希德·马丁的标准建立 96
6.4PDB与文档库的建立 97
6.4.1PDB的建立和维护 97
6.4.2文档库 98
6.5SEPG组的作用 99
6.6全面管理与工程实施 99
6.6.1集成软件管理 99
6.6.2组间协调 101
6.6.3软件产品工程 102
6.6.4同行评审 103
6.7总结 105
思考题 106
参考资料 106
第7章 定量管理 107
7.1过程的定量管理 107
7.2数据采集和PCB的建立 109
7.2.1数据采集工作的任务 109
7.2.2软件过程数据的采集细节 110
7.2.3采集数据的检查和确认 111
7.2.4数据的保存与存取 112
7.2.5采集工作与项目过程的集成 113
7.2.6过程能力基线的建立 114
7.3软件质量管理 116
7.3.1软件质量因素分解 116
7.3.2软件质量计划指标 118
7.3.3软件质量的跟踪和控制 120
7.4总结 120
思考题 120
参考资料 121
第8章 缺陷预防与优化 122
8.1软件缺陷预防的系统性 122
8.1.1缺陷预防与救死扶伤 122
8.1.2构造闭环 124
8.1.3缺陷的分级预防 124
8.1.4举一反三 125
8.2常用的缺陷预防方法 125
8.2.1缺陷预防过程(DPP) 126
8.2.2缺陷趋势分析法 126
8.2.3EDA分析 127
8.2.4过程能力基线缺陷预防法 128
8.3FRACAS与缺陷预防 129
8.3.1FRACAS的基本过程 129
8.3.2FRACAS的起源 130
8.3.3建立FRACAS的目的 130
8.3.4 FRACAS的措施 131
8.3.5 FRACAS的应用方式 131
8.4过程优化与技术革新 134
8.4.1获得更改建议 134
8.4.2先导性试验 135
8.4.3组织范围内推广 136
8.5总结 137
思考题 137
参考资料 137
第9章CMMI模型 139
9.1为何要发展CMMI 139
9.2系统工程及其成熟度模型 140
9.2.1系统工程定义 140
9.2.2系统工程的过程模型 140
9.2.3系统工程过程标准的变迁 141
9.2.4系统工程成熟度模型 142
9.3从SW-CMM到CMMI的发展历程 143
9.4 CMMI的结构 146
9.4.1 CMMI的等级 146
9.4.2 CMMI的表述方式 146
9.4.3 CMMI成熟度等级的分解 147
9.5 CMMI的过程域 147
9.6使用CMMI的考虑 149
9.6.1考虑的因素 149
9.6.2针对IPPD的扩展 150
9.6.3针对采购能力的扩展 150
9.7 SW-CMM和CMMI过程域的映射关系 151
9.8 CMMI标准评估方法 153
9.9总结 154
思考题 154
参考资料 155
第Ⅲ部分 实践案例 159
第10章 载人航天工程中的统一软件过程 159
10.1面临的挑战 159
10.2初始阶段 159
10.2.1旧白皮书的推动作用 160
10.2.2蓝皮书的推动作用 160
10.3统一过程阶段 160
10.3.1白皮书的制定过程 161
10.3.2白皮书的宣讲和培训 162
10.4解决的问题 162
10.4.1名词的统一 163
10.4.2对瀑布模型之外的开发过程的支持 163
10.4.3软件安全等级、规模划分与管理实施 163
10.4.4软件开发文档的可剪裁性 164
10.4.5配置管理与完整性 165
10.4.6评审的定量化 165
10.4.7软件测试过程和准则 166
10.4.8软件设计和编程的规范化 166
10.4.9软件的验收、移交和保障 166
10.4.10研发团队管理和技术团队的体制建设及管理 166
10.5项目过程的定义 167
10.6贯彻与执行阶段 168
10.7直接目标和实施效果分析 168
10.8软件工程化的战略目标和过程改进的路线图 170
10.8.1载人航天软件工程化的战略目标 170
10.8.2白皮书与CMM的对比分析 170
10.8.3建立与工程情况相适应的能力成熟度模型 171
10.9总结 173
思考题 173
参考资料 173
第11章 软件外包企业的问题分析与改进 175
11.1外包企业的现状 175
11.2 CMMI对外包企业的适用性 176
11.3企业背景与工作流程 176
11.4外包工程中的问题 177
11.4.1需求理解和管理问题 177
11.4.2项目估算缺乏有效性 178
11.4.3项目监控力度不够 178
11.4.4缺少对编码规范和质量的控制 178
11.4.5设计与编码脱节 178
11.4.6缺少必需的集成过程 178
11.4.7评审缺乏有效性 178
11.4.8功能测试缺乏有效性 179
11.5与CMMI过程域的映射表 179
11.6需求管理改进 179
11.7项目估算改进 181
11.7.1建立并维护工作产品和任务属性的估计 181
11.7.2确定计划工作的范围 184
11.7.3工作量和成本的估计 185
11.8项目监控改进 186
11.9验证和确认的改进 187
11.10技术解决方案的改进 187
11.11产品集成的改进 188
11.12总结 188
思考题 188
参考资料 188
第12章 软件外包企业的过程改进实施 190
12.1数据采集 190
12.1.1项目级数据的收集 190
12.1.2组织级的度量数据 190
12.1.3数据采集策略与分析项 190
12.2过程的稳定和改进 192
12.2.1过程变异特性 192
12.2.2控制图的规范表示 192
12.2.3特殊变异的检测 192
12.2.4稳定过程 195
12.2.5利用控制图改进过程 196
12.3过程改进前后项目性能的定量对比 196
12.3.1需求稳定性对比 197
12.3.2各阶段缺陷注入率对比 197
12.3.3缺陷密度对比 197
12.3.4缺陷排除率分析 197
12.3.5工作量偏差与工期偏差 198
12.3.6正负质量成本对比 198
12.3.7风险控制能力分析 199
12.3.8估算偏差对比 199
12.3.9生产率与文档评审效率 199
12.4改进效果分析 200
12.4.1客户满意度 200
12.4.2需求管理的情况 201
12.4.3项目监控情况 201
12.4.4系统集成活动 201
12.4.5验证和确认 202
12.5改进效果的总结 203
思考题 206
参考资料 206
第13章 某通信软件企业的过程量化 207
13.1引言 207
13.2度量体系的构造 207
13.2.1度量元构造示例 208
13.2.2度量体系的构造 209
13.3项目的估计与量化目标 211
13.3.1专家估计法 211
13.3.2 UNIBSS项目的规模和工作量估计 213
13.3.3项目量化目标的确立 214
13.4项目数据收集与分析活动 214
13.4.1项目组成员的活动 214
13.4.2项目经理的活动 215
13.4.3配置管理员的活动 216
13.4.4项目QA人员的活动 217
13.5项目过程性能控制和纠偏活动 218
13.6项目结束时的活动 220
13.7数据度量元的定义及应用 220
13.7.1测试发现的缺陷密度度量 220
13.7.2缺陷数与缺陷清除率的度量 221
13.7.3产品开发生产率度量 223
13.7.4产品开发各阶段工作量分布度量 224
13.7.5进度和成本度量 225
13.7.6里程碑差异度量 227
13.7.7代码评审的度量 228
13.8总结 230
思考题 230
参考资料 231
第14章 软件开发和集成企业过程改进战略实施 232
14.1企业背景和问题 232
14.2IDEAL模型 233
14.3过程改进与企业战略目标的融合 234
14.4组织级保障体系的建立 235
14.5软件过程模型框架及流程定义 235
14.5.1软件生产周期、过程和角色 235
14.5.2软件过程模型框架 239
14.5.3流程定义 240
14.6度量指标体系的建立 241
14.6.1度量指标开发工作流程 241
14.6.2度量指标开发 242
14.7定量生产及过程改进模型 251
14.7.1定量生产过程模型 251
14.7.2目标驱动定量过程改进模型 252
14.7.3目标驱动与绩效考核的融合 254
14.8 工具的开发与使用 254
14.9 定期评估与改进 255
思考题 255
参考资料 255
第15章 软件开发和集成企业过程改进战术实施 256
15.1数据收集与度量分析 256
15.1.1需求管理的度量 256
15.1.2 项目规模度量 258
15.1.3 项目进度度量 259
15.1.4 工作量度量 261
15.1.5 项目风险度量 262
15.1.6 过程符合性度量 263
15.1.7 项目验证和确认过程度量 264
15.2过程库(PDB)建立与运用 272
15.3过程改进实施总结 274
15.3.1实施效果 274
15.3.2实施中的问题与解决 275
15.3.3学到的经验 275
思考题 276
参考资料 276
第16章 电子设备产品生产企业的流程再造 277
16.1企业背景和目标 277
16.2问题与发现 278
16.3与CMMI 3的差异分析 280
16.4过程定义 280
16.5组织级标准化过程的建立 282
16.5.1组织结构定义 283
16.5.2产品开发团队架构定义 284
16.5.3项目类型与流程定义 286
16.5.4产品生命周期定义 286
16.5.5研发项目生命周期定义 287
16.6项目级管理流程定义 288
16.6.1项目启动流程 288
16.6.2项目计划的制定 289
16.6.3项目流程的裁剪方法 289
16.6.4任务分解 290
16.6.5项目估计 291
思考题 294
参考资料 294
第17章 电子设备产品生产企业的改进实施 295
17.1需求工程 295
17.2配置管理 297
17.2.1识别配置项 297
17.2.2建立配置库 298
17.2.3变更管理 299
17.2.4配置状态报告 300
17.3评审工作 300
17.4测试工作 303
17.5改进的实施 304
17.5.1准备实施 304
17.5.2试点工作 305
17.5.3推行中的问题分析与解决 306
17.5.4改进建议的收集 311
17.6实施效果分析 311
思考题 313
参考资料 313
第18章FRACAS在CMMI五级环境下的应用 314
18.1问题提出 314
18.1.1原有的缺陷预防方式 314
18.1.2存在的问题分析 316
18.2应用FRACAS的目标 317
18.3FRACAS在WXX产品部的推行 317
18.3.1 WXX产品部的产品缺陷分析 317
18.3.2 FRACAS的推行过程 318
18.4角色及职责 319
18.4.1推行组 321
18.4.2运作组 321
18.5WXX产品部的改进实施 322
18.5.1失效模式分析过程 322
18.5.2经验共享过程 324
18.5.3建立FRACAS知识经验库 325
18.5.4商用问题清零 326
18.5.5质量回溯 328
18.5.6 TOP N改进 330
18.6针对新项目的缺陷预防 333
18.7应用效果评估 333
思考题 334
参考资料 334
附录 缩略语汇总 339
附录A SW-CMM关键过程域缩写的中英文对照 339
附录B CMMI关键域缩写的中英文对照 340
附录C 缩写语对照表 341