首页 理论教育 软件体系结构模式分析

软件体系结构模式分析

时间:2023-06-28 理论教育 版权反馈
【摘要】:软件体系结构模式有时也称为软件体系结构模式。软件体系结构模式是描述某一特定应用领域中系统组织方式的惯用模式。图8-4是C2模式的示意图。

软件体系结构模式分析

软件体系结构模式有时也称为软件体系结构模式。软件体系结构模式是描述某一特定应用领域中系统组织方式的惯用模式。体系结构模式定义了一个系统家族,即一个体系结构定义了一个词汇表和一组约束,词汇表中包含一些构件和连接器类型,而这组约束则指出系统是如何将这些构件和连接器组合起来的。体系结构模式反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个模块和子系统有效地组织成一个完整的系统。也就是说,体系结构模式定义了用于描述系统的术语表和一组指导构件系统的规则。

目前存在许多不同类型的体系结构模式,而且新的模式还在不断地出现,比较典型的有:管道—过滤器模式﹑客户—服务器模式﹑基于事件的模式﹑正交软件体系结构模式、层次系统模式﹑解释器模式﹑基于消息广播且面向图形用户界面的C2模式等,下面介绍其中的几种模式。

1.管道—过滤器模式

在管道—过滤器模式的软件体系结构中,每个构件都有一组输入和输出,构件读取输入数据流,经过内部处理,然后产生输出数据流。这个过程通常通过对输入的变换及增量计算来完成,所以在输入被完全消费之前,输出便产生了。因此,这里的构件称为过滤器,这种模式的连接间就像是数据流传输的管道,将一个过滤器的输出传到另一个过滤器的输入,此模式特别重要的是过滤器必须是独立的实体,它不能与其他的过滤器共享数据,而且一个过滤器不知道它上游和下游的标识。一个管道—过滤器网络输出的正确性并不依赖于过滤器进行增量计算过程的顺序。

图8-3所示为管道—过滤器模式。一个典型的管道—过滤器体系结构的例子是以UNIX shell编写的程序。UNIX既提供一种符号,以连接各组成部分(UNIX的进程),又提供某种进行运行时机制,以实现管道。传统的编译器也是一个典型的管道—过滤器模式的体系结构。

978-7-111-33186-5-Part01-327.jpg

图8-3 管道—过滤器模式

管道—过滤器模式的软件体系结构具有以下优点:

1)每个构件的行为不受其他构件的影响,允许设计者将整个系统的输入/输出行为看成是多个过滤器的行为的简单合成,系统的行为易于理解。

2)支持特殊的分析,如吞吐量分析、死锁分析等。

3)支持并发执行。

4)构件具有良好的隐蔽性和高内聚、低耦合的特点。

5)支持软件重用。只要提供合适在两个过滤器之间传送的数据,任何两个过滤器都可被连接起来。

6)系统维护和增强系统性能简单。

但是也存在以下缺点:

1)经常导致批处理模式的系统设计。

2)不适合交互处理的应用。

3)因数据传输上没有通用的标准,每个过滤器都增加了解析和合成的工作,导致系统效率低,并增加了编写过滤器的复杂程度。

2.基于消息广播的C2模式

C2模式主要应用于图形化用户界面的应用,其中心原则是有限可视原则,即与下层独立原则。C2模式的系统组织规则如下:

1)系统通过消息路由装置(即系统的连接构件)把层次化的计算构件连接在一起,上下层计算构件之间具有受限的可见性,即层次化的计算构件只能看到位于上方的计算构件,而不知道任何位于下方的计算构件。

2)计算构件和连接构件都包含一个顶部和一个底部接口

3)一个计算构件的顶部接口只能同一个连接构件的底部接口相连,而计算构件的底部接口只能同连接构件的顶部接口相连,一个连接构件的顶部也可以直接同另一个连接构件的底部相连。

4)一个连接构件可以和任意数目的计算构件或连接构件连接。

5)计算构件之间通过发送消息进行通信,消息分两种:通知消息自上而下和请求消息自下而上,由连接构件负责消息的传递。

图8-4是C2模式的示意图。

978-7-111-33186-5-Part01-328.jpg

图8-4 C2模式(www.xing528.com)

从C2模式的组织规则和结构图,可以看出C2具有以下一些特点:

1)系统中的构件可实现应用需求,并能将任意复杂的功能封装在一起。

2)所有构件之间的通信是通过以连接构件为中介的异步消息交换机制来实现的。

3)构件相对独立,构件之间依赖性较少。

3.客户—服务器模式

客户—服务器模式最早出现在分布计算环境中,这类系统的计算构件包括客户和服务器两种类型,服务器应客户的要求,向其提供某种服务。客户和服务器之间的关系是不对称的,通常服务器事先并不知道访问它的客户类型和数量;而客户却了解服务器的情况,并能通过远程过程调用请求服务器提供的服务。这类系统中的连接构件就是上述的远程过程调用,负责客户和服务器之间的通信。

