第1部分 引论 3
第1章 软件重用与软件工程 3
1.1 概念与术语 4
1.1.1 软件重用的定义 4
1.1.2 软件重用:潜能与陷阱 6
1.1.3 练习 7
1.2 软件重用产品 8
1.2.1 可重用资产 8
1.2.2 重用库:纵向集与横向集 9
1.2.3 练习 11
1.3.1 组织结构 12
1.3 软件重用过程 12
1.3.2 领域工程 13
1.3.3 应用工程 14
1.3.4 企业监督 15
1.3.5 练习 15
1.4 软件重用范例 17
1.4.1 软件检索范例 17
1.4.2 软件适配范例 18
1.4.3 软件合成范例 19
1.4.4 练习 20
1.5 补充读物 21
2.1.1 最新研究状况 23
2.1 软件重用管理 23
第2章 最新理论研究与实践 23
2.1.2 实践情况 25
2.1.3 前景 27
2.1.4 练习 27
2.2 软件重用技术 28
2.2.1 最新研究状况 28
2.2.2 实践情况 31
2.2.3 前景 33
2.2.4 练习 34
2.3 软件重用活动 34
2.3.1 软件重用库 34
2.3.2 软件重用方法 37
2.3.3 软件重用标准 42
2.3.4 练习 43
2.4 补充读物 43
第3章 软件重用问题 47
3.1 组织问题 47
3.1.1 管理基础设施 47
3.1.2 技术基础设施 47
3.1.3 重用的引入 48
3.1.4 练习 48
3.2 技术问题 49
3.2.1 领域工程问题 49
3.2.3 应用工程问题 50
3.2.2 组件工程问题 50
3.2.4 练习 51
3.3 经济问题 51
3.3.1 软件重用指标 51
3.3.2 软件重用成本估计 51
3.3.3 软件重用投资回报 52
3.4 补充读物 52
第2部分 组织问题 55
第4章 软件重用组织 55
4.1 软件重用团队结构 55
4.1.1 特征特性 55
4.1.2 软件重用团队结构 57
4.1.3 确定因素 63
4.1.4 练习 64
4.2 重用技能 65
4.2.1 重用库管理员 65
4.2.2 重用经理 66
4.2.3 领域工程师 66
4.2.4 应用工程师 67
4.2.5 组件工程师 68
4.2.6 练习 68
4.3 补充读物 68
第5章 支持服务 71
5.1 配置管理 71
5.3 测试 73
5.2 质量保证 73
5.4 检验与确认 74
5.4.1 领域级任务 77
5.4.2 符合性任务 78
5.4.3 沟通结果 79
5.5 风险管理 79
5.6 确认 80
5.7 练习 81
5.8 补充读物 81
第6章 重用制度化 83
6.1 机构就绪状态 83
6.2 重用障碍 88
6.2.1 文化障碍 89
6.2.2 管理障碍 90
6.2.3 技术障碍 90
6.2.4 基础设施障碍 90
6.3 克服重用障碍 91
6.3.1 行政层的支持 91
6.3.2 培训 91
6.3.3 激励 91
6.3.4 渐进方法 92
6.4 练习 94
6.5 补充读物 95
第7章 构建可重用资产:概述 99
7.1 可重用性 99
第3部分 领域工程:针对重用构建 99
7.1.1 可使用性 100
7.1.2 有用性 106
7.2 获取可重用资产 108
7.2.1 构建与购买 109
7.2.2 内部构建可重用资产 110
7.2.3 构建应用系统生成器 112
7.3 领域工程生命周期 115
7.3.1 问题 116
7.3.2 领域工程生命周期的一个样本 119
7.3.3 小结 122
7.4 结论 124
第8章 领域分析 127
8.1 基本概念 128
8.1.1 领域 128
8.1.2 领域分析 129
8.1.3 领域模型 130
8.1.4 练习 131
8.2 领域范围 131
8.2.1 范围评判准则 131
8.2.2 范围过大与过小 132
8.2.3 练习 133
8.3 领域需求与应用需求 133
8.4 领域组件的剖析 135
8.4.1 组件族模型 136
8.4.2 组件族的设计考虑 138
8.4.3 练习 139
8.5 抽象与领域分析 139
8.5.1 抽象与共性分析 139
8.5.2 抽象维 144
8.5.3 练习 148
8.6 领域分析方法 148
8.6.1 面向功能的领域分析(FODA) 148
8.6.2 机构领域建模(ODM) 150
8.6.3 联合面向对象领域分析(JODA) 150
8.6.4 重用库过程模型(RLPM) 151
8.6.5 领域分析与设计过程(DADP) 152
8.6.6 与具体领域有关的软件体系结构(DSSA) 153
8.6.7 SYNTHESIS领域分析方法 153
8.6.8 重用业务方法论 154
8.6.9 比较 155
8.6.10 练习 161
8.7 领域分析工具 161
8.7.1 KAPTUR,一种基于知识的工具 162
8.7.2 GENESIS,一种数据库管理系统构建工具 162
8.7.3 练习 163
8.8 补充读物 163
9.1 可使用性属性 165
9.1.1 可重用性——抽象边界 165
第9章 程序设计范例与可重用性 165
9.1.2 抽象与可合成性 168
9.2 表达与建模范例 173
9.2.1 描述性与过程性表达 173
9.2.2 面向对象的建模 178
9.3 开发范例中的抽象与合成 181
9.3.1 描述性表达:逻辑程序设计案例 181
9.3.2 过程性(函数)程序设计 185
9.3.3 面向对象的开发 190
9.4 向多范例开发发展 198
第10章 面向对象实用介绍 203
第4部分 面向对象的领域工程 203
10.1 引言 204
10.1.1 概述 204
10.1.2 财务领域 205
10.2 面向对象程序设计的准则 206
10.2.1 一段样本程序 206
10.2.2 封装与信息隐藏 208
10.2.3 重载与一般化 213
10.2.4 子类型与类继承 220
10.2.5 方法解析、晚捆绑与多态性 232
10.3 语言大战 238
10.4 讨论 244
第11章 面向对象中的抽象与参数化技术 245
11.1.1 对象的本体 247
11.1 面向对象建模中的抽象手段 247
11.1.2 知识表示中的继承 251
11.1.3 面向对象分析中的继承 253
11.1.4 元建模 255
11.1.5 理解元建模 262
11.1.6 实践做法——小结 266
11.2 面向对象程序设计语言中的抽象手段 272
11.2.1 抽象类 272
11.2.2 一般类 277
11.3 元程序设计 280
11.3.1 构建一种解释器 281
11.3.2 计算反射与元类 284
11.3.3 实现强类型 290
11.4 设计模式 292
11.4.1 结构抽象模式 293
11.4.2 行为抽象模式 297
11.5 小结 300
第12章 面向对象中的合成技术 303
12.1 问题 304
12.1.1 可合成性需求 304
12.1.2 结构与行为合成 305
12.1.3 抽象与粒度 307
12.1.4 捆绑时间 308
12.2 语言方法 309
12.2.1 约束与基于逻辑的程序设计 309
12.2.2 函数合成 312
12.2.3 面向对象与描述混合方法 316
12.3.1 面向特性的程序设计 321
12.3 模块化与打包方法 321
12.3.2 面向主题的程序设计 324
12.3.3 面向视图的程序设计 328
12.3.4 其他方法 332
12.4 基于设计的方法 335
12.4.1 基于事件的合成 335
12.4.2 假反射 340
12.4.3 合成设计模式 347
12.5 小结与讨论 352
第13章 应用框架 355
13.1.1 一种初步定义 356
13.1 框架中有什么内容 356
13.1.2 框架分析 357
13.1.3 框架重用生命周期 362
13.2 完成框架合同 364
13.2.1 组件可替换性 365
13.2.2 合成问题 372
13.3 构建框架 381
13.3.1 框架作为领域工程产品 381
13.3.2 框架作为应用系统开发的有计划的副产品 383
13.4 SWING框架 385
13.4.1 综述 385
13.4.2 事件处理框架 387
13.4.3 可接插外观感觉框架 391
13.5 小结 393
第14章 体系结构框架 395
14.1 什么是体系结构 396
14.1.1 定义 396
14.1.2 体系结构的质量属性 399
14.1.3 体系结构风格与连接器 401
14.2 体系结构与重用 407
14.2.1 软件体系结构的开发生命周期 408
14.2.2 可重用性的方向维 411
14.2.3 体系结构框架中的问题 413
14.3.1 问题 414
14.3 CORBA 414
14.3.2 核心体系结构 417
14.3.3 处理方法调用 421
14.3.4 实现应用系统对象 424
14.4 基于Java的技术 427
14.4.1 Java RMI 428
14.4.2 EJB体系结构 432
14.5 COM族 439
14.6 小结与讨论 446
14.7 补充读物 447
第15章应用工程 451
15.1 应用工程范例 451
第5部分 应用工程 451
15.2 应用工程生命周期 453
15.3 应用工程开发任务与探索 456
第16章 组件存储与检索 461
16.1 软件库介绍 461
16.1.1 存储与检索术语 461
16.1.2 评估准则 464
16.1.3 存储和检索方法的特征描述 467
16.1.4 练习 470
16.2 针对存储和检索分类软件资产 471
16.2.1 软件资产分类的障碍 471
16.2.2 软件存储和检索问题 473
16.2.3 分类软件库 474
16.2.4 练习 475
16.3 补充读物 476
第17章 可重用资产集成 481
17.1 资产实例化范例 482
17.1.1 组件选择 483
17.1.2 组件生成 483
17.1.3 组件规格说明 483
17.2 资产合成范例 484
17.2.1 可合成性情景 485
17.2.2 可合成性媒介 488
17.3.1 组件问题 489
17.3 集成组件问题 489
17.3.2 过程问题 490
17.3.3 质量问题 492
第6部分 软件重用的管理问题 497
第18章 软件重用指标 497
18.1 软件工程指标 497
18.1.1 属性与指标 497
18.1.2 结构指标 498
18.1.3 功能指标 499
18.1.4 练习 501
18.2 组件工程指标 503
18.2.1 概念 503
18.2.2 内容 504
18.2.3 背景 505
18.2.4 练习 506
18.3 应用工程指标 506
18.3.1 项目级功能 507
18.3.2 练习 508
18.4 领域工程指标 509
18.4.1 重用方式:软件库指标 509
18.4.2 练习 509
18.5 机构级指标 510
18.5.1 重用的效果:生产率收益 510
18.5.2 练习 511
18.6 补充读物 512
19.1.1 基本COCOMO 513
19.1 软件工程经济:COCOMO 513
第19章 软件重用成本估计 513
19.1.2 中级COCOMO 515
19.1.3 详细COCOMO 517
19.1.4 练习 518
19.2 组件工程经济 519
19.2.1 针对重用的开发 519
19.2.2 质量收益 522
19.2.3 生产率收益 523
19.2.4 投放市场时间收益 525
19.3 应用工程经济 526
19.3.1 采用重用的开发 526
19.2.5 练习 526
19.3.2 生产率收益 527
19.3.3 质量收益 528
19.3.4 投放市场时间收益 529
19.3.5 练习 529
19.4 补充读物 530
第20章 软件重用投资回报 531
20.1 投资决策建模 532
20.1.1 投资成本要素 532
20.1.2 经济函数 533
20.1.3 练习 535
20.2 软件重用投资决策 535
20.2.1 组件工程投资周期 537
20.2.2 应用工程投资周期 539
20.2.3 领域工程投资周期 540
20.2.4 机构投资周期 541
20.2.5 练习 542
20.3 补充读物 544
第7部分 软件重用技术 549
第21章 基于组件的软件工程(CBSE) 549
21.1 组件 550
21.1.1 组件是什么 550
21.1.2 组件剖析 551
21.1.3 什么是好组件 554
21.2 组件模型 555
21.2.1 什么是组件模型 555
21.2.2 组件模型应该描述的问题 556
21.2.3 示例组件模型 558
21.3 基于组件的系统开发(CBSD) 558
21.3.1 CBSD过程 559
21.3.2 组件粒度 561
21.4 采用组件开发问题 562
21.4.1 技术问题 562
21.4.2 业务问题 564
21.5 补充读物 565
第22章 产品线工程(PLE) 567
22.1 PLE与软件重用 568
22.1.1 练习 569
22.2.1 领域与应用工程问题 570
22.2 PLE生命周期 570
22.2.2 PLE生命周期的属性 571
22.2.3 成功要素 572
22.2.4 练习 573
22.3 产品线体系结构 573
22.3.1 软件体系结构与产品线体系结构 573
22.3.2 PLA中的一致与同步 574
22.3.3 进化体系结构 575
22.3.4 练习 575
22.4 PLE方法 576
22.4.1 SYNTHESIS方法 576
22.4.2 产品线实践 580
22.5 补充读物 585
22.4.3 产品线方法 585
第23章 基于商品化货架产品的开发 587
23.1 商品化货架软件 587
23.1.1 定义与背景 587
23.1.2 COTS与CBSD 588
23.1.3 练习 589
23.2 基于COTS开发的生命周期 590
23.2.1 COTS选择 590
23.2.2 COTS集成 591
23.2.3 基于COTS系统的检验与验证 592
23.2.4 基于COTS系统的维护 593
23.2.5 COTS开发的成本估计 594
23.2.6 练习 595
23.3 开发COTS确认评判准则 596
23.3.1 确认分类 596
23.3.2 COTS确认层次 597
23.3.3 COTS价值 598
23.3.4 领域深入性 602
23.3.5 体系结构符合性 603
23.3.6 应用系统适合性 606
23.4 补充读物 606
附录A 软件重用资源 609
A.1 教科书 609
附录 609
A.2 Web网站 610
A.3 会议 611
A.4 软件重用调查 613
附录B 术语 615
B.1 等待队列仿真 615
B.1.1 领域工程 615
B.1.2 应用工程 616
B.2 图书馆系统 619
B.2.1 领域工程 619
B.2.2 应用工程 621
附录C 字母缩写与符号 625
参考文献 631