系统架构设计师 - 软件架构设计 - 软件架构风格

文章目录

  • 软件架构风格描述
  • 数据流风格
    • 批处理风格
    • 管道过滤器风格
  • 调用返回风格
    • 主子程序风格
    • 面向对象(显式调用风格)
    • `层次结构`风格
  • 独立构件风格
    • 调用返回风格(隐式调用)
  • 虚拟机风格
    • 基于规则风格
    • 解释器风格
  • 仓库风格
    • 数据库风格
    • 黑板系统
  • 浏览器风格
    • 两层CS架构
    • 三层CS架构
    • 三层BS架构
    • `混合架构`
  • 其他风格
    • C2风格

软件架构风格描述

软件架构风格是描述某一特定领域内系统组织方式的惯用模式,它包括一个词汇表和一组约束.词汇表包扩一些构件和连接件的类型.而约束描述了系统是如何将这些构件和连接件组合到一起的.软件架构风格反映了特定领域内的系统共有的结构和语义,并指导系统如果将子系统和构件有效的连接在一起.
以下红色只为个人备忘,不代表知识点重要程度

数据流风格

批处理风格

由一组固定顺序的构件连接在一起组成
每个构件的开始必须在上一个构件的结束后开始。构件间交互的数据必须时完整的。

管道过滤器风格

构件有一个输入流、一个输出流。构件根据输入流进行内部处理,产生输出流,构件即过滤器。构件的连接件即为管道,负责把一个过滤器的输出传给另一个过滤器的输入
优点:
构件间具有良好的隐蔽性和低耦合性;
支持软件重用只需要确定构件间交互的数据格式,即可将任何两个构件连接在一起;
可扩展性强,添加新的构件,可修改性强,更换构件不会对其他构件和整体架构造成影响;
支持并行处理,每个过滤器可作为单独任务完成;
缺点:
难以定义过滤器间数据通信的统一标准;

调用返回风格

主子程序风格

单线程控制,把问题分成若干处理步骤主程序根据自身需要,选择子程序进行调用。

面向对象(显式调用风格)

将构件间交互的数据的表示形式及其操作封装成对象,即构件。构件间的过程调用或函数即连接件。
优点:
对象具有的封装性,修改一个对象不会对其他对象照成影响;
一个构件如果想要调用另一个构件,只需要知道另一个构件的标识即可。
缺点:
一但一个构件的标识发生变化,那么所有调用这个对象的构件都要发生变化;
如果A调用了C,B也调用了C,那么A对C的影响对B是不可预计的;

层次结构风格

每一层即为构件,层与层间的通讯即为连接件。每一层负责调用下一层的功能,并向上一层提供功能。每一层只可见其相邻的两个层次;
优点:
把一个复杂的问题分成增量步骤去解决,降低问题复杂度,逐个击破
具有良好的低耦合特性,每一层的变动仅对其相邻的层次照成影响;扩展性,添加新的层次简单;
缺点:过多的层次调用影响响应效率

独立构件风格

调用返回风格(隐式调用)

构件不直接调用构件的过程,而是触发一个事件或触发多个事件.系统中其他构件的过程在一个或多个构件中注册,当一个事件触发时,所有在该事件中进行注册的构件的过程都将被调用;
优点:
低耦合性,每个构件不直接关联到一起,二十通过注册的方式关联;
可复用性强,一个构件的过程可以被多个事件调用,只需要在事件中进行注册;
可扩展性强,新增一个构件时只需要把它注册在相关的事件中,替换一个构件时不会对其他构件或整体系统照成影响;
缺点:
一个事件触发后,其无法知晓其中注册的构件的过程是否成功执行;
即使知道一个事件中注册了哪些构件的过程,但其调用过程的顺序不可保证

虚拟机风格

基于规则风格

用于专家系统

解释器风格

完成解释工作的解释引擎,待解释代码的储存区,记录当前解释器解释状态的数据结构,记录源代码被解释进度的数据结构来屏蔽来自操作系统,数据等外部环境的差异,建立解释规则
优点:
缺点:
效率低

仓库风格

数据库风格

说明当前系统数据状态的中央数据结构,在中央数据结构上执行的构件
输入流中的某个事件触发进程的选择