通过把应用程序的功能分配到客户方和服务器方,并运行在不同的机器上,有利于发挥不同机器平台的优势,提高资源的利用率和共享程度。例如,服务器运行在大中型机上,可以承担繁重的计算任务;客户运行在个人机或工作站上,承担同用户交互的工作,可以提供良好的人机界面。随着应用系统规模和复杂程度的提高,客户—服务器结构已由传统的两层发展到三层或多层,Internet上的Web应用就是典型的三层客户—服务器结构。现在,客户—服务器的概念已得到很大的扩展,任何系统只要明确地划分了提供服务的一方和请求服务的一方,都可以称为客户—服务器模式,对客户和服务器的形态和驻留位置并没有严格的限制。

4.正交软件体系结构模式

正交(orthogonal)软件体系结构由组织层和线索的构件构成。层是由一组具有相同抽象级别的构件构成。线索是子系统的特例,它是由完成不同层次功能的构件组成(通过相互调用来关联),每一条线索完成整个系统中相对独立的一部分功能。每一条线索的实现与其他线索的实现无关或关联很少,在同一层中的构件之间是不存在互相调用的。

如果线索是相互独立的,即不同线索中的构件之间没有相互调用,那么这个结构就成为完全正交的。从以上定义可以看出,正交软件体系结构是一种以垂直线索构件族为基础的层次化结构,其基本思想是把应用系统的结构按功能的正交相关性,垂直分割为若干个线索(子系统),线索又分为几个层次,每个线索由多个具有不同层次功能和不同抽象级别的构件构成,各线索的相同层次的构件具有相同的抽象级别。因此,可以归纳正交软件体系结构有以下四个主要特征:

1)正交软件体系结构由完成不同功能的nn>1)个线索(子系统)组成。

2)系统具有mm>1)个不同抽象级别的层。

3)线索之间是相互独立的(正交的)。

4)系统有一个公共驱动层(一般为最高层)和公共数据结构(一般为最低层)。

对于大型的和复杂的软件系统,其子线索(一级子线索)还可以划分为更低一级的子线索(二级子线索),形成多级正交结构。正交软件体系结构的框架如图8-5所示。

图8-5是一个三级线索、五层结构的正交软件体系结构框架图,在图中,ABDFK组成了一条线索,ACEJK也是一条线索。因为B、C处于同一层次,所以不允许进行互相调用,H、J处于同一层次中,也不允许进行相互调用。一般来讲,第五层是一个物理数据库连接构件或设备构件,供整个系统公用。

978-7-111-33186-5-Part01-329.jpg

图8-5 正交软件体系结构的框架

在正交软件体系结构中,因为线索的正交性,每一个需求变动仅影响某一条线索,而不会涉及其他线索。这样,就把软件需求的变动局部化了,产生的影响也被限制在一定范围内,因此容易实现。

正交软件体系结构具有以下三个优点:

1)结构清晰,易于理解。正交软件体系结构的形式有利于理解。由于线索功能互相独立,不进行互相调用,因而结构简单、清晰,构件在结构图中的位置已经说明它所实现的是哪一级抽象,担负的是什么功能。

2)易修改,可维护性强。由于线索之间是相互独立的,所以对一个线索的修改不会影响到其他线索。因此,当软件需求发生变化时,可以将新需求分解为独立的子需求,然后以线索和其中的构件为主要对象分别对各个子需求进行处理,这样软件修改就很容易实现。系统功能的增减,只需相应的增删线索构件族,而不影响整个正交体系结构,因此能方便地实现结构调整。

3)可移植性强,重用粒度大。因为正交结构可以为一个领域内所有应用程序所共享,这些软件有着相同或类似的层次和线索,可以实现体系结构级的重用。

5.基于事件的模式

基于事件的模式又称为隐式调用模式。该模式中的计算构件通过接口定义了一组例程,每个计算构件把它感兴趣的事件同自身的某个例程联系起来,向连接构件进行登记。每当一个计算构件需要其他计算构件提供服务时,它并不直接调用其他计算构件通过接口提供的例程,而是产生一个事件,发送给连接构件。连接构件负责事件的广播,并调用所有对该事件感兴趣的登记例程,这样一个事件的发生就“隐式”地调用了其他计算构件中的例程。

该模式的系统具有以下特点:有效地支持复用,任何计算构件都可以通过登记它所感兴趣的事件被引入系统;便于系统演化,因为系统中的计算构件只对事件本身感兴趣,至于该事件是由谁怎么产生的并不重要,这就隐含着一个计算构件并不关心系统中存在哪些其他的计算构件,因此只要保持接口兼容,一个计算构件的升级或更换对系统中其他计算构件的影响不大。由于以上特点,基于事件的模式及其变种在图形用户界面,以及分布、并发环境中,获得越来越普遍的应用。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