第1章 软件体系结构概论 1
1.1 从软件危机谈起 1
1.1.1 软件危机的表现 1
1.1.2 软件危机的原因 2
1.1.3 如何克服软件危机 3
1.2 构件与软件重用 3
1.2.1 构件模型及实现 4
1.2.2 构件获取 5
1.2.3 构件管理 6
1.2.4 构件重用 9
1.2.5 软件重用实例 14
1.3 软件体系结构的兴起和发展 17
1.3.1 软件体系结构的定义 18
1.3.2 软件体系结构的意义 19
1.3.3 软件体系结构的发展史 21
1.4 软件体系结构的应用现状 22
思考题 27
主要参考文献 28
第2章 软件体系结构建模 29
2.1 “4+1”视图模型 29
2.1.1 逻辑视图 30
2.1.2 开发视图 31
2.1.3 进程视图 32
2.1.4 物理视图 33
2.1.5 场景 35
2.2 软件体系结构的核心模型 36
2.3 软件体系结构的生命周期模型 37
2.3.1 各阶段之间的关系 37
2.3.2 软件体系结构的生命周期 38
2.4 软件体系结构抽象模型 40
2.4.1 构件及其关系的抽象描述 40
2.4.2 连接件 44
2.4.3 软件体系结构 44
2.4.4 软件体系结构关系 45
2.4.5 软件体系结构范式 46
思考题 48
主要参考文献 48
第3章 软件体系结构风格 50
3.1 经典软件体系结构风格 50
3.1.1 管道与过滤器 51
3.1.2 数据抽象和面向对象系统 52
3.1.3 基于事件的系统 52
3.1.4 分层系统 53
3.1.5 仓库系统及知识库 54
3.1.6 C2风格 55
3.2 客户/服务器风格 56
3.3 三层C/S结构风格 58
3.3.1 各层的功能 59
3.3.2 三层C/S结构应用实例 61
3.3.3 三层C/S结构的优点 65
3.4 浏览/服务器风格 66
3.5 公共对象请求代理体系结构 67
3.5.1 CORBA技术规范 68
3.5.2 CORBA风格分析 68
3.6 正交软件体系结构 70
3.6.1 正交软件体系结构的抽象模型 71
3.6.2 软件体系结构的正交化 72
3.6.3 正交软件体系结构的实例 73
3.6.4 正交软件体系结构的优点 76
3.7 基于层次消息总线的体系结构风格 77
3.7.1 构件模型 78
3.7.2 构件接口 79
3.7.3 消息总线 79
3.7.4 构件静态结构 81
3.7.5 构件动态行为 81
3.7.6 运行时刻的系统演化 82
3.8 异构结构风格 82
3.8.1 异构结构的实例分析 83
3.8.2 异构组合匹配问题 85
3.9 互连系统构成的系统及其体系结构 87
3.9.1 互连系统构成的系统 87
3.9.2 基于SASIS的软件过程 88
3.9.3 应用范围 90
3.10 特定领域软件体系结构 92
3.10.1 DSSA的定义 92
3.10.2 DSSA的基本活动 93
3.10.3 参与DSSA的人员 94
3.10.4 DSSA的建立过程 95
3.10.5 DSSA实例 96
3.10.6 DSSA与体系结构风格的比较 99
思考题 100
主要参考文献 102
第4章 软件体系结构描述 104
4.1 软件体系结构描述方法 104
4.2 软件体系结构描述框架标准 106
4.3 体系结构描述语言 106
4.3.1 ADL与其他语言的比较 107
4.3.2 ADL的构成要素 108
4.4 典型的软件体系结构描述语言 110
4.4.1 UniCon 111
4.4.2 Wright 112
4.4.3 C2 113
4.4.4 Rapide 117
4.4.5 SADL 118
4.4.6 Aesop 118
4.4.7 ACME 120
思考题 126
主要参考文献 126
第5章 统一建模语言 128
5.1 UML概述 128
5.1.1 UML的发展历史 128
5.1.2 UML的应用领域 129
5.2 UML的结构 130
5.2.1 结构概述 130
5.2.2 事物 131
5.2.3 关系 132
5.2.4 图形 133
5.3 用例图 135
5.4 类图和对象图 136
5.5 交互图 137
5.5.1 顺序图 138
5.5.2 通信图 138
5.5.3 定时图 139
5.6 状态图 140
5.7 活动图 141
5.7.1 基本活动图 141
5.7.2 带泳道的活动图 142
5.7.3 交互概览图 142
5.8 构件图 143
5.9 部署图 144
5.10 使用UML建模 145
5.11 使用UML的扩展机制 149
思考题 152
主要参考文献 153
第6章 可扩展标记语言 154
6.1 XML概述 154
6.1.1 XML的特点 155
6.1.2 XML的作用 156
6.1.3 XML的应用 158
6.2 解析XML 158
6.2.1 XML与HTML的区别 159
6.2.2 XML文档 160
6.2.3 CSS与XSL 162
6.3 XML编程接口 165
6.3.1 API 165
6.3.2 XML开发工具 167
6.3.3 XML建模 168
6.4 基于XML的软件体系结构描述语言 168
6.4.1 XADL 2.0 169
6.4.2 XBA 173
思考题 175
主要参考文献 176
第7章 动态软件体系结构 177
7.1 动态软件体系结构概述 177
7.2 基于构件的动态系统结构模型 179
7.3 πADL动态体系结构 182
7.3.1 πADL描述体系结构的框架 183
7.3.2 πADL动态体系结构建模方法 184
7.3.3 πADL动态体系结构建模语义 186
7.4 动态体系结构的描述 187
7.4.1 动态体系结构描述语言 188
7.4.2 动态体系结构的形式化描述 189
7.5 动态体系结构的特征 191
7.6 化学抽象机 192
思考题 195
主要参考文献 196
第8章 基于服务的体系结构 197
8.1 SOA概述 197
8.2 面向服务的分析与设计 199
8.3 SOA的关键技术 201
8.4 SOA的实现方法 202
8.5 服务描述语言 205
8.5.1 WSDL概述 205
8.5.2 使用WSDL文档 206
8.5.3 WSDL文档结构 207
8.6 统一描述、发现和集成协议 214
8.6.1 UDDI数据模型 214
8.6.2 注册Web服务 218
8.6.3 调用Web服务 218
8.7 消息封装协议 219
8.7.1 消息封装和编码规则 219
8.7.2 SOAP应用 221
8.7.3 REST 224
8.8 构造一个简单的服务 224
8.8.1 编写服务器端 224
8.8.2 编写客户端 225
8.9 Web服务的应用实例 226
思考题 229
主要参考文献 231
第9章 富互联网应用体系结构 233
9.1 RIA的概念 233
9.1.1 RIA的提出 233
9.1.2 丰富的含义 234
9.1.3 RIA的优点 234
9.2 RIA模型 235
9.3 RIA客户端开发技术 237
9.4 AJAX技术 239
9.5 Mashup技术 240
9.5.1 Mashup的体系结构 240
9.5.2 Mashup实现技术 242
思考题 243
主要参考文献 244
第10章 软件体系结构的分析与测试 245
10.1 体系结构的可靠性建模 245
10.2 软件体系结构的风险分析 249
10.2.1 风险分析的方法 249
10.2.2 风险分析的步骤 250
10.3 基于体系结构描述的软件测试 255
10.3.1 测试方法 255
10.3.2 实例与实现 256
思考题 258
主要参考文献 258
第11章 软件体系结构评估 259
11.1 软件体系结构评估概述 259
11.1.1 软件质量属性 259
11.1.2 几个基本概念 261
11.1.3 评估的主要方式 263
11.2 ATAM评估方法 264
11.2.1 ATAM评估的步骤 265
11.2.2 ATAM评估的阶段 271
11.3 SAAM评估方法 274
11.3.1 SAAM评估的步骤 274
11.3.2 SAAM评估实例 278
思考题 281
主要参考文献 282
第12章 基于体系结构的软件开发 283
12.1 设计模式 283
12.1.1 设计模式概述 283
12.1.2 设计模式的组成 285
12.1.3 设计模式的描述 287
12.1.4 模式和软件体系结构 288
12.1.5 设计模式的层次 289
12.1.6 设计模式的分类 291
12.1.7 设计模式示例 294
12.1.8 MVC模式的设计与实现 297
12.2 中间件技术 300
12.2.1 中间件概述 300
12.2.2 主要的中间件 302
12.2.3 中间件与构件的关系 306
12.3 基于体系结构的设计方法 307
12.3.1 有关术语 308
12.3.2 ABSD方法与生命周期 309
12.3.3 ABSD方法的步骤 311
12.4 体系结构的设计与演化 318
12.4.1 设计和演化过程 318
12.4.2 实验原型阶段 319
12.4.3 演化开发阶段 321
12.5 基于体系结构的软件开发模型 321
12.5.1 体系结构需求 322
12.5.2 体系结构设计 323
12.5.3 体系结构文档化 324
12.5.4 体系结构复审 324
12.5.5 体系结构实现 324
12.5.6 体系结构演化 325
12.6 应用开发实例 326
12.6.1 系统简介 326
12.6.2 系统设计与实现 329
12.6.3 系统演化 331
12.7 基于体系结构的软件过程 332
12.7.1 有关概念 332
12.7.2 软件过程网 333
12.7.3 基本结构的表示 335
12.7.4 基于体系结构的软件过程Petri网 336
12.8 软件体系结构演化模型 341
12.8.1 SA静态演化模型 341
12.8.2 SA动态演化模型 343
思考题 346
主要参考文献 348
第13章 软件产品线体系结构 350
13.1 软件产品线的出现和发展 350
13.1.1 软件体系结构的发展 350
13.1.2 软件重用的发展 351
13.2 软件产品线概述 352
13.2.1 软件产品线的过程模型 353
13.2.2 软件产品线的组织结构 355
13.2.3 软件产品线的建立方式 356
13.2.4 软件产品线的演化 357
13.3 框架和应用框架技术 358
13.4 软件产品线基本活动 360
13.4.1 产品线分析 361
13.4.2 产品开发 363
13.5 软件产品线体系结构的设计 364
13.5.1 产品线体系结构简介 364
13.5.2 产品线体系结构的标准化和定制 366
13.6 软件产品线体系结构的演化 367
13.6.1 背景介绍 367
13.6.2 两代产品的各种发行版本 369
13.6.3 需求和演化的分类 372
思考题 375
主要参考文献 376