软考高级:软件架构风格 AI 解读

软件架构风格指的是构建软件系统时常用的一些设计模式或设计方法。它们帮助开发人员从高层次组织代码、功能模块和数据流的方式。让我们通俗地解释一下几种常见的软件架构风格。

========== 生活化例子 ==========

假设我们在做一桌丰盛的晚餐,分别由不同的厨师负责炒菜、煲汤、做甜点,而这些食材都是来自市场上的供应商。现在,我们要安排厨师们如何合作才能有效地完成整顿饭。不同的软件架构风格就像是安排这些厨师们工作方式的不同策略。

  • 数据流风格:就像流水线生产一样,每个厨师处理完一道工序后,菜肴流向下一个厨师处理。
  • 调用/返回风格:厨师长指挥每个厨师,做完一道菜后返回报告进度,类似“领导下指令,完成后反馈”。
  • 独立构件风格:每个厨师各自工作,互不干涉,最后一起将完成的菜品摆到桌上。
  • 虚拟机风格:就像一个机器人厨师,可以按照预先编程的步骤完成整个饭局,而不需要每个厨师手动操作。
  • 以数据为中心:厨师们依赖一个“中央食材库”,大家从食材库中取材,保证菜肴的一致性和协调性。

========== 概念讲解 ==========
在这里插入图片描述

  1. 数据流风格(Data Flow Style)
    数据在系统中像流水一样流动,经过一系列处理模块。常见的有**管道-过滤器(Pipe and Filter)**架构,即数据通过一系列“过滤器”(功能模块),逐步被处理。每个过滤器只负责特定的处理工作,处理完后数据流向下一个过滤器。典型应用包括数据处理、流媒体等。

  2. 调用/返回风格(Call and Return Style)
    这是最传统的架构风格,功能通过函数调用和返回实现。系统由主程序-子程序构成,主程序调用子程序完成特定任务,任务完成后返回给主程序。现代的面向对象架构也可以归入这一类。常用于大多数软件系统,如桌面应用、服务端应用等。

  3. 独立构件风格(Independent Components Style)
    各个模块之间高度独立,彼此通过某种协议通信(如网络请求)。模块互相独立,不直接依赖对方的实现,类似于“黑箱”式工作。微服务架构就是典型的例子,每个服务独立运行,彼此通过API或消息传递通信。

  4. 虚拟机风格(Virtual Machine Style)
    类似于一个虚拟计算机的概念,系统通过模拟机器或编译/解释来运行。典型的例子是解释器架构,比如Java虚拟机(JVM),它先将代码翻译成字节码,再由虚拟机执行。

  5. 以数据为中心风格(Data-Centric Style)
    数据是整个系统的核心,所有模块都围绕一个中央数据库或共享数据中心运作。常见的例子是存储库架构(Repository Architecture),其中一个中央数据存储库负责管理所有数据的存取,所有操作模块通过数据存储库进行数据交互。这个架构在数据库系统或大型企业信息系统中非常常见。

========== 简单记法 ==========
在这里插入图片描述

  • 数据流风格:流水线操作,数据像水一样流动,经过多个处理模块。
  • 调用/返回风格:主程序调子程序,做完返回报告。
  • 独立构件风格:模块各自独立,像是分工合作的厨师,各做各的事。
  • 虚拟机风格:模拟器的感觉,像虚拟机一样执行代码。
  • 以数据为中心:以数据库为核心,所有人围绕一个数据中心干活。

可以用一句话快速记住:流水管(数据流)指挥员(调用返回)独立厨(独立构件)虚拟器(虚拟机)围中心(以数据为中心)

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

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

相关文章

了解独享IP的概念及其独特优势

在网络世界中,IP地址是用来识别和定位设备的标识符。独享IP是一种服务模式。使用代理服务器时,用户拥有一个不与其他用户共享的专用独立IP地址。与共享IP相比,独享IP为用户提供了更高的独立性和隐私保护。下面详细介绍独享IP的定义、工作原理…

idea 2024.2切换到旧版的UI

在 IntelliJ IDEA 2024.2 中,新 UI 现在成为所有用户的默认选项,经典 UI 则作为插件提供。 新 UI 简洁而现代,提供更大、更易用的控件、一致的调色盘、明亮清晰的图标、增强的对比度和更好的强调色。 为了使用原来的旧版UI操作其实很简单&am…

构建企业数字化转型的架构指南——基于TOGAF框架的实用方法论

数字化转型的驱动力与挑战 随着全球经济的数字化转型加速,企业正面临技术、业务模式以及组织架构的深刻变革。要实现这一复杂而系统性的转型,仅靠引入新技术是远远不够的,企业必须从战略层面重塑其业务架构,以确保技术投资与业务…

死磕P7: JVM垃圾回收那点事,轻松拿捏不是事儿(一)

这是「死磕P7」系列第 003 篇文章,欢迎大家来跟我一起 死磕 100 天,争取在 2025 年来临之际,给自己一个交代。 上两篇介绍了 JVM 内存区域划分,简单记忆一下就可以了,后面再不断深入吧。 死磕P7: JVM内存划分必知必会…

php 平滑重启 kill -SIGUSR2 <PID> pgrep命令查看进程号

