软件体系结构风格

news2024/11/26 16:59:37

目录

一、定义

二、.经典软件体系结构风格:

1.管道和过滤器

 2.数据抽象和面向对象系统

3.基于事件系统(隐式调用)

4.分层系统

5.仓库

6.C2风格

7.C/S

8.三层C/S

9.B/S

题:


一、定义

软件体系机构风格是描述某一特定应用领域中系统组织方式的惯用模式

二、.经典软件体系结构风格:

1.管道和过滤器

过滤必须独立的实体,它不能与其他的过滤器共享数据,而其他过滤器不知道它的上游和下游的标识

正确性不依赖于过滤器进行增量计算过程顺序

优点:

  1. 良好的隐蔽性和高内聚,低耦合的特点
  2. 允许设计师将整个系统的输入/输出行为看成多个过滤器的简单合并
  3. 支持重用
  4. 系统维护和增强系统性能简单
  5. 允许对一些如吞吐量,死锁等属性分析
  6. 支持并行

缺点:

  1. 导致进程成为批量处理结构
  2. 不适合处理交互的应用

应用:

传统的编译器

 2.数据抽象和面向对象系统

这种风格建立在数据抽象和面向对象的基础上,数据的表示方法和它的相应操作封装在一个抽象数据类型或对象中。对象被称为构件,负责保持资源的完整性,通过函数和过程的调用来交互。

优点:

  1. 应为对象对其他隐藏它的标识,所以可以改变一个对象的标识,而不影响其他
  2. 将一些数据存取操作的问题分解成一些交互的代理程序集合

缺点:

  1. 改变一个对象就要改变多个调用的对象

3.基于事件系统(隐式调用)

思想:构件不直接调用一个过程,而是触发或广播一个或多个事件

隐式调用:一个事件的触发就导致了另一个模块中的过程的调用。

风格:事件的触发者不知道那些构件会被调用

应用:调试

优点:

  1. 为软件重用提供了强大的支持
  2. 为改进系统带来了方便

缺点:

  1. 数据交互问题
  2. 构件放弃了对系统计算的控制

4.分层系统

连接件通过决定层间如何交互的协议来定义,拓扑约束包括对相邻层间交互的约束,基于可增加抽象层的设计

应用:分层通信协议

优点:

  1. 可把一个复杂的程序按递增的步骤进行分解
  2. 支持功能增强
  3. 支持可重用

缺点:

  1. 很难找到一个合适的,正确的层次抽象方法
  2. 不容易划分

5.仓库

中央数据结构说明当前状态,独立构件在中央数据存储上执行

黑板:中央数据结构的当前状态触发进程执行的选择

应用:信号处理领域、如语言和模式识别,松耦合代理数据共享存取

组成:知识源、黑板数据结构、控制

6.C2风格

通过连接件绑定在一起的,按照一组规则运作的并行构件网络。

特点:

  1. 可以将任意复杂的功能封装在一起
  2. 连接件之间异步消息交换机制来实现
  3. 构件相对独立,构件之间依赖性较少

7.C/S

基于资源不对等,有三个主要的部分:数据库管理,客户应用程序和网络

保证了系统的并发性,使网络上传输的数据量减少到最少,从而改善系统的性能

优点:

  1. 适应性和灵活性
  2. 功能充分隔离

缺点:

  1. 成本高
  2. 客户端程序设计复杂
  3. 信息内容单一
  4. 用户界面风格不一
  5. 移植困难
  6. 维护和升级困难
  7. 新技术不易开发

8.三层C/S

 具有强大的书操作和事物处理能力,模型思想简单易于人们理解和接受

三层:

表示层:用户接口部分,他担负着用户与应用间的对话功能

功能层:将具体的业务处理逻辑编入程序,确认用户对应和数据库存取权限的功能以及记录系统处理日志功能

数据层:数据库管理系统,负责管理对数据库的读写

应用:某石油管理局劳动管理

优点:

  1. 提高系统和软件的可维护性和可扩展性
  2. 良好的可升级性和开放性
  3. 并行开发
  4. 隔离表示层和数据层

9.B/S

 浏览器/web服务器/数据库服务器,提供了异种机,异种网,等开放性基础

