系统架构24 - 软件架构设计(3)

软件架构风格(上)

  • 概述
  • 架构风格
    • 数据流架构风格
      • 批处理风格
      • 管道-过滤风格
    • 调用/返回架构风格
      • 主程序/子程序风格
      • 面向对象风格
      • 层次结构风格
      • 客户端/服务器风格
    • 以数据为中心的架构风格
      • 仓库风格
      • 黑板风格
    • 虚拟机架构风格
      • 解释器风格
      • 规则系统风格
    • 独立构件架构风格
      • 进程通信风格
      • 事件系统风格(隐式调用)
    • 闭环控制架构风格
    • C2架构风格

概述

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

体系结构风格反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个模块和子系统有效地组织成一个完整的系统。对软件体系结构风格的研究和实践促进对设计的重用,一些经过实践证实的解决方案也可以可靠地用于解决新的问题。

架构设计的一个核心问题是能否达到架构级的软件复用,强调对架构设计的重用。

架构风格定义了用来描述系统的一个术语表和一组指导构建系统的规则

架构风格

数据流架构风格

数据流体系结构是一种计算机体系结构,直接与传统的冯·诺依曼体系结构或控制流体系结构进行了对比。数据流体系结构没有概念上的程序计数器:指令的可执行性和执行仅基于指令输入参数的可用性来确定,因此,指令执行的顺序是不可预测的,即行为是不确定的。数据流体系结构风格主要包括批处理风格和管道-过滤器风格

批处理风格

如下图,在批处理风格的软件体系结构中,每个处理步骤是一个单独的程序,每一步必须在前一步结束后才能开始,并且数据必须是完整的,以整体的方式传递
它的基本构件是独立的应用程序,连接件是某种类型的媒介。
连接件定义了相应的数据流图,表达拓扑结构
批处理架构风格

管道-过滤风格

如下图所示,管道-过滤器风格的基本构件是过滤器,连接件是数据流传输管道,将一个过滤器的输出传到另一过滤器的输入
管道-过滤架构风格

调用/返回架构风格

构件之间存在互相调用的关系,一般是显式的调用,代表的风格有主程序/子程序、面向对象、层次结构、客户端服务器

主程序/子程序风格

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

面向对象风格

如下图所示,抽象数据类型概念对软件系统有着重要作用,目前软件界已普遍转向使用面向对象系统。这种风格建立在数据抽象和面向对象的基础上,数据的表示方法和它们的相应操作封装在一个抽象数据类型或对象中。这种风格的构件是对象,或者说是抽象数据类型的实例
面向对象架构风格

层次结构风格

如下图所示,层次系统组成一个层次结构,每一层为上层提供服务,并作为下层的客户。在一些层次系统中,除了一些精心挑选的输出函数外,内部的层接口只对相邻的层可见
这样的系统中构件在层上实现了虚拟机
连接件由通过决定层间如何交互的协议来定义,拓扑约束包括对相邻层间交互的约束。
由于每一层最多只影响两层,同时只要给相邻层提供相同的接口,允许每层用不同的方法实现,这同样为软件重用提供了强大的支持
层次结构架构风格

客户端/服务器风格

如下图,C/S (客户端/服务器)软件体系结构是基于资源不对等,且为实现共享而提出的,在20世纪90年代逐渐成熟起来。两层 C/S 体系结构有3个主要组成部分:数据库服务器、客户应用程序和网络。服务器(后台)负责数据管理,客户机(前台)完成与用户的交互任务,称为“胖客户机,瘦服务器”。
CS架构风格
与两层C/S 结构相比,三层C/S结构增加了一个应用服务器,见下图。整个应用逻辑驻留在应用服务器上,只有表示层存在于客户机上,故称为“瘦客户机”。应用功能分为表示层、功能层和数据层三层。表示层是应用的用户接口部分,通常使用图形用户界面;功能层是应用的主体,实现具体的业务处理逻辑;数据层是数据库管理系统。以上三层逻辑上独立。
三层CS架构风格

以数据为中心的架构风格

以数据为中心的体系结构风格主要包括仓库体系结构风格和黑板体系结构风格

仓库风格

仓 库 (Repository) 是存储和维护数据的中心场所。在仓库风格中,有两种不同的构件:中央数据结构说明当前数据的状态以及一组对中央数据进行操作的独立构件,仓库与独立构件间的相互作用在系统中会有大的变化。这种风格的连接件即为仓库与独立构件之间的交互
仓库架构风格

黑板风格

适用于解决复杂的非结构化的问题,能在求解过程中综合运用多种不同知识源,使得问题的表达、组织和求解变得比较容易。
黑板架构风格
黑板风格的架构类似于一个黑板或公告板,多个独立的组件称为"专家",共享一个公共存储区(黑板),它们可以读取和写入数据。专家根据黑板上的信息进行推断和决策。

虚拟机架构风格

虚拟机体系结构风格的基本思想是人为构建一个运行环境,在这个环境之上,可以解析与运行自定义的一些语言,这样来增加架构的灵活性。虚拟机体系结构风格主要包括解释器风格和规则系统风格