有时候我们使用nginx 大家都知道平滑重启命令: /web/nginx/sbin/nginx -s reload 但大家对php-fpm 重启 可能就是简单暴力的kill 直接搞起了 下面介绍一个sh 文件名保存为start_php.sh 来对php-fpm 进行平滑重启 #!/bin/bash# 检查 PHP-FPM 是否运行 if ! pgrep php-…

常用并发设计模式精讲

1. 优雅终止线程的设计模式 思考:在一个线程 T1 中如何优雅的终止线程 T2? 正确思路:两阶段终止模式 1.1 两阶段终止(Two-phase Termination)模式——优雅的终止线程 两阶段终止(Two-phase Termination…

新160个crackme - 065-Eternal Bliss

运行分析 选择验证方式,破解字符串标题提示为vb程序 PE分析 VB程序,32位,无壳 静态分析&动态调试 使用VB Decompiler进行分析,发现Command1_Click_403604为check按钮事件,需要使Me 1 CBool(expression) 将表达…

CSS 中的文本相关属性(line - height、font、letter - 属性、text - 属性)

目录 非 VIP 用户可前往公众号回复“css”进行免费阅读 line - height属性 字号与行高的取值约定 行高与盒子高度的关系 font、letter -属性 、text -属性 font属性 letter -属性 text - 属性 非 VIP 用户可前往公众号回复“css”进行免费阅读 line - height属性 字号与…

SQLI—LABS刷题 | SQL总结

Less1-2(联合注入) ?id1 查询到用户名及密码 ​​​​​​​?id1 报错:You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 1 LIMIT 0,1 at li…

C++结尾

面试题 1.什么是虚函数?什么是纯虚函数 在定义函数时前面加virtual。虚函数是为了,父子类中只有一个该函数。如果在子类重写虚函数,那么用的就是子类重写的虚函数;如果子类没有重写虚函数,那么调用的是父类继承的虚函…

IP地址与5G时代的万物互联

5G时代,海量的设备将接入网络,从智能手机、平板电脑到智能家电、工业传感器等,每一个设备都需要一个独特的IP地址来进行标识和通信。可以说,IP地址就如同这些设备在数字世界中的“身份证”,确保它们能够准确地找到彼此…

vue嵌套路由刷新页面空白问题

问题描述 在vue项目开发中遇到这样一个问题,在history模式下通过页面点击路由跳转可以打开页面,但是在当前页面刷新就空白了,如下: 点击路由跳转页面是有的 刷新页面就空白 代码 {path: "/home",name: "home&qu…

PCIe6.0 AIC金手指和板端CEM连接器信号完整性设计规范

先附上我之前写的关于PCIe5.0金手指的设计解读: PCIe5.0的Add-in-Card(AIC)金手指layout建议(一)_pcie cem-CSDN博客 PCIe5.0的Add-in-Card(AIC)金手指layout建议(二)_gnd bar-CSDN博客 首先,相较于PCI…

vscode【实用插件】Code Runner 运行代码

安装 在 vscode 插件市场的搜索 Code Runner点 安装 使用 运行指定文件的代码 用 vscode 打开目标文件,右键快捷菜单运行即可 运行选中的代码 选中要执行的代码右键快捷菜单执行

配置树莓派打开SSH服务

在树莓派终端中查看IP 在终端中输入命令来查看IP地址。最常用的命令是:hostname -I注意,这里的参数I是大写的,它表示查看本机上所有配置的IP地址(包括IPv4和IPv6,如果有的话)。如果你只需要查看IPv4地址&am…

【NTN 卫星通信】基于NR的NTN RAN架构

1 引言 3GPP中,38.821协议中,研究了如何最大限度地减少对NG-RAN中新接口和协议的需求,以支持非地面网络。 研究了包括透传星和再生星的RAN架构。 2 基于透传星的NG-RAN架构 2.1 概述: 对于透传模式,卫星有效载荷在上行链路和下行链路方向上实现频率转换和射频放大器。它…

【Linux】环境变量(初步认识环境变量)

文章目录 1. 环境变量1.1 基本概念 2. 认识常见环境变量2.1 PATH2.2 HOME2.3 SHELL2.4 PWD2.5 USER 3. 理解环境变量 1. 环境变量 在main函数的命令行参数中,有argc、argv、env三个参数。 argc:命令函参数的个数argc:存放每个参数的具体数值…

SEO之页面优化(三、四——关键词标签与正文中的关键词)

初创企业搭建网站的朋友看1号文章;想学习云计算,怎么入门看2号文章谢谢支持: 1、我给不会敲代码又想搭建网站的人建议 2、“新手上云”能够为你开启探索云世界的第一步 博客:阿幸SEO~探索搜索排名之道 (接上一篇。。…

UnityHub下载任意版本的Unity包

1)先打开 // 也可以采用2直接打开 2)也可以直接打开 下载存档 (unity.com) 3)关联起来UnityHub即可

mysql—半同步模式

mysql的并行复制 在172.25.254.20(slave)主机上 默认情况下slave中使用的是sql单线程回放 在master中时多用户读写,如果使用sql单线程回放那么会造成组从延迟严重 开启MySQL的多线程回放可以解决上述问题 mysql> show processlist; 在配置文件中进行编辑 [root…