第1章 绪论 1
1.1 当前软件工程的分析 1
1.1.1 软件危机的出现 1
1.1.2 软件危机的成因 1
1.1.3 如何克服软件危机 2
1.2 什么是软件体系结构 3
1.3 对软件体系结构定义的不同观点 4
1.4 软件体系结构的重要性 5
1.4.1 利于复杂软件的系统理解 5
1.4.2 利于系统设计早期决策 6
1.4.3 利于软件高层性质分析 7
1.5 软件体系结构的意义 7
1.5.1 对系统分析的意义 7
1.5.2 对软件复用的意义 8
1.5.3 对系统演化的意义 9
1.5.4 在软件开发中的意义 9
1.6 软件体系结构的发展历史 12
1.7 应用现状及发展方向 13
1.7.1 应用现状 13
1.7.2 研究热点 16
1.7.3 发展方向 17
第2章 软件体系结构 19
2.1 软件体系结构的概念 19
2.1.1 软件体系结构的定义及分类 19
2.1.2 软件体系结构的三要素 23
2.1.3 构件的概念及特点 25
2.1.4 连接件的概念及特点 26
2.1.5 约束(配置) 27
2.2 软件体系结构研究范畴 27
2.2.1 描述语言 29
2.2.2 体系结构风格 30
2.2.3 风格、框架和设计模式 30
2.2.4 提供特定领域的体系结构框架 31
2.2.5 软件体系结构的形式化研究 32
2.2.6 软件体系结构的评价方法 32
2.3 软件体系结构与其他软件工程方法的关系 32
2.3.1 传统软件开发方法 33
2.3.2 面向对象方法 33
2.3.3 软件复用 33
2.4 动态体系结构研究 34
2.4.1 产生的背景 34
2.4.2 动态体系结构建模问题 35
2.4.3 πADL动态体系结构建模方法 35
2.4.4 相关研究 36
2.5 体系结构精化研究 36
2.5.1 体系结构精化问题 37
2.5.2 πADL体系结构行为精化 37
2.5.3 相关研究 40
2.6 体系结构实现的研究 41
2.6.1 面临的问题 41
2.6.2 相关研究 42
2.7 构件接口模型 43
2.7.1 构件接口模型介绍 43
2.7.2 体系结构领域构件的特点 44
2.7.3 CBSD领域构件的特点 44
2.7.4 定制端口和交互端口的分析 44
2.7.5 端口和接口嵌套定义的分析 45
2.8 体系结构的分析和设计方法 45
2.8.1 体系结构分析方法 45
2.8.2 体系结构设计方法 49
第3章 软件体系结构模式 51
3.1 管道-过滤器 51
3.2 层次结构 52
3.3 数据抽象与面向对象 53
3.4 事件驱动 54
3.5 仓储结构 54
3.6 特定域软件体系结构 55
3.7 过程控制 55
3.8 C2风格 56
3.9 分布式结构 57
3.10 基于事件的隐式调用 58
3.11 客户端/服务器结构 59
3.12 正交软件体系结构 60
3.13 三层C/S体系结构 61
3.14 C/S与B/S混合软件体系结构 62
3.15 异构的体系结构 63
3.16 Actor模型 64
3.17 软件体系结构风格ABSA 64
3.17.1 ABSA结构 64
3.17.2 ABSA组件 65
3.17.3 ABSA连接器 66
3.17.4 ABSA的形式化 67
3.17.5 用ABSA组成的系统的描述 69
3.17.6 ABSA与管道-过滤器风格的关系 71
3.17.7 ABSA与分布式对象标准的关系 72
3.17.8 体系结构与应用框架、设计样本的关系 72
3.17.9 ABSA在Internet计算中的应用 73
3.17.10 ABSA在移动代理中的应用 74
3.18 软件体系结构体系 76
3.18.1 软件体系结构体系的现状 76
3.18.2 软件体系结构体系的分类 76
3.18.3 软件体系结构体系的实例分析 77
第4章 软件体系结构描述 86
4.1 描述软件体系结构方法 86
4.1.1 SADL 87
4.1.2 Rapide 87
4.1.3 C2 88
4.1.4 ACME 88
4.1.5 JB/HMB 88
4.2 体系结构描述语言 89
4.2.1 Wright 90
4.2.2 UniCon 92
4.2.3 CHAM 93
4.3 超文本标记语言 97
4.3.1 XML标准 97
4.3.2 XML的应用领域 99
4.3.3 XML与软件体系结构描述 99
4.4 UML与XML相结合描述软件体系结构 100
4.5 使用视图描述软件体系结构 100
4.6 描述方法比较 101
4.7 三层C/S模型的由来 102
4.8 三层C/S模型的基本结构 103
4.9 XYZ/ADL描述框架 104
4.10 XYZ/ADL的体系结构 106
4.11 体系结构框图表示 108
4.12 XYZ/ADL形式化文本语法及语义 109
4.12.1 简单组件 109
4.12.2 连接件 112
4.12.3 复合组件 113
4.12.4 体系结构风格 115
4.12.5 一个例子 117
4.13 形式化描述体系结构风格 120
4.13.1 静/动态结构建模 120
4.13.2 行为建模 122
4.13.3 资源利用建模 123
4.13.4 模型的集成 123
第5章 软件体系结构建模理论 124
5.1 框架 125
5.1.1 框架的提出 125
5.1.2 框架在软件体系结构中的作用 126
5.1.3 框架搭建的难点 126
5.2 模式 127
5.2.1 模式的产生与发展历程 127
5.2.2 模式的分类 127
5.2.3 模式在软件工程中的作用 128
5.3 框架与模式的关系 128
5.3.1 框架和模式的区别 128
5.3.2 如何利用模式构建系统框架 128
5.4 自适应的软件体系结构模型 129
5.4.1 SASAM 130
5.4.2 SASAM体系结构风格 130
5.4.3 自适应策略 134
5.4.4 SASAM动态重配置 137
5.4.5 SASAM动态重配置模型 138
5.5 基于CCM的软件体系结构模型 139
5.5.1 软件体系结构模型的组成部分 139
5.5.2 模型的优点 140
5.5.3 软件体系结构模型的描述语言(ADL) 140
5.5.4 实例分析 144
5.6 软件计算模式 145
5.6.1 事件 146
5.6.2 结构化计算模式 146
5.6.3 对象式计算模式 147
5.6.4 混合计算模式 148
5.7 软件体系结构异构模式 145
5.7.1 对象与结构化异构 148
5.7.2 构件拓扑异构 149
5.8 “4+1”视图模型 149
5.8.1 逻辑视图 149
5.8.2 开发视图 149
5.8.3 进程视图 149
5.8.4 物理视图 150
5.8.5 场景 150
5.9 层次结构模型 150
5.9.1 基于层次的模型结构 150
5.9.2 软件体系结构的层次模型 153
第6章 软件体系结构设计原理 155
6.1 体系结构的设计 155
6.1.1 一般设计原理 155
6.1.2 软件的非功能特性 161
6.2 结构设计方法的元模型 162
6.3 体系结构设计方法的分析 163
6.3.1 工件驱动的方法 163
6.3.2 用例驱动的方法 165
6.3.3 领域驱动的体系结构设计方法 166
6.3.4 模式驱动的方法 168
6.4 设计模式 170
6.4.1 创建型模式 170
6.4.2 结构型模式 173
6.4.3 行为型模式 173
6.5 软件过程模型 175
6.5.1 线性顺序模型 175
6.5.2 原型实现模型 175
6.5.3 RAD模型 176
6.5.4 演化软件过程模型 177
6.5.5 基于构件的开发模型 177
6.5.6 形式化方法模型 177
6.6 形式化到非形式化(半形式化) 177
6.7 体系结构设计的过程 178
6.8 异构软件体系结构的形式化基础 180
6.9 异构软件体系结构设计原则 180
6.9.1 抽象原则 181
6.9.2 模块化原则 181
6.9.3 信息隐蔽和局部化原则 181
6.9.4 模块独立原则 181
6.9.5 并行性原则 182
6.9.6 可重用原则 182
6.10 对象与结构化异构体系结构设计 182
6.10.1 结构化方法与OO方法的联系 183
6.10.2 对象与结构化异构设计过程 184
6.11 构件拓扑异构结构设计 185
6.11.1 结构化拓扑异构设计 185
6.11.2 对象拓扑异构设计 186
6.12 软件辅助设计系统 187
6.13 异构体系结构设计中的重用 189
6.13.1 软件重用定义、级别及代价估算 189
6.13.2 软件重用策略 190
6.14 实例分析 191
6.14.1 实例说明 191
6.14.2 图书馆管理系统的体系结构设计与分析 191
第7章 用UML描述软件体系结构 200
7.1 标准建模语言UML 200
7.1.1 标准建模语言UML的出现 200
7.1.2 标准建模语言UML的内容 201
7.1.3 UML基本图符 203
7.1.4 标准建模语言UML的主要特点 207
7.1.5 标准建模语言UML的应用领域 207
7.2 标准建模语言UML的静态建模机制 208
7.3 标准建模语言UML的动态建模机制 211
7.4 UML的扩展建模机制 213
7.4.1 软件体系结构元素到UML元素映射规则 214
7.4.2 软件体系结构在UML中的描述 215
7.4.3 基于UML的软件体系结构元模型 216
7.5 UML在软件体系结构建模中应用实例 216
7.5.1 用UML对部件交互模式进行静态建模 216
7.5.2 用UML对部件交互模式进行动态建模 218
7.5.3 部件交互模式的复用 220
7.6 UML的评价 220
7.6.1 UML成功的因素 220
7.6.2 UML的积极作用 221
7.6.3 UML存在的缺点与问题 222
7.6.4 从U2P提案看UML的未来 228
7.7 六视图描述 229
7.7.1 用六视图描述软件体系结构 229
7.7.2 用UML来描述体系结构 232
7.7.3 UML对软件体系结构的支持 233
7.7.4 基于UML的体系结构描述方法 234
7.8 多体系结构视图 237
7.8.1 体系结构描述视点 237
7.8.2 扩展UML元模型的基本思路 238
7.8.3 逻辑视图 239
7.8.4 行为视图 245
7.8.5 框架视图 248
7.8.6 数据视图 248
7.8.7 集成视图 249
7.8.8 开发视图 249
7.8.9 功能视图 249
7.8.10 体系结构描述特征的实现 250
7.9 体系结构描述的相关标准 251
第8章 需求到软件体系结构的方法 253
8.1 从需求到体系结构的设计 253
8.2 RTRSM的基本元素 256
8.2.1 状态转换图 257
8.2.2 模板 258
8.2.3 规则集 259
8.3 RTRSM同Statecharts的比较 260
8.4 实例分析 261
8.5 从RTRSM到体系结构的转换步骤 263
8.5.1 描述系统的功能单元 264
8.5.2 描述连接件 265
8.5.3 描述软件的配置 266
8.6 基于软件体系结构的软件开发方法 266
8.6.1 软件体系结构的开发过程 266
8.6.2 分布式对象技术 266
8.6.3 体系结构与分布式对象结合开发方法 267
8.7 软件体系结构求精方法 269
8.7.1 行为替代的体系结构求精方法 270
8.7.2 基于风格的体系结构求精方法 270
8.7.3 构件体系结构求精方法 271
8.7.4 形式化方法与Z语言 272
8.7.5 UML和Z结合的求精方法 275
8.8 一种新的软件体系结构设计方法 279
8.8.1 体系结构需求和软件体系结构 279
8.8.2 新的软件体系结构设计过程 282
第9章 面向对象体系结构 284
9.1 体系结构的标记法 284
9.2 流程处理系统 285
9.3 客户端/服务器系统 286
9.3.1 客户端/服务器系统 286
9.3.2 基于MVC的网上应用系统 286
9.4 层状系统 287
9.4.1 层状系统简介 287
9.4.2 以服务对象分层 287
9.5 三级和多级系统 288
9.5.1 三级系统 288
9.5.2 多级系统 289
9.6 代理 289
9.7 联邦和聚合体系 290
9.7.1 联邦体系结构 290
9.7.2 聚合体系结构 291
9.8 体系结构的样式 291
9.8.1 案例:自动柜员机系统软件 293
9.8.2 案例:租借公司 293
9.8.3 案例:共用讨论板 295
9.8.4 案例:EJB的架构 298
第10章 软件体系结构的质量分析 304
10.1 软件质量与体系结构 304
10.1.1 质量属性 304
10.1.2 体系结构对软件质量的影响 305
10.1.3 体系结构质量评价的目标 305
10.1.4 体系结构质量评价的主要方式 305
10.1.5 主要技术 307
10.2 软件体系结构的构成要素 309
10.2.1 体系结构应实现的技术能力 310
10.2.2 体系结构应实现的非功能属性 312
10.3 设计模式的体系结构质量分析 313
10.3.1 结构化分解设计模式 314
10.3.2 任务组织的设计模式 316
10.3.3 访问控制的设计模式 317
10.3.4 管理者的设计模式 318
10.3.5 通信的设计模式 320
10.4 体系结构模式质量分析的实证 323
10.4.1 活动机器人的软件系统 323
10.4.2 设计时的考虑要素 323
10.4.3 过程控制环路模式 324
10.4.4 分层架构模式 325
10.4.5 基于事件的隐式调用模式 326
10.4.6 黑板体系模式 327
10.4.7 模式比较 328
第11章 体系结构配置研究 329
11.1 配置相关研究 329
11.2 端口组装 329
11.3 构件组装机制 331
11.4 构件组装描述方法 332
11.4.1 构件组装的图形描述 332
11.4.2 构件组装的文本描述 333
11.5 行为组装推导 335
11.5.1 行为组装推导问题 335
11.5.2 行为推导算法基础 336
11.5.3 行为推导算法函数 337
11.5.4 行为组装推导算法 338
11.6 复合连接件的研究 340
第12章 软件体系结构性能 341
12.1 软件度量的基本理论 341
12.2 软件质量度量的方法论 342
12.3 软件体系结构质量属性 342
12.4 动机 343
12.5 排队理论 344
12.5.1 稳定状态下的数据流 345
12.5.2 排队网络 348
12.6 应用排队理论的基础 349
12.6.1 性能属性分析 349
12.6.2 网络相似性 349
12.6.3 应用排队理论分析计算机网络 350
12.7 提取体系结构进程视图 350
12.8 性能分析过程 352
12.9 使用排队理论分析体系结构性能 353
12.10 实例分析 354
12.10.1 语境中的关键词系统 354
12.10.2 性能分析 355
第13章 软件体系结构评估方法 358
13.1 体系结构折中分析方法 358
13.2 场景的体系结构分析方法 359
13.3 体系结构再工程方法 360
13.4 可维护性预测方法 360
13.5 结构评估模型方法 361
13.6 软件体系结构的性能评价 362
13.6.1 基于“场景”的评价方式 363
13.6.2 基于度量的评价方式 363
13.6.3 进一步的研究 364
13.7 体系结构的评价指标体系 364
13.7.1 从需求角度 365
13.7.2 从开发角度 366
13.7.3 从项目管理角度 368
13.7.4 评价指标间的相关性 368
13.8 体系结构的评价体系 369
13.8.1 单个指标评价 370
13.8.2 单个体系结构的整体评价 377
13.8.3 多个体系结构的整体评价 378
13.9 常见风格与评价 379
13.10 形成风格评价矩阵 384
13.10.1 评价矩阵指标集的确定 384
13.10.2 建立风格的评价矩阵 385
13.11 基于评价矩阵风格的选取 385
13.11.1 选取方法 385
13.11.2 实例试验 386
第14章 Oracle体系结构 389
14.1 Oracle体系结构概述 389
14.2 Oracle文件 390
14.2.1 数据库文件 391
14.2.2 控制文件 392
14.2.3 重做日志文件 394
14.3 进程 394
14.3.1 进程结构 394
14.3.2 用户进程 395
14.3.3 Oracle进程 396
14.4 内存结构 400
14.4.1 系统全局区 400
14.4.2 程序全局区 402
14.5 数据字典 402
14.6 事务管理 403
14.6.1 事务管理概述 403
14.6.2 Oracle的事务管理 403
14.6.3 事务剖析 405
14.7 数据库和实例的启动和关闭 406
14.7.1 数据库和实例的启动 406
14.7.2 数据库和实例的关闭 406
14.8 并行服务器数据库 407
14.8.1 理解并行服务器的优点 407
14.8.2 单实例与并行服务器数据库比较 408
14.9 分布式数据库 409
14.9.1 理解分布式数据库 409
14.9.2 使用分布式数据库 411
14.9.3 分布式数据库全局名与数据库链 411
14.9.4 表快照 412
14.10 Oracle 9i系统的高可用性 413
第15章 网格体系结构 416
15.1 网格 416
15.2 网格体系结构 417
15.3 开放网格服务体系结构 419
15.3.1 OGSA的基本思想 419
15.3.2 OGSA体系结构分析 420
15.3.3 OGSI规范 421
15.3.4 OGSA的安全体系结构 423
15.3.5 OGSA的两大关键技术 424
15.4 网格体系结构的比较 425
15.5 Globus Toolkit 3体系结构分析 425
15.5.1 Globus及Globus Toolkit简介 425
15.5.2 Globus系统结构 427
15.5.3 GT3的核心体系结构 428
15.5.4 GT3核心体系结构细节 429
15.5.5 GT3的高层基础服务 431
15.6 GT3的安全实现 437
15.6.1 基于GSI的Web Service安全 437
15.6.2 传输层的GSI 437
参考文献 438