第1章 软件体系结构概论 1
1.1 从软件危机谈起 1
1.1.1 软件危机的表现 1
1.1.2 软件危机的成因 2
1.1.3 如何克服软件危机 3
1.2 构件与软件重用 4
1.2.1 构件模型及实现 4
1.2.2 构件获取 5
1.2.3 构件管理 6
1.2.4 构件重用 10
1.2.5 软件重用实例 15
1.3 软件体系结构的兴起和发展 18
1.3.1 软件体系结构的定义 19
1.3.2 软件体系结构的意义 20
1.3.3 软件体系结构的发展史 23
1.4 软件体系结构的应用现状 23
主要参考文献 29
第2章 软件体系结构建模 30
2.1 软件体系结构建模概述 30
2.2 “4+1”视图模型 30
2.2.1 逻辑视图 31
2.2.2 开发视图 32
2.2.3 进程视图 33
2.2.4 物理视图 35
2.2.5 场景 36
2.3 软件体系结构的核心模型 37
2.4 软件体系结构的生命周期模型 38
2.5 软件体系结构抽象模型 41
2.5.1 构件 41
2.5.2 连接件 43
2.5.3 软件体系结构 44
2.5.4 软件体系结构关系 44
2.5.5 软件体系结构范式 46
主要参考文献 48
第3章 软件体系结构风格 49
3.1 软件体系结构风格概述 49
3.2 经典软件体系结构风格 50
3.2.1 管道和过滤器 50
3.2.2 数据抽象和面向对象组织 51
3.2.3 基于事件的隐式调用 52
3.2.4 分层系统 53
3.2.5 仓库系统及知识库 53
3.2.6 C2风格 54
3.3 客户/服务器风格 55
3.4 三层C/S结构风格 57
3.4.1 三层C/S结构的概念 57
3.4.2 三层C/S结构应用实例 60
3.4.3 三层C/S结构的优点 64
3.5 浏览器/服务器风格 65
3.6 公共对象请求代理体系结构 66
3.7.1 正交软件体系结构的概念 69
3.7 正交软件体系结构 69
3.7.2 正交软件体系结构的实例 70
3.7.3 正交软件体系结构的优点 73
3.8 基于层次消息总线的体系结构风格 73
3.8.1 构件模型 75
3.8.2 构件接口 75
3.8.3 消息总线 76
3.8.4 构件静态结构 77
3.8.5 构件动态行为 78
3.8.6 运行时刻的系统演化 78
3.9 异构结构风格 79
3.9.1 为什么要使用异构结构 79
3.9.2 异构结构的实例 80
3.9.3 异构组合匹配问题 83
3.10 互联系统构成的系统及其体系结构 84
3.10.1 互联系统构成的系统 84
3.10.2 基于SASIS的软件过程 85
3.10.3 应用范围 87
3.11 特定领域软件体系结构 89
3.11.1 DSSA的定义 89
3.11.2 DSSA的基本活动 90
3.11.3 参与DSSA的人员 91
3.11.4 DSSA的建立过程 92
3.11.5 DSSA实例 94
3.11.6 DSSA与体系结构风格的比较 97
主要参考文献 98
第4章 软件体系结构描述 99
4.1 软件体系结构描述方法 99
4.2 软件体系结构描述框架标准 101
4.3 体系结构描述语言 102
4.3.1 ADL与其他语言的比较 102
4.3.2 ADL的构成要素 104
4.4 典型的软件体系结构描述语言 106
4.4.1 UniCon 106
4.4.2 Wright 108
4.4.3 C2 109
4.4.4 Rapide 113
4.4.5 SADL 114
4.4.6 Aesop 115
4.4.7 ACME 116
4.5 软件体系结构与UML 123
4.5.1 UML简介 123
4.5.2 UML的主要内容 125
4.5.3 直接使用UML建模 130
4.5.4 使用UML扩展机制 134
4.6 可扩展标记语言 138
4.6.1 XML语言简介 138
4.6.2 XML相关技术简介 140
4.7 基于XML的软件体系结构描述语言 142
4.7.1 XADL 2.0 142
4.7.2 XBA 147
主要参考文献 150
第5章 动态软件体系结构 151
5.1 动态软件体系结构概述 151
5.2 软件体系结构动态模型 153
5.2.1 基于构件的动态系统结构模型 153
5.2.2 πADL动态体系结构 157
5.3 动态体系结构的描述 162
5.3.1 动态体系结构描述语言 162
5.3.2 动态软件体系结构的形式化描述 163
5.4 动态体系结构特征 165
5.5 化学抽象机 166
主要参考文献 169
第6章 Web服务体系结构 170
6.1 Web服务概述 170
6.1.1 什么是Web服务 170
6.1.2 Web服务的不同描述 171
6.1.3 Web服务的特点 172
6.2 Web服务体系结构模型 173
6.3 Web服务的核心技术 176
6.3.1 作为Web服务基础的XML 176
6.3.2 简单对象访问协议 177
6.3.3 Web服务描述语言 179
6.3.4 统一描述、发现和集成协议 180
6.4.1 面向服务体系结构概念 182
6.4 面向服务的软件体系结构 182
6.4.2 面向服务体系结构的设计原则 184
6.5 Web服务的应用实例 186
主要参考文献 189
第7章 基于体系结构的软件开发 191
7.1 设计模式 191
7.1.1 设计模式概述 191
7.1.2 设计模式的组成 194
7.1.3 模式和软件体系结构 196
7.1.4 设计模式方法分类 197
7.2 基于体系结构的设计方法 201
7.2.1 有关术语 201
7.2.2 ABSD方法与生命周期 203
7.2.3 ABSD方法的步骤 205
7.3 体系结构的设计与演化 211
7.3.1 设计和演化过程 211
7.3.2 实验原型阶段 212
7.3.3 演化开发阶段 214
7.4 基于体系结构的软件开发模型 215
7.4.1 体系结构需求 215
7.4.2 体系结构设计 216
7.4.3 体系结构文档化 217
7.4.4 体系结构复审 218
7.4.5 体系结构实现 218
7.4.6 体系结构演化 219
7.5.1 系统简介 220
7.5 应用开发实例 220
7.5.2 系统设计与实现 224
7.5.3 系统演化 225
7.6 基于体系结构的软件过程 226
7.6.1 有关概念 226
7.6.2 软件过程网 228
7.6.3 基本结构的表示 230
7.6.4 基于体系结构的软件过程Petri网 231
7.7 软件体系结构演化模型 235
7.7.1 SA静态演化模型 235
7.7.2 SA的动态演化模型 238
主要参考文献 240
8.1 体系结构的可靠性建模 242
第8章 软件体系结构的分析与测试 242
8.2 软件体系结构的可靠性风险分析 246
8.2.1 软件体系结构风险分析背景 246
8.2.2 软件体系结构风险分析方法 247
8.3 基于体系结构描述的软件测试 252
8.3.1 测试方法 252
8.3.2 实例与实现 254
主要参考文献 255
第9章 软件体系结构评估 256
9.1 体系结构评估概述 256
9.2 软件体系结构评估的主要方式 260
9.3 ATAM评估方法 261
9.3.1 ATAM评估的步骤 262
9.3.2 ATAM评估的阶段 268
9.4 SAAM评估方法 271
9.4.1 SAAM评估的步骤 271
9.4.2 SAAM评估实例 275
主要参考文献 279
第10章 软件产品线体系结构 280
10.1 软件产品线的出现和发展 280
10.1.1 软件体系结构的发展 281
10.1.2 软件重用的发展 282
10.2 软件产品线概述 282
10.2.1 软件产品线的基本概念 282
10.2.2 软件产品线的过程模型 283
10.2.3 软件产品线的组织结构 285
10.2.4 软件产品线的建立方式 287
10.2.5 软件产品线的演化 288
10.3 框架和应用框架技术 289
10.4 软件产品线基本活动 291
10.5 软件产品线体系结构的设计 294
10.5.1 产品线体系结构简介 294
10.5.2 产品线体系结构的标准化和定制 296
10.6 软件产品线体系结构的演化 297
10.6.1 背景介绍 298
10.6.2 两代产品的各种发行版本 300
10.6.3 需求和演化的分类 303
主要参考文献 306