当前位置: 首页 > article >正文

软考架构-架构风格

一、概念:

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

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

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

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

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

二、风格分类

架构风格考点说明

数据流-批处理

传统编译器,每个阶段的结果作为下一个阶段的输入,区别在于整体一个接一个,以整体为单位
数据流-管道-过滤器一个接一个,前一个输出是后一个输入
调用/返回-主程序/子程序显示调用,主程序直接调用子程序
调用/返回-面向对象对象是构件,通过对象调用封装的方法和属性
调用返回/-层次结构分层,每层最多影响上下两层,有调用关系
独立构件-进程通信进程间独立的消息传递,同步异步
独立构件-事件驱动(隐式调用)时间触发推动动作,如程序语言的语法高亮、语法错误提示不直接调用,通过事件驱动
虚拟机-解释器自定义流程,按流程执行,规则随时改变,灵活定义,业务灵活组合。机器人解释自定义的规则、解释引擎、存储区、数据结构(灵活业务规则)
虚拟机-规则系统规则集、规则解释器、选择器和工作内存,用于DSS和人工智能、专家系统
仓库-数据库

现代编译器的集成开发环境IDE,以数据为中心

又称为数据共享风格

中央共享数据源,独立处理单元
仓库-黑板语音识别、只是推理等问题复杂、解空间大、求解过程不确定的这一类软件系统,黑板,知识源、控制
仓库-超文本网状链接,多用于互联网
闭环-过程控制汽车定速巡航、空调温度调节、设定参数,并不断调整发出控制命令并接受反馈,循环反复达到平衡
C2风格构件和连接件、顶部和底部通过连接件绑定在一起按照一组规则运作的并行构件网络

1、数据流风格

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

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

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

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

2、调用/返回风格

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

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

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

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

Bean--Mapper--Service

3、独立架构风格

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

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

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

4、虚拟机风格

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

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

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

5、仓库风格

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

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

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

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

6、闭环控制

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

7、C2风格

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

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


http://www.kler.cn/news/311510.html

相关文章:

  • 全网最适合入门的面向对象编程教程:50 Python函数方法与接口-接口和抽象基类
  • 2-95 基于matlab的模板定位
  • 阿里云容器服务Kubernetes部署新服务
  • springboot实战章节小结
  • SpringSecurity原理解析(七):权限校验流程
  • TypeScript异常处理
  • Spring IoC 配置类 总结
  • LabVIEW多语言支持优化
  • [数据集][目标检测]不同颜色的安全帽检测数据集VOC+YOLO格式7574张5类别
  • 版本控制之Git
  • U盘显示未被格式化:深入解析、恢复策略与预防之道
  • 前端mock了所有……
  • firewalld实现NAT端口转发
  • 美国站群服务器优化技巧解析
  • Opencv边缘检测(四)
  • 梯度计算中的一些算子
  • 魔方财务迁移指南
  • 【mysql面试题】mysql复习之常见面试题(二)
  • Conda和pip 清空缓存
  • Vue Router v3 深入指南:配置、概念、代码演示及应用场景
  • 新发布的OpenAI o1生成式AI模型在强化学习方面迈出了重要的一步
  • PHP发邮件教程:配置SMTP服务器发送邮件?
  • Mysql高级篇(中)—— SQL优化
  • 【ComfyUI】自定义节点ComfyUI_LayerStyle——模仿 Adob​​e Photoshop 的图层样式、图层混合、图文混合、添加不可见水印
  • QString返回字符串的字节数
  • 【5】AT32F437 OpenHarmony轻量系统移植教程(2)
  • SSH 服务器,防止链接断开,训练终止操作————screen
  • Elasticsearch 分片迁移与移除集群节点操作
  • POI生成Excel文件增加数据验证(下拉序列)
  • 获取多媒体相册的内容