题:

异构:

内外有别:企业内部用户通过局域网直接访问数据库服务器,采用c/s,外部用户通过B/S

优点:外部不可直接访问数据库服务器能保证相对安全,内部用户交互性强

缺点:外服务维护困难

查改有别:凡是须执行维护和修改数据操作均使用C/S,查询和浏览用B/S

最后一篇软件体系结构复习文章,祝大家都不挂科!!!

附上我的保护神

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

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

相关文章

【CSP CCF记录】202104-1 灰度直方图

题目 过程 #include<bits/stdc.h> using namespace std; int n,m,L; int A[502][502]; int main() {cin>>n>>m>>L;int h[L]{0};for(int i0;i<n;i){for(int j0;j<m;j){cin>>A[i][j];h[A[i][j]];}}for(int i0;i<L;i)cout<<h[i]<…

第四届上海理工大学程序设计全国挑战赛 J.上学 题解 DFS 容斥

上学 题目描述 usst 小学里有 n 名学生&#xff0c;他们分别居住在 n 个地点&#xff0c;第 i 名学生居住在第 i 个地点&#xff0c;这些地点由 n−1 条双向道路连接&#xff0c;保证任意两个地点之间可以通过若干条双向道路抵达。学校则位于另外的第 0 个地点&#xff0c;第…

SeetaFace6人脸活体检测C++代码实现Demo

SeetaFace6包含人脸识别的基本能力&#xff1a;人脸检测、关键点定位、人脸识别&#xff0c;同时增加了活体检测、质量评估、年龄性别估计&#xff0c;并且顺应实际应用需求&#xff0c;开放口罩检测以及口罩佩戴场景下的人脸识别模型。 官网地址&#xff1a;https://github.co…

Rerank进一步提升RAG效果

RAG & Rerank 目前大模型应用中&#xff0c;RAG&#xff08;Retrieval Augmented Generation&#xff0c;检索增强生成&#xff09;是一种在对话&#xff08;QA&#xff09;场景下最主要的应用形式&#xff0c;它主要解决大模型的知识存储和更新问题。 简述RAG without R…

【前端系列】什么是yarn

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Python 全栈系列245 nginx 前端web页面透传

说明 过去的几年&#xff0c;我已经构造了很多组件&#xff0c;从图的角度来看&#xff0c;完成了很多点。这些点的单点测试看起来都不错&#xff0c;但是因为没有连起来&#xff0c;所以无法体现系统价值。好比发动机的马力虽然大&#xff0c;但是没有传动轴&#xff0c;那就…

重学JavaScript核心知识点(二)—— 详解Js中的模块化

详解Js中的模块化 1. 模块化的背景2. 来看一个例子3. 优雅的做法 —— 创建模块对象4. 模块与类&#xff08;class&#xff09;5. 合并模块6. 动态加载模块 1. 模块化的背景 JavaScript 在诞生之初是体积很小的&#xff0c;早期&#xff0c;它们大多被用来执行独立的脚本任务&…

Shell编程之循环语甸与函数

for 遍历循环 1&#xff09;for 变量 in 取值列表 for i in $(seq 1 10) do 命令序列 .... done 2&#xff09;for ((变量初始值; 变量范围; 变量的迭代方式)) for ((i1; i<10; i)) do 命令序列 .... done IFS for循环取值列表分隔符 set | grep IFS …

---随笔--Java实现TCP通信(双端通信接收与发送)

---随笔--Java实现TCP通信&#xff08;双端通信接收与发送&#xff09; 引言1. 什么是TCP通信2. 服务器与客户端核心代码2.1 服务器ServerSocket端核心代码2.2 用户Socket端核心代码2.3 小贴士之关于try-with-resources自动关闭资源的使用 3. 具体服务器端实现4. 具体客户端实现…

WordPress 、Typecho 站点的 MySQL/MariaDB 数据库优化

今天明月给大家分享一下 WordPress 、Typecho 站点的 MySQL/MariaDB 数据库优化&#xff0c;无论你的站点采用是 WordPress 还是 Typecho&#xff0c;都要用到 MySQL/MariaDB 数据库&#xff0c;我们以 MySQL 为主&#xff08;MariaDB 其实跟 MySQL 基本没啥大的区别&#xff0…

