[ 更换 ]
热门城市
北京上海广州深圳成都杭州南京武汉天津西安重庆青岛沈阳长沙大连厦门无锡福州济南宁波昆明苏州郑州长春合肥南昌哈尔滨常州烟台南宁温州石家庄太原珠海南通扬州贵阳东莞徐州大庆佛山威海洛阳淮安呼和浩特镇江潍坊桂林中山临沂咸阳包头嘉兴惠州泉州三亚赣州九江金华泰安榆林许昌新乡舟山慈溪南阳聊城海口东营淄博漳州保定沧州丹东宜兴绍兴唐山湖州揭阳江阴营口衡阳郴州鄂尔多斯泰州义乌汕头宜昌大同鞍山湘潭盐城马鞍山襄樊长治日照常熟安庆吉林乌鲁木齐兰州秦皇岛肇庆西宁介休滨州台州廊坊邢台株洲德阳绵阳双流平顶山龙岩银川芜湖晋江连云港张家港锦州岳阳长沙县济宁邯郸江门齐齐哈尔昆山柳州绍兴县运城齐河衢州太仓张家口湛江眉山常德盘锦枣庄资阳宜宾赤峰余姚清远蚌埠宁德德州宝鸡牡丹江阜阳莆田诸暨黄石吉安延安拉萨海宁通辽黄山长乐安阳增城桐乡上虞辽阳遵义韶关泸州南平滁州温岭南充景德镇抚顺乌海荆门阳江曲靖邵阳宿迁荆州焦作丹阳丽水延吉茂名梅州渭南葫芦岛娄底滕州上饶富阳内江三明淮南孝感溧阳乐山临汾攀枝花阳泉长葛汉中四平六盘水安顺新余晋城自贡三门峡本溪防城港铁岭随州广安广元天水遂宁萍乡西双版纳绥化鹤壁湘西松原阜新酒泉张家界黔西南保山昭通河池来宾玉溪梧州鹰潭钦州云浮佳木斯克拉玛依呼伦贝尔贺州通化朝阳百色毕节贵港丽江安康德宏朔州伊犁文山楚雄嘉峪关凉山雅安西藏四川广东河北山西辽宁黑龙江江苏浙江安徽福建江西山东河南湖北湖南海南贵州云南陕西甘肃青海台湾内蒙古广西宁夏香港澳门
培训资讯网 - 为兴趣爱好者提供专业的职业培训资讯知识

架构师备战(四)-软件架构设计(一) 软件架构风格概念

设计

在讲到软件架构的概念时,首先我们要了解到,架构是在做什么样的事情,它在整个软件开发周期中所属什么样的位置。

之前学习软件工程时,我们学到了开发模型,里面涉及到需求分析,概要设计,详细设计,编码,测试。但事实上,没有提到架构这个东西。

为什么这么重要的东西没有在软件开发模型体现呢,其实是因为软件架构的兴起是滞后于软件开发模型的。比如瀑布模型,是用结构化的方式设计的,也就是面向过程的程序,那时候是没有涉及到架构的概念的。

其实架构设计就放在原来的需求分析之后,软件设计之前。因为需求分析比较偏向于业务的(一般需求来自于客户的业务),而软件设计是偏向技术,就是利用技术去完成需求所定义的内容。这个之间就很可能出现断代鸿沟,因为客户方更懂业务,需求分析是大量跟客户做对接,而技术人员就是拿着这个需求规格说明说去实现,但是技术人员不懂业务,就可能出现一个需求规格书转化为技术的过程会出现问题,因为各自的技术人员实现出来的东西不一样。

所以就需要架构设计这个环节,架构师需要理解需求,然后将需求砍成多个板块,然后把每个板块去完成一部分需求,从而简化需求。

架构师备战(四)-软件架构设计(一) 软件架构风格概念

1、软件架构相关概念

软件架构风格概念

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

软件架构概念

软件架构为软件系统提供了一个结构,行为和属性的高级抽象,由构成系统的元素描述,这些元素的相互作用,指导元素集成的模式以及这些模式的约束组成。

软件架构是项目干系人进行交流的手段,明确了对系统实现的约束条件,决定了开发和维护组织的组织结构,制约着系统的质量属性。

软件架构使推理和控制的更改更加简单,有助于循序渐进的原型设计,可以作为培训的基础。

软件架构是可传递和可复用的模型,通过研究软件架构可以预测软件的质量。

2、软件架构的发展历史

