软件设计风格(干货)-架构师之路(九)

一、软件架构风格概念

Architecture架构,体系结构

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

架构风格 反映了领域中众多系统所共有的结构和语义特性,并指导 如何将各个模块和子系统有效组织成一个完整的系统

架构设计核心问题,能否达到架构级别的软件复用。

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

二、软件架构风格(五大类)

  1. 数据流风格

面向数据流,按照一定顺序从前到后执行程序,代表风格 批处理序列、管道-过滤器。

A.批处理序列:

构件为一系列固定计算单元,构件之间 只通过数据传递交互。每一步程序都必须在其前一步结束才能开始,数据传递下去。

B.管道-过滤器:

过滤器是构件,连接件是管道,前一个构件的输出作为后一个构件的输入。

(批处理序列和管道-过滤器的区别,批处理看视频必需全部下载完,管道可以边看边下载,一步一步处理)

区别是批处理必需前一个处理完才可以执行下一个,管道-过滤则是前面处理到部分,就可以执行下一个。

  1. 调用/返回风格

构建之间 存在调用关系,一般显式调用,代表的风格 主程序/子程序、面向对象、层次结构。

  1. 主程序\子程序:

单线程控制,把问题划分为若干个处理步骤。

  1. 面向对象:

构件是对象,连接件是对象件交互方式,对象通过调用函数和过程。

  1. 层次结构:

构件组成层次结构,连接件决定层如何交互协议来定义。修改某一层,最多影响相邻的两层(通常只影响上一层)。

层次的优点:

越底层,抽象程度越高。

为软件复用提供强大支持。

缺点:

分层不容易,难道到正确的层次抽象方法。

  1. 独立构件风格

构件独立,之间不存在显式关系,通过 某个事件触发、异步的方式来执行,代表的风格由 进程通信、事件驱动系统(隐式调用)。

  1. 进程通信

构件是独立的进程,连接件是传递消息。构件是命名过程,消息传递可以 点对点、异步或同步、以及远程调用等。

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

构件不直接调用过程,而是触发或广播一个或多个事件。(隐式调用比如spring的applicationEvent和kafka消费)

优点:

软件复用、系统维护。

缺点:

构件放弃了对系统计算的控制。(被他人被动调用,所以不能主动控制)

  1. 虚拟机风格

自定义一套规则供使用者使用,使用者基于这个规则来使用,能够跨平台适配,代表风格由 解释器、基于规则的系统。

典型的虚拟机jvm

  1. 解释器

包含解释引擎,包含解释代码的存储器,包含解释引擎工作状态数据结构存储,以及记录源代码被解释进度。缺点效率低。

  1. 基于规则的系统

包含 规则集、规则解释器、规则/数据选择器和工作内存,一般在人工智能和DSS中。

(DSS决策知识,比如大数据进行分析)

  1. 仓库风格

以 数据为中心,所有的操作系统都是围绕建立数据库中心进行的,代表风格 数据库系统、超文本系统和黑板系统。

  1. 数据库系统

两大类,一类是中央共享数据源,保存数据状态。另一类多个独立处理单元,处理单元对数据元素进行操作

  1. 超文本系统

互联网领域,网状结构。

  1. 黑板系统

包含 知识源、黑板和控制。

知识源则是包含若干提供计算的单元。黑板是全局数据库。知识源通过响应黑板的变化来变化。

三、其他风格

除了上面的五大风格外,还有其他风格。

  1. 闭环控制

适用嵌入式系统,当软件操作一个物理系统时,软件与硬件之间可以粗略的表示一个反馈循环,反馈循环接受一定输入,来确定输出,使环境达到新状态。(比如空调从26变为23摄氏度,车子自动巡航)

  1. C2体系风格

通过连接件绑定在一起的按照一组规则运作的并行架构风格。规则如下

构件连接件都有一个顶部和底部,构件与构件不允许直接连接,构件的底部必需连接连接件的顶部。

一个连接件可以和任意数目的其他构件和连接件链接。

真题:

软件架构风格是描述特定应该用领域中系统组织方式的()。系统风格反映领域中众多系统所共有的结构和(),强调对架构()的重用。

答案:

惯用模式   语义分析   设计

()架构风格可以概括为通过连接件绑定在一起,按照一组规则运作的构件。

