软件体系结构
第三章 软件体系结构风格
一、基本概念
1. 软件体系结构设计的一个核心问题是能否使用重复的体系结构模式,即能够达到体系结构级的复用。
2. 软件体系结构风格是描述某一特定应用领域中系统组织方式的惯用模式。体系结构风格定义了一个系统家族,即一个体系结构定义一个词汇表和一组约束。词汇表中包含一些构件和连接件类型,而这组约束指出系统是如何将这些构件和连接件组合起来的
3. 对软件体系结构风格的研究和实践促进对设计的重用,一些经过实践证明的解决方案也可以可靠地用于解决新的问题。
4. 软件体系结构风格为大粒度软件重用提供了可能。
5. 讨论体系结构风格时要回答的问题
◎构件和连接件的类型是什么?
◎ 可容许的结构模式是什么?
◎ 基本的计算模型是什么?
◎ 风格的基本不变性是什么?
◎ 其使用的常见例子是什么?
◎ 使用此风格的优缺点是什么?
◎ 其常见的特例是什么?
6. 软件体系结构风格关键四要素
提供一个词汇表、定义一套配置规则、定义一套语义解释原则、定义对基于这种风格的系统所进行的分析。
7.体系结构风格分类
◎ 数据流风格:批处理序列;管道/过滤器。
◎ 调用/返回风格:主程序/子程序;面向对象风格;层次结构。
◎ 独立构件风格:进程通讯;事件系统。
◎ 虚拟机风格:解释器;基于规则的系统。
◎ 仓库风格:数据库系统;超文本系统;黑板系统
二、管道和过滤器
1.优点
◎ 使得软构件具有良好的隐蔽性和高内聚、低耦合的特点;
◎ 允许设计者将整个系统的输入/输出行为看成是多个过滤器的行为的简单合成;
◎ 支持软件重用。只要提供适合在两个过滤器之间传送的数据,任何两个过滤器都可被连接起来;
◎ 系统维护和增强系统性能简单。新的过滤器可以添加到现有系统中来;旧的可以被改进的过滤器替换掉;
◎ 允许对一些如吞吐量、死锁等属性的分析;
◎ 支持并行执行。每个过滤器是作为一个单独的任务完成,因此可与其它任务并行执行。
2.缺点
◎ 通常导致进程成为批处理的结构。这是因为虽然过滤器可增量式地处理数据,但它们是独立的,所以设计者必须将每个过滤器看成一个完整的从输入到输出的转换;
◎ 不适合处理交互的应用。当需要增量地显示改变时,这个问题尤为严重;
◎ 因为在数据传输上没有通用的标准,每个过滤器都增加了解析和合成数据的工作,这样就导致了系统性能下降,并增加了编写过滤器的复杂性。
三、分层系统
层次系统组织成一个层次结构,每一层为上层服务,并作为下层客户。在一些层次系统中,除了一些精心挑选的输出函数外,内部的层只对相邻的层可见。
1.优点
◎ 支持基于抽象程度递增的系统设计,使设计者可以把一个复杂系统按递增的步骤进行分解;
◎ 支持功能增强,因为每一层至多和相邻的上下层交互,因此功能的改变最多影响相邻的上下层;
◎ 支持重用。只要提供的服务接口定义不变,同一层的不同实现可以交换使用。这样,就可以定义一组标准的接口,而允许各种不同的实现方法。
2.缺点
◎ 并不是每个系统都可以很容易地划分为分层的模式,甚至即使一个系统的逻辑结构是层次化的,出于对系统性能的考虑,系统设计师不得不把一些低级或高级的功能综合起来;
◎ 很难找到一个合适的、正确的层次抽象方法。
四、C2风格:通过连接件绑定在一起的按照一组规则运作的并行构件网络
1.组织规则
◎ 系统中的构件和连接件都有一个顶部和一个底部;
◎ 构件的顶部应连接到某连接件的底部,构件的底部则应连接到某连接件的顶部,而构件与构件之间的直接连接是不允许的;
◎ 一个连接件可以和任意数目的其它构件和连接件连接;
◎ 当两个连接件进行直接连接时,必须由其中一个的底部到另一个的顶部
2.示意图
3.特点
◎ 系统中的构件可实现应用需求,并能将任意复杂度的功能封装在一起;
◎ 所有构件之间的通讯是通过以连接件为中介的异步消息交换机制来实现的;
◎ 构件相对独立,构件之间依赖性较少。系统中不存在某些构件将在同一地址空间内执行,或某些构件共享特定控制线程之类的相关性假设。
五、客户/服务器风格、三层客户/服务器风格、浏览器/服务器风格
各自优缺点、区别(详见作业)
六、正交软件体系结构
1.定义
正交软件体系结构由组织层和线索的构件构成。层是由一组具有相同抽象级别的构件构成。线索是子系统的特例,它是由完成不同层次功能的构件组成(通过相互调用来关联),每一条线索完成整个系统中相对独立的一部分功能。每一条线索的实现与其他线索的实现无关或关联很少,在同一层中的构件之间是不存在相互调用的。
如果线索是相互独立的,即不同线索中的构件之间没有相互调用,那么这个结构就是完全正交的。
2.特点
◎ 正交软件体系结构由完成不同功能的n(n > 1)个线索(子系统)组成;
◎ 系统具有m(m > 1)个不同抽象级别的层;
◎ 线索之间是相互独立的(正交的);
◎ 系统有一个公共驱动层(一般为最高层)和公共数据结构(一般为最低层)。
3.优点
◎ 结构清晰,易于理解。由于线索功能相互独立,不进行互相调用,结构简单、清晰,构件在结构图中的位置已经说明它所实现的是哪一级抽象,担负的是什么功能。
◎易修改,可维护性强。由于线索之间是相互独立的,所以对一个线索的修改不会影响到其他线索。系统功能的增加或减少,只需相应的增删线索构件族,而不影响整个正交体系结构,因此能方便地实现结构调整。
◎可移植性强,重用粒度大。因为正交结构可以为一个领域内的所有应用程序所共享,这些软件有着相同或类似的层次和线索,可以实现体系结构级的重用。
七、基于层次消息总线的体系结构 HMB (国内)
1.消息总线结构
八、异构结构风格
1.使用原因
◎ 不同的结构有不同的处理能力的强项和弱点,一个系统的体系结构应该根据实际需要进行选择,以解决实际问题。
◎ 关于软件包、框架、通信以及其他一些体系结构上的问题,目前存在多种标准。即使在某段时间内某一种标准占统治地位,但变动最终是绝对的。
◎ 实际工作中,我们总会遇到一些遗留下来的代码,它们仍有效用,但是却与新系统有某种程度上的不协调。然而在许多场合,将技术与经济综合进行考虑时,总是决定不再重写它们。
◎ 即使在某一单位中,规定了共享共同的软件包或相互关系的一些标准,仍会存在解释或表示习惯上的不同。
2.使用实例
(1)内外有别模型
(2)查改有别模型
九、特定领域软件体系结构 DSSA
1.定义
DSSA就是专用于一类特定类型的任务(领域)的、在整个领域中能有效地使用的、为成功构造应用系统限定了标准的组合结构的软件构件的集合
2.必备特征
(1)一个严格定义的问题域和(或)解决域
(2)具有普遍性,使其可以用于某个特定领域中的某个特定应用的开发
(3)对整个领域的合适程度的抽象
(4)具备该领域固定的、典型的在开发过程中可重用的元素。
3.基本活动
领域分析、领域设计、领域实现
4.参与人员
领域专家、领域分析师、领域设计人员和领域实现人员。
5.阶段
DSSA的建立过程分为五个阶段,每个阶段可以进一步划分为一些步骤或者子阶段,每个阶段包括一组需要回答的问题,一组需要的输入,一组将产生的输出和验证标准。本过程是并发的、递归的、反复的、或者可以说,它是螺旋形。完成本过程可能需要对每个阶段经历几遍,每次增加更多的细节。
DSSA的建立过程是并发的、递归的、反复进行的。DSSA的建立需要设计人员对所在特定应用领域必须精通,找到合适的抽象方式来实现DSSA的通用性和可重用性。以一种逐渐演化的方式发展。
◎ 定义领域范围:确定什么在感兴趣的领域中以及本过程到何时结束。
◎ 定义领域特定的元素:编译领域字典和领域术语的同义词词典。识别领域中应用间的共同性和差异性;
◎ 定义领域特定的设计和实现需求约束:描述解空间中有差别的特性。不仅要识别出约束,并且要记录约束对设计和实现决定造成的后果,还要记录对处理这些问题时产生的所有问题的讨论;
◎ 定义领域模型和体系结构:产生一般的体系结构,并说明构成它们的模块或构件的语法和语义;
◎ 产生、搜集可重用的产品单元:为DSSA增加构件使得它可以被用来产生问题域中的新应用。
6.DSSA和体系结构风格的比较
◎ DSSA以问题域为出发点,体系结构风格以解决域为出发点。DSSA只对某一个领域进行设计专家知识的提取、存储和组织,但可以同时使用多种体系结构风格;而在某个体系结构风格中进行体系结构设计专家知识的组织时,可以将提取的公共结构和设计方法扩展到多个应用领域。
◎ DSSA通常选用一个或多个适合所研究领域的体系结构风格,并设计一个该领域专用的体系结构分析设计工具。体系结构风格的定义和该风格应用的领域是直交的,提取的设计知识比用DSSA提取的设计专家知识的应用范围要广。
◎ DSSA和体系结构风格是互为补充的两种技术。
相关阅读
软件体系结构期末备考资料整理名词解释:软件重用:软件重用,也称为软件复用,就是利用已开发的且对应用有贡献的软件元素来构建新软件系