本书全面论述了软件体系结构的基本概念和主要方法,并结合实践介绍了软件体系结构在各种软件系统开发中的应用。本书着重讨论软件体系结构描述语言、描述方法,软件体系结构风格,软件体系结构的设计、分析和验证,软件体系结构与windows系统,软件体系结构与x window系统,构件与分布式计算等。
全书取材先进,内容全面,体系完整,力图反映本学科的最新成就和发展趋势。本书可作为计算机系及相关专业的本科高年级学生和研究生的教学用书;本书对于从事软件体系结构研究的科技人员和I程技术人员而言,也具有相当的理论参考价值和实际应用价值。
第1章 概述
1.1 发展历程
1.1.1 “无体系结构”设计阶段
1.1.2 萌芽阶段
1.1.3 初级阶段
1.1.4 高级阶段
1.1.5 综合
1.2 软件体系结构
1.3 软件体系结构的定义
1.4 软件体系结构的基本概念
1.4.1 构件
1.4.2 连接件
1.4.3 约束(配置)
1.5 意义
1.6 当前研究状况
1.6.1 不同的研究领域
1.6.2 不同的研究思路
1.7 小结
讨论题
第2章 软件体系结构语言(ADL)
2.1 ACME
2.1.1 ACME体系结构设计元素类型
2.1.2 ACME的属性
2.1.3 ACME的模板和风格定义
2.1.4 ACME开放语义框架
2.1.5 例子
2.2 Wright
2.2.1 进程的符号表示法
2.2.2 连接件描述
2.2.3 连接件语义(Connector Semantic)
2.2.4 端口和连接件的实例化
2.2.5 体系结构描述解析
2.3 C2
2.4 UniCon
2.4.1 构件
2.4.2 连接件
2.5 其他比较有影响的ADL
2.5.1 Darwin
2.5.2 Aesop
2.5.3 Rapide
2.5.4 MetaH
2.5.5 Weaves
2.5.6 SADL
2.6 ADL分类与比较框架
2.6.1 构件建模
2.6.2 连接件建模
2.6.3 配置建模
2.6.4 对体系结构描述的工具支持
2.7 ADL之间的比较
2.7.1 ADL对于构件建模的支持
2.7.2 ADL对于连接件建模的支持
2.7.3 ADL对于配置建模的支持
2.7.4 ADL的工具支持
2.8 小结
讨论题
第3章 软件体系结构描述方法
3.1 使用形式化方法描述体系结构
3.1.1 形式化方法和形式化规格说明语言
3.1.2 Z规约语言与软件体系结构
3.2 使用Kruchten的“4+1”模型描述体系结构
3.2.1 “4+1”模型
3.2.2 逻辑视图的体系结构:面向对象的分解
3.2.3 过程视图的体系结构:过程分解
3.2.4 开发视图的体系结构:子系统分解
3.2.5 物理视图的体系结构:从软件到硬件的映射
3.2.6 场景视图的体系结构:汇总
3.2.7 视图间的交流
3.2.8 “4+1”模型的迭代过程和软件文档
3.3 使用UML描述体系结构
3.3.1 背景知识
3.3.2 策略和评测标准
3.4 体系结构描述的规范
3.4.1 IEEE软件体系结构描述标准
3.5 小结
讨论题
第4章 软件体系结构的设计
4.1 体系结构设计方法的元模型
4.2 体系结构设计方法的分析与评估
4.2.1 工件驱动的体系结构设计
4.2.2 用例驱动的体系结构设计
4.2.3 领域驱动的体系结构设计
4.2.4 模式驱动的体系结构设计
4.3 小结
讨论题
第5章 软件体系结构的风格
5.1 概述
5.2 固定术语类(Idioms)的风格
5.2.1 管道和过滤器风格
5.2.2 仓库风格和黑板风格
5.2.3 分层系统风格
5.2.4 客户服务器风格
5.2.5 数据抽象和面向对象风格
5.2.6 基于事件的风格(隐式调用)
5.2.7 模型-视图-控制器风格
5.2.8 解释器风格(虚拟机风格)
5.2.9 异质体系结构
5.3 固定术语类派生的风格
5.3.1 GenVoca风格
5.3.2 C2风格
5.3.3 REST
5.4 参考模型类(Reference Models)的风格
5.4.1 编译器的顺序参考模型和并行参考模型
5.4.2 信息系统的参考模型
5.5 小结
讨论题
第6章 软件体系结构的分析与评估
6.1 体系结构分析概述
6.1.1 基本概念
6.1.2 体系结构层次的评估技术
6.2 基于场景的体系结构分析方法(SAAM)
6.2.1 SAAM的步骤
6.2.2 SAAM的工具
6.2.3 对SAAM的讨论
6.3 扩展SAAM的分析方法
6.3.1 SAAMCS方法
6.3.2 ESAAMI方法(Extending SAAM by Integration in the Domain)
6.3.3 SAAMER方法
6.4 体系结构折衷分析方法(ATAM)
6.4.1 对ATAM的讨论
6.5 其他体系结构分析方法
6.5.1 SBAR方法
6.5.2 ALPSM方法
6.5.3 SAEM方法
6.6 讨论
6.6.1 方法的特定目标和分类
6.6.2 基于场景的方法的异同
6.6.3 在实际开发中对分析方法的选择
6.7 小结
讨论题
第7章 基于体系结构的软件开发过程
7.1 概述
7.2 导出体系结构需求
7.2.1 体系结构需求
7.2.2 质量场景
7.2.3 验证
7.3 设计体系结构
7.3.1 体系结构的构造和视图
7.3.2 开发过程
7.3.3 验证
7.4 文档化体系结构
7.5 分析体系结构
7.6 实现体系结构
7.7 维护体系结构
7.8 小结
讨论题
第8章 特定领域的体系结构(DSSA)
8.1 DSSA的概念
8.1.1 DSSA的发展
8.1.2 DSSA的定义
8.1.3 DSSA与体系结构风格的比较
8.2 DSSA过程
8.2.1 步骤1-定义领域分析的范围
8.2.2 步骤2-定义/求精特定领域的元素
8.2.3 步骤3-定义/求精特定领域的设计和实现约束
8.2.4 步骤4-开发领域模型/体系结构
8.2.5 步骤5-生成/收集可重用的工作产品
8.3 小结
讨论题
第9章 软件体系结构支持工具
9.1 Acme工具
9.1.1 Acme工具开发人员库(Acme Tool Developer's library)
9.1.2 AcmeStudio环境
9.2 基于软件体系结构的开发环境ArchStudio 3
9.3 小结
讨论题
第10章 软件体系结构与Windows系统
10.1 操作系统的体系结构
10.1.1 操作系统的设计需求
10.1.2 模块结构
10.1.3 分层结构
10.1.4 虚拟机结构
10.1.5 客户/服务器结构
10.1.6 Windows2000/XP的体系结构
10.2 操作系统的网络体系结构
10.2.1 Windows2000的网络体系结构
10.2.2 网络驱动程序接口规范(NDIS)层
10.2.3 网络协议层
10.2.4 传输驱动程序接口(TDl)层
10.2.5 网络应用编程接口(网络APl)层
10.2.6 进程间通信层
10.2.7 基本网络服务层
10.3 小结
讨论题
第11章 软件体系结构与X Window系统
11.1 X Window概述
11.1.1 发展
11.1.2 X Window系统的特点
11.2 X Window系统的体系结构
11.2.1 X Window系统与客户服务器风格
11.2.2 客户服务器体系结构的优点
11.3 X服务器(Xserver)
11.3.1 X服务器的功能
11.3.2 X服务器分层风格的体系结构
11.4 X协议(Xprotocol)
11.4.1 请求:X客户传送给X服务器的信息
11.4.2 事件:X服务器传送给X客户的信息
11.5 X客户(XClient)
11.5.1 窗口管理器
11.5.2 桌面环境
11.5.3 X客户应用程序的开发
11.6 小结
讨论题
第12章 构件与分布式计算
12.1 概述
12.1.1 软件体系结构和基于构件的软件工程
12.1.2 分布式计算的发展
12.1.3 分布式应用的体系结构风格
12.2 OMG的分布式计算标准
12.2.1 OMA
12.2.2 CORBA
12.2.3 ORB
12.2.4 CORBA组件
12.3 基于Java平台的分布式计算
12.3.1 JavaRMI
12.3.2 J2EE和EJB
12.4 微软DNA和.NET
12.4.1 微软的WindowsDNA
12.4.2 微软.NET
12.5 基于Web的分布式应用:Web服务
12.5.1 XMLWeb服务及其体系结构
12.5.2 简单对象访问协议SOAP
12.5.3 Web服务描述语言WSDL
12.5.4 统一描述.发现和集成UDDI
12.5.5 Web服务的特点
12.5.6 具体的Web服务体系结构
12.6 小结
讨论题
第13章 软件体系结构与实时系统
13.1 实时系统概述
13.2 实时系统的软件体系结构描述
13.3 实时系统的软件体系结构分析
13.3.1 体系结构分析方法
13.3.2 功能属性分析
13.3.3 非功能属性分析
13.4 实时系统的软件体系结构实例
13.4.1 实时操作系统
13.4.2 路由器软件体系结构
13.5 小结
讨论题
附录
参考文献
随着信息系统与软件产品规模的急剧扩大,软件体系结构逐渐成为软件工程领域的热点及关键技术,日益受到国内外学术界和工业界的关注,越来越多的高校将其纳入研究生及软件工程硕士的必修课程中。软件体系结构作为一个独立的学科,其发展时间比较短,国内的这方面著作较为匮乏,而国外的一些论著也往往侧重于论述某一方面的研究成果,缺少对软件体系结构领域的全面论述。有鉴于此,我们编写了本书。
本书在编写过程中,遵循以下3个原则,
(1)内容系统全面。类似于其他软件技术,软件体系结构也处在迅速发展之中,范围不断拓展,技术不断更新。一方面,人们对许多概念还没有完全统一的认识和定义,另一方面,新的概念。方法又层出不穷。为了让读者全面把握当前软件体系结构研究的基本概念和主要方法,笔者对各主要领域进行了归纳。分析和总结,力求展现出一个全面的。系统化的知识结构,使读者在阅读本书之后,对于软件体系结构有一个清晰的认识。
(2)理论研究与工程实践紧密结合。作为软件工程的一个分支,软件体系结构的理论研究和工程实践是重要并且必需的。纵观软件体系结构的发展历程,理论研究和工程实践一直是伴随其发展的两条相辅相成的主线。一方面,理论研究为工程实践提供了分析问题。解决问题的手段:另一方面,工程实践为理论研究提供了发展的动力和评判优劣的最终标准。基于这种认识,我们把与软件体系结构相关的工程实践作为本书的重点内容之一,结合各种类型的软件系统来讲述软件体系结构的概念和方法,希望对读者的实际工作有所裨益。
(3)反映软件体系结构研究和应用的最新进展。正如前面提到过的,软件体系结构处在迅速发展之中,人们在原有知识的基础上不断进行改进和优化,发展出新的概念和方法。为了能够反映出最新的重要进展,本书坚持:以原始文献为主,以经典文献或被引用次数高的文献为主,以20世纪90年代以后的文献为主(其中许多重要文献都是2000年以后的)。
本书可用作计算机及相关专业本科高年级或研究生教材:同时,也适于在本领域或相关领域工作的科研。开发人员阅读。各章既构成一个有机的整体,又尽可能地相互独立。这样,只关心某一方面特定问题的读者可以采用跳读或选读的方式阅读。
对于把本书作为教材来学习的读者,可以按照章节顺序学习,以系统地掌握全部内容。学生应该在学习过软件工程之后学习本课程。根据教学要求,建议各章节讲授的学时分配为:第1章讲4学时,第2章讲8学时,第3章讲6学时,第4章讲2学时,第5章讲4学时,第6章讲2学时,第7章讲2学时,第8章讲2学时,第9章讲2学时,第10章讲8学时,第11章讲8学时,第12章讲10学时,第13章讲2学时。本书每章之后均附有适量的习题。同时书后列出了正文所引用的主要参考文献,以方便读者查阅。
本书撰写时,曾直接或间接地引用了许多专家。学者的文献,不少材料也得益于这些文献,作者向他们深表谢意。
感谢中国科学技术大学计算机系和国家高性能计算中心(合肥)为本书的写作提供了良好的工作条件。特别是陈国良院士。黄刘生教授。陈肇雄研究员。黄河燕研究员。许胤龙副教授。徐云副教授。周智讲师。万颖瑜博士等对作者写作的支持,感谢张宪超博士。武继刚博士。谢幸博士。顾晓东博士以及王翠茹教授和朱永利教授对本书的写作给予的极大支持与帮助。
在本书的编写的过程中,得到了蒋承东。周丰丰。邹鹏。张强峰。王文睿。孙广中。张四海等同事的帮助,吴明桥。王奎武。李响。孙卫强。。吕欣岩。陈双平等参与了本书部分章节的讨论,在此一并表示感谢。
在本书的编写过程中,内容反复增删,力求完美。但是,一方面,自身学识有限,写作时间仓促:另一方面,软件体系结构作为一个新兴的学科,其本身也在不断发展完善。因此,尽管笔者尽了最大的努力,但不足和错误之处仍在所难免,恳请读者批评指正。