黑板系统

说明系统数据状态的中央数据结构,在中央数据结构上运行的构件
中央数据结构的当前状态触发进程选择

浏览器风格

两层CS架构

胖客户端. 表示层- 数据层
缺点:
开发成本高,要开发客户端,客户端设计复杂;
软件移植困难;
客户端冗余业务,不利于维护,修改扩展时很麻烦;
优点:
响应效率会比BC略高,因为客户端负责了部分的运算;
网络负载小,一般都在内部局域网;
安全性高,不涉及互联网传输;

三层CS架构

瘦客户端. 表示层 - 功能层 - 数据层
对两层CS架构中,客户端和服务器端的均存在的功能层进行了提取

三层BS架构

0客户端. 浏览器 - web服务器
使用通用的浏览器和www访问Web服务器的方式进行交互.
优点:可扩展性强,浏览器不冗余业务.
缺点:
安全性不如CS(通过信息安全策略弥补);
对动态页面的支持不足(通过jsp css等弥补);
以页面为提交单位(通过ajax弥补)

混合架构

内外有别:
内部管理体系健全,客户端可维护且客户端数量校验,可采用CS;
外部分布区域广,免去客户端维护,可扩展性号;
查改有别:

其他风格

C2风格

每个构件都一个顶部和底部.每个构件可以和任何其他构件连接. 每个构件的顶部只能连接在另一个构件的底部.

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

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

相关文章

如何开启redis5的远程访问权限

如何开启redis的远程访问权限   本地客户端或者程序要连接服务器上面的redis的时候,可能出现连接不上,因为redis默认只允许本机访问。需要修改redis目录下面的redis.conf文件。   1、将bind 127.0.0.1 注释掉:#bind 127.0.0.1   默认只…

阿里巴巴HRSSC:用宜搭实现业务管理模式创新

快速上线全球100支工单流程,为员工提供千人千面的HR自助服务……借助阿里巴巴旗下低代码应用搭建平台“宜搭”,仅仅历时3个月,阿里巴巴HR共享服务中心全新上线,标志着全面服务阿里巴巴生态化、全球化的HR共享服务平台诞生了。 作…

从零入门Serverless|一文详解Serverless技术选型

作者 | 李国强 阿里云资深产品专家 本文整理自《Serverless 技术公开课》。关注“Serverless”公众号,回复“入门”,即可获取 Serverless 系列文章 PPT。 今天来讲,在 Serverless 这个大领域中,不只有函数计算这一种产品形态和…

肖修鹏:十年磨一剑,成就靠谱职业经理人

云栖号资讯:【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 简介: 曾是科大讯飞15年资深专家,深耕人工智能领域,始终坚守智能语音赛道,时任…

微信小程序添加开发者、赋予权限、添加体验者

使用管理员账号扫码->登录小程序后台 https://mp.weixin.qq.com/wxamp/home/guide 【管理】-【成员管理】-【项目成员】-【添加成员】 编辑权限->个别权限调整 权限调整完毕后,点击保存

系统架构设计师 - 软件架构设计 - 基于架构开发方法 ABSD (Architecture-Based Soft Design)

文章目录基于架构的开发方法体系结构需求体系结构设计体系结构文档化体系结构复审体系结构实现体系结构演化语义上的 "体系结构" "架构"基于架构的开发方法 自定向下,逐层细化.系统- 子系统 - 逻辑构件 - 实际构件 . 采用视角和视图描述软件架构 ; 用例描…

如何构建低延时直播体验,让互动更实时?

QuestMobile《2020中国移动直播行业“战疫”专题报告》数据显示, 疫情期间,看直播成为休闲娱乐、获取资讯、上课学习的主要方式,一些高度依赖线下场景的行业也纷纷通过直播进行自救,线上转型直播卖货,政府部门也通过直…

疫情中的2021,云原生会走向哪里

头图 | 付费下载于视觉中国 翻译 | Daixiang(华为云原生团队)

Flink在快手实时多维分析场景的应用

作者:董亭亭、徐明 摘要:作为短视频分享跟直播的平台,快手有诸多业务场景应用了 Flink,包括短视频、直播的质量监控、用户增长分析、实时数据处理、直播 CDN 调度等。此次主要介绍在快手使用 Flink 在实时多维分析场景的应用与优化…

