第1章 软件工程介绍 1
1.1 软件角色的演化 2
1.2 软件 4
1.3 软件特性的变化 8
1.4 遗产软件 10
1.4.1 遗产软件的质量 11
1.4.2 软件演化 11
1.5 软件神话 13
1.6 这一切是如何开始的? 15
1.7 小结 16
参考文献 17
习题与思考题 17
推荐读物与阅读信息 18
第一部分 软件过程 20
第2章 过程综述 20
2.1 软件工程:一种层次化技术 21
2.2 过程框架 22
2.3 能力成熟度模型集成CMMI 27
2.4 过程模式 31
2.5 过程评估 34
2.6 个人过程模型和团队过程模型 36
2.6.1 个人软件过程 36
2.6.2 团队软件过程 38
2.7 过程技术 39
2.8 产品与过程 40
2.9 总结 41
参考文献 42
习题与思考题 43
推荐读物与阅读信息 43
第3章 过程模型 45
3.1 惯例过程模型 46
3.2 瀑布模型 47
3.3 增量过程模型 48
3.4 演化过程模型 51
3.4.1 原型开发 51
3.4.2 螺旋模型 54
3.4.3 并行开发模型 56
3.4.4 演化模型的最终评述 57
3.5 专用过程模型 59
3.5.1 基于构件的开发 59
3.5.2 形式化方法模型 60
3.5.3 面向方面的软件开发 61
3.6 统一过程 62
3.6.1 简史 63
3.6.2 统一过程的阶段 64
3.6.3 统一过程工作产品 66
3.7 小结 67
参考文献 68
习题与思考题 69
推荐读物与阅读信息 70
第4章 敏捷视角下的过程 71
4.1 敏捷是什么? 73
4.2 敏捷过程是什么? 74
4.2.1 敏捷开发的动机 75
4.2.2 人的因素 76
4.3 敏捷过程模型 77
4.3.1 极限编程(eXtreme Programming,XP) 78
4.3.2 自适应软件开发(Adaptive Software Development,ASD) 82
4.3.3 动态系统开发方法(Dynamic System Development Method,DSDM) 84
4.3.4 Scrum 85
4.3.5 Crystal 87
4.3.6 特征驱动开发(Feature Driven Development,FDD) 88
4.3.7 敏捷建模(Agile Modeling,AM) 89
4.4 小结 91
参考文献 92
习题与思考题 93
推荐读物与阅读信息 94
第二部分 软件工程实践 96
第5章 软件工程实践 96
5.1 软件工程实践 97
5.1.1 实践的精髓 97
5.1.2 核心原则 99
5.2 沟通实践 101
5.3 策划实践 104
5.4 建模实践 107
5.4.1 分析建模原则 108
5.4.2 设计建模原则 109
5.5 构造实践 112
5.5.1 编码原则和概念 113
5.5.2 测试原则 114
5.6 部署 116
5.7 小结 118
参考文献 119
习题与思考题 120
推荐读物与阅读信息 120
第6章 系统工程 122
6.1 基于计算机的系统 123
6.2 系统工程层次结构 125
6.2.1 系统建模 126
6.2.2 系统仿真 128
6.3 业务过程工程概述 129
6.4 产品工程概述 130
6.5 系统建模 132
6.5.1 Hatley-Pirbhai建模 133
6.5.2 UML系统建模 135
6.6 小结 139
参考文献 140
习题与思考题 140
推荐读物与阅读信息 141
第7章 需求工程 142
7.1 连接设计和构造的桥梁 143
7.2 需求工程任务 144
7.2.1 起始 144
7.2.2 导出 145
7.2.3 精化 145
7.2.4 协商 146
7.2.5 规格说明 147
7.2.6 确认 147
7.2.7 需求管理 148
7.3 启动需求工程过程 149
7.3.1 确认共同利益者 150
7.3.2 识别多种观点 150
7.3.3 协同合作 151
7.3.4 首次提问 151
7.4 导出需求 152
7.4.1 协同收集需求 153
7.4.2 质量功能部署 156
7.4.3 用户场景 157
7.4.4 导出工作产品 158
7.5 开发用例 159
7.6 构建分析模型 164
7.6.1 分析模型的元素 164
7.6.2 分析模式 168
7.7 协商需求 169
7.8 确认需求 171
7.9 小结 172
参考文献 172
习题与思考题 173
推荐读物与阅读信息 174
第8章 构建分析模型 175
8.1 需求分析 176
8.1.1 整体目标和原理 177
8.1.2 分析的经验规则 178
8.1.3 域分析 178
8.2 分析建模的方法 179
8.3 数据建模概念 181
8.3.1 数据对象 181
8.3.2 数据属性 182
8.3.3 关系 182
8.3.4 基数和形态 183
8.4 面向对象的分析 185
8.5 基于场景建模 186
8.5.1 编写用例 186
8.5.2 开发活动图 191
8.5.3 泳道图 192
8.6 面向流的建模 194
8.6.1 创建数据流模型 194
8.6.2 创建控制流模型 197
8.6.3 控制规格说明 198
8.6.4 处理规格说明 200
8.7 基于类的建模 201
8.7.1 识别分析类 201
8.7.2 描述属性 204
8.7.3 定义操作 205
8.7.4 类—责任—协作者(CRC)建模 208
8.7.5 关联和依赖 214
8.7.6 分析包 215
8.8 生成行为模型 216
8.8.1 识别用例事件 217
8.8.2 状态表现 218
8.9 小结 221
参考文献 222
习题与思考题 223
推荐读物与阅读信息 224
第9章 设计工程 226
9.1 软件工程中的设计 227
9.2 设计过程和设计质量 229
9.3 设计概念 233
9.3.1 抽象 233
9.3.2 架构 233
9.3.3 模式 234
9.3.4 模块化 235
9.3.5 信息隐藏 236
9.3.6 功能独立 236
9.3.7 精化 237
9.3.8 重构 238
9.3.9 设计类 239
9.4 设计模型 242
9.4.1 数据设计元素 243
9.4.2 架构设计元素 243
9.4.3 接口设计元素 244
9.4.4 构件级设计元素 246
9.4.5 部署级设计元素 247
9.5 基于模式的软件设计 248
9.5.1 描述设计模式 248
9.5.2 在设计中使用模式 249
9.5.3 框架 249
9.6 小结 250
参考文献 251
习题与思考题 251
推荐读物与阅读信息 252
第10章 创建体系结构设计 254
10.1 软件体系结构 255
10.1.1 什么是体系结构 255
10.1.2 为什么体系结构如此重要 256
10.2 数据设计 257
10.2.1 体系结构级的数据设计 257
10.2.2 构件级的数据设计 258
10.3 体系结构风格和模式 259
10.3.1 体系结构风格的简单分类 260
10.3.2 体系结构模式 264
10.3.3 组织和精化 265
10.4 体系结构设计 266
10.4.1 系统的环境表示 266
10.4.2 定义原始模型 268
10.4.3 将体系结构精化为构件 269
10.4.4 描述系统实例 271
10.5 评估可选的体系结构设计 272
10.5.1 体系结构权衡分析方法 272
10.5.2 体系结构复杂性 274
10.5.3 体系结构描述语言 274
10.6 映射数据流到软件体系结构 275
10.6.1 变换流 276
10.6.2 事务流 276
10.6.3 变换映射 277
10.6.4 事务映射 284
10.6.5 精化体系结构设计 288
10.7 小结 288
参考文献 289
习题与思考题 290
推荐读物与阅读信息 291
第11章 构件级设计建模 292
11.1 什么是构件 293
11.1.1 面向对象的观点 294
11.1.2 传统观点 295
11.1.3 过程相关的观点 298
11.2 设计基于类的构件 298
11.2.1 基本设计原则 299
11.2.2 构件级设计指导方针 302
11.2.3 内聚性 303
11.2.4 耦合性 305
11.3 实施构件级设计 307
11.4 对象约束语言 313
11.5 设计传统构件 315
11.5.1 图形设计表示 316
11.5.2 表格设计表示 317
11.5.3 程序设计语言 318
11.5.4 设计表示方法的比较 320
11.6 小结 321
参考文献 322
习题与思考题 322
推荐读物与阅读信息 323
第12章 完成用户界面设计 324
12.1 黄金规则 325
12.1.1 置用户于控制之下 325
12.1.2 减轻用户的记忆负担 327
12.1.3 保持界面一致 328
12.2 用户界面的分析与设计 329
12.2.1 界面分析和设计模型 330
12.2.2 界面分析和设计过程 331
12.3 界面分析 333
12.3.1 用户分析 333
12.3.2 任务分析和建模 335
12.3.3 显示内容分析 340
12.3.4 工作环境分析 341
12.4 界面设计步骤 341
12.4.1 应用界面设计步骤 342
12.4.2 用户界面设计模式 343
12.4.3 设计问题 345
12.5 设计评估 349
12.6 小结 351
参考文献 351
习题与思考题 352
推荐读物与阅读信息 353
第13章 软件测试策略 354
13.1 软件测试的策略性方法 355
13.1.1 验证与确认 356
13.1.2 软件测试的组织 356
13.1.3 常规软件体系结构的测试策略 358
13.1.4 面向对象软件体系结构的测试策略 359
13.1.5 测试完成的标准 360
13.2 策略问题 361
13.3 传统软件的测试策略 362
13.3.1 单元测试 362
13.3.2 集成测试 365
13.4 面向对象软件的测试策略 372
13.4.1 面向对象语境中的单元测试 372
13.4.2 面向对象语境中的集成测试 373
13.5 确认测试 374
13.5.1 确认测试准则 374
13.5.2 配置评审 374
13.5.3 α测试与β测试 374
13.6 系统测试 376
13.6.1 恢复测试 377
13.6.2 安全测试 377
13.6.3 压力测试 377
13.6.4 性能测试 378
13.7 调试艺术 379
13.7.1 调试过程 379
13.7.2 心理因素 381
13.7.3 调试策略 382
13.7.4 错误改正 384
13.8 小结 384
参考文献 385
习题与思考题 385
推荐读物与阅读信息 386
第14章 测试战术 388
14.1 软件测试基础 389
14.2 黑盒测试与白盒测试 391
14.3 白盒测试 392
14.4 基本路径测试 393
14.4.1 流图表示 393
14.4.2 独立程序路径 394
14.4.3 测试用例的设计 396
14.4.4 图矩阵 399
14.5 控制结构测试 400
14.5.1 条件测试 400
14.5.2 数据流测试 400
14.5.3 循环测试 401
14.6 黑盒测试 402
14.6.1 基于图的测试方法 403
14.6.2 等价划分 405
14.6.3 边界值分析 406
14.6.4 正交数组测试 407
14.7 面向对象测试方法 410
14.7.1 OO概念的测试用例设计的含义 410
14.7.2 传统测试用例设计方法的可应用性 411
14.7.3 基于故障的测试 411
14.7.4 测试用例与类层次 412
14.7.5 基于场景的测试 412
14.7.6 表层结构和深层结构的测试 414
14.8 类层次可应用的测试方法 415
14.8.1 面向对象的随机测试 415
14.8.2 类层次的分割测试 416
14.9 类间测试用例设计 417
14.9.1 多个类测试 417
14.9.2 从行为模型中生成的测试 418
14.10 针对特定环境、体系结构和应用的测试 420
14.10.1 用户界面测试 420
14.10.2 客户/服务器体系结构 420
14.10.3 测试文档和帮助设施 421
14.10.4 实时系统的测试 422
14.11 测试模式 424
14.12 小结 425
参考文献 426
习题与思考题 427
推荐读物与阅读信息 428
第15章 产品度量 429
15.1 软件质量 430
15.1.1 McCall的质量因素 431
15.1.2 ISO 9126质量因素 432
15.1.3 向量化视图的变迁 433
15.2 产品度量框架 434
15.2.1 测度、度量和指标 434
15.2.2 产品度量的挑战 434
15.2.3 测量原则 435
15.2.4 面向目标的软件测量 436
15.2.5 有效软件度量的属性 437
15.2.6 产品度量风景 438
15.3 分析模型的度量 440
15.3.1 基于功能的度量 440
15.3.2 规格说明质量的度量 444
15.4 设计模型的度量 445
15.4.1 体系结构设计度量 445
15.4.2 面向对象设计的度量 448
15.4.3 面向类的度量——CK度量套 449
15.4.4 面向类的度量——MOOD度量套 452
15.4.5 Lorenz与Kidd提出的面向对象度量 453
15.4.6 构件级设计度量 454
15.4.7 面向操作的度量 456
15.4.8 用户界面设计度量 457
15.5 源代码的度量 458
15.6 测试的度量 459
15.6.1 应用于测试的Halstead度量 459
15.6.2 面向对象测试的度量 459
15.7 维护的度量 460
15.8 小结 461
参考文献 462
习题与思考题 464
推荐读物与阅读信息 465
第三部分 应用Web工程 468
第16章 Web工程 468
16.1 基于Web的系统及应用的特点 469
16.2 WebApp工程的层次 472
16.2.1 过程 472
16.2.2 方法 473
16.2.3 工具与技术 474
16.3 Web工程过程 474
16.3.1 定义框架 475
16.3.2 精化框架 477
16.4 Web工程的最佳实践 478
16.5 小结 479
参考文献 480
习题与思考题 480
推荐读物与阅读信息 481
第17章 开始一个WebApp项目 482
17.1 表达基于Web的系统 483
17.1.1 表达问题 483
17.1.2 WebApp的需求收集 485
17.1.3 分析模型的过渡 489
17.2 策划Web工程项目 490
17.3 Web工程团队 491
17.3.1 人员 491
17.3.2 组建团队 492
17.4 Web工程的项目管理问题 493
17.4.1 WebApp策划——外包 494
17.4.2 WebApp策划——内部Web工程 498
17.5 Web工程与WebApp的度量 500
17.5.1 Web工程工作的度量 501
17.5.2 评估商业价值的度量 502
17.6 WebApp项目的“最坏实践” 502
17.7 小结 504
参考文献 504
习题与思考题 505
推荐读物与阅读信息 506
第18章 WebApp分析 507
18.1 WebApp的需求分析 508
18.1.1 用户层次 509
18.1.2 开发用例 510
18.1.3 精化用例模型 512
18.2 WebApp的分析模型 513
18.3 内容模型 513
18.3.1 定义内容对象 514
18.3.2 内容关系与层次 514
18.3.3 WebApp的分析类 515
18.4 交互模型 516
18.5 功能模型 519
18.6 配置模型 521
18.7 关系导航分析 521
18.7.1 关系分析——关键问题 522
18.7.2 导航分析 523
18.8 小结 524
参考文献 525
习题与思考题 525
推荐读物与阅读信息 526
第19章 设计WebApp 527
19.1 Web工程的设计问题 528
19.1.1 设计与WebApp质量 528
19.1.2 设计目标 531
19.2 WebE设计金字塔 532
19.3 WebApp界面设计 533
19.3.1 界面设计原则与指导方针 534
19.3.2 界面控制机制 539
19.3.3 界面设计工作流 539
19.4 美学设计 541
19.4.1 布局问题 542
19.4.2 美术设计问题 542
19.5 内容设计 543
19.5.1 内容对象 543
19.5.2 内容设计问题 544
19.6 体系结构设计 545
19.6.1 内容体系结构 545
19.6.2 WebApp体系结构 547
19.7 导航设计 549
19.7.1 导航语义 549
19.7.2 导航语法 551
19.8 构件级设计 552
19.9 超媒体设计模式 552
19.10 面向对象的超媒体设计方法(OOHDM) 554
19.10.1 OOHDM的概念设计 554
19.10.2 OOHDM的导航设计 555
19.10.3 抽象界面设计与实现 556
19.11 WebApp的设计度量 556
19.12 小结 557
参考文献 558
习题与思考题 560
推荐读物与阅读信息 561
第20章 WebApp测试 562
20.1 WebApp的测试概念 563
20.1.1 质量维度 563
20.1.2 WebApp环境中的错误 564
20.1.3 测试策略 565
20.1.4 测试计划 566
20.2 测试过程——概述 566
20.3 内容测试 569
20.3.1 内容测试的目标 569
20.3.2 数据库测试 571
20.4 用户界面测试 573
20.4.1 界面测试策略 573
20.4.2 测试界面机制 574
20.4.3 测试界面语义 576
20.4.4 可用性测试 576
20.4.5 兼容性测试 578
20.5 构件级测试 579
20.6 导航测试 581
20.6.1 测试导航语法 581
20.6.2 测试导航语义 582
20.7 配置测试 583
20.7.1 服务器端问题 584
20.7.2 客户端问题 584
20.8 安全性测试 585
20.9 性能测试 587
20.9.1 性能测试的目标 587
20.9.2 负载测试 588
20.9.3 压力测试 588
20.10 小结 590
参考文献 591
习题与思考题 592
推荐读物与阅读信息 593
第四部分 管理软件项目 596
第21章 项目管理 596
21.1 管理涉及的范围 597
21.1.1 人员 597
21.1.2 产品 598
21.1.3 过程 598
21.1.4 项目 598
21.2 人员 599
21.2.1 共同利益者 599
21.2.2 团队负责人 600
21.2.3 软件团队 601
21.2.4 敏捷团队 604
21.2.5 协调和通信问题 605
21.3 产品 606
21.3.1 软件范围 606
21.3.2 问题分解 607
21.4 过程 608
21.4.1 合并产品和过程 608
21.4.2 过程分解 609
21.5 项目 610
21.6 W5HH原则 612
21.7 关键实践 612
21.8 小结 613
参考文献 614
习题与思考题 614
推荐读物与阅读信息 615
第22章 过程和项目度量 617
22.1 过程和项目领域中的度量 618
22.1.1 过程度量和软件过程改进 618
22.1.2 项目度量 621
22.2 软件测量 622
22.2.1 面向规模的度量 623
22.2.2 面向功能的度量 624
22.2.3 调和代码行和功能点的度量方法 624
22.2.4 面向对象的度量 626
22.2.5 面向用例的度量 627
22.2.6 Web工程项目度量 627
22.3 软件质量度量 629
22.3.1 测量质量 630
22.3.2 缺陷排除效率 631
22.4 在软件工程过程中集成度量 632
22.4.1 支持软件度量的论点 633
22.4.2 建立基线 633
22.4.3 度量收集、计算和评估 634
22.5 小型组织的度量 634
22.6 制定软件度量大纲 636
22.7 小结 638
参考文献 638
习题与思考题 639
推荐读物与阅读信息 640
第23章 估算 642
23.1 对估算的观察 643
23.2 项目计划过程 644
23.3 软件范围和可行性 645
23.4 资源 645
23.4.1 人力资源 646
23.4.2 可复用软件资源 646
23.4.3 环境资源 647
23.5 软件项目估算 648
23.6 分解技术 649
23.6.1 软件规模估算 649
23.6.2 基于问题的估算 650
23.6.3 基于LOC估算的实例 651
23.6.4 基于FP估算的实例 653
23.6.5 基于过程的估算 654
23.6.6 基于过程估算的实例 655
23.6.7 基于用例的估算 656
23.6.8 基于用例的估算实例 657
23.6.9 调和不同的估算方法 658
23.7 经验估算模型 659
23.7.1 估算模型的结构 660
23.7.2 COCOMOⅡ模型 660
23.7.3 软件方程式 662
23.8 面向对象项目的估算 663
23.9 特殊的估算技术 664
23.9.1 敏捷开发的估算 664
23.9.2 Web工程项目的估算 665
23.10 自行开发或购买的决策 666
23.10.1 创建决策树 667
23.10.2 外包 668
23.11 小结 669
参考文献 670
习题与思考题 671
推荐读物与阅读信息 671
第24章 项目进度安排 673
24.1 基本概念 674
24.2 项目进度安排 676
24.2.1 基本原则 677
24.2.2 人员与工作量之间的关系 678
24.2.3 工作量分配 680
24.3 为软件项目定义任务集合 681
24.3.1 一个任务集合的例子 682
24.3.2 主要任务的求精 682
24.4 定义任务网络 683
24.5 进度安排 684
24.5.1 时序图 685
24.5.2 跟踪进度 686
24.5.3 跟踪OO项目的进展 688
24.6 获得值分析 690
24.7 小结 691
参考文献 691
习题与思考题 692
推荐读物与阅读信息 693
第25章 风险管理 694
25.1 被动和主动的风险策略 695
25.2 软件风险 696
25.3 风险识别 697
25.3.1 评估整体项目风险 698
25.3.2 风险因素和驱动因子 699
25.4 风险预测 700
25.4.1 建立风险表 701
25.4.2 评估风险影响 703
25.5 风险求精 705
25.6 风险缓解、监测和管理 705
25.7 RMMM计划 708
25.8 小结 709
参考文献 710
习题与思考题 710
推荐读物与阅读信息 711
第26章 质量管理 712
26.1 质量概念 713
26.1.1 质量 714
26.1.2 质量控制 714
26.1.3 质量保证 715
26.1.4 质量成本 715
26.2 软件质量保证 716
26.2.1 背景 717
26.2.2 SQA活动 717
26.3 软件评审 719
26.3.1 软件缺陷对成本的影响 720
26.3.2 缺陷放大和消除 720
26.4 正式的技术评审 722
26.4.1 评审会议 722
26.4.2 评审报告和记录保存 723
26.4.3 评审指导原则 724
26.4.4 样本驱动评审 725
26.5 SQA的形式化方法 727
26.6 基于统计的软件质量保证 727
26.6.1 一个普通的例子 728
26.6.2 软件工程中的六西格玛 729
26.7 软件可靠性 730
26.7.1 可靠性和可用性的测量 731
26.7.2 软件安全 731
26.8 ISO 9000质量标准 733
26.9 SQA计划 734
26.10 小结 735
参考文献 736
习题与思考题 737
推荐读物与阅读信息 737
第27章 变更管理 739
27.1 软件配置管理 740
27.1.1 SCM场景 741
27.1.2 配置管理系统元素 742
27.1.3 基线 743
27.1.4 软件配置项 743
27.2 SCM中心存储库 745
27.2.1 中心存储库的作用 745
27.2.2 一般特征和内容 746
27.2.3 SCM特征 747
27.3 SCM过程 748
27.3.1 软件配置中对象的标识 749
27.3.2 版本控制 750
27.3.3 变更控制 752
27.3.4 配置审核 755
27.3.5 状态报告 756
27.4 Web工程的配置管理 756
27.4.1 WebApp的配置管理问题 757
27.4.2 WebApp的配置对象 758
27.4.3 内容管理 758
27.4.4 变更管理 761
27.4.5 版本控制 763
27.4.6 审核和报告 764
27.5 小结 765
参考文献 766
习题与思考题 767
推荐读物与阅读信息 768
第五部分 软件工程高级课题 770
第28章 形式化方法 770
28.1 基本概念 771
28.1.1 非形式化方法的缺陷 772
28.1.2 软件开发中的数学 773
28.1.3 形式化方法概念 773
28.2 数学预备知识 776
28.2.1 集合与构造性规格说明 776
28.2.2 集合运算符 778
28.2.3 逻辑运算符 780
28.2.4 序列 780
28.3 应用数学表示法描述形式化规格说明 781
28.4 形式规格说明语言 783
28.5 对象约束语言(OCL) 784
28.5.1 OCL语法及语义概述 784
28.5.2 使用OCL举例 786
28.6 Z规格说明语言 788
28.6.1 Z语法及语义概述 788
28.6.2 使用Z举例 788
28.7 形式化方法的十条戒律 791
28.8 形式化方法——未来之路 792
28.9 小结 793
参考文献 793
习题与思考题 794
推荐读物与阅读信息 795
第29章 净室软件工程 796
29.1 净室方法 797
29.1.1 净室策略 798
29.1.2 净室方法的特异之处 800
29.2 功能规格说明 801
29.2.1 黑盒规格说明 802
29.2.2 状态盒规格说明 803
29.2.3 清晰盒规格说明 803
29.3 净室设计 804
29.3.1 设计求精与验证 804
29.3.2 设计验证的优点 808
29.4 净室测试 809
29.4.1 统计使用测试 810
29.4.2 认证 811
29.5 小结 812
参考文献 812
习题与思考题 813
推荐读物与阅读信息 814
第30章 基于构件的开发 815
30.1 基于构件系统的工程 816
30.2 CBSE过程 818
30.3 领域工程 819
30.3.1 领域分析过程 819
30.3.2 特征化函数 820
30.3.3 结构化建模与结构点 821
30.4 基于构件的开发 822
30.4.1 构件合格性检验、适应性修改与组装 822
30.4.2 构件工程 825
30.4.3 复用的分析与设计 826
30.5 构件分类与检索 827
30.5.1 描述可复用构件 827
30.5.2 复用环境 829
30.6 CBSE经济学 830
30.6.1 对质量、生产率及成本的影响 830
30.6.2 运用结构点的成本分析 831
30.7 小结 832
参考文献 833
习题与思考题 834
推荐读物与阅读信息 835
第31章 再工程 837
31.1 业务过程再工程 838
31.1.1 务过程 839
31.1.2 BPR模型 839
31.2 软件再工程 841
31.2.1 软件维护 841
31.2.2 软件再工程过程模型 842
31.3 逆向工程 846
31.3.1 理解数据的逆向工程 848
31.3.2 理解处理的逆向工程 848
31.3.3 用户界面的逆向工程 849
31.4 重构 850
31.4.1 代码重构 850
31.4.2 数据重构 851
31.5 正向工程 852
31.5.1 客户/服务器体系结构(C/S)的正向工程 853
31.5.2 面向对象体系结构的正向工程 854
31.5.3 用户界面的正向工程 855
31.6 再工程经济学 855
31.7 小结 856
参考文献 857
习题与思考题 858
推荐读物与阅读信息 859
第32章 未来之路 860
32.1 软件的重要性——再论 861
32.2 变化的范围 861
32.3 人及其构造系统的方式 863
32.4 “新”的软件工程过程 864
32.5 表示信息的新模式 865
36.6 技术作为推动力 867
32.7 软件工程师的责任 868
32.8 结束语 870
参考文献 871
习题与思考题 871
推荐读物与阅读信息 871
索引 873