第1章 概述 1
1.1 软件体系结构 1
1.2 当前的软件设计 3
1.3 软件设计的层次 4
1.4 体系结构与软件的工程设计 5
1.5 软件体系结构的知识体系 6
习题一 7
第2章 软件体系结构的研究与发展 8
2.1 软件工程设计和软件体系结构 8
2.1.1 软件设计的目标 9
2.1.2 软件设计中出现的问题 11
2.1.3 针对问题提出的软件设计思想 12
2.2 什么是软件体系结构 14
2.2.1 关于软件体系结构的认识发展 14
2.2.2 当前对软件体系结构的认识 15
2.3.1 体系结构在软件开发中的意义 16
2.3 软件体系结构的意义和目标 16
2.3.2 软件体系结构的目标 17
2.3.3 与其他软件设计活动的关系 17
2.4 软件体系结构的发展 18
2.4.1 来自程序抽象方面的发展 18
2.4.2 来自软件工程和概念模型方面的发展 19
2.4.3 来自体系结构方面的发展 20
2.5 软件体系结构的研究范畴 21
2.5.1 与体系结构有关的研究:风格、设计模型、框架 22
2.5.2 体系结构的观点 25
2.5.3 领域结构风格 29
2.5.4 体系结构的描述语言 29
2.5.5 体系结构的形式化 32
2.5.6 体系结构的工具和环境 33
2.6 软件体系结构与其他软件技术 34
2.7 软件体系结构的现状 35
习题二 37
3.1 从建筑学看软件的构成 38
第3章 软件体系结构的层次性 38
3.2 软件的物质基础 39
3.3 软件的结构基础 42
3.3.1 结构化控制流 42
3.3.2 部件连接方式 44
3.3.3 结构化连接模式 47
3.3.4 基本数据类型 48
3.3.5 抽象数据类型 49
3.3.6 进程及其运行环境 51
3.3.7 分时并发计算 54
3.3.8 资源共享/并行同步 56
3.3.9 实时系统 56
3.3.10 软件结构的四视图观 58
3.4 软件的层次结构模型 61
3.4.1 计算机网络的体系结构 61
3.4.2 计算机操作系统的体系结构 63
3.4.3 层次体系结构的对比 65
3.5 软件体系结构的层次模型 66
3.6 软件体系结构的体系 70
习题三 74
第4章 体系结构的设计原理 75
4.1 体系结构的设计原理 75
4.2 软件的非功能特性 78
习题四 81
第5章 部件与连接器 82
5.1 部件 82
5.1.1 部件及其作用 82
5.1.2 部件的实现形式 82
5.1.3 部件的表达形式 83
5.1.4 部件的类别 84
5.1.5 部件的特性 84
5.2 连接 86
5.2.1 连接的种类 87
5.2.2 连接的实现机制 87
5.2.4 连接的特性 88
5.2.3 连接的协议 88
5.2.5 连接的不匹配及其解决方法 90
5.3 连接器 91
5.3.1 连接器及其作用 91
5.3.2 连接器的层次性 91
5.3.3 连接器的表达形式 92
5.3.4 连接器的类别 93
5.3.5 连接器的特性 94
习题五 96
第6章 体系结构的一般描述 97
6.1 主程序与子过程 97
6.2 数据抽象和面向对象设计 98
6.2.1 基本要点和特征 99
6.2.2 对象的实现类型 99
6.2.3 设计时的考虑 100
6.2.4 对象的运行机制 100
6.3 层次结构 101
6.2.5 面向对象的优缺点 101
6.3.1 适应的设计问题 102
6.3.2 设计结构 102
6.3.3 层次结构的特性 103
6.3.4 层次结构的实现 104
6.3.5 应用实例 106
6.3.6 层次结构的变种 107
6.3.7 层次结构的应用实例 107
6.3.8 层次结构的优缺点 108
6.4 形式化描述:类属理论(Category Theory) 109
6.4.1 基本概念 109
6.4.2 代数规范(Algebraic Specification) 111
6.4.3 类属规范Spec 111
6.4.4 类属规范P-Spec 113
6.4.5 函数型体系结构理论 116
6.4.6 进程代数体系结构理论 118
6.5 形式化描述:Z标记语言(Z Notation) 119
6.5.1 数学基础 120
6.5.2 基本概念 122
6.5.3 类型构造器:架构(schema) 123
6.5.4 应用例 126
6.6 化学抽象机模型 128
6.6.1 基本概念 128
6.6.2 应用例 130
6.7 UniCon 131
6.8 ACME 137
6.8.1 ACME的核心概念 138
6.8.2 ACME中体系结构的风格 144
6.8.3 定义ACME族(Family) 146
6.9 软件工程设计方法与体系结构描述 148
习题六 149
第7章 体系结构的基础结构模式 150
7.1 独享/共享对象 150
7.2 对象的导出成员(Derived Item) 152
7.3 动态约束 153
7.4 惟一对象(Singleton) 155
7.5 引用计数/句柄(Reference Counter/Handle) 156
7.6 汇集(Collection) 159
7.7 循环器(Iterator) 162
7.8 对象关联(Object Association) 166
7.9 注册/观察器(Observer) 168
7.10 责任链(Chain of Responsibility) 170
7.11 聚集(Aggregation)和特性(Property) 173
7.12 策略(Policy/Strategy) 176
7.13 表达式计算和堆栈 181
7.14 对象工厂(Factory) 183
7.15 转换器(Convertor/Builder) 186
7.16 对象的状态/生存周期(State/Life Cycle) 187
7.17 虚拟设备(Virtual Devices) 191
7.18 代理(Proxy) 192
7.19 小结 194
习题七 196
8.1.1 界面设计的可变性需求 197
8.1 模型-视图-控制(MVC:Model-View-Controller) 197
第8章 体系结构的设计模式 197
8.1.2 MVC的结构 198
8.1.3 MVC的实现 200
8.1.4 MVC的变化及其他 203
8.2 网络通信套接(Windows Sockets) 205
8.2.1 Windows Sockets规范和结构关系 205
8.2.2 Windows Sockets的结构特性 210
8.2.3 WinSock控件 213
8.3 串行通信 216
习题八 220
第9章 运行调度层体系结构 221
9.1 进程通信 221
9.1.1 信号 221
9.1.2 管道 224
9.1.3 FIFO管道 226
9.1.4 IPC进程间消息通信 228
9.2.1 内核对象 230
9.2 Windows 2000进程管理和控制的内核对象 230
9.2.2 进程间共享内核对象 231
9.3 Windows 2000的作业 232
9.4 Windows 2000的进程 234
9.4.1 进程的工作属性 235
9.4.2 创建进程 236
9.4.3 子进程 237
9.4.4 终止进程 238
9.5 Windows 2000的线程 238
9.5.1 创建线程 239
9.5.2 线程的运行和调度 240
9.5.3 多线程运行的问题 242
9.5.4 线程同步机制 243
9.5.5 使用内核对象的线程同步机制 245
9.6 线程池 251
习题九 253
10.1.1 事件与消息 254
第10章 资源及管理层体系结构 254
10.1 消息机制与隐式调用 254
10.1.2 消息的处理 256
10.1.3 消息过滤器 257
10.1.4 消息机制的特点 258
10.2 动态链接库 258
10.2.1 动态链接库 259
10.2.2 动态链接库的作用 260
10.2.3 何时使用动态链接库 261
10.3.1 注册表 262
10.2.4 动态链接库的建立和使用 262
10.3 注册表 262
10.3.2 注册表信息的访问 264
10.4 剪贴板 266
10.5 过程调用/本地过程调用LPC/远程过程调用RPC 268
10.5.1 LPC和RPC及其实现 268
10.5.2 RPC 269
10.5.4 使用WinSock实现的RPC和消息传递 270
10.5.3 LPC和RPC实现的考虑 270
10.6 开放数据库互连:ODBC 271
10.6.1 ODBC及其原理 271
10.6.2 ODBC的体系结构 272
10.6.3 ODBC的驱动程序类型及结构 274
10.6.4 ODBC一致性级别 274
习题十 275
第11章 系统结构模式层体系结构 276
11.1 管道-过滤器 276
11.1.1 管道-过滤器结构 276
11.1.2 管道-过滤器的特性 277
11.1.3 管道-过滤器的类型 278
11.1.4 管道-过滤器的优缺点 278
11.2 实时与连续计算 279
11.2.1 实时与连续计算的系统结构 280
11.2.2 控制系统概念 280
11.2.4 系统的设计和实现 281
11.2.3 系统类型 281
11.3 客户/服务器结构 283
11.3.1 客户/服务器概述 283
11.3.2 客户/服务器的结构分析 284
11.3.3 客户/服务器的连接 286
11.3.4 客户/服务器的运行机制 288
11.4 仓库系统:Microsoft SQL Server的C/S体系结构 290
11.4.1 SQL Server的结构 290
11.4.2 服务接口 295
11.4.3 线程池和线程的多任务处理 296
11.5 黑板系统 297
11.5.1 黑板系统的结构 297
11.5.2 HEARSAY-Ⅱ和其他黑板结构应用 298
11.5.3 黑板结构的变体 299
11.6.1 解释器的组成 300
11.6.2 解释器的工作机制 300
11.6 解释器/虚拟机 300
11.7 COM/DCOM组件 301
11.7.1 COM由来 301
11.7.2 COM结构 302
11.7.3 COM接口 304
11.7.4 COM类型 306
11.7.5 COM运行 308
11.7.6 COM扩展 311
11.8.1 独立组件体系结构 313
11.8 独立组件体系结构及其通信机制 313
11.8.2 组件的消息机制 314
11.8.3 从COM机制看组件与客户的通信 317
11.9 WWW万维网 317
11.9.1 libWWW的构成 318
11.9.2 应用libWWW的万维网的C/S体系结构 319
11.9.3 公共网关接口CGI 320
11.9.4 应用Jigsaw的新体系结构 321
11.10 WWW浏览器 322
11.11.1 需求和解决方案 326
11.11 微核(Microkernal) 326
11.11.2 系统结构 327
11.11.3 动态特性 328
11.11.4 实现过程 329
11.11.5 微内核的变异及其他 331
习题十一 333
第12章 领域应用层体系结构 334
12.1 IBM San Francisco框架 334
12.2.1 层次构成和抽象 336
12.2 IBM San Francisco的体系结构 336
12.2.2 平台无关性 338
12.3 IBM San Francisco基础层 339
12.3.1 Entity实体 340
12.3.2 Dependent对象及其他 341
12.4 IBM San Francisco公共业务对象层 343
12.5 IBM San Francisco核心业务处理层 345
12.6 IBM San Francisco的设计模式 347
12.7.1 配置和服务器管理 349
12.7 IBM San Francisco系统支持 349
12.7.2 安全配置及其他 352
12.8 IBM San Francisco应用的开发方法 353
12.9 MetaH嵌入式软件体系结构描述语言和工具 355
习题十二 357
第13章 体系结构应用例 358
13.1 汽车车速控制问题的软件体系结构 358
13.2 DOS操作系统中的汉字处理 362
13.3 WINDOWS操作系统中的汉字处理 364
13.4.1 总体结构 365
13.4 电力调度网损数据管理系统 365
13.4.2 系统的部件和连接描述 367
13.4.3 系统运行结构图 371
13.5 远程数据传输RDT(Remote Data Transmision) 372
13.6 体系结构的混合 374
习题十三 376
结束语:开放的体系结构研究 377
参考文献 379