本书系统地介绍软件体系结构的基本原理、方法和实践,全面反映软件体系结构研究和应用的最新进展。既讨论软件体系结构的基本理论知识,又介绍软件体系结构的设计和工业界应用实例,强调理论与实践相结合。
全书共七章,第一章简单地介绍软件体系结构的概念、发展和应用现状;第二章讨论软件体系结构建模,包括视图模型、核心模型、生命周期模型和抽象模型:第三章介绍软件体系结构的风格和特定领域软件体系结构;第四章讨论软件体系结构的描述方法,重点介绍软件体系结构描述语言;第五章讨论基于体系结构的软件开发方法,介绍基于体系结构的软件过程;第六章讨论软件体系评估方法,重点介绍ATAM 和SAAM方法:第七章介绍软件产品线的原理和方法、框架技术,重点讨论产品线体系结构的设计和演化。
本书可作为计算机软件专业本科生、研究生和软件工程硕士的软件体系结构教材,也可作为软件工程高级培训、系统分析员培训、系统构架设计师培训教材,以及软件开发人员的参考书。
第一章 软件体系结构概论
1.1 从软件危机谈起
1.1.1 软件危机的表现
1.1.2 软件危机的原因
1.1.3 如何克服软件危机
1.2 构件与软件重用
1.2.1 构件模型及实现
1.2.2构件获取
1.2.3 构件管理
1.2.4构件重用
1.2.5 软件重用实例
1.3 软件体系结构的兴起和发展
1.3.1 软件体系结构的定义
1.3.2 软件体系结构的意义
1.3.3 软件体系结构的发展史
1.4 软件体系结构的应用现状
主要参考文献
第二章 软件体系结构建模
2.1 软件体系结构建模概述
2.2 "4+1"视图模型
2.2.1 逻辑视图
2.2.2 开发视图
2.2.3 进程视图
2.2.4 物理视图
2.2.5 场景
2.3 软件体系结构的核心模型
2.4 软件体系结构的生命周期模型
2.5 软件体系结构抽象模型
2.5.1 构件
2.5.2 连接件
2.5.3 软件体系结构
2.5.4 软件体系结构关系
2.5.5 软件体系结构范式
主要参考文献
第三章 软件体系结构风格
3.1 软件体系结构风格概述
3.2 经典软件体系结构风格
3.2.1 管道和过滤器
3.2.2 数据抽象和面向对象组织
3.2.3 基于事件的隐式调用
3.2.4 分层系统
3.2.5 仓库系统及知识库
3.2.6 C2风格
3.3 客户朋艮务器风格
3.4 三层C/S结构风格
3.4.1 三层C/S结构的概念
3.4.2 三层C/S结构应用实例
3.4.3 三层C/S结构的优点
3.5 浏览器朋艮务器风格
3.6 公共对象请求代理体系结构
3.7 正交软件体系结构
3.7.1 正交软件体系结构的概念
3.7.2 正交软件体系结构的实例
3.7.3 正交软件体系结构的优点
3.8 基于层次消息总线的体系结构风格
3.8.1 构件模型
3.8.2 构件接口
3.8.3 消息总线
3.8.4 构件静态结构
3.8.5 构件动态行为
3.8.6 运行时刻的系统演化
3.9 异构结构风格
3.9.1 为什么要使用异构结构
3.9.2 异构结构的实例
3.9.3 异构组合匹配问题
3.10 连系统构成的系统及其体系结构
3.10.1 连系统构成的系统
3.10.2 基于SASIS的软件过程
3.10.3 应用范围
3.11 特定领域软件体系结构
3.11.1 DSSA的定义
3.11.2 DSSA的基本活动
3.11.3 参与DSSA的人员
3.11.4 DSSA的建立过程
3.11.5 DSSA实例
3.11.6 DSSA与体系结构风格的比较
主要参考文献
第四章 软件体系结构描述
4.1 软件体系结构描述方法
4.2 软件体系结构描述框架标准
4.3 体系结构描述语言
4.3.1 ADL与其他语言的比较
4.3.2 ADL的构成要素
4.4 典型的软件体系结构描述语言
4.4.1 UniCon
4.4.2 Wright
4.4.3 C2
4.4.4 Rapide
4.4.5 SADL
4.4.6 Aesop
4.4.7 ACME
4.5 软件体系结构与UML
4.5.1 UML简介
4.5.2 UML的主要内容
4.5.3 直接使用UML建模
4.5.4 使用UML扩展机制
主要参考文献,
第五章 基于体系结构的软件开发
5.1 设计模式
5.1.1 设计模式概述
5.1.2 设计模式的组成
5.1.3 模式和软件体系结构
5.1.4 设计模式方法分类
5.2 基于体系结构的设计方法
5.2.1 有关术语
5.2.2 ABSD方法与生命周期
5.2.3 ABSD方法的步骤
5.3 体系结构的设计与演化
5.3.1 设计和演化过程
5.3.2 实验原型阶段
5.3.3 演化开发阶段
5.4 基于体系结构的软件开发模型
5.4.1 体系结构需求
5.4.2 体系结构设计
5.4.3 体系结构文档化
5.4.4 体系结构复审
5.4.5 体系结构实现
5.4.6 体系结构演化
5.5 应用开发实例
5.5.1 系统简介
5.5.2 系统设计与实现
5.5.3 系统演化
5.6 基于体系结构的软件过程
5.6.1 有关概念
5.6.2 软件过程网
5.6.3 基本结构的表示
5.6.4 基于体系结构的软件过程Petri网
主要参考文献
第六章 软件体系结构评估
6.1 体系结构评估概述
6.2 软件体系结构评估的主要方式
6.3 ATAM评估方法
6.3.1 ATAM评估的步骤
6.3.2 ATAM评估的阶段
6.4 SAAM评估方法
6.4.1 SAAM评估的步骤
6.4.2 SAAM评估实例
主要参考文献
第七章 软件产品线体系结构
7.1 软件产品线的出现和发展
7.1.1 软件体系结构的发展
7.1.2 软件重用的发展
7.2 软件产品线概述
7.2.1 软件产品线的基本概念
7.2.2 软件产品线的过程模型
7.2.3 软件产品线的组织结构
7.2.4 软件产品线的建立方式
7.2.5 软件产品线的演化
7.3 框架和应用框架技术
7.4 软件产品线基本活动
7.5 软件产品线体系结构的设计
7.5.1 产品线体系结构简介
7.5.2 产品线体系结构的标准化和定制
7.6 软件产品线体系结构的演化
7.6.1 背景介绍
7.6.2 两代产品的各种发行版本
7.6.3 需求和演化的分类
主要参考文献
随着软件系统规模越来越大。越来越复杂,整个系统的结构和规格说明显得越来越重要。对于大规模的复杂软件系统,其总体的系统结构设计和规格说明比起对计算的算法和数据结构的选择已经变得明显重要得多。在此种背景下,人们认识到软件体系结构的重要性,并认为对软件体系结构的系统。深入的研究将会成为提高软件生产率和解决软件维护问题的新的最有希望的途径。
自从软件系统首次被分成许多模块,模块之间有相互作用,组合起来有整体的属性,软件就具有了体系结构。好的开发者常常会使用一些体系结构模式作为软件系统结构设计策略,但他们并没有规范地。明确地表达出来,这样就无法将他们的知识与别人交流。软件体系结构是设计抽象的进一步发展,满足了更好地理解软件系统,更方便地开发更大。更复杂的软件系统的需要。
事实上,软件总是有体系结构的,不存在没有体系结构的软件。体系结构一词在英文里就是“建筑”的意思。把软件比作一座楼房,从整体上讲,是因为它有基础。主体和装饰,即操作系统之上的基础设施软件。实现计算逻辑的主体应用程序。方便使用的用户界面程序。从细节上来看每一个程序也是有结构的。早期的结构化程序就是以语句组成模块,模块的聚集和嵌套形成层层调用的程序结构,也就是体系结构。结构化程序的程序(表达)结构和(计算的)逻辑结构的一致性及自顶向下开发方法自然而然地形成了体系结构。由于结构化程序设计时代程序规模不大,通过强调结构化程序设计方法学,自顶向下。逐步求精,并注意模块的耦合性就可以得到相对良好的结构,所以,并未特别研究软件体系结构。
对于软件项目的开发,一个清晰的软件体系结构是首要的。传统的软件开发过程可以划分为从概念直到实现的若干个阶段,包括问题定义。需求分析。软件设计。软件实现及软件测试等。软件体系结构的建立应位于需求分析之后,软件设计之前。但在传统的软件工程方法中,需求和设计之间存在一条很难逾越的鸿沟,从而很难有效地将需求转换为相应的设计。而软件体系结构就是试图在软件需求与软件设计之间架起一座桥梁,着重解决软件系统的结构和需求向实现平坦地过渡的问题。
体系结构在软件开发中为不同的人员提供了共同交流的语言,体现并尝试了系统早期的设计决策,并作为系统设计的抽象,为实现框架和构件的共享和重用。基于体系结构的软件开发提供了有力的支持。鉴于体系结构的重要性,Dewayne Perry将软件体系结构视为软件开发中第一类重要的设计对象,Barry Boehm也明确指出:“在没有设计出体系结构及其规则时,整个项目不能继续下去,而且体系结构应该看做是软件开发中可交付的中间产品”。
软件体系结构是根植于软件工程发展起来的一门新兴学科,目前已经成为软件工程研究和实践的主要领域。专门和广泛地研究软件体系结构是从20世纪90年代才开始的,1993-1995年之间,卡耐基梅隆大学的Mary Shaw与David Garlan,贝尔实验室的Perry,南加州大学的Barry Boehm,斯坦福大学的David Luckham等人开始将注意力投向软件体系结构的研究和学科建设。
目前,软件体系结构领域研究非常活跃,如南加州大学专门成立了软件体系结构研究组,曼彻斯特大学专门成立了软件体系结构研究所。同时,业界许多著名企业的研究中心也将软件体系结构作为重要的研究内容。如由IBM。Nokia和ABB等企业联合一些大学研究嵌入式系统的体系结构项目。国内也有不少的机构在从事软件体系结构方面的研究,如北京大学软件工程研究所一直从事基于体系结构软件组装的工业化生产方法与平台的研究,北京邮电大学则研究了电信软件的体系结构,国防科学技术大学推出的CORBA规范实现平台为体系结构研究提供了基础设施所需的中间件技术。许多大学为计算机软件专业硕士研究生和软件工程硕士研究生都开设了软件体系结构课程。
本书共分七章,第一章简单地介绍软件体系结构的概念。发展和应用现状,第二章讨论软件体系结构建模,包括视图模型。核心模型。生命周期模型和抽象模型,第三章介绍软件体系结构的风格和特定领域软件体系结构,第四章讨论软件体系结构的描述方法,重点介绍软件体系结构描述语言:第五章讨论基于体系结构的软件开发方法,介绍基于体系结构的软件过程:第六章讨论软件体系评估方法,重点介绍ATAM和SAAM方法,第七章介绍软件产品线的原理和方法。框架技术,重点讨论产品线体系结构的设计和演化。
在本书出版之际,我要特别感谢国内外软件工程和软件体系结构专著。教材和许多高水平论文。报告的作者们(恕不一一列举,名单详见各章中的主要参考文献),他们的作品为本书提供了丰富的营养,使我受益匪浅。我在本书中引用了他们的部分材料,使本书能够尽量反映软件体系结构研究和实践领域的最新进展。
我还要感谢我的妻子何玉云女士,她为本书的稿件整理和校对花费了大量的时间。感谢中南大学信息学院陈松乔教授对我的指导,感谢湖南师范大学物理与信息科学学院陈祖福。匡东满。方茂发等教授对写作工作的支持和帮助。感谢湖南大学软件学院王益民博士,他为我的工作和写作提供了许多方便。
由于作者水平有限,时间紧迫,加上软件体系结构是一门新兴的学科,本身发展很快,对有些新领域作者尚不熟悉。因此,书中难免有不妥和错误之处,我诚恳地期望各位专家和读者不吝指教和帮助。对此,我将深为感激。