zoukankan      html  css  js  c++  java
  • 第三章 软件体系结构风格(上)

    转自: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
  • 相关阅读:
    kinect笔记 一 、 配置环境
    WPF 控制键盘鼠标
    EC-R3308CC四核工业主机
    【免费】Station P1极客主机免费试用活动
    【Sublinux】Sublinux固件下载及使用模式
    ROC-RK3399-PC Plus 六核64位高性能主板
    ROC-RK3308B-CC Plus IoT四核64位开源主板
    【集群服务器】BMC基板管理控制器
    NPU算力集成解决方案
    【技术案例】RK3399/RK3399Pro屏幕拼接
  • 原文地址:https://www.cnblogs.com/hddkman/p/14230028.html
Copyright © 2011-2022 走看看