解释器风格

通常包括一个完成解释工作的解释引擎、一个包含将被解释的代码的存储区、一个记录解释引擎当前工作状态的数据结构,以及一个记录源代码被解释执行的进度的数据结构。涉及解析和执行一系列指令或命令,通常通过解释器来实现。解释器将文本或代码解析成可执行的操作。缺点是执行效率低
解释器架构风格
如上图,具有解释器风格的软件中含有一个虚拟机,可以仿真硬件的执行过程和一些关键应用。解释器通常被用来建立一种虚拟机以弥合程序语义与硬件语义之间的差异。典型例子是专家系统

规则系统风格

如下图,基于规则的系统包括规则集、规则解释器、规则/数据选择器及工作内存。
规则系统架构风格
包括规则集、规则解释器、规则/数据选择器和工作内存,一般用在人工智能领域和DSS(决策支持系统)中。适用于根据一组事先定义的规则或条件来控制系统的行为。这种风格通常用于实现灵活的业务规则和决策逻辑。

独立构件架构风格

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

进程通信风格

在进程通信风格中,构件是独立的过程,连接件是消息传递。这种风格的特点是构件通常是命名过程,消息传递的方式可以是点到点、异步或同步方式及远程过程调用等
进程通信涉及不同的进程或线程之间的通信和数据共享
这些进程可以运行在同一台计算机上,也可以分布在不同的计算机上。
典型的示例是一个多线程的文件下载器,其中一个线程负责下载文件,另一个线程负责监视下载进度。这两个线程需要通过进程通信来共享下载状态信息,以便监视线程可以显示下载进度。

事件系统风格(隐式调用)

构件不直接调用一个过程,而是触发或广播一个或多个事件。构件中的过程在一个或多个事件中注册,当某个事件被触发时,系统自动调用在这个事件中注册的所有过程。
事件系统架构风格
主要优点是为软件复用提供了强大的支持,为构件的维护和演化带来了方便;缺点是构件放弃了对系统计算的控制,只能被动的控制

闭环控制架构风格

当软件被用来操作一个物理系统时,软件与硬件之间可以粗略的表示为一个反馈循环,这个反馈循环通过接受一定的输入,确定一系列的输出,最终使环境达到一个新的状态,适合于嵌入式系统,涉及连续的动作与状态。

C2架构风格

C2架构风格可以概括为:通过连接件绑定在一起的按照一组规则运作的并行构件网络。
C2风格中的系统组织规则如下:

  • 系统中的构件和连接件都有一个顶部和一个底部
  • 构件的顶部应连接到某连接件的底部,构件的底部则应连接到某连接件的顶部,而构件与构件之间的直接连接是不允许的;
  • 一个连接件可以和任意数目的其它构件和连接件连接
  • 两个连接件进行直接连接时,必须由其中一个的底部到另一个的顶部
    C2架构风格

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2778897.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

React - 分页插件默认是英文怎么办

英文组件的通用解决方案 这里以分页插件为例: 大家可以看到,最后的这个页面跳转提示文字为Go to,不是中文,而官网里面的案例则是: 解决方案: import { ConfigProvider } from antd; import zhCN from an…

ShardingSphere 5.x 系列【7】元数据持久化

有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 3.1.0 本系列ShardingSphere 版本 5.4.0 源码地址:https://gitee.com/pearl-organization/study-sharding-sphere-demo 文章目录 概述2. 单机模式2.1 H22.2 MySQL3. 集群模式3.1 ZooKeeper3.2 Nacos3.3 Cons…

【大厂AI课学习笔记】【1.5 AI技术领域】(10)对话系统

对话系统,Dialogue System,也称为会话代理。是一种模拟人类与人交谈的计算机系统,旨在可以与人类形成连贯通顺的对话,通信方式主要有语音/文本/图片,当然也可以手势/触觉等其他方式 一般我们将对话系统,分…

AES加密中的CBC和ECB

目录 1.说明 2.ECB模式(base64) 3.CBC模式 4.总结 1.说明 AES是常见的对称加密算法,加密和解密使用相同的密钥,流程如下: 主要概念如下: ①明文 ②密钥 用来加密明文的密码,在对称加密算…

C语言字符常量与字符变量..

