本书共三篇12章,第1~4章构成基础篇,重点介绍软件体系结构的基本概念和基本原理,明确提出软件体系结构的动态性和适应性的理念。第5~9章构成应用篇,从身边的实例出发,以理论为指导,分析软件体系结构原理的具体应用,以求缩短软件体系结构理论与实际软件开发之间的距离。第10~12章构成发展篇,选择以网络为中心的前沿应用实例CORBA、Web Services、P2P、MAS及Grid来分析软件体系结构的作用,以及软件体系结构的动态性、适应性的体现,通过对新应用、新服务中体系结构及其动态性、适应性的初步分析,起到抛砖引玉的作用。
本书的读者群包括计算机及相近专业本科高年级学生、计算机应用和软件专业的硕士研究生、软件学院的学生。同时,本书对于在企业和公司从事软件开发的技术人员、软件密集型项目及开发团体的软件构架师、项目负责人等都有一定的指导作用。
第一篇 基础篇
绪言
第1章 软件体系结构概述
1.1 基本概念
1.1.1 软件体系结构的定义
1.1.2 对软件体系结构的认识
1.1.3 各种术语和相关概念
1.2 软件体系结构的重要性
1.2.1 在风险承担和早期设计中的作用
1.2.2 软件体系结构在软件开发各阶段中的作用
1.2.3 软件体系结构是系统分析和设计的高层复用
1.3 软件体系结构研究的领域
思考题一
第2章 体系结构的风格与模式
2.1 主程序与子过程
2.1.1 结构化控制流
2.1.2 结构化连接方式
2.1.3 主程序与子过程风格的优缺点
2.2 面向对象组织和抽象数据类型
2.2.1 抽象数据类型
2.2.2 面向对象
2.2.3 面向对象的优缺点
2.3 管道过滤器风格
2.3.1 概述
2.3.2 管道过滤器的优缺点
2.4 分层风格
2.4.1 概述
2.4.2 层次系统的优缺点
2.5 事件驱动和隐式激发风格
2.5.1 事件驱动的特征
2.5.2 事件驱动和隐式调用的优缺点
2.6 其他风格
2.6.1 知识库风格
2.6.2 解释器系统
2.7 面向模式的软件体系结构
思考题二
第3章 软件体系结构的形式化方法和集成开发环境
3.1 形式化方法简介
3.1.1 形式化方法的基本概念
3.1.2 软件体系结构的研究背景
3.2 软件体系结构的Z语言描述
3.2.1 Z语言简介
3.2.2 软件体系结构的Z语言描述
3.3 体系结构的CSP描述
3.3.1 通信顺序进程简介
3.3.2 体系结构的CSP描述
3.4 软件体系结构描述语言
3.4.1 体系结构描述语言的定义与分类
3.4.2 体系结构描述语言的目标
3.4.3 体系结构描述和分析的要求
3.4.4 体系结构构件和连接件建模
3.4.5 体系结构配置建模
3,5 软件体系结构集成环境
3.5.1 集成环境的设计目标
3.5.2 集成环境的构成元素
3.6 Wright系统介绍
3.6.1 实现关系与交互关系
3.6.2 体系结构描述的推理
3.6.3 WriSht语言的描述
3.7 Darwin系统介绍
3.8 ACME系统介绍
3.8.1 构件的描述
3.8.2 连接件的描述
3.8.3 系统的描述
3.8.4 风格的描述
思考题三
第4章 动态软件体系结构
4.1 动态软件体系结构的概念
4.1.1 需求变更引起体系结构的变化
4.1.2 对运行时体系结构变化的处理
4.1.3 大型复杂软件系统体系结构的动态性
4.2 动态软件体系结构研究的发展历程
4.2.1 动态体系结构的早期研究
4.2.2 动态软件体系结构研究的发展
4.2.3 MAS及网格计算中的动态体系结构
4.3 基于Web的大型复杂系统需要动态体系结构
4.3.1 基于Web的大型复杂软件系统的特点
4.3.2 典型应用系统软件体系结构的分析
4.4 软件体系结构与软件开发过程的关系
4.4.1 统一过程概述
4.4.2 统一开发过程以软件体系结构为中心
思考题四
第二篇 应用篇
第5章 需求与需求分析
5.1 基本概念
5.1.1 需求
5.1.2 需求分析
5.1.3 需求工程
5.1.4 具有动态性要求的需求与需求的动态性
5.1.5 其他概念
5.2 需求分析
5.2.1 重要性
5.2.2 需求获取与分析
5.2.3 UML方法与需求分析
5.3 需求表示
5.3.1 需求框架
5.3.2 需求规格说明书
5.3.3 多视点的需求描述方法
5.4 需求验证与管理
5.4.1 需求验证
5.4.2 需求管理
5.5 一个需求获取的实例
5.5.1 实例背景
5.5.2 具有动态性要求的需求
5.5.3 需求的动态变化性
5.5.4 需求分析的实例
5.6 小结
思考题五
第6章 软件体系结构设计
6.1 软件体系结构设计概述
6.1.1 软件体系结构设计过程
6.1.2 软件体系结构设计的进一步认识
6.1.3 软件体系结构设计的方法概述
6.2 软件体系结构设计
6.2.1 软件总体需求了解阶段
6.2.2 选择大颗粒度软件体系结构风格阶段
6.2.3 需求获取和表示阶段
6.2.4 需求到软件体系结构各要素的映射
6.2.5 软件体系结构各组成要素设计阶段
6.2.6 详细设计软件体系结构阶段
6.2.7 验证软件体系结构的正确性
6.2.8 软件体系结构的文档化和评估
6.2.9 软件体系结构迭代和优化设计
6.3 需求到软件体系结构各要素的映射
6.3.1 系统模型
6.3.2 需求到体系结构的映射机制
6.3.3 体系结构模型之间的约束关系
6.4 设计软件体系结构各组成要素
6.4.1 用户界面设计
6.4.2 数据模型设计
6.4.3 控制模型设计+
6.5 详细设计软件体系结构阶段
6.5.1 业务过程建模
6.5.2 领域建模
6.5.3 软件体系结构建模
6.6 验证和变更管理
6.6.1 针对规格说明的验证
6.6.2 用户界面的验证
6.6.3 数据库验证
6.6.4 管理变更
思考题六
第7章 文档化体系结构
7.1 文档化的必要性
7.1.1 系统文档
7.1.2 用户文档
7.2 文档化软件体系结构
7.2.1 文档化体系结构的必要性
7.2.2 文档化体系结构的基本规则
7.2.3 体系结构文档化的实施
思考题七
第8章 软件体系结构评估
8.1 评估体系结构的原因
8.2 软件体系结构评估的方法
8.2.1 SAAM评估方法
8.2.2 ATAM评估方法:
8.2.3 评估方法的比较
8.3 体系结构评估
8.3.1 参与者
8.3.2 考察的质量属性
8.3.3 评估的结果
8.3.4 评估的收益和成本
8.4 软件体系结构评估实例
8.4.1 准备工作
8.4.2 第1阶段
8.4.3 第2阶段
8.4.4 BCS评估的结果
8.5 小结
思考题八
第9章 案例分析与设计
9.1 了解系统总体需求并确定风格
9.2 获取和表示需求
9.2.1 识别参与者;
9.2.2 识别用例
9.2.3 用例的事件流描述
9.3 需求到构件的映射
9.3.1 系统对象定义
9.3.2 建立类图
9.4 需求的动态行为表示
9.5 模型到数据库的映射
9.5.1 数据库模式要面向应用系统
9.5.2 对象模型向数据库表的映射规则
9.5.3 数据库的映射和逐步细化过程的分层描述
9.6 细化体系结构
9.6.1 细化的步骤
9.6.2 构件设计
9.6.3 连接件设计
9.7 合理布局软件体系结构各组成要素
9.8 验证软件体系结构的正确性
9.9 体系结构文档化及评估
思考题九
第三篇 发展篇
第10章 网络环境下的软件体系结构
10.1 分布式软件体系结构
10.1.1 局域网文件服务器体系结构
10.1.2 客户朋艮务器体系结构
10.1.3 基于Web的体系结构
10.1.4 分布式软件体系结构风格
10.2 公共对象请求代理结构CORBA
10.2.1 引言
10.2.2 CORBA基本组成与框架
10.2.3 运行机制
10.2.4 CORBA体系结构的动态性与适应性分析
10.3 对等结构
10.3.1 对等结构简介
10.3.2 对等结构的关键技术和特性
10.3.3 对等结构的应用
10.3.4 对等结构的问题
10.4 Web月艮务(WebServices)
10.4.1 WebServices的产生背景
10.4.2 WebServices的软件体系结构
10.4.3 WebServices的运行机制
10.4.4 基于J2EE的WebServices体系结构
10.4.5 WebServices的开发生命周期
10.4.6 WebServices体系结构分析
10.4.7 面向服务的体系结构SOA
思考题十
第11章 多Agent系统的动态软件体系结构
11.1 多Agent系统
11.1.1 多Agent系统简介
11.1.2 多Agent系统的特征
11.1.3 多Agent系统体系结构的描述方法
11.2 典型的多Agent系统体系结构
11.2.1 FIPA规范的体系结构
11.2.2 OMG体系结构
11.2.3 其他体系结构
11.3 多Agent系统应用实例分析
11.3.1 远程会议预约系统——一种典型的分布式协作
11.3.2 基于JADE平台的实例系统开发
11.3.3 WebAgent 广泛应用的一种小型Agent系统
思考题十一
第12章 网格动态体系结构
12.1 基本概念
12.2 五层沙漏结构
12.2.1 基本思想
12.2.2 软件体系结构描述
12.2.3动态性分析
12.3 开放式网格服务体系结构OGSA
12.3.1 基本思想
12.3.2 软件体系结构描述
12.3.3动态性分析
12.4 网格软件体系结构动态性实例分析
12.4.1 实例的动机与方法
12.4.2 软件体系结构描述
12.4.3 基于软件体系结构的适应性
思考题十二
参考文献
在高度信息化的21世纪,人们越来越认识到信息教育的重要性。人们都迫切希望信息教育能有较大发展。教育信息化也是摆在我们面前的重要任务。教育部明确要求高等教育实行信息化,要求在未来5年内实现信息化教育课程的数量达到15%一30%。信息社会离不开计算机技术,知识经济需要大量的计算机高级人才。我国正在加强计算机的高等教育,正着眼于为新世纪培养高素质的计算机人才,以适应信息社会高速发展的需要。当前,全国各类高等院校都在各专业基础课程计划中增加计算机的课程内容,而作为与计算机科学密切相关的计算机、通信、信息等专业,更是在酝酿着教学的全面改革,以期规划出一整套面向21世纪的、具有中国高校计算机教育特色的课程计划和教材体系。
教育部《关于加强高等学校本科教育工作提高教育质量的若干意见》(教字[2001)4号)文件也强调指出:“要大力提倡编写、引进和使用先进教材。教材的质量直接体现着高等教育和科学研究的发展水平,也直接影响本科教学的质量。高等学校要结合学科、专业的调整,加快教材的更新换代。
为推动高校教学改革,提高教学质量,我们重点抓了21世纪高等教育教学改革项目,组织并支持了“面向21世纪计算机系列教材规划”研究课题。该课题组成员均由高校计算机系的专家教授组成。他们有多年丰富的教学经验,也具有很强的科研能力。该课题的主要目标是密切结合国民经济的需要,优化计算机教材体系结构,力求将国际、国内计算机领域的新概念、新理论、新技术吸收到本系列教材中,编写出具有科学性、先进性、系统性、实用性、实践性很强的教材,经过推广使用,反复修改,不断提高。
“面向21世纪计算机系列教材规划”课题以编写非计算机专业的计算机课程、计算机专业的计算机网络课程、计算机软件课程三个系列教材为主要内容,计划在三年内出版13—16种书,服务于本科生、专科生、研究生,以及网络学院和软件学院的学生。本课题把研究系列教材的重点放在影响和带动计算机学科发展的网络与软件,以及直接推动计算机普及和应用的非计算机专业三个方向上, 目的是通过集中优势兵力,加强团队协作,能够在教材建设方面按系列有所突破。
相信本套教材的出版必将对教学改革和教材建设起到很大的推动和示范作
自20世纪80年代以来,计算机网络和硬件的发展突飞猛进,日新月异。相对而言,软件的发展却远不如人意。为彻底扭转软件开发手工作坊的局面,从根本上解决软件危机,保证软件质量,提高开发效率,现代软件工程提出了许多新理念,产生了一系列新的研究分支和新方法。软件体系结构作为现代软件工程的重要组成部分,已逐渐被学术界和企业界的计算机专家、软件开发人员所接受,被自觉应用,成为科学技术人员考虑问题、进行软件设计和工程实现的基本出发点。但是同时,人们又普遍认为软件体系结构太抽象,与一般的软件开发活动相距甚远。而且,软件体系结构不是一个简单的静态设计问题,是要随着用户的需求和软件生存的环境的变化而变化。
因此,本书的宗旨是针对上述问题,力图处理好两对对立的统一体,既要高屋建瓴,又要脚踏实地;既要夯实基础,又要与时俱进。具体来讲,软件体系结构是现代软件工程的一个重要分支,研究的是如何运用现代的理念和方法解决软件整体构架的高层次复用问题,这是软件体系结构高屋建瓴的一面;同时,通过分析大型复杂应用系统的体系结构,用已开发过的实例从体系结构的视角去剖析它,从软件体系结构的设计、验证、评估和文档化的一系列活动的要求重新分析这些实例,反映出对软件体系结构的研究脚踏实地、面向应用的另一面。软件体系结构的研究作为一个学科分支,有它的基础理论,有抽象的风格描述,有作为软件自动生成基础的形式化方法,这是夯实软件体系结构基础的必经之路;十多年的软件体系结构研究历程表明,软件体系结构的动态性、适应性是推动该领域科学研究不断深入的动力。目前,层出不穷的新应用、新服务,如MAS、Grid、WebServices都要求软件密集型复杂应用系统有动态的、能适应外界环境变化的软件体系结构。这是软件体系结构的研究与时俱进,不断发展的另一个侧面。
为贯彻上述宗旨,本书的第一篇——基础篇重点介绍软件体系结构的基本概念和基本原理,明确提出软件体系结构的动态性和适应性的理念。第二篇——应用篇从身边的实例出发,以理论为指导,分析软件体系结构原理的具体应用,以求缩短软件体系结构理论与实际软件开发之间的距离。第三篇——发展篇选择以网络为中心的前沿应用实例CORBA、WebServices、P2P、MAS及Grid来分析软件体系结构的作用,以及软件体系结构的动态性、适应性的体现。
余雪丽负责对本书的统一组织和策划。第1、4、10、11章由王莉编写,第2、3章由张国有编写,第5章和6.1、6.2节由孙静宇编写,6.3节和第7章由牛彦青负责撰写,6.4-6.6节由须毓孝负责撰写,张英俊、李林峰和王辉分别撰写第8章、第9章和第12章。全书由刘永泰进行全面审阅,崔冬华统一文字和语言的风格。研究生郑丽伟、乔玲玲、李冰清、程俊丽、李剑峰、李志芳、梁国军、李祝平、张晓波、袁占花、刘旭、郑凯参与了书稿内容和文字的斟酌、修改、校对及绘图工作。在这里要特别感谢北京航空航天大学计算机学院的金茂忠教授、张莉老师对编写大纲提出的宝贵意见和指导,并感谢董志峰的支持。
由于作者水平所限,本书难免会有不妥和疏漏之处,敬请读者批评指正。
余雪丽
2004年6月