目 录 3
第Ⅰ部分为软件质量保障布景 3
第1章质量竞赛 3
1.1不确定的软件质量 4
1.1.1给质量下定义 4
1.1.2质量和客观努力 6
1.1.3软件的特性 8
1.1.4质量保障:一项独特的工作 9
1.2施加到质量上的各种压力 10
1.2.1预算 11
1.2.3功能 12
1.2.2时间 12
1.2.4质量 13
1.3质量层次 13
1.3.1数据质量 15
1.3.2代码质量 15
1.3.3模型质量 15
1.3.4过程质量 16
1.3.5管理质量 16
1.3.6质量环境 17
1.4质量软件过程 18
1.4.1过程的组成 18
1.4.2例子——一个烤糕点过程 19
1.4.3过程关系的正交性 19
1.4.4软件背景下的过程 21
1.4.5软件过程 22
1.4.6质量过程 22
1.4.7质量保障和测试:请不要混淆它们 24
1.5建模与质量 25
1.5.1建模的目的 25
1.5.2有关建模的警示 26
1.5.3理解软件中的建模空间 27
1.5.4问题空间 28
1.5.5解决方案空间 29
1.5.6背景空间 30
1.6UML和质量 31
1.6.1UML简史 31
1.6.2 UML的质量与采用UML的质量 33
1.6.3元模型和质量 34
1.6.4采用UML的质量 35
1.6.5可视化呈现的质量 36
1.6.6规格说明的质量 37
1.6.7构建的质量 38
1.6.8文档的质量 38
1.6.9 UML图和它们在建模空间中的重要性的总结 39
1.7语法、语义和美学上的质量保障技术 40
1.7.1模型语法质量 41
1.7.2模型语义质量 42
1.7.3模型美学质量 43
1.8软件过程的质量保障:必要性,充分性和可塑性 45
1.8.2过程质量的充分性 46
1.8.1过程质量的必要性 46
1.8.3过程质量的可塑性 47
1.9复用,模式和质量 47
1.9.1通过复用来提高产能 48
1.9.2复用专家知识和经验 48
1.9.3标准的应用 49
1.10质量和易用性 49
1.10.1易用性原则 50
1.10.2界面的易导航性 50
1.10.3 GUI设计和质量 51
1.11基于UML的项目类型 51
1.11.2 (和传统应片)集成类项目 53
1.11.1开发类项目 53
1.11.3软件包实施类项目(ERP,CRMS) 55
1.11.4外包类项目 55
1.11.5数据仓库和转换类项目 56
1.11.6教育类项目 57
1.12基于UML的项目——大小和可扩展性 58
1.12.1 小型项目 59
1.12.2中型项目 61
1.12.3大型项目 61
1.13本章关键点回顾 63
1.14文献注解 64
1.15 常见问题解答(FAQs) 65
1.17参考资料 67
1.16练习 67
第Ⅱ部分为质量组织和制定软件过程 73
第2章质量环境:质量职能管理 73
2.1质量管理 73
2.1.1质量环境 73
2.1.2非技术管理 74
2.1.3过程和质量 75
2.2团队组织 77
2.2.1 问题空间的角色构成 78
2.2.2业务分析员 78
2.2.3用户 79
2.2.4最终用户 80
2.2.6问题空间中的原型创建者 81
2.2.5行业专家 81
2.2.7解决方案空间中的角色构成 82
2.2.8系统设计师 83
2.2.9数据建模员 83
2.2.10界面设计师 84
2.2.11程序员 84
2.2.12测试人员 85
2.2.13解决方案空间中的原型创建者 85
2.2.14背景空间中的角色构成 86
2.2.15系统架构师 86
2.2.16背景空间中的原型创建者 87
2.2.17数据库管理员 87
2.2.18公共角色 87
2.2.20指导委员会 88
2.2.19项目经理 88
2.2.22质量团队的角色构成 89
2.2.23质量经理 89
2.2.21业务主办方 89
2.2.24质量分析员 90
2.2.25过程工程师 91
2.2.26用户 91
2.2.27测试人员 92
2.3质量环境 92
2.3.1 E化因素和质量 92
2.3.2基于UML的项目所特有的软因素问题 94
2.3.3质量环境中的沟通 95
2.4.1四种项目团队模型 97
2.3.4远程工作 97
2.4项目社会学 97
2.4.2创建同源团队的最好方式 99
2.4.3扁平化金字塔 100
2.4.4人员和可复用性 102
2.4.5并行开发的团队 103
2.5软件项目中的相互影响分析 104
2.5.1相互影响分析的简史 105
2.5.2父母型、大人型和小孩型的自我状态 105
2.5.3生活定位 106
2.5.4游戏 108
2.5.6用之还是弃之 109
2.5.5面向对象项目中的游戏 109
2.5.7牛仔式编程 110
2.5.8和面粉 110
2.5.9会议症 111
2.5.10最后期限 111
2.6流行的质量技术 112
2.6.1走查 113
2.6.2检查 114
2.6.3评审 114
2.6.4审计 116
2.6.5检查清单 117
2.6.6交谈 118
2.6.7研讨会 120
2.7标准和质量 122
2.7.1标准的应用场合 122
2.7.2项目、机构和业界标准 124
2.8过程成熟度:CMM标准 126
2.8.1能力成熟度模型 126
2.8.2个人软件过程成熟度 129
2.8.3在基于UML的项目中应用CMM 129
2.9过程检查 130
2.9.1必要性检查 130
2.9.2充分性检查 131
2.9.3过程的可塑性检查 131
2.10.1项目组织计划 132
2.10.2质量计划 132
2.10计划类交付品 132
2.10.3测试计划 133
2.11文献注解 133
2.12常见问题解答(FAQs) 134
2.13练习 135
2.14参考资料 136
第3章质量过程体系架构 139
3.1过程中枢 140
3.1.1过程的三个维度 140
3.1.2过程的技术维度 141
3.1.3过程的方法维度 141
3.1.4过程的社会学维度 141
3.2.1描述过程元模型 142
3.2过程元模型 142
3.2.2过程要素 143
3.2.3过程中的角色元素 144
3.2.4过程中的活动元素 145
3.2.5过程中的任务元素 145
3.2.6过程中的交付品元素 146
3.2.7过程组件 146
3.2.8迭代 147
3.2.9将过程组件的元素放在一起:一个烤制过程 147
3.3质量软件过程 148
3.3.1软件过程 148
3.3.4过程成熟度 149
3.3.3过程的严格程度 149
3.3.2质量过程 149
3.3.5过程的可塑性 150
3.3.6过程的时间要求 150
3.4软件过程 150
3.4.1业务评估过程组件 150
3.4.2业务评估中的角色 151
3.4.3业务评估中的活动和任务 152
3.4.4业务评估的交付品 152
3.4.5有关业务评估的提示和建议 153
3.4.6项目管理过程组件 154
3.4.8项目管理中的活动和任务 155
3.4.9项目管理中的交付品 155
3.4.7项目管理中的角色 155
3.4.10项目管理的提示和建议 156
3.4.11过程配置组件 157
3.4.12过程配置中的角色 158
3.4.13过程配置中的活动和任务 158
3.4.14过程配置中的交付品 158
3.4.15过程配置的提示和建议 159
3.4.16需求建模过程组件 160
3.4.17需求建模中的角色 161
3.4.18需求建模中的活动和任务 161
3.4.19需求建模的交付品 162
3.4.20需求建模的提示和建议 162
3.4.21接口建模与设计过程组件 164
3.4.24接口建模中的交付品 165
3.4.22接口建模中的角色 165
3.4.23接口建模中的活动和任务 165
3.4.25接口建模的提示和建议 166
3.4.26系统设计过程组件 167
3.4.27系统设计中的角色 167
3.4.28系统设计中的活动和任务 168
3.4.29系统设计中的交付品 169
3.4.30系统设计的提示和建议 169
3.4.31持久化设计过程组件 170
3.4.32持久化设计中的角色 170
3.4.33持久化设计中的活动和任务 171
3.4.34持久化设计中的交付品 172
3.4.35持久化设计的提示和建议 172
3.4.37实现中的角色 173
3.4.36实现过程组件 173
3.4.38实现中的活动和任务 174
3.4.39实现中的交付品 174
3.4.40实现的提示和建议 175
3.4.41原型创建过程组件 177
3.4.42原型创建中的角色 178
3.4.43原型创建中的活动和任务 178
3.4.44原型创建中的交付品 179
3.4.45原型创建的提示和建议 179
3.4.46变更管理过程组件 180
3.4.47变更管理中的角色 180
3.4.49变更管理的交付品 181
3.4.48变更管理中的活动和任务 181
3.4.50变更管理的提示和建议 182
3.4.51企业架构过程组件 183
3.4.52企业架构中的角色 183
3.4.53企业架构中的活动和任务 184
3.4.54企业架构中的交付品 184
3.4.55企业架构的提示和建议 184
3.4.56系统架构过程组件 186
3.4.57系统架构中的角色 186
3.4.58系统架构中的活动和任务 187
3.4.59系统架构中的交付品 187
3.4.60系统架构的提示和建议 187
3.4.62部署中的角色 188
3.4.61部署过程组件 188
3.4.63部署中的活动和任务 189
3.4.64部署中的交付品 190
3.4.65部署的提示和建议 190
3.4.66培训过程组件 191
3.4.67培训中的角色 192
3.4.68培训中的活动和任务 192
3.4.69培训中的交付品 192
3.4.70培训的提示和建议 193
3.4.71复用过程组件 194
3.4.72复用中的角色 194
3.4.75复用的提示和建议 195
3.4.74复用的交付品 195
3.4.73复用的活动和任务 195
3.5质量过程 196
3.5.1质量管理过程组件 196
3.5.2质量管理中的角色 197
3.5.3质量管理中的活动和任务 197
3.5.4质量管理的交付品 198
3.5.5质量管理的提示和建议 198
3.5.6质量保障过程组件 199
3.5.7质量保障中的角色 199
3.5.8质量保障中的活动和任务 200
3.5.9质量保障的交付品 200
3.5.10质量保障的提示和建议 201
3.5.11质量控制过程组件 202
3.5.12质量控制中的角色 202
3.5.13质量控制中的活动和任务 203
3.5.14质量控制中的交付品 203
3.5.15质量控制的提示和建议 204
3.6文献注解 206
3.7 常见问题解答(FAQs) 206
3.8练习 207
3.9参考资料 207
第4章实施质量软件过程 209
4.1过程的配置 210
4.1.2螺旋式SDLC 214
4.1.1瀑布式SDLC 214
4.1.3喷泉式SDLC 215
4.2迭代、渐增和并行的开发过程 215
4.2.1为什么需要迭代和渐增 215
4.2.2初始迭代 218
4.2.3主要迭代 218
4.2.4最终迭代 220
4.2.5生命周期中的并行开发 220
4.2.6维护和持续进行的迭代工作 221
4.3软件过程的采纳 221
4.3.1查清楚当前的过程状态 222
4.3.2关键的指导型项目 222
4.3.5保持所有的CASE工具实现的独立性 223
4.3.3采纳点 223
4.3.4将UML从过程中剥离开来 223
4.3.6培训和指导 224
4.3.7过程的访问 224
4.4实施质量过程 225
4.4.1 在Lucky保险公司系统开发中创建迭代和渐增阶段 225
4.4.2迭代式的项目任务计划 227
4.4.3迭代式的项目管理工具 228
4.5贯穿过程始终的质量跟踪 228
4.5.1过程实施中的路线因素的重要性 228
4.5.2初始迭代结束时的质量活动 230
4.5.3主要迭代结束时的质量活动 231
4.5.4最终迭代结束时的质量活动 232
4.6常见问题解答(FAQs) 233
4.7练习 234
4.8参考资料 235
第5章基于UML的项目估算和度量 237
5.1软件项目中的估算和度量 237
5.1.1和质量有关的估算 238
5.1.2度量和估算 238
5.1.3技术维度的度量 239
5.1.4方法维度的度量 239
5.1.5社会学维度的度量 239
5.2项目度量和估算 240
5.2.1项目大小和类型 240
5.2.2项目时间、预算和人员要求 241
5.2.3项目估算中的注意事项 243
5.3过程的度量 244
5.3.1为什么要度量过程 244
5.3.2在部署工作中度量过程组件 245
5.3.3实施中的过程组件度量 246
5.3.4在每次迭代结束时修订项目估算 247
5.4质量度量 250
5.5度量软件的大小 251
5.5.1传统的软件度量 251
5.5.2另外一些软件度量 252
5.5.3面向对象的软件度量 252
5.6.1用例和用例图的大小和复杂性度量 253
5.6 UML交付品、图表和模型的度量 253
5.6.2类的大小和复杂性度量 254
5.6.3组件的度量 254
5.6.4测试度量指标 254
5.7将度量指标和估算用于Lucky保险系统项目 255
5.7.1考虑专门针对Lucky保险系统项目的度量和估算 255
5.7.2实施中的项目和过程度量 256
5.7.3为实施度量过程组件 256
5.7.4在Lucky保险系统中应用过程和项目度量 257
5.7.5计算Lucky保险系统的产能因子 258
5.7.6基于产能因子对后续的迭代估算做调整 260
5.8有关估算和度量的预言性陈述 261
5.9文献注解 262
5.10常见问题解答(FAQs) 263
5.11练习 263
5.12参考文献 264
第Ⅲ部分产品测试:质量控制 267
第6章软件产品的质量控制 267
6.1不同背景中的测试 267
6.2基于UML的项目中的测试方法 270
6.2.1黑盒测试 270
6.2.2白盒测试 271
6.2.3人工测试 272
6.2.4自动测试 273
6.2.6水平测试 274
6.2.7等价分割方法 274
6.2.5垂直测试 274
6.2.8边界值方法 276
6.3测试架构 276
6.3.1单元测试 277
6.3.2组件测试 278
6.3.3系统测试 278
6.3.4验收测试 279
6.3.5回归测试 279
6.3.6运行测试 280
6.3.7性能(压力和容量)测试 280
6.3.8安全性测试 280
6.4.1好的测试计划 281
6.4测试计划制订 281
6.3.9可扩展性测试 281
6.4.2分析测试中的风险 282
6.4.3测试环境 283
6.4.4测试资源 283
6.4.5开发环境 284
6.4.6测试环境 284
6.4.7测试日程 285
6.4.8测试轮次 286
6.4.9测试中的可复用性 286
6.5测试设计 287
6.5.1测试设计的说明 287
6.5.2测试设计的来源 288
6.5.3测试设计的格式 289
6.6.1测试用例的描述 290
6.6.2测试用例的设计 290
6.6测试用例 290
6.6.3测试用例的格式 291
6.6.4测试用例示例 292
6.6.5验证测试用例 294
6.6.6修改测试用例 294
6.7测试执行 294
6.7.1准备工作 295
6.7.2验收标准 295
6.7.3执行测试套具 296
6.8.1软件测试结果分类 297
6.8.2记录测试结果 297
6.8记录和分析测试结果 297
6.7.4记录测试结果 297
6.8.3结果分析 298
6.8.4报告 300
6.9文献注解 300
6.10常见问题解答(FAQs) 301
6.11练习 301
6.12参考文献 302
缩略语和重要术语 303
UML辅助软件工程工具 305
使用UML的过程工具 313
光盘内容 317
后记 319