架构师备战(四)-软件架构设计(一) 软件架构风格概念

  • 无架构阶段:主要使用汇编语言,并且基本使用命令,没有架构的概念
  • 萌芽阶段:开始做程序结构设计,做面向过程开发,比如由顺序,分支,循环等结构
  • 初级阶段:开始使用统一建模语言(UML)
  • 高级阶段:使用4+1视图,做面向对象的设计了

3、软件架构建模

  • 结构模型(静态):以架构的构建、连接件和其他概念来刻画结构
  • 框架模型:不太侧重描述结构的细节而更侧重于整体的结构
  • 动态模型:系统的“大颗粒”的行为性质
  • 过程模型:构建系统的步骤和过程
  • 功能模型:由一组功能构建按层次组成,下层向上层提供服务

以上概念了解即可,不是重点

架构师备战(四)-软件架构设计(一) 软件架构风格概念

  • 开发视图:对应了UML的实现视图,主要针对的是编程人员,关注的是软件管理,也就是源代码
  • 进程视图:对应了UML的进程视图,主要针对的是系统集成人员,关注的是性能的可扩充性、吞吐量等。其实就是关注的并发
  • 逻辑视图:对应了UML的逻辑视图,针对的是最终用户,关注的是功能需求,也就是系统有哪些功能
  • 物理视图:对应了UML的部署试图,针对的是系统网络工程人员,关注的是系统的拓扑、安装、通信等。其实就是关注软件到硬件的映射关系
  • 场景:对应了UML的用例视图,展示了系统的外部人员与系统的交互

其实架构的4+1视图也是一个化繁为简的过程,就是从不同维度去看问题,从而简化问题。

4、软件架构风格(重要)

  • 软件架构的一个核心问题是能否达到架构级的软件复用
  • 架构风格反应了领域中众多系统所共有的结构和语义特征,并知道如何将各个构建有效地组织成一个完整的系统
  • 架构风格定义了用于描述系统的术语表和一组指导构建系统的规则

软件架构到底有哪些风格呢?

  • 数据流风格
    • 批处理序列、管道-过滤器。比如我们的Flink做批量流处理,实时流处理,就是数据流风格
  • 调用/返回风格
    • 主程序/子程序、面向对象、层次结构。我们的B/S架构风格,提供一个restful接口,发送请求也就返回。
  • 独立构建风格
    • 进程通信、事件驱动系统(隐式调用)。事件驱动系统现在也是很多
  • 虚拟机风格
    • 解释器、基于规则的系统。比如工作流引擎就是解释器。比如风控系统,需要编写大量风控规则来拦截风险交易,就是基于规则的系统。
  • 仓库风格
    • 数据库系统、超文本系统、黑板系统。现在是系统肯定离不开数据库。

这几种架构风格不会涵盖所有的架构风格,因为当时有些架构风格还没产生,现在又没有专门的归类,所以存在不属于这几种风格的架构风格。

所以虽然我们有很多分类,但是我们使用时,基本都是混合使用,一个系统一般都包含多种风格。

4.1、数据流风格

架构师备战(四)-软件架构设计(一) 软件架构风格概念

过滤器:对应了我们平常的函数,方法这些

管道:就是连接过滤器的东西,可以理解为一些调用的机制,就是管道

其实批处理和管道-过滤器的示意图都是差不多的,只是批处理是一般处理事后数据,一批一批的处理。并且批处理的数据必须是完整的,以整体的方式传递。

管道-过滤器一般是可以进行实时的流处理,一般针对单条数据,单个单个的处理。支持流式数据处理,也就是处理数据流。

一般类似Flink这样的框架就是批流一体的处理框架,既可以批量处理数据(一般是处理事后/非实时的数据),也可以进行流式处理数据(一般是事中/实时)。

批处理序列

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

管道-过滤器

每个构件都有一组输入和输出,构件读取输入的数据流,经过内部处理,然后产生输出数据。

这个过程冗长是通过输入数据流的变换或计算来完成的,包括通过计算和增加信息以丰富数据,通过浓缩和删除以精简数据,通过改变记录方式以转化数据和递增的转换数据等。

这里的构件称为过滤器,连接件就是数据流传输的管道,将一个过滤器的输出传到另一个过滤器的输入。

早期编译器就是采用在这种架构,要一步一步的处理,均可考虑采用此架构风格。因为早期代码是一步一步往下处理,所以早期编译器使用这种处理方式。

4.2、调用/返回风格

调用/返回风格是应用最为广泛的架构风格,每一个系统都逃不开调用/返回风格。一般都是定义一个接口,供前端调用,然后返回数据给前端,这就是调用/返回。所以它无处不在。

主程序/子程序

