转自:https://blog.csdn.net/mabingyao/article/details/104531689

3.1 软件体系结构风格概述

软件体系风格也称软件体系结构惯用模式,它定义了用于系统描述的术语表和一组用于指导系统构建的规则。软件体系结构风格包括构件、连接件和一组将它们组合在一起的约束限制。

3.2 常用的软件体系结构风格

(1)数据流风格:批处理、管道/过滤器
(2)调用/返回风格:主程序/子程序、加粗样式
(3)面向对象风格
(4)独立部件风格:进程通信、事件驱动
(5)虚拟机风格:解释器、基于规则的系统
(6)数据共享风格:数据库系统、黑板系统

3.3 管道/过滤器体系结构风格

管道/过滤器体系结构

  1. 主要组成:
    (1)过滤器:相当于构件,负责对数据进行加工处理。
    (2)管道:相当于连接件,可看作输入数据流和输出数据流之间的通路。
  2. 特点:
    (1)数据流处理是顺序进行的
    (2)渐进式处理数据流,即数据流输入未结束就可以开始生成输出数据流
    (3)各个过滤器相互独立,状态互不相关,非邻近过滤器不共享任何信息
    (4)运行结果的正确性与各个过滤器运行的先后顺序无关
  3. 优点:
    (1)允许将系统的输入输出看成各个过滤器行为的简单组合。
    (2)构件之间的耦合程度低。
    (3)系统具有可扩展性和可进化性,过滤器独立使得其改进,增删等简单方便。
    (4)支持复用,过滤器的输出与另一过滤器的输入数据格式一致,就可以相连接。
    (5)系统并发性,过滤器独立运行,各个子任务可以并发执行。
    (6)便于系统分析,系统是独立构件的组合,有清晰的拓扑结构。
  4. 不足:
    (1)系统处理过程是批处理方式
    (2)不适合用来设计交互式系统
    (3)没有通用的数据传输标准,每个过滤器都需进行分析,整体效率降低,复杂性增加
    (4)难以进行错误处理

3.4 面向对象体系结构风格

面向对象体系结构

  1. 主要组成:
    (1)对象:一种被称为管理器的构件,负责保持资源的完整性,如实现属性和方法的封装
    (2)在对象和对象之间,通过函数调用和过程调用来进行交互
  2. 特点:对象抽象可以使构件之间以黑盒方式进行操作
  3. 优点:
    (1)对象对外隐藏自己的详细信息,改变对象的表示,系统其他部分不受影响
    (2)对象将数据和操作封装,增强内聚性,减小各模块之间的耦合程度
    (3)继承和封装方法为对象复用提供技术支持
  4. 不足:
    (1)一个对象调用另一个对象,需知道其标识和名称。
    (2)会产生连锁反应,一个对象标识改变,调用它的对象也要做出相应调整。

3.5 事件驱动体系结构风格

事件驱动概念模型

  1. 基本思想:系统对外部的行为表现可以通过它对事件的处理来实现,上图为概念模型。
  2. 基本结构:
    事件驱动系统的构件提供了一个过程集合和一组事件
    事件驱动体系结构中,连接件既可以是显式过程调用,也可以是一种绑定事件声明和过程调用的手段。
  3. 特点:
    (1)事件驱动系统是由若干个子系统所形成的一个应用程序
    (2)子系统中必须有一个子系统起主导作用,其他处于从属地位
    (3)任何子系统都必须拥有一套事件接收机制和一套事件处理机制
    (4)消息机制控制,各个子系统协作运行。作为一个整体与外界交互
  4. 优点:
    (1)事件声明者不需要知道哪些构件会响应事件
    (2)提高了软件复用能力,在系统事件中注册构件过程,即可集成到系统
    (3)便于系统升级,构件名和事件名所注册的过程名不变,原构件就可以被新构建替代
  5. 不足:
    (1)构件放弃了对计算的控制权,由系统来决定
    (2)存在数据传输问题

3.6 分层体系结构风格

分层体系结构

  1. 特点:
    (1)系统被划分为一个层次结构,每层具有高内聚性,包含抽象程度一致的各种构件,支持信息隐藏
    (2)较高层是面向特定应用问题的,较低层更具有一般性
    (3)每层为上层提供服务,同时,利用下层的逻辑功能,每一层只对邻层可见
    (4)层次之间的连接件是协议和过程调用,以实现各层之间的交互
  2. 优点:
    (1)设计者可以将系统分解成一个增量的步骤序列,从而完成复杂的业务逻辑
    (2)每层功能变化最多只影响两层,便于实现系统功能的扩展
    (3)支持软件资源复用:只要给相邻层提供相同的接口,就可以用不同的方法实现每一层
  3. 不足:
    (1)并非所有系统都可以按照层次划分
    (2)很难找到一种合适且正确的层次划分方法
    (3)在传输数据时,需要经过多个层次,系统性能下降
    (4)难以调试,需要一系列的跨层调用来实现

