软件设计风格(干货)-架构师之路(九)

一、软件架构风格概念

Architecture架构,体系结构

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

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

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

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

二、软件架构风格(五大类)

  1. 数据流风格

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

A.批处理序列:

构件为一系列固定计算单元,构件之间 只通过数据传递交互。每一步程序都必须在其前一步结束才能开始,数据传递下去。

B.管道-过滤器:

过滤器是构件,连接件是管道,前一个构件的输出作为后一个构件的输入。

(批处理序列和管道-过滤器的区别,批处理看视频必需全部下载完,管道可以边看边下载,一步一步处理)

区别是批处理必需前一个处理完才可以执行下一个,管道-过滤则是前面处理到部分,就可以执行下一个。

  1. 调用/返回风格

构建之间 存在调用关系,一般显式调用,代表的风格 主程序/子程序、面向对象、层次结构。

  1. 主程序\子程序:

单线程控制,把问题划分为若干个处理步骤。

  1. 面向对象:

构件是对象,连接件是对象件交互方式,对象通过调用函数和过程。

  1. 层次结构:

构件组成层次结构,连接件决定层如何交互协议来定义。修改某一层,最多影响相邻的两层(通常只影响上一层)。

层次的优点:

越底层,抽象程度越高。

为软件复用提供强大支持。

缺点:

分层不容易,难道到正确的层次抽象方法。

  1. 独立构件风格

构件独立,之间不存在显式关系,通过 某个事件触发、异步的方式来执行,代表的风格由 进程通信、事件驱动系统(隐式调用)。

  1. 进程通信

构件是独立的进程,连接件是传递消息。构件是命名过程,消息传递可以 点对点、异步或同步、以及远程调用等。

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

构件不直接调用过程,而是触发或广播一个或多个事件。(隐式调用比如spring的applicationEvent和kafka消费)

优点:

软件复用、系统维护。

缺点:

构件放弃了对系统计算的控制。(被他人被动调用,所以不能主动控制)

  1. 虚拟机风格

自定义一套规则供使用者使用,使用者基于这个规则来使用,能够跨平台适配,代表风格由 解释器、基于规则的系统。

典型的虚拟机jvm

  1. 解释器

包含解释引擎,包含解释代码的存储器,包含解释引擎工作状态数据结构存储,以及记录源代码被解释进度。缺点效率低。

  1. 基于规则的系统

包含 规则集、规则解释器、规则/数据选择器和工作内存,一般在人工智能和DSS中。

(DSS决策知识,比如大数据进行分析)

  1. 仓库风格

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

  1. 数据库系统

两大类,一类是中央共享数据源,保存数据状态。另一类多个独立处理单元,处理单元对数据元素进行操作

  1. 超文本系统

互联网领域,网状结构。

  1. 黑板系统

包含 知识源、黑板和控制。

知识源则是包含若干提供计算的单元。黑板是全局数据库。知识源通过响应黑板的变化来变化。

三、其他风格

除了上面的五大风格外,还有其他风格。

  1. 闭环控制

适用嵌入式系统,当软件操作一个物理系统时,软件与硬件之间可以粗略的表示一个反馈循环,反馈循环接受一定输入,来确定输出,使环境达到新状态。(比如空调从26变为23摄氏度,车子自动巡航)

  1. C2体系风格

通过连接件绑定在一起的按照一组规则运作的并行架构风格。规则如下

构件连接件都有一个顶部和底部,构件与构件不允许直接连接,构件的底部必需连接连接件的顶部。

一个连接件可以和任意数目的其他构件和连接件链接。

真题:

软件架构风格是描述特定应该用领域中系统组织方式的()。系统风格反映领域中众多系统所共有的结构和(),强调对架构()的重用。

答案:

惯用模式   语义分析   设计

()架构风格可以概括为通过连接件绑定在一起,按照一组规则运作的构件。

答案是C2

不是规则系统,规则系统是会根据参数变化的。

猜你喜欢

转载自blog.csdn.net/ke1ying/article/details/132412742