答案是C2

不是规则系统,规则系统是会根据参数变化的。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity 找不到 Navigation 组件的解决

当我们想利用unity 里面的Navigation 组件来实现我们的物体的自动导航时,有时竟然会发现我们的菜单栏里面找不到 该组件 这时我们应该怎么办? 请确保你的项目中已经导入了Unity的AI模块。要导入该模块,请打开"Project Settings"&am…

3、Spring之底层架构核心概念解析

BeanDefinition BeanDefinition表示Bean定义,BeanDefinition中存在很多属性用来描述一个Bean的特点。比如: class,表示Bean类型scope,表示Bean作用域,单例或原型等lazyInit:表示Bean是否是懒加载initMethodName:表示Bean初始化时要执行的方法destroyMethodName:表示Be…

新闻稿写作与校对:爱校对如何确保信息准确无误?

新闻产业一直以其快节奏和时效性为标志。每一篇新闻稿件都需要在第一时间发布,但在这种快速的环境下,如何确保内容不仅快速,而且准确呢?这就是“爱校对”发挥作用的地方,它为新闻机构和记者提供了一种简单、高效的方法…

MySQL MVCC的详解之Read View

文章目录 概要一、基于UNDO LOG的版本链1.1、行记录结构1.2、了解UNDO LOG1.3、版本链 二、Read View2.1、判定机制 三、参考 概要 在上文中,我们提到了MVCC(Multi-Version Concurrency Control)多版本并发控制,是通过undo log来实现的。那具…

微服务中间件--微服务保护

微服务保护 微服务保护a.sentinelb.sentinel限流规则1) 流控模式1.a) 关联模式1.b) 链路模式 2) 流控效果2.a) 预热模式2.b) 排队等待 3) 热点参数限流 c.隔离和降级1) Feign整合Sentinel2) 线程隔离2.a) 线程隔离(舱壁模式) 3) 熔断降级3.a) 熔断策略-慢…

PSP - 开源可训练的蛋白质结构预测框架 OpenFold 的环境配置

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/132334671 Paper: OpenFold: Retraining AlphaFold2 yields new insights into its learning mechanisms and capacity for generalization Open…

提升管班小诀窍

在传统教育中,将考试结果告知家长一直是一项相对麻烦的任务。老师们不得不一个一个的打电话或发短信,耗费大量时间和精力。然而,现在有了易查分,老师们可以轻松地创建自己的成绩查询系统,大大简化了这项任务。 好消息&…

​Kubernetes的演变:从etcd到分布式SQL的过渡

DevRel领域专家Denis Magda表示,他偶然发现了一篇解释如何用PostgreSQL无缝替换etcd的文章。该文章指出,Kine项目作为外部etcd端点,可以将Kubernetes etcd请求转换为底层关系数据库的SQL查询。 受到这种方法的启发,Magda决定进一步…

AMBA总线协议(4)——AHB(二)

目录 一、前言 二、AHB操作概述 三、AHB 基本传输 1、简单传输 2、带有等待的传输 3、多重传输 四、AHB传输类型 五、小结 一、前言 在之前的文章中对于AMBA AHB做了一个简单的介绍,AHB 主要用于高性能模块(如 CPU、DMA 和 DSP 等)之间的连接&#x…

ChatGPT和Claude的能力全测评

创造性思维/语言 提示:“写一首 4 行诗,每行只有 3 个词,描写重庆” ChatGPT写诗👇 Claude写诗👇 仁者见仁,您怎么看谁更强? 提示: "如果你随机选择这个问题的答案,…

致敬,“编辑器之神”Vim的开发者Bram Moolenaar去世

编辑器之神Vim之父Bram Moolenaar逝世,享年62岁。其家人称,因过去几周里病情迅速恶化,Bram Moolenaar于8月3日去世。Bram的一生将大部分时间都奉献给了Vim,甚至在一个月前,他还在对Vim做着更新、修改工作。 Vim 是一个…

Air780EG —— 合宙4G定位解决方案

定位模式: 外部单片机控制模式(常见于AT固件客户): 开机 -> 搜星 -> 定位成功 -> 上报 -> 关机 780E自行控制模式(常见于二次开发客户,AT用户也可以使用): 开机 -> 搜星 -> 定位成功 -> 模块休眠,关闭GP…