3.7 C2体系结构风格

C2体系结构

  1. 基本构成:
    (1)构件:构件之间所有通信必须使用消息传递机制实现。
    (2)连接件负责消息的过滤、路由、广播、通信和相关处理。
    (3)构件之间传递的消息:向上层构件发出服务请求的请求消息;向下层构件发送指示状态变化的通知消息。
  2. 特点:
    (1)C2是一个层次网络
    (2)核心思想是有限可视化,构件只能使用其上层构建提供的服务,不能感知下层构件的存在
    (3)最上层构件是比较低级的逻辑操作,最下层是用户界面和I/O设备
    (4)消息单向传递
  3. 优点:
    (1)可使用任何编程语言开发构件,构件复用和替换容易
    (2)具有一定的拓展能力,可以有多种不同粒度的构件。构件间相互独立,依赖性小
    (3)构件不需要共享地址空间,避免共享全局变量造成复杂关系
    (4)具有良好适应性
    (5)可以动态更新系统的框架结构
  4. 补充:设计C2体系结构,应遵循组织规则和通信规则
    (1)组织规则规定了C2体系结构的构建是以构件和连接件为基础的,定义了构件和连接件的顶部和底部
    (2)通信规则规定了所有构件之间的交互必须通过异步消息机制来实现,是构件之间唯一通信方式
  5. 构件和连接件的关系
    (1)构件顶部与连接件底部相连,构件底部与连接件顶部相连
    (2)构件与构件不能直接相连
    (3)与某一个连接件相关联的构件和连接件的数目没有限制

3.8 数据共享体系结构风格

  1. 数据共享体系结构又称仓库风格
  2. 两种不同类型的软件元素:
    (1)中央数据单元(资料库):用于表示系统的当前状态
    (2)相互依赖的构件组,可以对中央数据单元实施操作
  3. 根据系统使用的控制策略不同分类
    (1)传统的数据库:由输入流中的事件驱动系统进行信息处理
    (2)黑板:由中央数据单元的当前状态驱动系统运行
  4. 黑板是数据共享体系结构的一个特例,用以解决状态冲突并处理可能存在的不确定性知识源,黑板体系结构如图:
    黑板体系结构
  5. 典型的黑板系统:
    (1)知识源:主要的信息来源,逻辑和物理上独立,完成业务逻辑的过程对外透明
    (2)中央数据单元:核心部分,反映业务逻辑的求解状态,多个知识源之间起通信机制作用可以存储数据和系统的状态
    (3)控制单元:由中央数据单元的状态驱动。无固定样式,按需设计
  6. 黑板体系结构优点:
    (1)便于多客户共享大量数据
    (2)便于将构件作为知识源添加到系统中
    不足:
    (1)对于共享数据结构,不同知识源要达成一致。因为要考虑各个知识源的调用问题,共享数据结构的修改困难。
    (2)需要同步机制和加锁机制来保证数据的完整性和一致性,增大系统设计复杂度。

3.9 解释器体系结构风格(虚拟机风格)

    1. 解释器作为一种体系结构主要用于构建虚拟机,用以弥合程序语义和计算机硬件之间的间隙。
    2. 解释器结构主要包括一个执行引擎和三个存储器。解释器系统由被解释的程序、执行引擎、被解释程序的当前状态和执行引擎的当前状态四个部分组成。系统的连接件包括过程调用和直接存储器访问。
    3. 适用于系统和用户之间交互复杂的情况(提供面向领域的虚拟机语言)
      解释器系统结构
    4. 优点:
      (1)能够提高应用程序的移植能力和编程语言的跨平台移植能力。
      (2)实际测试工作可能非常复杂,测试代价极其昂贵,具有一定风险性。可以利用解释器对未实现的硬件进行仿真。
    5. 不足:
      (1)使用了特定语言和自定义操作规则,增加了系统运行的开销
      (2)解释器系统难以实现和测试
    6. 实例:
      (1)Java和Smalltalk的编译器
      (2)基于规则的系统,如专家系统领域中的Prolog语言
      (3)脚本语言,如AWK和Perl