第一章、软件体系结构概论
- 软件危机的表现
- 软件成本日益增长
- 开发进度难以控制
- 软件质量差
- 软件维护困难
- 软件危机的原因
- 用户需求不明确
- 缺乏正确的理论指
- 软件规模越来越大
- 软件复杂度越来越高
- 构件定义
- 构件是指
语义完整
、语法正确
、有可重用价值
的软件,是软件重用过程中可以明确辨识的
系统 - 结构上,它是
语义描述
、通讯接口
和实现代码
复合体
- 构件是指
- 构件模型通过描述构件的
接口
和实现
以及构件之间的关联
来描述体系结构的 - 体系结构的核心模型由5种元素组成:
构件
、连接件
、配置
、端口
、角色
。- 其中,
构件
、连接件
、配置
是最基本元素
- 其中,
- 获取构件的途径
- 从现有的构件中获得符合要求的构件,直接使用或做适应性修改,得到可重用的构件
- 通过遗留工程,提取具有潜在重用价值的构件
- 从市场上购买现成的商业构件
- 开发新的复合要求的构件
- 构件分类与组织方法
- 关键字分类法
- 刻面分类法
- 超文本组织法
- 构件组装
- 基于
功能
的组装技术 - 基于
数据
的组装技术 - 面向
对象
的组装技术
- 基于
- 构件重用-理解与评价构件
- 功能与行为
- 领域:相关领域知识
- 约束条件、例外:可适应性的约束条件与例外情形
- 可以预见的修改部分以及修改方法
- 软件体系结构定义
- 软件体系结构为软件系统提供了一个
结构
、行为
和属性
的高级抽象,由构成系统的元素的描述
、这些元素的相互作用
、指导元素集成的模式
以及这些模式的约束
组成 - 软件体系结构不仅指定了系统的组织结构和拓扑结构,并且显示了
系统需求
和构成系统的元素
之间的对应关系,提供了一些设计元素的基本原理
- 软件体系结构为软件系统提供了一个
- 体系结构的意义
- 软件体系结构明确了对系统实现的约束条件
- 软件体系结构决定了开发和维护组织的组织结构
- 软件体系结构制约着系统的质量属性
- 通过研究体系结构可能预测软件的质量
- 软件体系结构使推理和控制更改更简单
- 软件体系结构有助于循序渐进的原型设计
- 软件体系结构可以作为培训的基础
- 软件体系结构级的重用比代码级的重用有更大好处
- 软件体系结构建模种类
- 结构模型
- 框架模型
- 动态模型
- 过程模型
- 功能模型
- “4+1模型”
- 体系结构设计的两大类方法:
过程驱动方法
和问题列表驱动方法
第三章、软件体系结构风格
-
软件体系结构风格定义
- 软件体系结构风格是描述某一
特定应用领域
中系统组织方式
惯用的模式
- 体系结构风格定义了一个系统家族,即一个体系结构定义了一个词汇表和一组约束
- 词汇表定义了连接件和构件的类型,约束指出了这些构件和连接件是如何组合起来的
- 软件体系结构风格是描述某一
-
管道过滤器风格优点
- 使得软件具有良好的隐蔽性和高内聚、低耦合的特点。
- 允许设计者将整个系统的输入、输出行为看做是多个过滤器的行为的简单合成
- 支持软件重用。只要提供合适的在两个过滤器之间传输的数据,任何两个过滤器都可以被链接起来。
- 系统维护和功能增强简单。新的过滤器可以很容易添加到系统中来;就得过滤器也可以容易被改进的过滤器替换。
- 允许对一些如吞吐量、死锁等属性的分析。
- 支持并行执行。每个过滤器是作为一个单独的任务完成,因此可以与其他任务并行执行。
-
管道过滤器风格缺点
- 通常导致进程成为批处理结构。这是因为虽然过滤器可增量式地处理数据,但它们是独立的,所以设计者必须将每个过滤器看成一个完整的从输入到输出的转换。
- 不适合处理交互的应用。当需要增量地显示改变时,这个问题尤为严重;
- 因为通信标准的不统一,在每个过滤器之间传输数据就增加了解析与合成的工作,这样就导致了性能下降,并增加了编写过滤器的复杂性。
-
面向对象风格的优点
- 因为对象对其他对象隐藏他的表示,所以改变一个对象的表示,不影响其他对象。
- 设计者可将一些数据存取操作的问题分解成一些交互的代理程序的集合。
-
基于事件的隐式调用风格的优点
- 重用。支持软件重用。当需要将一个构件加入到现存系统中时,只需要将他注册到系统的事件中。
- **维护。**为系统维护升级带来了方便。当用一个构件代替另一个构件时,不会影响到其他构件的接口。
-
基于事件的隐式调用风格的缺点
- 构件放弃了对系统计算的控制。当一个构件触发一个事件,不能确定其他构件是否会响应它。而且即使它知道事件注册了哪些构件的构成,也没有办法保证这些过程被调用的顺序。
- **数据交换问题。**有时数据可被一个事件传递,但另一些情况下,基于事件的系统必须依靠一个共享仓库进行交互,在这些情况下,全局性能和资源管理便成了问题。
- 过程的语义必须依赖于被触发事件的上下文约束,关于正确性的推理存在问题。
-
分层系统的优点
- 支持基于抽象程度递增的系统设计,使设计者可以把复杂系统按递增的步骤进行分解。
- 维护。支持功能增强,因为每一层至多和相邻的上下层交互,因此功能的改变最多影响相邻的上下层。
- 重用,接口不变,实现随便。支持重用。只要提供的服务接口定义不变,同一层的不同实现可以交换使用。这样,就可以定义一组标准的接口,而允许各种不同的实现方法。
-
分层系统的缺点
- 并不是每个系统都可以很容易地划分为分层模式,甚至即使一个系统的逻辑结构是层次化的,处于对系统性能的考虑,系统设计师不得不把一些低级或高级的功能综合起来。
- 很难找到一个合适的、正确的层次抽象方法
-
仓库风格有两种不同的构件:
中央数据结构
、独立外构件
-
仓库风格控制原则的选取产生两个主要的子类
- 若输入流中某类事件触发进程执行的选择,则仓库是一传统型数据库
- 若中央数据结构的当前状态触发进程执行的选择,则仓库是一黑板系统
-
C2风格的特点
- 系统中的构件可实现应用需求,并能将任意复杂度的功能封装在一起。
- 所有构件之间的通讯是通过以连接件为中介的异步消息交换机制来实现的。
- 构件相对独立,构件之间依赖性较少。系统中不存在某些构件将在同一地址空间内执行,或某些构件共享特定控制线程之类的相关性假设。
-
CS体系结构的三个组成部分:客户端应用程序、数据库服务器、网络
-
C/S风格优点
- C/S体系结构具有强大的数据操作和事务处理能力,模型思想简单,易于人们理解和接受
- 客户应用程序和服务器构件分别运行在不同的计算机上,系统中每台服务器都可以适合各种构件的要求,这对硬件和软件的变化显示出极大的适应性和灵活性,而且易于对系统进行扩充和缩小。
- 在C/S体系结构中,系统中的功能构件充分隔离,客户应用程序的开发集中于数据的显示和分析,而数据库服务器的开发则集中于数据的管理,不必在每一个新的应用程序中都要对一个DBMS进行编码。将大的应用处理任务分布到许多通过网络连接的低成本计算机上,以节约大量费用。
-
C/S风格缺陷
- 开发成本高
- 客户端程序设计复杂
- 信息和内容形式单一
- 用户界面风格不一,使用繁杂,不利于推广使用
- 软件移植困难
- 软件维护和升级困难
- 新技术不能轻易应用
-
三层C/S的优点
- 允许合理地划分三层结构的功能,使之在逻辑上保持相对独立性,能提高系统和软件的可维护性和可扩展性
- 允许更灵活有效地选用相应的平台和硬件系统,使之在处理负荷能力上和处理特性上分别适应于结构清晰的三层;并且这些平台和各个组成部分可以具有良好的可升级性和开放性。
- 应用的各层可以并行开发,可以选择各自最适合的开发语言
- 利用功能层有效地隔离开表示层与数据层,未授权的用户难以绕过功能层而利用数据库工具或黑客手段非法访问数据库。
-
三层B/S风格的优点
- 基于B/S体系结构的软件,系统安装、修改和维护全在服务器端解决。用户在实用系统时,仅仅需要一个浏览器就可以运行全部的模块,真正达到了“零客户端”的功能,很容易在运行时自动升级。
- B/S体系结构还提供了异种机、异种网、异种应用服务的联机、联网、统一服务的最现实的开放性基础。
-
三层B/S风格的缺点
- 缺乏对动态页面的支持能力,没有集成有效的数据库处理功能
- B/S体系结构的系统扩展能力差,安全性难以控制
- B/S系统没有C/S系统数据查询等响应速度快
- B/S体系结构的数据一般以页面为单位,数据的动态交互性不强,不利于在线事务处理应用
-
IDL语言是CORBA规范中定义的一种中性语言,它用来描述对象的接口,而不涉及对象的具体实现
-
CORBA的特点
- 引入中间件作为事务代理,完成客户机向服务对象方提出的业务员请求
- 实现客户与服务对象的完全分开,客户不需要了解服务对象的实现过程及具体位置
- 提供软总线机制,使得在任何环境下、采用任何语言开发的软件,只要符合接口规范的定义,均能够集成到分布式系统中。
- CORBA规范软件系统采用面向对象的软件实现方法开发应用系统,实现对象内部细节的完整封装,保留对象方法的对外接口定义。
-
正交体系结构的特征
- 正交体系结构由完成不同功能的线索组成
- 系统具有m(m>1)个不同抽象级别的层
- 线索之间是相互独立的
- 系统有一个公共驱动层和公共数据结构
-
正交体系结构的优点
- 结构清晰,易于理解
- 易修改,可维护性强
- 可移植性强,重用粒度大
-
领域特定的体系结构
- 垂直域:定义了一个特定的系统族,包含整个系统族内的多个系统,结果是在该领域中可作为系统的可行解决方案的一个通用软件体系结构。
- 水平域:定义了在多个系统的多个系统族中功能区域的共有部分,在子系统级上涵盖多个系统组的特定部分功能,无法为系统提供通用的体系结构。
-
领域特定的软件体系结构与体系结构风格的比较
- DSSA以问题域为出发点,体系结构风格以解决域为出发点
- DSSA只对某一个领域进行设计专家知识的提取、存储和组织,但可以同时使用多种体系结构风格;而在某个体系结构风格中进行体系结构设计专家知识的组织时,可以将提取的公共结构和设计方法扩展到多个应用领域。
- DSSA通常选用一个或多个适合所研究领域的体系结构风格,并设一个该领域专用的体系结构分析设计工具
- 体系结构风格的定义和该风格应用的领域是直交的,提取的设计知识比用DSSA提取的设计专家只是的应用范围要广。
- DSSA和体系结构风格是互为补充的两种技术。
第四章 体系结构描述语言
- ADL的三要素
- 构件
- 连接件
- 体系结构配置
- ADL与需求语言的区别
- ADL描述的是解空间
- 需求语言描述的是问题空间
- ADL与建模语言的区别
- ADL集中在构件表示上
- 建模语言对整体行为的关注度大于对部分的关注
- 软件体系结构描述方法的分类
- 图形表达工具
- 模块内连接语言
- 基于软构件的系统描述语言
- 软件体系结构描述语言
第七章 动态体系结构
- 软件体系结构的动态性包括:
- 交互动态性
- 结构化动态性
- 体系结构动态性
- 动态体系结构更新请求描述的内容
- 更新类型
- 更新对象列表
- 对象的新版本说明
- 对象更新方法
- 更新函数
- 更新限制
- 更新执行步骤
- 检查更新范围
- 更新准备工作
- 执行更新
- 存储更新
- 动态体系结构形式化描述方法
- 图形化方法
- 进程代数法
- 逻辑化描述法
- 动态体系结构的特征
- 可构造性动态特征
- 适应性动态特征
- 智能性动态特征
第八章 SOA
-
SOA的特征
- 松散耦合
- 粗粒度服务
- 标准化接口
-
SCA将传统中间件编程从业务逻辑分离出来,从而使程序员免受其复杂性的困扰。它允许开发人员集中精力编写业务逻辑,而不必将大量的时间花费在更为底层的技术实现上。
-
SOA构件与传统构件的区别
- 服务构件往往是粗粒度的;传统构件以细粒度居多
- 服务构件的接口是标准的,主要是服务描述语言接口;传统构件通常以具体API形式出现
- 服务构件的实现是与语言无关的;传统构件通常是绑定某种特定的语言
- 服务构件可以通过构件容器提供Qos的服务;传统构件完全由程序代码直接控制
-
SOA的设计原则
- 明确定义的接口
- 自包含和模块化
- 粗粒度
- 松耦合
- 互操作性、兼容和策略声明
- 企业服务总线的功能
- 提供位置透明的消息路由和寻址服务
- 提供服务注册和命名的管理功能
- 支持多种的消息传递范型
- 支持多种可以广泛使用的传输协议
- 支持多种数据格式及其互相转换
- 提供日志和监控功能
- 企业服务总线的优点
- 具有可扩展的、基于标准的连接
- 具有灵活的、服务导向的应用组合
- 提高了复用率,降低了成本
- 减少市场反应时间,提高生产效率
- 在HTTP中携带SOAP信息,并不意味着SOAP改写了HTTP已有的语义
- 在HTTP中携带SOAP信息,并不意味着SOAP改写了HTTP已有的语义,而是将构建在HTTP之上SOAP语义自然地对应到HTTP语义。SOAP自然地遵循HTTP的请求/应答消息模型,使得SOAP的请求和应答参数可以包含在HTTP请求和应答中。
- 方法调用一般需要以下信息
- 目标对象的URI
- 方法名
- 方法签名
- 方法的参数
- 头数据
- 方法名和头数据是可选的
- 典型的基于SOAP的web服务以操作为中心,每个操作接受XML文档作为输入,提供XML文档作为输出。从本质上将,他们是RPC风格
- 而在遵循REST原则的ROA应用中,服务是以资源为中心的,对每个资源的操作都是标准化的HTTP方法
第九章 富互联网体系结构
- 富互联网体系结构富的定义
- 丰富的数据。丰富的数据意味着客户端的用户界面能表现和应对更多更复杂的数据模式,这样才能处理客户端的运算以及异步发送、接受数据。为了达到高度复杂的数据模式,客户端允许用户构建一个高响应、交互式的应用程序。
- 丰富也指RIA能提供更多的改良界面。HTML只能为用户的界面控制提供有限的功能,反之,RIA允许一些富有创造性的界面控制,巧妙的与数据模式相合。
- 丰富的结果是用户可以创建一个客户端界面,这样更容易反映丰富性与复杂性共存的数据和逻辑。
第十章 软件体系结构评估
-
可靠性通常用,
平均失效等待时间
和平均失效间隔时间
-
安全性可划分为
机密性
、完整性
、不可否认性
及可控性
等特性 -
场景
- 在进行体系结构评估时,一般首先要精确地得出具体的质量目标,并以之作为判定该体系结构优劣的标准。我们把为得出这些目标而采用的机制叫做场景。
- 场景一般从三个方面描述:
刺激
、环境
、响应
-
评估主要方式
- 基于调查问卷或检查表的评估方式
- 基于场景的评估方式
- 基于度量的评估方式
评估方式 | 调查问卷 | 检查表 | 场景 | 度量 |
---|---|---|---|---|
通用性 | 通用 | 特定领域 | 特定领域 | 通用或特定领域 |
了解程度 | 粗略了解 | 无限制 | 中等了解 | 精确了解 |
实施阶段 | 早 | 中 | 中 | 中 |
客观性 | 主观 | 主观 | 较主观 | 较客观 |
-
场景分类
- 用例场景
- 改变场景
- 成长场景
- 考察场景
-
基于场景的评估方式涉及的基本活动包括:
- 确定应用领域的功能和软件体系结构的结构之间的映射;
- 设计用于体现待评估质量属性的场景;
- 分析软件体系结构对场景的支持程度
-
基于度量的评估技术涉及的基本活动:
- 首先需要建立质量属性和度量之间的映射原则,即确定怎样从度量结果推出系统具有什么样的质量属性;
- 然后从软件体系结构文档中获取度量信息;
- 最后根据映射原则分析推导出系统的某些质量属性
-
SAAM的评估步骤
-
中间件分类
- 底层中间件
- 通用型中间件
- 集成型中间件
填空题
- 基于功能的组装技术采用子程序调用和参数传递的方式将构件组装起来
- 使用基于功能的组装技术,开发人员首先应对目标软件系统进行功能分解,将系统分解为强内聚、松耦合的功能模块
- 面向对象的组装技术的两种方法:构造法、子类法
- 体系结构设计的两大类方法:过程驱动法、问题列表驱动法
- 体系结构的重用属于设计重用,比代码重用更抽象
- 软件系统在运行时刻的体系结构变化称为体系结构的动态性,而将体系结构的静态修改称为体系结构扩展
- 研究结构模型的核心是体系结构描述语言
- 面向对象的风格,是通过函数和过程调用来实现交互的
- cs体系结构是基于资源不对等,且为实现共享而提出来的
- cs体系结构的三个主要组成部分:数据库服务器、客户应用程序、网络
- 异构风格包括:内外有别、查改有别
- 体系结构描述的关键是:定义视点、视图、以及建模元素之间的映射关系
- 在C2中:
- 连接件负责构件之间消息的传递;
- 构件维持状态、执行操作并通过两个名字分别为“top”和“bottom”的端口和其它的构件交换信息。
- 每个接口包含一种可发送的消息和一组可接收的消息。构件之间的消息要么是请求其它构件执行某个操作的请求消息,要么是通知其他构件自身执行了某个操作或状态发生改变的通知消息。
- 构件之间的消息交换不能直接进行,而只能通过连接件来完成。每个构件接口最多只能和一个连接件相连,而连接件可以和任意数目的构件或连接件相连。
*、以及建模元素之间的映射关系
13. 在C2中:
- 连接件负责构件之间消息的传递;
- 构件维持状态、执行操作并通过两个名字分别为“top”和“bottom”的端口和其它的构件交换信息。
- 每个接口包含一种可发送的消息和一组可接收的消息。构件之间的消息要么是请求其它构件执行某个操作的请求消息,要么是通知其他构件自身执行了某个操作或状态发生改变的通知消息。
- 构件之间的消息交换不能直接进行,而只能通过连接件来完成。每个构件接口最多只能和一个连接件相连,而连接件可以和任意数目的构件或连接件相连。
14.