经典软件体系结构风格及DSSA

软件体系结构风格是描述某一特定应用领域中系统组织方式的惯用模式(idiomatic paradigm)。体系结构风格定义了一个系统家族,即一个体系结构定义了一个词汇表和一组约束。词汇表中包含一些构件和连接件类型,而这组约束指出系统是如何将这些构件和连接件组合起来的。

风格允许定义领域特定的或应用特定的(application-specific)的设计词汇(vocabulary),以及如何使用这些词汇的约束。支持对领域特定的设计经验的打包(package),特定目的分析和代码生成工具的使用,设计过程的简化,与体系结构标准一致性的检查等。

讨论体系结构风格时要回答的问题是:

1设计词汇表是什么。

2构件和连接件的类型是什么。

3可容许的结构模式是什么。

4基本的计算模型是什么。

5风格的基本不变性是什么。

6其使用的常见例子是什么。

7使用此风格的优缺点是什么。

8其常见的特例是什么。

Garlan,Shaw对体系结构风格有个分类:

1数据流风格:批处理序列、管道/过滤器

2调用/返回风格:主程序/子程序、面向对象风格、层次风格

3独立构件风格:进程通信、事件系统

4虚拟机风格:解释器、基于规则的系统

5仓库风格:数据库系统、超文本系统、黑板系统。

经典软件体系结构风格:

1管道/过滤器

在该体系结构中,每个构件都有一组输入和输出,构件读输入的数据流,经过内部处理,然后产生输出数据流。这个过程通常通过对输入流的变换及增量计算来完成。因此,这里的构件被称为过滤器,而连接件被称为管道。

一个管道/过滤器网络输出的正确性并不依赖于过滤器进行增量计算的过程的顺序。

过滤器是独立的实体,不能与其他的过滤器共享数据。

典型的管道/过滤器风格有:UNIX下的Shell编程。UNIX既提供一种符号以连接各组成部分(进程),又提供某种进程运行时机制以实现管道。另一个例子:传统的编译器。传统的编译器中,一个阶段(包括词法分析、语法分析、语义分析和代码生成)的输出是另一个阶段的输入。

2数据抽象和面向对象组织

数据的表示方法和它们的相应操作封装在一个抽象数据类型或对象中。这个风格的构件就是对象,或者说是抽象数据类型的实例。对象是一种被称为管理者的构件,因为它负责保持资源的完整性。对象通过函数和过程调用来交互。

3基于事件的隐式调用

其思想是:构件不直接调用一个过程,而是触发或广播一个或多个事件。系统中的其他构件中的过程在一个或多个事件中注册,当一个事件被触发,系统自动调用在这个事件中注册的所有过程。这样,一个事件的触发导致了另一个模块中的过程的调用。

这个风格的构件是一些模块,这些模块既可以是一些过程,又可以是一些事件的集合。

这个风格的应用很多。

4分层系统

分层系统是一个层次结构,每一层为上一层服务,并作为下层的客户。在一些层次系统中,除了一些精心挑选的输出函数外,内部的层只对相邻层可见。这样,系统中的构件在一些层中实现了虚拟机(在另外一些层次系统中层是部分不透明的)。连接件通过决定层间如何交互的协议来定义,其拓扑约束包括对相邻层间交互的约束。

这种风格支持基于可增加抽象层的设计。这样,允许将一个复杂的问题分解成一个增量步骤序列的实现。因为,每一层只影响两层,同时只要给相邻层提供相同的接口,允许每次用不同的方法实现,同样为软件重用提供了强大的支持。

典型的应用是分层通信协议。

5C2风格

C2是一种基于构件和消息的架构风格,可用于创建灵活的、可伸缩的软件系统。一个C2构架可以看成是按照一
定规则由连接件连接的许多组件组成的层次网络:系统中的构件和连接件都有一个“顶部”和“底部”;一个构件的“顶部”或“底部”可以连接到一个连接件的“底部”或“顶部”;对于一个连接件,和其相连的构件或连接件的数量没有限制,但是构件和构件之间不能直接相连。

C2架构风格最重要的特性就是“底层无关性”,这在构件的可替代性和可重用性方面具有显著的作用;另外,C2架构引入了“事件转化”的概念,域解释器把构件的请求转化为接收方能够接收的特定形式,同时也把通知转化为该构件能够理解的形式。

C2风格是最常用的一种风格:

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

所有构件之间的通信以连接件为中介的异步消息交换机制。

构件相对独立,依赖性较少。系统中不存在某些构件将在同一地址空间内执行,或某些构件共享控制线程之类的相关性假设。

DSSA(Domain Specific Software Architecture)与软件体系结构风格的比较

DSSA与软件体系结构风格是从不同角度出发研究问题的两种结果,前者从问题域出发,后者从解决域出发。

DSSA只对某个领域进行专家知识的提取、存储、组织,但可以同时使用多种软件体系结构风格;而在某个软件体系结构风格中进行专家知识组织时,可以将提取的公共结构和设计方法扩展到多个应用领域。

DSSA通常选用一个或多个适合所研究的领域的体系结构风格,并设计一个该领域专用的体系结构分析设计工具。但该方法提取的专家知识只能应用于一个较小的范围--所在领域。一个领域的

DSSA及其工具在另一个领域中是不适应的,或不可以重用的。

体系结构风格避免设计到特定的应用领域或背景,所提取的知识比DSSA提取的知识应用范围要广。但在一个特定领域中,正是由于体系结构风格对领域知识、领域背景的忽略,使其在一个具体领域的开发中的作用并不比DSSA要大。

DSSA与体系结构风格是互为补充的两种技术。

你可能感兴趣的:(体系结构)