本文介绍了几种软件架构风格的相关知识与应用,包括数据流风格、 批处理序列、管道和过滤器、调用返回风格、独立构件风格、虚拟机风格、仓库风格等。

软件架构风格概述

架构设计的一个核心问题是能否达到架构级别的软件复用

软件体系结构风格是描述某一特定应用领域中系统组织方式的惯用模式。体系结构风格定义一个系统家族,即一个体系结构定义一个词汇表一组约束。词汇表中包含一些构件和连接件类型,而这组约束指出系统是如何将这些构件和连接件组合起来的。
体系结构风格反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个模块和子系统有效地组织成一个完整的系统。
对软件体系结构风格的研究和实践促进对设计的重用,一些经过实践证实的解决方案也可以可靠地用于解决新的问题。例如,如果某人把系统描述为“客户/服务器”模式,则不必给出设计细节,我们立刻就会明白系统是如何组织和工作的。

软件架构风格

数据流风格(Data Flow Architecture)

批处理序列(Batch Sequential)

批处理序列是一种经典的数据处理模型,其中数据转换子系统只有在其前一个子系统完全通过后才能启动其过程。

数据流将一批数据作为一个整体从一个子系统传送到另一个子系统。

模块之间的通信是通过临时中间文件进行的,这些文件可以被后续子系统删除。

适用于数据批量化,各子系统读取相关输入文件,写入输出文件的应用。

批处理序列

批处理序列
优缺点
  • 优点:
    在子系统上提供更简单的划分。
    每个子系统可以是处理输入数据并产生输出数据的独立程序。

  • 缺点
    高延迟和低吞吐量。
    不提供并发和交互界面。
    实施需要外部控制。

应用场景

此架构的典型应用包括业务数据处理,例如银行和公用事业计费。

管道-过滤器(Pipe and Filter Architecture)

在管道-过滤器风格的软件体系结构中,每个构件都有一组输入和输出,数据输入构件,经过内部处理,然后产生数据输出。因此,这里的构件被称为过滤器,这种风格的连接件就像是数据流传输的管道,将一个过滤器的输出传到另一过滤器的输入。

管道-过滤器

管道-过滤器
优缺点
  • 优点:
    构建高内聚,低耦合。
    功能可以通过简单的行为合成实现。
    复用性高,维护和增强系统简单。新的过滤器替换老的过滤器即可。

  • 缺点:
    不适合交互式的应用。
    数据传输上没有通用的标准,每个过滤器都增加了解析和合成数据的动作,导致了系统性能的下降。

应用场景
  • 编译器

编译器

编译器
  • 媒体播放器

媒体播放器

媒体播放器
  • unix shell

调用返回风格(Process Control Architecture)

主程序/子程序

面向对象

层次结构

独立构件风格

进程通信

事件驱动系统(隐式调用)

虚拟机风格

解释器

基于规则的系统

仓库风格

仓库(repository)风格中,有两种不同的构件:中央数据结构说明当前状态,独立构件在中央数据存储上执行
一方面,若构件控制共享数据,则仓库是一传统型数据库;另一方面,若中央数据结构的当前状态触发进程执行的选择。

数据库系统

超文本系统

黑板系统

黑板系统是一种问题求解模型,是组织推理的步骤、控制状态数据和问题求解之领域知识的概念框架,它将问题的解空间组织成一个或多个应用相关的分级结构。分级结构的每一层信息由一个唯一的词汇来描述,它代表了问题的部分解。

黑板系统

黑板系统
组成部分
  1. 知识源:包含独立的、与应用程序相关的知识,知识源之间不直接进行通讯,它们之间的交互只通过黑板来完成。
  2. 黑板数据结构:按照与应用程序相关的层次来组织并解决问题的数据,知识源通过不断地改变黑板数据来解决问题。
  3. 控制:完全由黑板的状态驱动,黑板状态的改变决定了需要使用的特定知识。
应用场景

黑板系统的典型应用是信号处理领域,如网络信息检索、电子商务、自动控制、办公自动化、商业管理智能决策、语音和模式识别、智能控制领域等。

参考文献

相关文章

Q.E.D.