STC8增强型单片机开发【LED呼吸灯(PWM)⭐⭐】

目录 一、引言 二、硬件准备 三、PWM技术概述 四、电路设计 五、代码编写 EAXSFR&#xff1a; 六、编译与下载 七、测试与调试 八、总结 一、引言 在嵌入式系统开发中&#xff0c;LED呼吸灯是一种常见的示例项目&#xff0c;它不仅能够展示PWM&#xff08;脉冲宽度调制…

解决 Content type ‘application/json;charset=UTF-8‘ not supported

文章目录 问题描述原因分析解决方案参考资料 问题描述 我项目前端采用vue-elementUi-admin框架进行开发&#xff0c;后端使用SpringBoot&#xff0c;但在前后端登录接口交互时&#xff0c;前端报了如下错误 完整报错信息如下 前端登录接口JS代码如下 export function login(…

Busybox 在 Docker 中的部署和启动

可以使用 docker pull 指令下载 busybox:latest 镜像&#xff1a; PS C:\Users\yhu> docker pull busybox:latest latest: Pulling from library/busybox ec562eabd705: Pull complete Digest: sha256:5eef5ed34e1e1ff0a4ae850395cbf665c4de6b4b83a32a0bc7bcb998e24e7bbb St…

网安面经之文件包含漏洞

一、文件包含漏洞 1、文件包含漏洞原理&#xff1f;危害&#xff1f;修复&#xff1f; 原理&#xff1a;开发⼈员⼀般希望代码更灵活&#xff0c;所以将被包含的⽂件设置为变量&#xff0c;⽤来进⾏动态调⽤&#xff0c;但是由于⽂件包含函数加载的参数没有经过过滤或者严格的…

Selenium 自动化 —— 一篇文章彻底搞懂XPath

更多关于Selenium的知识请访问“兰亭序咖啡”的专栏&#xff1a;专栏《Selenium 从入门到精通》 文章目录 前言 一、什么是xpath&#xff1f; 二、XPath 节点 三. 节点的关系 1. 父&#xff08;Parent&#xff09; 2. 子&#xff08;Children&#xff09; 3. 同胞&#xff08;S…

LLM量化

Efficient Finetuning prefix tuning 针对每种任务&#xff0c;学习prefix vector 启发于prompting&#xff0c;调整上下文内容让模型去输出自己想要的内容 核心就是找到一个上下文去引导模型解决NLP生成任务 传统情况下&#xff0c;我们为了得到想要的结果&#xff0c;会…

1.9. 离散时间鞅-组合方法分析随机游动(不用鞅方法)

组合方法分析随机游动-不用鞅方法 组合方法分析随机游动(不用鞅方法)1. 反射原理 → \rightarrow →首击时分布2. 反正弦定律(末击时分布)组合方法分析随机游动(不用鞅方法) 本节将不使用鞅更深入地研究简单随机游动的属性,有益于过渡到马氏链的研究. 1. 反射原理

20240512,函数对象,常用算法:遍历,查找

函数对象 函数对象基本使用 重载 函数调用操作符 的类&#xff0c;其对象被称为函数对象&#xff1b;函数对象使用重载的&#xff08;&#xff09;时&#xff0c;行为类似函数调用&#xff0c;也叫仿函数 函数对象&#xff08;仿函数&#xff09;本质是一个类&#xff0c;不是…

【GlobalMapper精品教程】080:WGS84转UTM投影

参考阅读:ArcGIS实验教程——实验十:矢量数据投影变换 文章目录 一、加载实验数据二、设置输出坐标系三、数据导出一、加载实验数据 打开配套案例数据包中的data080.rar中的矢量数据,如下所示: 查看源坐标系:双击图层的,图层投影选项卡,数据的已有坐标系为WGS84地理坐标…

opencompass实践

参考教程 https://github.com/InternLM/Tutorial/blob/camp2/opencompass/readme.md 下载opencompass&#xff0c;配置必要的环境之后&#xff0c;解压下载的数据集 cp /share/temp/datasets/OpenCompassData-core-20231110.zip /root/opencompass/ unzip OpenCompassData-co…