第1章 软件工程介绍 1
1.1软件角色的演化 2
1.2软件 4
1.3软件特性的变化 6
1.4遗留软件 7
1.4.1遗留软件的质量 8
1.4.2软件演化 8
1.5软件神话 9
1.6小结 11
参考文献 11
习题与思考题 12
推荐读物与阅读信息 12
第一部分 软件过程 16
第2章 过程综述 16
2.1软件工程:一种层次化技术 17
2.2过程框架 18
2.3能力成熟度模型集成 22
2.4过程模式 25
2.5过程技术 27
2.6产品与过程 28
2.7小结 29
参考文献 29
习题与思考题 30
推荐读物与阅读信息 30
第3章 过程模型 32
3.1惯例过程模型 33
3.2瀑布模型 33
3.3增量过程模型 34
3.3.1增量模型 34
3.3.2 RAD模型 35
3.4演化过程模型 36
3.4.1原型开发 37
3.4.2螺旋模型 39
3.4.3协同开发模型 40
3.4.4演化过程模型的最终评述 41
3.5专用过程模型 42
3.5.1基于构件的开发 42
3.5.2形式化方法模型 43
3.5.3面向方面的软件开发 43
3.6统一过程 45
3.6.1简史 45
3.6.2统一过程的阶段 46
3.6.3统一过程工作产品 47
3.7小结 48
参考文献 49
习题与思考题 50
推荐读物与阅读信息 50
第4章 敏捷视角下的过程 52
4.1敏捷是什么 53
4.2敏捷过程是什么 54
4.2.1敏捷开发的立场 55
4.2.2人的因素 55
4.3敏捷过程模型 56
4.3.1极限编程 57
4.3.2自适应软件开发 60
4.3.3动态系统开发方法 62
4.3.4 Scrum 62
4.3.5 Crystal 64
4.3.6特征驱动开发 64
4.3.7敏捷建模 65
4.4小结 67
参考文献 67
习题与思考题 68
推荐读物与阅读信息 69
第二部分 软件工程实践 72
第5章 系统工程 72
5.1基于计算机的系统 73
5.2系统工程层次结构 74
5.2.1系统建模 75
5.2.2系统仿真 76
5.3业务过程工程概述 77
5.4产品工程概述 78
5.5系统建模 80
5.5.1 Hatley-Pirbhai建模 80
5.5.2 UML系统建模 82
5.6小结 84
参考文献 85
习题与思考题 85
推荐读物与阅读信息 86
第6章 需求工程 87
6.1连接设计和构造的桥梁 88
6.2需求工程任务 88
6.2.1起始 89
6.2.2导出 89
6.2.3精化 90
6.2.4协商 90
6.2.5规格说明 90
6.2.6确认 91
6.2.7需求管理 91
6.3启动需求工程过程 93
6.3.1确认共利益者 93
6.3.2识别多种观点 93
6.3.3协同合作 94
6.3.4首次提问 94
6.4导出需求 95
6.4.1协同需求收集 95
6.4.2质量功能部署 98
6.4.3用户场景 99
6.4.4导出工作产品 100
6.5开发用例 100
6.6小结 104
参考文献 104
习题与思考题 105
推荐读物与阅读信息 106
第7章 构建分析模型 107
7.1需求分析 108
7.1.1整体目标和原理 108
7.1.2分析的经验原则 109
7.1.3域分析 109
7.2分析建模的方法 110
7.3数据建模概念 111
7.3.1数据对象 111
7.3.2数据属性 111
7.3.3关系 112
7.3.4基数和形态 113
7.4面向对象的分析 114
7.5基于场景建模 115
7.5.1编写用例 115
7.5.2开发活动图 120
7.5.3泳道图 121
7.6面向流的建模 121
7.6.1创建数据流模型 122
7.6.2创建控制流模型 124
7.6.3控制规格说明 125
7.6.4处理规格说明 126
7.7基于类的建模 127
7.7.1识别分析类 128
7.7.2描述属性 130
7.7.3定义操作 130
7.7.4 CRC建模 132
7.7.5关联和依赖 137
7.7.6分析包 138
7.8生成行为模型 139
7.8.1识别用例事件 139
7.8.2状态表现 139
7.9小结 142
参考文献 143
习题与思考题 143
推荐读物与阅读信息 144
第8章 设计工程 146
8.1软件工程中的设计 147
8.2设计过程和设计质量 148
8.3设计概念 151
8.3.1抽象 151
8.3.2体系结构 151
8.3.3模式 152
8.3.4模块化 152
8.3.5信息隐蔽 153
8.3.6功能独立 154
8.3.7求精 154
8.3.8重构 155
8.3.9设计类 156
8.4设计模型 158
8.4.1数据设计元素 158
8.4.2体系结构设计元素 159
8.4.3接口设计元素 159
8.4.4构件级设计元素 160
8.4.5部署级设计元素 161
8.5基于模式的软件设计 162
8.5.1描述设计模式 162
8.5.2在设计中使用模式 163
8.5.3框架 163
8.6小结 164
参考文献 164
习题与思考题 165
推荐读物与阅读信息 165
第9章 进行体系结构设计 167
9.1软件体系结构 168
9.1.1什么是体系结构 168
9.1.2为什么体系结构如此重要 169
9.2数据设计 169
9.2.1体系结构级的数据设计 169
9.2.2构件级的数据设计 170
9.3体系结构风格和模式 171
9.3.1体系结构风格的简单分类 171
9.3.2体系结构模式 174
9.3.3组织和求精 175
9.4体系结构设计 176
9.4.1系统的环境表示 176
9.4.2定义原始模型 177
9.4.3将体系结构精化为构件 178
9.4.4描述系统实例 179
9.5评估可选的体系结构设计 180
9.5.1体系结构权衡分析方法 180
9.5.2体系结构复杂性 182
9.5.3体系结构描述语言 182
9.6映射数据流到软件体系结构 183
9.6.1变换流 183
9.6.2事务流 183
9.6.3变换映射 183
9.6.4事务映射 189
9.6.5精化体系结构设计 192
9.7小结 192
参考文献 193
习题与思考题 193
推荐读物与阅读信息 194
第10章 构件级设计建模 196
10.1什么是构件 197
10.1.1面向对象的观点 197
10.1.2传统观点 198
10.1.3过程相关的观点 200
10.2设计基于类的构件 201
10.2.1基本设计原则 201
10.2.2构件级设计指导方针 204
10.2.3内聚性 204
10.2.4耦合性 206
10.3实施构件级设计 208
10.4对象约束语言 212
10.5设计传统构件 214
10.5.1图形化设计表示 214
10.5.2表格式设计表示 215
10.5.3程序设计语言 216
10.5.4设计表示方法的比较 217
10.6小结 218
参考文献 218
习题与思考题 219
推荐读物与阅读信息 219
第11章 完成用户界面设计 221
11.1黄金规则 222
11.1.1置用户于控制之下 222
11.1.2减轻用户的记忆负担 223
11.1.3保持界面一致 224
11.2用户界面的分析与设计 225
11.2.1用户界面分析和设计模型 225
11.2.2用户界面分析和设计过程 226
11.3界面分析 228
11.3.1用户分析 228
11.3.2任务分析和建模 229
11.3.3显示内容分析 233
11.3.4工作环境分析 233
11.4界面设计步骤 234
11.4.1应用界面设计步骤 234
11.4.2用户界面设计模式 236
11.4.3设计问题 237
11.5设计评估 240
11.6小结 241
参考文献 242
习题与思考题 242
推荐读物与阅读信息 243
第12章 软件测试策略 244
12.1软件测试的策略性方法 245
12.1.1验证与确认 245
12.1.2软件测试的组织 246
12.1.3传统软件体系结构的测试策略 247
12.1.4面向对象软件体系结构的测试策略 248
12.1.5测试完成的标准 249
12.2策略问题 249
12.3传统软件的测试策略 250
12.3.1单元测试 250
12.3.2集成测试 252
12.4面向对象软件的测试策略 257
12.4.1面向对象环境中的单元测试 257
12.4.2面向对象环境中的集成测试 257
12.5确认测试 258
12.5.1确认测试准则 258
12.5.2配置评审 258
12.5.3 a测试与β测试 258
12.6系统测试 260
12.6.1恢复测试 260
12.6.2安全测试 260
12.6.3压力测试 261
12.6.4性能测试 261
12.7调试技巧 262
12.7.1调试过程 262
12.7.2心理因素 263
12.7.3调试策略 264
12.7.4错误改正 266
12.8小结 266
参考文献 266
习题与思考题 267
推荐读物与阅读信息 268
第13章 测试战术 269
13.1软件测试基础 270
13.2黑盒测试与白盒测试 271
13.3白盒测试 272
13.4基本路径测试 272
13.4.1流图表示 272
13.4.2独立程序路径 274
13.4.3导出测试用例 275
13.5控制结构测试 277
13.5.1条件测试 277
13.5.2数据流测试 277
13.5.3循环测试 278
13.6黑盒测试 279
13.6.1等价划分 279
13.6.2边界值分析 280
13.7面向对象测试方法 281
13.7.1面向对象概念的测试用例设计的含义 281
13.7.2传统测试用例设计方法的可应用性 282
13.7.3基于故障的测试 282
13.7.4测试用例与类层次 282
13.7.5基于场景的测试 283
13.8类级可应用的测试方法 284
13.8.1面向对象的随机测试 284
13.8.2类级的划分测试 285
13.9类间测试用例设计 286
13.9.1多类测试 286
13.9.2从行为模型中导出的测试 287
13.10小结 288
参考文献 289
习题与思考题 289
推荐读物与阅读信息 290
第14章 产品度量 292
14.1软件质量 293
14.1.1 McCall的质量因素 293
14.1.2 ISO 9126质量因素 294
14.1.3向量化视图变迁 295
14.2产品度量框架 295
14.2.1测度、度量和指标 295
14.2.2产品度量的挑战 296
14.2.3测量原则 296
14.2.4面向目标的软件测量 297
14.2.5有效软件度量的属性 298
14.2.6产品度量全景 298
14.3小结 300
参考文献 300
习题与思考题 300
推荐读物与阅读信息 300
第三部分 管理软件项目 304
第15章 项目管理 304
15.1管理涉及的范围 305
15.1.1人员 305
15.1.2产品 305
15.1.3过程 306
15.1.4项目 306
15.2人员 306
15.2.1共利益者 307
15.2.2团队负责人 307
15.2.3软件团队 308
15.2.4敏捷团队 310
15.2.5协调和通信问题 311
15.3产品 312
15.3.1软件范围 312
15.3.2问题分解 312
15.4过程 313
15.4.1合并产品和过程 313
15.4.2过程分解 314
15.5项目 315
15.6 W5HH原则 316
15.7关键实践 317
15.8小结 317
参考文献 318
习题与思考题 318
推荐读物与阅读信息 319
第16章 过程和项目度量 321
16.1过程领域和项目领域中的度量 322
16.1.1过程度量和软件过程改进 322
16.1.2项目度量 323
16.2软件测量 325
16.2.1面向规模的度量 325
16.2.2面向功能的度量 326
16.2.3调和代码行和功能点的度量方法 327
16.2.4面向对象的度量 328
16.2.5面向用例的度量 329
16.3软件质量度量 330
16.3.1测量质量 330
16.3.2缺陷排除效率 331
16.4小结 332
参考文献 333
习题与思考题 333
推荐读物与阅读信息 334
第17章 估算 335
17.1对估算的观察 336
17.2项目策划过程 336
17.3软件范围和可行性 337
17.4资源 338
17.4.1人力资源 338
17.4.2可复用软件资源 339
17.4.3环境资源 339
17.5软件项目估算 340
17.6分解技术 340
17.6.1软件规模估算 341
17.6.2基于问题的估算 341
17.6.3基于LOC估算的实例 342
17.6.4基于FP估算的实例 344
17.6.5基于过程的估算 345
17.6.6基于过程估算的实例 346
17.6.7基于用例的估算 346
17.6.8基于用例的估算实例 347
17.6.9调和不同的估算方法 348
17.7经验估算模型 349
17.7.1估算模型的结构 349
17.7.2 COCOMOII模型 350
17.7.3软件方程式 351
17.8面向对象项目的估算 352
17.9小结 352
参考文献 353
习题与思考题 353
推荐读物与阅读信息 354
第18章 项目进度安排 355
18.1基本概念 356
18.2项目进度安排 357
18.2.1基本原则 358
18.2.2人员与工作量之间的关系 359
18.2.3工作量分配 360
18.3为软件项目定义任务集 361
18.3.1任务集举例 361
18.3.2主要任务的求精 362
18.4定义任务网络 363
18.5进度安排 363
18.5.1时序图 365
18.5.2跟踪进度 366
18.5.3跟踪OO项目的进展 367
18.6获得值分析 368
18.7小结 369
参考文献 370
习题与思考题 370
推荐读物与阅读信息 371
第19章 风险管理 372
19.1被动风险策略和主动风险策略 373
19.2软件风险 373
19.3风险识别 374
19.3.1评估整体项目风险 375
19.3.2风险因素和驱动因子 376
19.4风险预测 377
19.4.1建立风险表 377
19.4.2评估风险影响 378
19.5风险求精 380
19.6风险缓解、监测和管理 381
19.7 RMMM计划 382
19.8小结 384
参考文献 384
习题与思考题 384
推荐读物与阅读信息 385
第20章 质量管理 387
20.1质量概念 388
20.1.1质量 388
20.1.2质量控制 389
20.1.3质量保证 389
20.1.4质量成本 389
20.2软件质量保证 390
20.2.1背景 391
20.2.2 SQA活动 391
20.3软件评审 392
20.3.1软件缺陷对成本的影响 393
20.3.2缺陷放大和消除 393
20.4正式技术评审 395
20.4.1评审会议 395
20.4.2评审报告和记录保存 396
20.4.3评审指导原则 396
20.4.4样本驱动评审 397
20.5 SQA的形式化方法 399
20.6基于统计的软件质量保证 399
20.6.1一个普通的例子 399
20.6.2软件工程中的六西格玛 400
20.7软件可靠性 401
20.7.1可靠性和可用性的测量 401
20.7.2软件安全 402
20.8 ISO 9000质量标淮 403
20.9 SQA计划 404
20.10小结 405
参考文献 406
习题与思考题 407
推荐读物与阅读信息 407
第21章 变更管理 409
21.1软件配置管理 410
21.1.1 SCM场景 410
21.1.2配置管理系统元素 411
21.1.3基线 411
21.1.4软件配置项 412
21.2 SCM中心存储库 413
21.2.1中心存储库的作用 414
21.2.2一般特征和内容 414
21.2.3 SCM特征 414
21.3 SCM过程 416
21.3.1软件配置中对象的标识 416
21.3.2版本控制 417
21.3.3变更控制 418
21.3.4配置审核 421
21.3.5状态报告 422
21.4小结 422
参考文献 423
习题与思考题 424
推荐读物与阅读信息 424