软件架构风格

 

软件架构设计的一个核心问题是能否使用重复的软件架构模式,即能否达到架构级别的软件重用。

即一个架构定义一个词汇表和一组约束

词汇表中包含一些构件和连接件类型,而这组约束指出系统是如何将这些构件和连接件组合起来的。架构风格反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个模块和子系统有效地组织成一个完整的系统。按这种方式理解,软件架构风格定义了用于描述系统的术语表和一组指导构建系统的规则。

软件架构风格为大粒度的软件重用提供了可能。

架构风格的最关键的四要素内容,即提供一个词汇表、定义一套配置规则定义一套语义解释原则和定义对基于这种风格的系统所进行的分析

架构风格的分类: (1)数据流风格:批处理序列;管道/过滤器。 (2)调用/返回风格:主程序/子程序;面向对象风格;层次结构。 (3)独立构件风格:进程通信;事件系统。 (4)虚拟机风格:解释器;基于规则的系统。 (5)仓库风格:数据库系统;超文本系统;黑板系统。

数据流风格:

  1. 批处理序列 批处理风格的每一步处理都是独立的,并且每一步是顺序执行的。

    批处理的典型应用: (1)经典数据处理; (2)程序开发; (3) Windows 下的 BAT 程序就是这种应用的典型实例。

    2.管道和过滤器 在管道/过滤器风格的软件架构中,每个构件都有一组输入和输出,构件读输入的数据流,经过内部处理,然后产生输出数据流。

    此风格特别重要的过滤器必须是独立的实体,它不能与其他的过滤器共享数据,而且一个过滤器不知道它上游和下游的标识。一个管道/过滤器网络输出的正确性并不依赖于过滤器进行增量计算过程的顺序

管道/过滤器风格的示意图。一个典型的管道/过滤器架构的例子是以 UNIX shell 编写的程序。 UNIX 既提供一种符号,以连接各组成部分(UNIX 的进程),又提供某种进程运行时机制以实现管道。另一个著名的例子是传统的编译器。传统的编译器一直被认为是一种管道系统,在该系统中,一个阶段(包括词法分析、语法分析、语义分析和代码生成)的输出是另一个阶段的输入。

把批处理序列风格与管道过滤器风格比较: 共同点:把任务分成一系列固定顺序的计算单元(组件)。组件间只通过数据传递交互。 区别:批处理是全部的、高潜伏性的,输入时可随机存取,无合作性、无交互性。而管道过滤器是递增的,数据结果延迟小,输入时处理局部化,有反馈、可交互。批处理强调数据传送在步与步之间作为一个整体,而管理过滤器无此要求。

1.4.2、调用/返回风格

调用返回风格顾名思义,就是指在系统中采用了调用与返回机制。利用调用-返回实际上是一种分而治之的策略,其主要思想是将一个复杂的大系统分解为一些子系统,以便降低复杂度,并且增加可修改性。程序从其执行起点开始执行该构件的代码,程序执行结束,将控制返回给程序调用构件。

此风格的具体的软件风格:主程序/子程序;面向对象风格;层次结构;

  1. 主程序/子程序 主程序/子程序风格是结构化开发时期的经典架构风格。这种风格一般采用单线程控制,把问题划分为若干处理步骤,构件即为主程序和子程序。子程序通常可合成为模块。过程调用作为交互机制,即充当连接件。调用关系具有层次性,其语义逻辑表现为子程序的正确性,取决于它调用的子程序的正确性。

  2. 面向对象风格 抽象数据类型概念对软件系统有着重要作用,目前软件界已普遍使用面向对象系统。这种风格建立在数据抽象和面向对象的基础上,数据的表示方法和它们的相应操作封装在一个抽象数据类型或对象中。这种风格的构件是对象,或者说是抽象数据类型的实例。对象是一种被称作管理者的构件,因为它负责保持资源的完整性。对象是通过函数和过程的调用来交互的。

    数据抽象和面向对象风格的示意图。   

  3. 层次结构风格

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

    层次系统最广泛的应用是分层通信协议。

1.4.3、独立构件风格

1.4.3、独立构件风格

独立构件风格主要强调系统中的每个构件都是相对独立的个体,它们之间不直接通信,以降低耦合度,提升灵活性。独立构件风格主要包括:进程通讯和事件系统子风格

  1. 进程通信架构风格:构件是独立的过程,连接件是消息传递。这种风格的特点是构件通常是命名过程,消息传递的方式可以是点到点、异步和同步方式及远过程调用等。

  2. 事件系统风格基于事件的隐式调用风格的思想是构件不直接调用一个过程,而是触发或广播一个或多个事件。

1.4.4、虚拟机风格

虚拟机风格主要包括解释器规则为中心两种架构风格。

解释器风格典型的例子是专家系统。

规则为中心基于规则的系统包括规则集、规则解释器、规则/数据选择器及工作内存。

1.4.5、仓库风格

仓库风格包括的子风格有:数据库系统、超文本系统、黑板风格。

数据库架构是库风格最常见的形式。构件主要有两大类,一个是中央共享数据源,保存当前系统的数据状态;另一个是多个独立处理元素,处理元素对数据元素进行操作。而超文本系统的典型代表,就是早期的静态网页。

黑板系统是一种问题求解模型,是组织推理步骤、控制状态数据和问题求解之领域知识的概念框架。它将问题的解空间组织成一个或多个应用相关的分级结构。

猜你喜欢

转载自blog.csdn.net/q947448283/article/details/89849441