单线程控制,把问题划分为若干个处理步骤,构件即为主程序和子程序,子程序通常可合成为模块。

过程调用作为交互机制,即充当连接件的角色。调用关系具有层次性,其语义逻辑表现为主程序的正确性取决于它滴哦安永的子程序的正确性。

面向对象

构件是对象,对象是抽象数据类型的实例。在抽象数据类型中,数据的表示和它们的相应操作被封装起来,对象的行为体现在其接受和请求的动作。

连接件即是对象交互的方式,对象是通过函数或过程的调用来交互的。

层次结构

构件组织成一个层次结构,连接件通过决定层次间如何交互的协议来定义。每层为上一层提供服务,使用下一层的服务,只能见到与自己相邻的层。

通过层次结构,可以将大的问题分解为若干个渐进的小问题逐步解决,可以隐藏问题的复杂度。修改某一层,最多影响其相邻的两层(通常只能影响上层)。

优点

  • 这种风格支持基于可增加抽象层的设计,允许将一个复杂问题分解为一个增量步骤序列实现
  • 不同的层次处于不同的抽象级别,越靠近底层,抽象级别越高,越靠近顶层,抽象级别越低
  • 由于每一层最多只影响两层,同时只要给邻居层提供相同的接口,允许每层用不同的方法实现,同样为软件复用提供了强大的支持。

缺点

  • 并不是每个系统都可以很容易的划分为分层的模式
  • 很难找到一个合适的,正确的层次抽象方法

分层思想

架构师备战(四)-软件架构设计(一) 软件架构风格概念

所以现在我们的架构设计一般都是要分层调用的,比如后台的接口的controller(控制器层)调用service(业务层),再调用dao层(数据处理层)然后再一层一层的返回。这就是分层的思想在里面。

但是有些系统也不适合分层,因为分层太多了可能导致效率,性能。所以一般我们的后端分层都是三层,再加上前端调用,前端又有MVVM模式,所以一般在3-7层。函数调用一般不会超过7层。

4.3、独立构件风格

封装构件的时候,保证构件的独立性。其实就是不直接关联呗。比如我们的消息中间件进行解耦。或者某个事件进行处理,通过事件监听器来处理,从而降低关联性。再比如我们系统间的调用,使用RPC来解耦,调用远程就像调用本地一样,也是一种解耦机制。

进程通信

构件是独立的过程,连接件是消息传递。构件通常命名过程,雄安锡传递的方式可以是点对点,异步或同步方式,以及RPC【远程过程(方法)调用】等。

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

构件不直接调用一个过程,而是通过广播一个或多个事件。

构件中的过程在一个或多个事件中注册,当某个事件被出发时,系统自动调用在事件中注册的所有过程。一个事件的出发就导致另一个模块中的过程调用。

这种风格中的构件时匿名的过程,它们之间交互的连接件往往是以过程之间的隐式调用来实现的。

优点

主要的优点是为软件复用提供了强大的支持,为构件的维护和演化带来了方便。

缺点

缺点是构件放弃了对系统计算的控制

4.4、虚拟机风格

一般是适用于存在自定义的场景,比如自定义风控规则,然后解释器来解析规则代码.

解释器

解释器通常包括一个完成解释工作的解释引擎,一个包含被解释的代码的存储区,一个记录解释器引擎当前工作状态的数据结构,以及一个记录源代码被解释器执行的进度的数据结构。

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

缺点是执行效率比较低

基于规则的系统

基于规则的系统包括规则集,规则解释器,规则/数据选择器和工作内存,一般用在人工智能领域和DSS中。一般还有风控规则引擎系统,决策流引擎系统等。

4.5、仓库风格

仓库风格中构件分为两种:一种是中央数据结构,保存系统的当前状态。另一种是独立构件,对中央数据存储进行操作。

其实就是有一个中心仓库, 然后有一堆的处理部件,这些部件都对这个中心仓库进行处理.比如我们的数据库,其实本身就是一个数据库系统.

数据库系统

其实就是我们平常使用的数据库mysql, oracle等

黑板系统

架构师备战(四)-软件架构设计(一) 软件架构风格概念

包括知识源、黑板和控制三部分。

知识源包括如果独立计算的不同单元,提供解决问题的知识。知识源响应黑板的变化,也只修改黑板。

黑板是一个全局数据库,包含问题域解空间的全部状态,是知识源相互作用的唯一媒介。知识源响应是通过黑板状态的变化来控制的。

