第1章 概述 1
1.1 软件演化的基本概念 1
1.1.1 软件演化、软件维护与软件复用 1
1.1.2 软件演化的分类 2
1.2 设计时演化 3
1.2.1 设计模式对设计时演化的支持 3
1.2.2 构件技术对设计时演化的支持 4
1.2.3 框架技术对设计时演化的支持 6
1.3 装载时演化 8
1.4 动态演化概念 9
1.4.1 动态演化、动态配置和软件的演化性 9
1.4.1 动态演化分类 11
1.5 软件动态演化技术的重要性 11
1.5.1 Internet需要软件动态演化 11
1.5.2 动态演化性是网构软件的基本特征 13
1.5.3 追求动态演化能力是自治计算的目的 14
1.5.4 动态演化技术是网格计算的基础 15
第2章 动态演化基础 16
2.1 基本原理 16
2.1.1 动态演化过程 16
2.1.2 语言、模型和平台 17
2.1.3 动态演化要解决的关键问题 20
2.2 系统一致性 21
2.2.1 系统一致性分类 21
2.2.2 行为一致性 22
2.2.3 构件状态一致性 31
2.2.4 应用状态一致性 32
2.2.5 引用一致性 33
2.3 状态迁移方法 34
2.3.1 状态检测 34
2.3.2 状态迁移方法分类 35
2.3.3 一种构件间状态迁移的元模型驱动方法 36
第3章 设计可动态演化的软件系统 39
3.1 构造性和演化性 39
3.2 动态需求 39
3.2.1 具有动态性的需求和需求的动态性 39
3.2.2 需求的动态变化性 40
3.2.3 具有动态性的需求 42
3.3 应用设计模式 43
3.3.1 设计模式的概念和分类 44
3.3.2 支持动态演化的设计模式 48
3.3.3 设计模式的应用 58
3.4 应用框架 58
3.4.1 框架的概念和分类 58
3.4.2 支持动态演化的框架 60
3.4.3 框架的应用 63
3.5 应用软件体系结构风格 64
3.5.1 体系结构风格概念和分类 65
3.5.2 支持动态演化的体系结构风格 66
3.5.3 体系结构风格的应用 69
3.6 AOP技术 71
3.6.1 AOP技术简介 72
3.6.2 动态AOP 80
3.6.3 AOP技术在Java平台中的应用 82
第4章 动态演化的粒度 83
4.1 函数层次的动态演化 83
4.1.1 DLL简介 83
4.1.2 调用方式 83
4.1.3 重新编译问题及解决方案 85
4.1.4 小结 88
4.2 类/对象层次的动态演化 88
4.2.1 JAVA的动态性 88
4.2.2 隐式加载和显式加载 88
4.2.3 自定义类加载机制 89
4.2.4 类加载器的阶层体系 91
4.2.5 类的动态替换 91
4.2.6 小结 94
4.3 构件层次的动态演化 94
4.3.1 构件和基于构件的软件工程 94
4.3.2 当前主要的构件标准规范 95
4.3.3 构件的动态配置 97
4.3.4 总结 99
4.4 动态软件体系结构 99
4.4.1 体系结构概念 99
4.4.2 演化与体系结构 101
4.4.3 动态软件体系结构的描述 101
4.4.4 动态软件体系结构的实现 106
4.5 动态工作流 110
4.5.1 工作流技术简介 110
4.5.2 动态工作流概述 113
4.5.3 动态工作流的特征及分类 113
4.5.4 动态修改的策略或处理 116
4.5.5 应用示例 118
第5章 动态配置技术 120
5.1 动态配置系统体系结构 120
5.2 动态配置方法的分类 120
5.3 避免性动态配置方法 122
5.3.1 Jeff方法 123
5.3.2 Warren方法 126
5.3.3 其他方法 127
5.3.4 避免性动态配置方法中存在的不足 129
5.4 动态配置算法 130
5.4.1 构件删除算法 130
5.4.2 构件添加算法 131
5.4.3 构件替换算法 132
5.4.4 构件迁移算法 133
5.4.5 连接建立算法 136
5.4.6 连接删除算法 136
5.4.7 连接重定向算法 137
5.4.8 构件属性设置算法 138
第6章 基于反射的动态演化 139
6.1 反射 139
6.1.1 背景、概念和特征 139
6.1.2 反射的分类 140
6.2 反射系统 141
6.2.1 反射系统的概念 141
6.2.2 面向对象的反射系统 142
6.2.3 反射模型 143
6.3 反射和演化 144
6.4 反射中间件 145
6.4.1 背景和概念 145
6.4.2 几个典型的反射中间件 146
6.4.3 中间件中的反射层 149
6.4.4 反射层的编程模型 150
6.4.5 利用反射层实现服务定制 152
6.5 基于反射理论的动态配置模型 153
第7章 动态演化的基础设施 157
7.1 COM构件的演化机制 157
7.1.1 概述 157
7.1.2 平台设计 158
7.1.3 ProBase平台引擎的设计 161
7.1.4 业务构件交互问题 162
7.1.5 ProBase优点总结 163
7.2 CORBA构件的演化机制 164
7.2.1 概述 164
7.2.2 反射式动态配置模型RDRM 166
7.2.3 动态配置系统反射体系 169
7.2.4 RDRM模型中的要素活跃性分析 169
7.2.5 RDRM模型在CCM平台上的映射 169
7.2.6 StarDRP的实现 170
7.2.7 StarDRP体系结构 173
7.2.8 小结 178
7.3 J2EE平台的演化机制 178
7.3.1 构件管理框架 178
7.3.2 J2EE动态演化支撑平台 186
7.3.3 小结 188
7.4 Web Services和SOA 188
7.4.1 Web Services技术 188
7.4.2 SOA基础 191
7.4.3 SOA与Web Services的联系 193
7.4.4 Web Services的动态组合 194
7.5 多Agent系统 196
7.5.1 多Agent系统简介 196
7.5.2 多Agent系统的体系结构 197
7.5.3 多Agent系统的动态性分析 200
7.5.4 Web Agent 201
第8章 与动态演化技术相关的应用 203
8.1 自治计算 203
8.1.1 自治计算的概念 203
8.1.2 自治计算的特征 205
8.1.3 动态演化在自治计算中的应用 205
8.2 网格计算 207
8.2.1 网格计算的概念 207
8.2.2 网格计算的体系结构 208
8.2.3 网格软件构件 210
8.2.4 网格服务集成 212
8.3 普适计算 215
8.3.1 普适计算的概念 215
8.3.2 普适计算层次化模型 216
8.3.3 普适计算的关键技术 217
8.3.3 动态演化在普适计算中的应用 223
8.4 自适应中间件 223
8.4.1 自适应中间件的概念 224
8.4.2 自适应中间件的分类 225
8.4.3 自适应中间件的支撑方法 235
第9章 支持动态演化的模型SASM 243
9.1 引言 243
9.2 D-ADL语言 244
9.2.1 D-ADL设计原则 244
9.2.2 高阶多型π演算简介 246
9.2.3 D-ADL的语法规约和形式语义 249
9.2.4 D-ADL对系统联机演化和SA求精的形式化支持 255
9.2.5 D-ADL和其他相关工作的比较 257
9.3 SASM模型 258
9.3.1 相关研究 258
9.3.2 基本原理 260
9.3.3 SASM框架 261
9.3.4 SASM中的反射机制 263
9.3.5 SASM系统开发 265
9.4 SASM动态演化方法 265
9.4.1 简单的系统演化 266
9.4.2 由RSAS变更引起的动态演化 266
9.5 小结 268
第10章 SASM支撑平台和工具 269
10.1 引言 269
10.2 支撑平台的总体架构设计 270
10.3 运行和监控的关键技术 273
10.3.1 运行信息跟踪器的机理分析 273
10.3.2 元连接件引擎的设计 274
10.4 动态演化管理 275
10.4.1 动态演化过程中的平台支持 275
10.4.2 运行状态维持机制 277
10.5 支撑平台的一个原型实现 278
10.5.1 原型系统的开发环境 279
10.5.2 体系结构元素的表示 280
10.5.3 原型系统的设计与实现 281
10.5.4 对原型环境中物理构件间的通信测试 284
参考文献 285