第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
1.7 小结 12
参考文献 12
习题与思考题 13
推荐读物与阅读信息 13
第一部分 软件过程 16
第2章 过程综述 16
2.1 软件工程:一种层次化技术 17
2.2 过程框架 18
2.3 能力成熟度模型集成 22
2.4 过程模式 25
2.5 过程评估 27
2.6 个人过程模型和团队过程模型 29
2.6.1 个人软件过程 29
2.6.2 团队软件过程 30
2.7 过程技术 31
2.8 产品与过程 32
2.9 小结 33
参考文献 33
习题与思考题 34
推荐读物与阅读信息 34
第3章 过程模型 36
3.1 惯例过程模型 37
3.2 瀑布模型 37
3.3 增量过程模型 38
3.3.1 增量模型 38
3.3.2 RAD模型 39
3.4 演化过程模型 40
3.4.1 原型开发 41
3.4.2 螺旋模型 43
3.4.3 协同开发模型 44
3.4.4 演化过程模型的最终评述 45
3.5 专用过程模型 46
3.5.1 基于构件的开发 46
3.5.2 形式化方法模型 47
3.5.3 面向方面的软件开发 47
3.6 统一过程 49
3.6.1 简史 49
3.6.2 统一过程的阶段 50
3.6.3 统一过程工作产品 51
3.7 小结 52
参考文献 53
习题与思考题 54
推荐读物与阅读信息 54
第4章 敏捷视角下的过程 56
4.1 敏捷是什么 57
4.2 敏捷过程是什么 58
4.2.1 敏捷开发的立场 59
4.2.2 人的因素 59
4.3 敏捷过程模型 60
4.3.1 极限编程 61
4.3.2 自适应软件开发 64
4.3.3 动态系统开发方法 66
4.3.4 Scrum 66
4.3.5 Crystal 68
4.3.6 特征驱动开发 68
4.3.7 敏捷建模 69
4.4 小结 71
参考文献 71
习题与思考题 72
推荐读物与阅读信息 73
第二部分 软件工程实践 76
第5章 软件工程实践综述 76
5.1 概念 77
5.1.1 实践的精髓 77
5.1.2 核心原则 78
5.2 沟通实践 79
5.3 策划实践 82
5.4 建模实践 84
5.4.1 分析建模原则 85
5.4.2 设计建模原则 86
5.5 构造实践 89
5.5.1 编码原则和概念 89
5.5.2 测试原则 90
5.6 部署 92
5.7 小结 93
参考文献 94
习题与思考题 95
推荐读物与阅读信息 95
第6章 系统工程 97
6.1 基于计算机的系统 98
6.2 系统工程层次结构 99
6.2.1 系统建模 100
6.2.2 系统仿真 101
6.3 业务过程工程概述 102
6.4 产品工程概述 103
6.5 系统建模 105
6.5.1 Hatley-Pirbhai建模 105
6.5.2 UML系统建模 107
6.6 小结 109
参考文献 110
习题与思考题 110
推荐读物与阅读信息 111
第7章 需求工程 112
7.1 连接设计和构造的桥梁 113
7.2 需求工程任务 113
7.2.1 起始 114
7.2.2 导出 114
7.2.3 精化 115
7.2.4 协商 115
7.2.5 规格说明 115
7.2.6 确认 116
7.2.7 需求管理 116
7.3 启动需求工程过程 118
7.3.1 确认共利益者 118
7.3.2 识别多种观点 118
7.3.3 协同合作 119
7.3.4 首次提问 119
7.4 导出需求 120
7.4.1 协同需求收集 120
7.4.2 质量功能部署 123
7.4.3 用户场景 124
7.4.4 导出工作产品 125
7.5 开发用例 125
7.6 构建分析模型 129
7.6.1 分析模型的元素 129
7.6.2 分析模式 132
7.7 协商需求 133
7.8 确认需求 134
7.9 小结 135
参考文献 135
习题与思考题 136
推荐读物与阅读信息 137
第8章 构建分析模型 139
8.1 需求分析 140
8.1.1 整体目标和原理 140
8.1.2 分析的经验原则 141
8.1.3 域分析 141
8.2 分析建模的方法 142
8.3 数据建模概念 143
8.3.1 数据对象 143
8.3.2 数据属性 143
8.3.3 关系 144
8.3.4 基数和形态 145
8.4 面向对象的分析 146
8.5 基于场景建模 147
8.5.1 编写用例 147
8.5.2 开发活动图 152
8.5.3 泳道图 153
8.6 面向流的建模 153
8.6.1 创建数据流模型 154
8.6.2 创建控制流模型 156
8.6.3 控制规格说明 157
8.6.4 处理规格说明 158
8.7 基于类的建模 159
8.7.1 识别分析类 160
8.7.2 描述属性 162
8.7.3 定义操作 162
8.7.4 CRC建模 164
8.7.5 关联和依赖 169
8.7.6 分析包 170
8.8 生成行为模型 171
8.8.1 识别用例事件 171
8.8.2 状态表现 171
8.9 小结 174
参考文献 175
习题与思考题 175
推荐读物与阅读信息 176
第9章 设计工程 178
9.1 软件工程中的设计 179
9.2 设计过程和设计质量 180
9.3 设计概念 183
9.3.1 抽象 183
9.3.2 体系结构 183
9.3.3 模式 184
9.3.4 模块化 184
9.3.5 信息隐蔽 185
9.3.6 功能独立 186
9.3.7 求精 186
9.3.8 重构 187
9.3.9 设计类 188
9.4 设计模型 190
9.4.1 数据设计元素 190
9.4.2 体系结构设计元素 191
9.4.3 接口设计元素 191
9.4.4 构件级设计元素 192
9.4.5 部署级设计元素 193
9.5 基于模式的软件设计 194
9.5.1 描述设计模式 194
9.5.2 在设计中使用模式 195
9.5.3 框架 195
9.6 小结 196
参考文献 196
习题与思考题 197
推荐读物与阅读信息 197
第10章 进行体系结构设计 199
10.1 软件体系结构 200
10.1.1 什么是体系结构 200
10.1.2 为什么体系结构如此重要 201
10.2 数据设计 201
10.2.1 体系结构级的数据设计 201
10.2.2 构件级的数据设计 202
10.3 体系结构风格和模式 203
10.3.1 体系结构风格的简单分类 203
10.3.2 体系结构模式 206
10.3.3 组织和求精 207
10.4 体系结构设计 208
10.4.1 系统的环境表示 208
10.4.2 定义原始模型 209
10.4.3 将体系结构精化为构件 210
10.4.4 描述系统实例 211
10.5 评估可选的体系结构设计 212
10.5.1 体系结构权衡分析方法 212
10.5.2 体系结构复杂性 214
10.5.3 体系结构描述语言 214
10.6 映射数据流到软件体系结构 215
10.6.1 变换流 215
10.6.2 事务流 215
10.6.3 变换映射 215
10.6.4 事务映射 221
10.6.5 精化体系结构设计 224
10.7 小结 224
参考文献 225
习题与思考题 225
推荐读物与阅读信息 226
第11章 构件级设计建模 228
11.1 什么是构件 229
11.1.1 面向对象的观点 229
11.1.2 传统观点 230
11.1.3 过程相关的观点 232
11.2 设计基于类的构件 233
11.2.1 基本设计原则 233
11.2.2 构件级设计指导方针 236
11.2.3 内聚性 236
11.2.4 耦合性 238
11.3 实施构件级设计 240
11.4 对象约束语言 244
11.5 设计传统构件 246
11.5.1 图形化设计表示 246
11.5.2 表格式设计表示 247
11.5.3 程序设计语言 248
11.5.4 设计表示方法的比较 249
11.6 小结 250
参考文献 250
习题与思考题 251
推荐读物与阅读信息 251
第12章 完成用户界面设计 253
12.1 黄金规则 254
12.1.1 置用户于控制之下 254
12.1.2 减轻用户的记忆负担 255
12.1.3 保持界面一致 256
12.2 用户界面的分析与设计 257
12.2.1 用户界面分析和设计模型 257
12.2.2 用户界面分析和设计过程 258
12.3 界面分析 260
12.3.1 用户分析 260
12.3.2 任务分析和建模 261
12.3.3 显示内容分析 265
12.3.4 工作环境分析 265
12.4 界面设计步骤 266
12.4.1 应用界面设计步骤 266
12.4.2 用户界面设计模式 268
12.4.3 设计问题 269
12.5 设计评估 272
12.6 小结 273
参考文献 274
习题与思考题 274
推荐读物与阅读信息 275
第13章 软件测试策略 276
13.1 软件测试的策略性方法 277
13.1.1 验证与确认 277
13.1.2 软件测试的组织 278
13.1.3 传统软件体系结构的测试策略 279
13.1.4 面向对象软件体系结构的测试策略 280
13.1.5 测试完成的标准 281
13.2 策略问题 281
13.3 传统软件的测试策略 282
13.3.1 单元测试 282
13.3.2 集成测试 284
13.4 面向对象软件的测试策略 289
13.4.1 面向对象环境中的单元测试 289
13.4.2 面向对象环境中的集成测试 289
13.5 确认测试 290
13.5.1 确认测试准则 290
13.5.2 配置评审 290
13.5.3 α测试与β测试 290
13.6 系统测试 292
13.6.1 恢复测试 292
13.6.2 安全测试 292
13.6.3 压力测试 293
13.6.4 性能测试 293
13.7 调试技巧 294
13.7.1 调试过程 294
13.7.2 心理因素 295
13.7.3 调试策略 296
13.7.4 错误改正 298
13.8 小结 298
参考文献 299
习题与思考题 299
推荐读物与阅读信息 300
第14章 测试战术 302
14.1 软件测试基础 303
14.2 黑盒测试与白盒测试 304
14.3 白盒测试 305
14.4 基本路径测试 305
14.4.1 流图表示 305
14.4.2 独立程序路径 307
14.4.3 导出测试用例 308
14.4.4 图矩阵 310
14.5 控制结构测试 310
14.5.1 条件测试 311
14.5.2 数据流测试 311
14.5.3 循环测试 311
14.6 黑盒测试 312
14.6.1 基于图的测试方法 313
14.6.2 等价划分 314
14.6.3 边界值分析 315
14.6.4 正交数组测试 315
14.7 面向对象测试方法 317
14.7.1 面向对象概念的测试用例设计的含义 318
14.7.2 传统测试用例设计方法的可应用性 318
14.7.3 基于故障的测试 318
14.7.4 测试用例与类层次 319
14.7.5 基于场景的测试 319
14.7.6 表层结构和深层结构的测试 320
14.8 类级可应用的测试方法 321
14.8.1 面向对象的随机测试 321
14.8.2 类级的划分测试 322
14.9 类间测试用例设计 323
14.9.1 多类测试 323
14.9.2 从行为模型中导出的测试 324
14.10 针对特定环境、体系结构和应用系统的测试 325
14.10.1 图形用户界面测试 325
14.10.2 客户/服务器体系结构测试 325
14.10.3 测试文档和帮助设施 326
14.10.4 实时系统的测试 327
14.11 测试模式 328
14.12 小结 329
参考文献 329
习题与思考题 330
推荐读物与阅读信息 331
第15章 产品度量 333
15.1 软件质量 334
15.1.1 McCall的质量因素 334
15.1.2 ISO 9126质量因素 335
15.1.3 向量化视图变迁 336
15.2 产品度量框架 336
15.2.1 测度、度量和指标 336
15.2.2 产品度量的挑战 337
15.2.3 测量原则 338
15.2.4 面向目标的软件测量 338
15.2.5 有效软件度量的属性 339
15.2.6 产品度量全景 339
15.3 分析模型的度量 341
15.3.1 基于功能的度量 341
15.3.2 规格说明质量的度量 344
15.4 设计模型的度量 344
15.4.1 体系结构设计度量 345
15.4.2 面向对象设计的度量 346
15.4.3 面向类的度量——CK度量集 347
15.4.4 面向类的度量——MOOD度量集 350
15.4.5 Lorenz与Kidd提出的面向对象度量 350
15.4.6 构件级设计度量 351
15.4.7 面向操作的度量 352
15.4.8 用户界面设计度量 353
15.5 源代码的度量 353
15.6 测试的度量 354
15.6.1 应用于测试的Halstead度量 355
15.6.2 面向对象测试的度量 355
15.7 维护的度量 356
15.8 小结 357
参考文献 357
习题与思考题 359
推荐读物与阅读信息 359
第三部分 应用Web工程 362
第16章 Web工程 362
16.1 基于Web的系统及应用的特点 363
16.2 WebApp工程的层次 365
16.2.1 过程 365
16.2.2 方法 366
16.2.3 工具与技术 366
16.3 Web工程过程 366
16.3.1 定义框架 367
16.3.2 精化框架 369
16.4 Web工程的最佳实践 369
16.5 小结 371
参考文献 371
习题与思考题 371
推荐读物与阅读信息 372
第17章 开始一个WebAPP项目 373
17.1 表达基于Web的系统 374
17.1.1 表达问题 374
17.1.2 WebApp的需求收集 375
17.1.3 分析模型的过渡 379
17.2 策划Web工程项目 379
17.3 Web工程团队 380
17.3.1 人员 380
17.3.2 组建团队 381
17.4 Web工程的项目管理问题 382
17.4.1 WebApp策划——外包 382
17.4.2 WebApp策划——内部Web工程 385
17.5 Web工程与WebApp的度量 387
17.5.1 Web工程工作量的度量 387
17.5.2 评估商业价值的度量 388
17.6 WebApp项目的“最坏实践” 389
17.7 小结 390
参考文献 390
习题与思考题 391
推荐读物与阅读信息 392
第18章 WebApp分析 393
18.1 WebApp的需求分析 394
18.1.1 用户层次 394
18.1.2 开发用例 395
18.1.3 精化用例模型 397
18.2 WebApp的分析模型 397
18.3 内容模型 398
18.3.1 定义内容对象 398
18.3.2 内容关系与层次 399
18.3.3 WebApp的分析类 399
18.4 交互模型 400
18.5 功能模型 402
18.6 配置模型 403
18.7 关系导航分析 404
18.7.1 关系分析——关键问题 404
18.7.2 导航分析 405
18.8 小结 406
参考文献 406
习题与思考题 407
推荐读物与阅读信息 407
第19章 WebApp设计 409
19.1 Web工程的设计问题 410
19.1.1 设计与WebApp质量 410
19.1.2 设计目标 412
19.2 WebE设计金字塔 413
19.3 WebApp界面设计 414
19.3.1 界面设计原则与指导方针 414
19.3.2 界面控制机制 418
19.3.3 界面设计工作流 418
19.4 美学设计 420
19.4.1 布局问题 420
19.4.2 美术设计问题 421
19.5 内容设计 421
19.5.1 内容对象 421
19.5.2 内容设计问题 422
19.6 体系结构设计 423
19.6.1 内容体系结构 423
19.6.2 WebApp体系结构 425
19.7 导航设计 426
19.7.1 导航语义 426
19.7.2 导航语法 427
19.8 构件级设计 428
19.9 超媒体设计模式 428
19.10 面向对象的超媒体设计方法 429
19.10.1 OOHDM的概念设计 430
19.10.2 OOHDM的导航设计 431
19.10.3 抽象界面设计与实现 431
19.11 WebApp的设计度量 431
19.12 小结 432
参考文献 433
习题与思考题 434
推荐读物与阅读信息 435
第20章 WebApp测试 436
20.1 WebApp的测试概念 436
20.1.1 质量维度 437
20.1.2 WebApp环境中的错误 438
20.1.3 测试策略 438
20.1.4 测试策划 438
20.2 测试过程概述 439
20.3 内容测试 442
20.3.1 内容测试的目标 442
20.3.2 数据库测试 443
20.4 用户界面测试 444
20.4.1 界面测试策略 444
20.4.2 测试界面机制 445
20.4.3 测试界面语义 446
20.4.4 可用性测试 447
20.4.5 兼容性测试 448
20.5 构件级测试 449
20.6 导航测试 451
20.6.1 测试导航语法 451
20.6.2 测试导航语义 451
20.7 配置测试 452
20.7.1 服务器端问题 453
20.7.2 客户端问题 453
20.8 安全性测试 453
20.9 性能测试 455
20.9.1 性能测试的目标 455
20.9.2 负载测试 455
20.9.3 压力测试 456
20.10 小结 458
参考文献 458
习题与思考题 459
推荐读物与阅读信息 460
第四部分 管理软件项目 462
第21章 项目管理 462
21.1 管理涉及的范围 463
21.1.1 人员 463
21.1.2 产品 463
21.1.3 过程 464
21.1.4 项目 464
21.2 人员 464
21.2.1 共利益者 465
21.2.2 团队负责人 465
21.2.3 软件团队 466
21.2.4 敏捷团队 468
21.2.5 协调和通信问题 469
21.3 产品 470
21.3.1 软件范围 470
21.3.2 问题分解 470
21.4 过程 471
21.4.1 合并产品和过程 471
21.4.2 过程分解 472
21.5 项目 473
21.6 W5HH原则 474
21.7 关键实践 475
21.8 小结 475
参考文献 476
习题与思考题 476
推荐读物与阅读信息 477
第22章 过程和项目度量 479
22.1 过程领域和项目领域中的度量 480
22.1.1 过程度量和软件过程改进 480
22.1.2 项目度量 481
22.2 软件测量 483
22.2.1 面向规模的度量 483
22.2.2 面向功能的度量 484
22.2.3 调和代码行和功能点的度量方法 485
22.2.4 面向对象的度量 486
22.2.5 面向用例的度量 487
22.2.6 Web工程项目度量 487
22.3 软件质量度量 489
22.3.1 测量质量 489
22.3.2 缺陷排除效率 490
22.4 在软件过程中集成度量 491
22.4.1 支持软件度量的论点 492
22.4.2 建立基线 492
22.4.3 度量收集、计算和评估 492
22.5 小型组织的度量 493
22.6 制定软件度量大纲 494
22.7 小结 496
参考文献 496
习题与思考题 497
推荐读物与阅读信息 498
第23章 估算 500
23.1 对估算的观察 501
23.2 项目策划过程 501
23.3 软件范围和可行性 502
23.4 资源 503
23.4.1 人力资源 503
23.4.2 可复用软件资源 504
23.4.3 环境资源 504
23.5 软件项目估算 505
23.6 分解技术 505
23.6.1 软件规模估算 506
23.6.2 基于问题的估算 506
23.6.3 基于LOC估算的实例 507
23.6.4 基于FP估算的实例 509
23.6.5 基于过程的估算 510
23.6.6 基于过程估算的实例 511
23.6.7 基于用例的估算 511
23.6.8 基于用例的估算实例 512
23.6.9 调和不同的估算方法 513
23.7 经验估算模型 514
23.7.1 估算模型的结构 514
23.7.2 COCOMOⅡ模型 515
23.7.3 软件方程式 516
23.8 面向对象项目的估算 517
23.9 特殊的估算技术 517
23.9.1 敏捷开发的估算 518
23.9.2 Web工程项目的估算 518
23.10 自行开发或购买的决策 519
23.10.1 创建决策树 520
23.10.2 外包 521
23.11 小结 522
参考文献 523
习题与思考题 523
推荐读物与阅读信息 524
第24章 项目进度安排 525
24.1 基本概念 526
24.2 项目进度安排 527
24.2.1 基本原则 528
24.2.2 人员与工作量之间的关系 529
24.2.3 工作量分配 530
24.3 为软件项目定义任务集 531
24.3.1 任务集举例 531
24.3.2 主要任务的求精 532
24.4 定义任务网络 533
24.5 进度安排 533
24.5.1 时序图 535
24.5.2 跟踪进度 536
24.5.3 跟踪OO项目的进展 537
24.6 获得值分析 538
24.7 小结 539
参考文献 540
习题与思考题 540
推荐读物与阅读信息 541
第25章 风险管理 543
25.1 被动风险策略和主动风险策略 544
25.2 软件风险 544
25.3 风险识别 545
25.3.1 评估整体项目风险 546
25.3.2 风险因素和驱动因子 547
25.4 风险预测 548
25.4.1 建立风险表 548
25.4.2 评估风险影响 549
25.5 风险求精 551
25.6 风险缓解、监测和管理 552
25.7 RMMM计划 553
25.8 小结 555
参考文献 555
习题与思考题 555
推荐读物与阅读信息 556
第26章 质量管理 558
26.1 质量概念 559
26.1.1 质量 559
26.1.2 质量控制 560
26.1.3 质量保证 560
26.1.4 质量成本 560
26.2 软件质量保证 561
26.2.1 背景 562
26.2.2 SQA活动 562
26.3 软件评审 563
26.3.1 软件缺陷对成本的影响 564
26.3.2 缺陷放大和消除 564
26.4 正式技术评审 566
26.4.1 评审会议 566
26.4.2 评审报告和记录保存 567
26.4.3 评审指导原则 567
26.4.4 样本驱动评审 568
26.5 SQA的形式化方法 570
26.6 基于统计的软件质量保证 570
26.6.1 一个普通的例子 570
26.6.2 软件工程中的六西格玛 571
26.7 软件可靠性 572
26.7.1 可靠性和可用性的测量 572
26.7.2 软件安全 573
26.8 ISO 9000质量标准 574
26.9 SQA计划 575
26.10 小结 576
参考文献 577
习题与思考题 578
推荐读物与阅读信息 578
第27章 变更管理 580
27.1 软件配置管理 581
27.1.1 SCM场景 581
27.1.2 配置管理系统元素 582
27.1.3 基线 582
27.1.4 软件配置项 583
27.2 SCM中心存储库 584
27.2.1 中心存储库的作用 585
27.2.2 一般特征和内容 585
27.2.3 SCM特征 585
27.3 SCM过程 587
27.3.1 软件配置中对象的标识 587
27.3.2 版本控制 588
27.3.3 变更控制 589
27.3.4 配置审核 592
27.3.5 状态报告 593
27.4 Web工程的配置管理 593
27.4.1 WebApp的配置管理问题 594
27.4.2 WebApp的配置对象 595
27.4.3 内容管理 595
27.4.4 变更管理 597
27.4.5 版本控制 599
27.4.6 审核和报告 599
27.5 小结 600
参考文献 601
习题与思考题 602
推荐读物与阅读信息 602
第五部分 软件工程高级课题 606
第28章 形式化方法 606
28.1 基本概念 607
28.1.1 非形式化方法的缺陷 607
28.1.2 软件开发中的数学 608
28.1.3 形式化方法概念 608
28.2 数学预备知识 610
28.2.1 集合与构造性规格说明 610
28.2.2 集合运算符 611
28.2.3 逻辑运算符 613
28.2.4 序列 613
28.3 应用数学表示法描述形式化规格说明 614
28.4 形式化规格说明语言 615
28.5 对象约束语言 616
28.5.1 OCL语法及语义概述 616
28.5.2 使用OCL举例 617
28.6 Z规格说明语言 618
28.6.1 Z语法及语义概述 619
28.6.2 使用Z举例 620
28.7 形式化方法的十条戒律 621
28.8 形式化方法——未来之路 622
28.9 小结 622
参考文献 623
习题与思考题 623
推荐读物与阅读信息 624
第29章 净室软件工程 626
29.1 净室方法 627
29.1.1 净室策略 627
29.1.2 净室方法的特异之处 629
29.2 功能规格说明 629
29.2.1 黑盒规格说明 630
29.2.2 状态盒规格说明 631
29.2.3 清晰盒规格说明 631
29.3 净室设计 631
29.3.1 设计求精与验证 632
29.3.2 设计验证的优点 634
29.4 净室测试 635
29.4.1 统计使用测试 636
29.4.2 认证 636
29.5 小结 637
参考文献 638
习题与思考题 638
推荐读物与阅读信息 639
第30章 基于构件的开发 640
30.1 基于构件系统的工程 641
30.2 CBSE过程 642
30.3 领域工程 643
30.3.1 领域分析过程 643
30.3.2 特征化函数 643
30.3.3 结构化建模与结构点 644
30.4 基于构件的开发 645
30.4.1 构件合格性检验、适应性修改与组装 645
30.4.2 构件工程 648
30.4.3 复用的分析与设计 648
30.5 构件分类与检索 649
30.5.1 描述可复用构件 649
30.5.2 复用环境 650
30.6 CBSE经济学 651
30.6.1 对质量、生产率及成本的影响 651
30.6.2 运用结构点的成本分析 652
30.7 小结 653
参考文献 653
习题与思考题 654
推荐读物与阅读信息 655
第31章 再工程 657
31.1 业务过程再工程 658
31.1.1 业务过程 658
31.1.2 BPR模型 659
31.2 软件再工程 660
31.2.1 软件维护 660
31.2.2 软件再工程过程模型 661
31.3 逆向工程 663
31.3.1 数据的逆向工程 664
31.3.2 处理的逆向工程 665
31.3.3 用户界面的逆向工程 665
31.4 重构 666
31.4.1 代码重构 666
31.4.2 数据重构 667
31.5 正向工程 668
31.5.1 客户/服务器体系结构的正向工程 668
31.5.2 面向对象体系结构的正向工程 669
31.5.3 用户界面的正向工程 670
31.6 再工程经济学 670
31.7 小结 671
参考文献 671
习题与思考题 672
推荐读物与阅读信息 673
第32章 未来之路 675
32.1 再论软件的重要性 676
32.2 变化的范围 676
32.3 人及其构造系统的方式 677
32.4 新的软件工程过程 678
32.5 表示信息的新模式 679
32.6 技术作为推动力 680
32.7 软件工程师的责任 681
32.8 结束语 682
参考文献 683
习题与思考题 683
推荐读物与阅读信息 684
索引 687