小程序发布流程

上一篇:企业微信小程序~开启线上真机调试模式https://blog.csdn.net/weixin_40816738/article/details/124847862 文章目录一、小程序信息补充1. 小程序信息补充2. 小程序名称3. 小程序简称4. 小程序头像5. 小程序介绍6. 案例效果图二、小程序类目2.1. 小程序类目补…

一周上线系统,效率提升100%,宜搭助力阿里巴巴法务数字化升级

程序员小王正坐在电脑前写代码,屏幕跳出一条提醒:“亲,你于2019年6月5日提交的创新提案,已经通过专利审批。”这是来自阿里巴巴知识产权管理系统的通知,当公司权利库内的某项权利(比如专利)的状…

系统架构设计师 - 软件架构设计 - 特定领域软件架构DSSA(Domain Speciffic Softwore Architecture)

特定领域软件架构 某一特定应用领域内,为一组应用提供组织结构参考标准、高层次的软件架构 横向特定领域: 例如持久层设计领域 纵向特定领域: 例如供应链系统领域 活动过程 领域分析:根据领域知识 ,获取特定领域内 …

nginx 负载均衡 使用非root用户

文章目录一、安装配置1.依赖下载2.软件下载3.解压nginx4.编译、安装二、配置与权限2.1. 赋予权限2.2. 一个端口2.3. 2个端口三、部署与启动3.1. 指定配置文件启动3.2. 指定配置文件重启一、安装配置 1.依赖下载 yum -y install gcc zlib zlib-devel pcre-devel2.软件下载 wg…

“寒武纪大爆发”之后的云原生,2021年走向何处?

【编者按】云原生已无处不在,《云原生人物志》是CSDN重磅推出的系列原创采访,我们关注云原生中每一个技术人、公司的身影。知微见著,窥见云原生价值与趋势。 2021新年之初,来听听Tetrate 布道师、CNCF Ambassador、云原生社区及 S…

涂鸦智能dubbo-go亿级流量的实践与探索

云栖号资讯:【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! dubbo 是一个基于 Java 开发的高性能的轻量级 RPC 框架,dubbo 提供了丰富的服务治理功能和优秀的扩展能力。而 du…

系统架构设计师 - 软件架构设计 - 架构评估

软件质量属性 记忆口诀 : 安全 操作 功能 修改 靠/用 可变 性 安全性 系统提供功能给合法用户的同时,拒绝 非法用户的访问请求 或 企图 的能力; 互操作性 系统与外部系统 (环境) 进行相互作用的难易程度; 功能性 系统提供用户所期望的 工作 的能力; 可修改性 系统以高…

以“术”彰“道”,用匠心做技术—对话阿里云MVP刘洪峰

云栖号资讯:【点击查看更多行业资讯】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 简介: 一直以来,我们印象里的刘洪峰都是那个热衷布道的物联网老兵“刘老师”。可你是否知道&#xff…

老码农公开!我是这样得到CSDN会员的……

‍HAPPY“牛”YEAR~牛年到,好运来~不论你今年新年回不回家CSDN 福利你都可以领到!助你牛气冲天,“码”力十足上周的活动已经有不少同学参与周五福利日活动都领到了CSDN会员!这周活动继续!加码万份好礼!&…

nginx反向代理部署前后端分离项目 使用非root用户

文章目录一、安装配置1.依赖下载2.软件下载3.解压nginx4.编译、安装二、配置与权限2.1. 赋予权限2.2. 一个端口三、部署与启动3.1. 指定配置文件启动3.2. 指定配置文件重启一、安装配置 1.依赖下载 yum -y install gcc zlib zlib-devel pcre-devel2.软件下载 wget https://n…

系统架构设计师 - 面向服务架构 SOA

文章目录什么是SOA:SOA主要技术UDDISOAPWSDLBPELrestfulSOA实现方式WebService企业服务总线 ESB服务注册表什么是SOA: SOA:面向服务架构,是一种粗粒度、松耦合的服务架构,服务间通过定义良好的、简单、明确的接口定义…