软考架构-架构风格

一、概念:

风格就是架构的模式,比如C/S、B/S架构,比如现实生活中的中式风格、欧式风格

描述某一特定应用领域中系统组织的方式

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

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

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

二、风格分类

|-----------------|------------------------------------|-----------------------------------------------|
| 架构风格 | 考点 | 说明 |
| 数据流-批处理 | 传统编译器,每个阶段的结果作为下一个阶段的输入,区别在于整体 | 一个接一个,以整体为单位 |
| 数据流-管道-过滤器 | 传统编译器,每个阶段的结果作为下一个阶段的输入,区别在于整体 | 一个接一个,前一个输出是后一个输入 |
| 调用/返回-主程序/子程序 | | 显示调用,主程序直接调用子程序 |
| 调用/返回-面向对象 | | 对象是构件,通过对象调用封装的方法和属性 |
| 调用返回/-层次结构 | | 分层,每层最多影响上下两层,有调用关系 |
| 独立构件-进程通信 | | 进程间独立的消息传递,同步异步 |
| 独立构件-事件驱动(隐式调用) | 时间触发推动动作,如程序语言的语法高亮、语法错误提示 | 不直接调用,通过事件驱动 |
| 虚拟机-解释器 | 自定义流程,按流程执行,规则随时改变,灵活定义,业务灵活组合。机器人 | 解释自定义的规则、解释引擎、存储区、数据结构(灵活业务规则) |
| 虚拟机-规则系统 | 自定义流程,按流程执行,规则随时改变,灵活定义,业务灵活组合。机器人 | 规则集、规则解释器、选择器和工作内存,用于DSS和人工智能、专家系统 |
| 仓库-数据库 | 现代编译器的集成开发环境IDE,以数据为中心 又称为数据共享风格 | 中央共享数据源,独立处理单元 |
| 仓库-黑板 | 现代编译器的集成开发环境IDE,以数据为中心 又称为数据共享风格 | 语音识别、只是推理等问题复杂、解空间大、求解过程不确定的这一类软件系统,黑板,知识源、控制 |
| 仓库-超文本 | 现代编译器的集成开发环境IDE,以数据为中心 又称为数据共享风格 | 网状链接,多用于互联网 |
| 闭环-过程控制 | 汽车定速巡航、空调温度调节、设定参数,并不断调整 | 发出控制命令并接受反馈,循环反复达到平衡 |
| C2风格 | 构件和连接件、顶部和底部 | 通过连接件绑定在一起按照一组规则运作的并行构件网络 |

1、数据流风格

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

批处理序列:(有固定顺序)构件为一系列固定顺序的计算单元,构件之间通过数据传递交互,每个处理步骤是一个独立的程序,每一步必须在前一步结束后才能开始,数据必须是完整的,以整体方式传递。

管道-过滤器:(有顺序,有数据流)每个构件有一组输入和输出,构件读取输入的数据流,经过内部处理,产生输出数据流。前一个构件的输出作为后一个构件的输入,前后数据流关联。过滤器就是构件,连接件就是管道。

二者区别:批处理前后构件不一定有关联,作为整体传递,前边整个构件运行完,才能运行后边构件。管道-过滤器,是前一个输出作为后一个输入,前面执行到部分可以开始执行后面,比如:视频播放。

2、调用/返回风格

构件之间存在互相调用的关系,显示的调用。代表风格有主程序/子程序、面向对象、层次结构

主程序/子程序:单线程控制,把问题划分为若干个处理步骤,构件即为主程序和子程序。过程调用充当连接件。柱/子程序互相调用。

面向对象:构件是对象,对象是通过函数或过程的调用交互的。

层次结构:构件组成是一个层次结构,连接件通过协议来定义,每层为上一层提供服务,使用下一层的服务,只能见到自己邻接的层,修改某一层,最多影响其相邻的两层(通常只能影响上层)。

Bean--Mapper--Service

3、独立架构风格

构件之间是相互独立的,通过某个事件触发、异步的方式执行,代表风格有进程通信、事件驱动系统(隐式调用)

进程通信:构件是进程,连接件是消息传递。构件是独立的占有独立的内存与存储空间。消息传递的方式是点对点、异步或同步方式,以及远程过程(方法)调用。

事件驱动系统(隐式调用):构件的过程在一个或多个事件中注册,当某个事件被触发时,系统自动调用在这个事件中注册的所有过程。

4、虚拟机风格

自定义了一套规则供使用者使用,使用者基于这个规则开发构件,能够跨平台适配,代表风格有解释器、基于规则的系统,JVM

解释器:具有解释器风格的软件中含有一个虚拟机,可以仿真硬件的执行过程和一些关键应用,缺点是执行效率低。

基于规则的系统:包括规则集、规则解释器、规则/数据选择器和工作内存,一般用在人工智能领域和DSS(决策支持)中。

5、仓库风格

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

数据库系统:常规数据库。

黑板系统:当成一个黑板,在黑板上展示数据信息

超文本系统:以网状链接方式相互连接。

6、闭环控制

软件和硬件之间表示为一个反馈循环,比如空调,会根据房间温度的反馈去自动调节温度

7、C2风格

按照规则通过连接件绑定在一起。

构件和连接件都有一个顶部和底部,构件的顶部连接到连接件的底部,构件的底部连接到连接件的顶部,构件与构件之间不允许直接连接

相关推荐
一个儒雅随和的男子5 小时前
微服务详细教程之nacos和sentinel实战
微服务·架构·sentinel
腾讯云开发者5 小时前
AI时代,需要怎样的架构师?腾讯云架构师峰会来了!
架构
Hello Dam7 小时前
面向微服务的Spring Cloud Gateway的集成解决方案:用户登录认证与访问控制
spring cloud·微服务·云原生·架构·gateway·登录验证·单点登录
AI人H哥会Java15 小时前
【Spring】Spring的模块架构与生态圈—Spring MVC与Spring WebFlux
java·开发语言·后端·spring·架构
小屁不止是运维15 小时前
麒麟操作系统服务架构保姆级教程(二)ssh远程连接
linux·运维·服务器·学习·架构·ssh
不会写代码的女程序猿15 小时前
关于ETL的两种架构(ETL架构和ELT架构)
数据仓库·架构·etl
Leoysq21 小时前
深度学习领域的主要神经网络架构综述
深度学习·神经网络·架构
ahhhhaaaa-1 天前
【AI图像生成网站&Golang】项目架构
开发语言·架构·golang
你有抖音吗1 天前
请说下你对 MYSQL 架构的了解?
mysql·架构