黑板系统通常应用在对于解决问题没有确定性算法的软件中(信号处理,问题划分,语音识别和编译器优化等

其实黑板系统看上去与数据库系统一样,因为就是按照数据库系统思想去做的,所以也不奇怪.

为什么叫黑板系统呢, 思想就是来自现实中教学的黑板, 它会把一个公共的数据区域, 不但作为存储的位置, 而且作为一种数据传递, 控制的一种机制.

比如老师, 学生通过黑板交换数据, 也就是老师把意见卸载黑板上, 学生也把意见写在黑板上.所以有一些数据传递共享的思想在里面.

超文本系统

构件以网状链接方式交互连接,用户可以在构件之间进行按照人类的联想思维方式任意跳转到相关构件。

超文本是一种非线性的网状信息组织方法,它以节点为基本单位,链作为节点之间的联想式关联。超文本系统通常应用在互联网领域。

现代集成编译环境一般采用这种结构风格。

5、小结

架构风格其实是很重要的知识,我们先了解这五种架构风格, 我们之前提到除了这物种风格之外, 还有一些没有收录在这几种风格之内的, 下一次会去做一个了解. 学无止境,继续加油!

相关内容

怎么学?如何干?西藏7市(地)委书记在西藏日报发表文章

启航新征程 开创新局面为全面建设社会主义现代化新拉萨努力奋斗自治区党委常委、拉萨市委书记 普布顿珠党的二十大大笔擘画坚持以中国式现代化全面推进中华民族伟大复兴的宏伟蓝图,区党委十届三次全会全面铺开建设美丽幸福西藏、共圆伟大复兴梦想的壮阔实践···

2023年全区智慧旅游专业人才培训班圆满结业

6月2日,自治区旅游发展厅主办的全区智慧旅游专业人才培训班在拉萨圆满结业。培训共历时三天,累计完成全区旅游行政管理部门工作人员及涉旅企业专业技术人员培训100人。本次培训是区旅发厅深入推进学习贯彻习近平新时代中国特色社会主义思想主题教育重要···

徐汇萨迦共同举办大美西藏首届口腔学习班

随着现代医学的发展,口腔健康越来越受到人们的关注,为提高西藏地区口腔技术水平和服务质量,近日,徐汇区牙病防治所和萨迦县中心医院远程连线共同举办首届口腔学习班开班仪式。徐汇区卫生健康委副主任胡强,上海援藏干部、萨迦县委常务副书记、常务副县长沈···

自觉抵制“一对一”“一对多”等学科类培训!哈尔滨中小学生暑期预警来了

17日,记者从哈尔滨市各区教育局获悉,2023年暑假将至,南岗区、道里区、香坊区教育局向家长发出预警,自觉抵制违规培训,各区义务教育阶段学科类培训机构已经全部注销,暑假期间以任何形式开展的学科类培训均属于违规培训。家长要自觉抵制任何机构或个···

哈尔滨市道里区企投局举办“招商大讲堂”专题培训

黑龙江网讯(记者 王惠婷)10月24日,哈尔滨市道里区企投局组织开展“招商大讲堂”专题培训班,全区各招商专班负责同志及业务骨干参加培训。本次培训从实际需求出发,紧紧围绕当前招商工作中的热点、难点,对“什么是招商引资”“道里区的产业结构和主导···

团黑龙江省委举办全省青年文明号青年岗位能手学习宣传贯彻党的二十大精神培训交流会

中国青年报客户端讯(李海涛)为深入学习贯彻党的二十大精神,充分发挥青年文明号、青年岗位能手示范引领作用,在全省职业青年中掀起学习党的二十大精神热潮,11月22日,团黑龙江省委举办全省青年文明号青年岗位能手学习宣传贯彻党的二十大精神培训交流会···

辽宁葫芦岛举办外贸政策培训会推动外贸保稳增量

辽宁省葫芦岛市外贸政策培训会4月3日举办。 辽宁省贸促会供图中新网葫芦岛4月3日电 (李晛)辽宁省葫芦岛市外贸政策培训会4月3日举办。本次活动由辽宁省贸促会支持、葫芦岛市商务局主办,葫芦岛市贸促会、葫芦岛海关、中国出口信用保险辽宁分公司和辽···

山西运城:严查无证校外培训机构 查封9家警告2家

新华社太原8月5日电(记者王飞航)记者从山西省运城市政府了解到,运城市教育局近日联合市公安局等多家单位,对中心城区无证校外培训机构进行了一次突击检查,共检查了13家校外培训机构,查封9家,警告2家,发放整改通知书4份。今年7月,运城市教育局···

山西开展培训筑牢森林“防火墙”

山西新闻网3月30日讯(记者 卢奕如)今日,记者从山西省应急管理厅获悉,全省举办森林草原防灭火业务培训,邀请专家以视频会议形式,围绕森林扑火指挥实操、森林草原火灾防控经验做法、火灾现场各级各类指挥员具体操作中遇到的问题等内容进行授课。培训内···

校外培训机构治理工作取得进展 山西停办近1300所

资料图:小学生排队等待进入校园。中新社记者 刘文华 摄中新网5月11日电 据教育部网站消息,按照校外培训机构专项治理工作整体安排,教育部、民政部、国家市场监管总局启动了校外培训机构治理专项督查工作。5月9日至10日,督查组率先在北京市开展华···

山西综改区举办省技术创新中心申报培训

  8月18日,山西综改区科技金融部举办2023年度省技术创新中心申报培训会,来自区内企业、科研院所及有关单位代表160余人参加了培训。  山西省技术创新中心是以产业前沿引领技术和关键共性技术研发为核心的产业技术创新平台,承担着为区域和产业···

山西汾阳医院开展健康教育与控烟知识培训

来源:【吕梁日报-吕梁新闻网】本报讯 (记者 刘少伟) 5月18日,在“世界无烟日”到来之际,山西汾阳医院组织开展健康教育与控烟知识培训。近年来,山西汾阳医院全面落实健康中国战略,根据国家卫健委《关于2011年起全国医疗卫生系统全面禁烟的决···

山西省文物局年度田野考古技术培训班开班

10月10日,山西省文物局在运城闻喜上郭城址、邱家庄墓群举办2023年度田野考古技术培训班开班仪式。该次培训为期三个月,通过理论和实践两部分教学,旨在推进山西考古工作高质量发展,提升考古业务人员专业技术水平。本次培训由山西省考古研究院和山西···

最低每课时9元!全省学科类校外培训课时长和收费标准出台

近日,山西省发改委、省教育厅下发《关于中小学学科类校外培训收费标准及有关事项的通知》,明确全省中小学学科类校外培训收费标准,从12月17日起执行。《通知》对全省线上线下学科类校外培训基准收费标准和浮动幅度制定了科学标准。其中,义务教育阶段线···

山西天镇 阳光职业培训学校培养乡村“新农人”乡村振兴添动能

(记者 贺文生) 山西天镇县阳光职业培训学校紧紧围绕乡村振兴战略,按照“政府引导、农民自愿、立足产业、突出重点”的原则,创新高素质农民技能培训方式方法,采取以“授人以渔”的方式,让人才振兴成为助推农业农村现代化的内生动力,以高素质农民引领现···

山西:建立全过程 全链条 无缝隙安全培训制度

黄河新闻网讯(记者杨江涛)日前,山西省应急管理厅下发了《山西省安全培训管理暂行办法》(以下简称《办法》)。我省将进一步抓好安全生产这个基本盘、基本面,推动全省安全培训工作制度化、规范化、科学化,促进安全培训工作高质量发展。山西省应急管理厅厅···

山西:艺考培训机构纳入全国监管平台管理

央广网太原10月6日消息(记者郎麒) 日前,山西省教育厅、省发改委、省公安厅等部门联合制定《加强面向高中阶段学生艺考培训规范管理工作方案》,针对艺考培训的突出特点和实际情况,全面规范艺考培训行为,将艺考培训机构统一纳入全国校外教育培训监管与···

太平财险阳泉中支开展消防安全教育和有限空间作业培训

为强化员工安全意识,进一步提升员工消防和有限空间突发事件应急处理能力,9月14日,太平财险阳泉中支邀请北京市卫民安消防教育咨询中心山西分中心讲师向全体员工开展了一次消防安全教育和有限空间作业课程培训。按照防消结合、预防为主的原则,本次讲座通···

山西省数字化转型贯标试点工作宣贯培训会在太原举行

  10月20日消息,山西省数字化转型贯标试点工作宣贯培训会在太原举行。省工信厅介绍,作为国家数字化转型贯标试点省份,试点启动后将引导企业加快数字化转型,助力制造业高端化、智能化、绿色化发展。  今年,工信部启动数字化转型贯标试点工作,我省···

山西马兰花创业培训讲师大赛收官 太原市获多个奖项

山西新闻网8月31日讯(记者 冯耿姝)8月29日,山西省第四届马兰花创业培训讲师大赛圆满收官,太原市代表队在比赛中分获多个二、三等奖和优秀奖。本届大赛以“启迪创新思维·激发创业梦想”为主题,全省共有56名教师晋级复赛,其中,太原市有7名选手···