1.字符常量 诸如’a’、‘b’、c’这类的都归属于字符常量 而且我们都知道printf()函数接收的第一个参数是字符串 所以不能够直接将字符常量作为printf函数的第一个参数 并且字符常量对应的占位符为%c 以下是对字符常量的演示 int main(){printf("%c%c%c%c", a, b…

第一篇【传奇开心果微博文系列】Python微项目技术点案例示例:pillow库实现毛笔字春联

传奇开心果微博文系列 系列微博文目录Python微项目技术点案例示例系列 微博文目录一、微项目目标二、实现微项目编程思路三、初步实现目标示例代码四、添加背景色、边框、阴影效果示例代码五、添加花纹背景、装饰线条示例代码六、添加花朵、插图等示例代码 系列微博文目录 Pyt…

Go语言每日一练——链表篇(八)

传送门 牛客面试笔试必刷101题 ----------------两个链表的第一个公共结点 题目以及解析 题目 解题代码及解析 解析 这一道题使用的还是双指针算法,我们先求出两个链表的长度差n,然后定义快慢指针,让快指针先走n步,最后快慢指…

【Linux】学习-进程信号

进程信号 信号入门 生活角度的信号 你在网上买了很多件商品,再等待不同商品快递的到来。但即便快递没有到来,你也知道快递来临时,你该怎么处理快递。也就是你能“识别快递”,也就是你意识里是知道如果这时候快递员送来了你的包裹,你知道该如何处理这些包裹当快递员到了你…

Javaweb之SpringBootWeb案例之事务管理的详细解析

1. 事务管理 1.1 事务回顾 在数据库阶段我们已学习过事务了,我们讲到: 事务是一组操作的集合,它是一个不可分割的工作单位。事务会把所有的操作作为一个整体,一起向数据库提交或者是撤销操作请求。所以这组操作要么同时成功&am…

区间dp 笔记

区间dp一般是先枚举区间长度,再枚举左端点,再枚举分界点,时间复杂度为 环形石子合并 将 n 堆石子绕圆形操场排放,现要将石子有序地合并成一堆。 规定每次只能选相邻的两堆合并成新的一堆,并将新的一堆的石子数记做该…

中创ET4410 台式LCR数字电桥 简单开箱测评

最近买了一台LCR电桥,完善一下自己实验室的设备,选了中创ET4410,这款性价比高一点。 1199元在PDD买的,好像胜利的VC4090C也是找中创代工的。 ET4410介绍 本系列LCR数字电桥是采用自动平衡电桥原理设计的元件参数分析仪&#xf…

JavaScript的聚焦:focus/blur

🧑‍🎓 个人主页:《爱蹦跶的大A阿》 🔥当前正在更新专栏:《VUE》 、《JavaScript保姆级教程》、《krpano》、《krpano中文文档》 ​ ​ ​ ✨ 正文 一、简介 focus 和 blur 事件是 HTML 元素的重要事件&#xff…

【大厂AI课学习笔记】【1.6 人工智能基础知识】(2)机器学习

目录 必须理解的知识点: 举一个草莓的例子: 机器学习的三个类别: 监督学习: 无监督学习: 强化学习: 更多知识背景: 机器学习的诞生需求 监督学习的关键技术与实现步骤 无监督学习的关…

AI-数学-高中-25-三角函数一三角函数对称性

原作者视频:【三角函数】【考点精华】3三角函数对称性(重要)(中档)_哔哩哔哩_bilibili 1.一个对称点\直线思路: 2.关于两点或两直线对称: 3.两个对称:一个关于点对称、一个关于直线…

剑指offer——替换空格

目录 1. 题目描述与背景1.1 题目描述1.2 背景 2. 一般思路 (时间复杂度为O(n))3. 分析4. 完整代码4.1 标准答案 1. 题目描述与背景 1.1 题目描述 请实现一个函数,把字符串中的每个空格替换成 “ %20 ” 。例如:输入“ we are hap…

C#计算矩形面积:通过定义结构 vs 通过继承类

目录 一、涉及到的知识点 1、结构 2.结构和类的区别 3.继承 4.使用类继承提高程序的开发效率 二、实例:通过定义结构计算矩形面积 1.源码 2.生成效果 三、实例:通过继承类计算梯形面积 1.源码 2.生成效果 一、涉及到的知识点 1、结构 结构是…

我主编的电子技术实验手册(04)——电压的测量与接地

本专栏是笔者主编教材(图0所示)的电子版,依托简易的元器件和仪表安排了30多个实验,主要面向经费不太充足的中高职院校。每个实验都安排了必不可少的【预习知识】,精心设计的【实验步骤】,全面丰富的【思考习…

linux学习之虚拟地址

在以往的学习中我们经常接触地址,电脑像一个小房间,它的空间是有限不可重叠的,但是可以覆盖。想象一下如果我们要放很多东西进去,如果没有合理的安排,所有东西乱放,那么我们需要寻找某一个东西的时候需要把…

【从Python基础到深度学习】2. Ubuntu及插件安装

本期所有软件安装包:链接:https://pan.baidu.com/s/1UVEYm-12FivAnrE5NUXevg?pwdum60 一、安装Ubuntu 1.1 软件安装包:下载 VMware Workstation Pro | CN 一直点下一步即可 1.2 双击运行软件: 输入密钥 1 、VMware 15密钥 …

Elasticsearch:混合搜索是 GenAI 应用的未来

在这个竞争激烈的人工智能时代,自动化和数据为王。 从庞大的存储库中有效地自动化搜索和检索信息的过程的能力变得至关重要。 随着技术的进步,信息检索方法也在不断进步,从而导致了各种搜索机制的发展。 随着生成式人工智能模型成为吸引力的中…