软考高级《系统架构设计师》一张图辅助记忆软件架构风格

4,902 阅读8分钟

一张图辅助记忆软件架构风格

今天又复习了一遍软件架构风格的基本内容。

众所周知,软件架构这块的分值,每年占到了选择题比分的1/3左右。

而且论文题目也极有可能会考到这里。所以,这里是每个同学都必须要十分精准的记忆的。

不但要记忆软件架构风格的种类,而且要记住每个种类的特点,以及如何区分不同的软件架构风格,还要具备根据描述来判断是哪一种风格的能力。

话不多少,今天随手画了一张图,用来辅助记忆软件架构风格

image.png

数据流风格

中间先画一条断断续续的线。看到这个我们就想到了“流动”。

这里我们记住为数据流风格。

数据流风格是常见的一种架构风格,结构最为简单。这样的架构下,所有的数据按照流的形式,在处理过程中向下一步传递,不存在结构的反复。在流动的过程中,数据经过序列间的数据处理组件依次进行处理,最后输出。

数据流风格,根据流的处理形式,我们分为2种类型。

批处理序列

批处理序列的每一步都是独立的,并且每一步都是顺序执行的。只有当前一步处理结束,才会继续处理下一步。数据作为一个整体,在步与步之间传递。

管道-过滤器风格

每个构件都有一组输入和输出,构件读取输入的数据流,经过内部处理,然后产生输出数据流,这个过程通常是通过输入数据的计算或者变换来完成的。这里的构件被称为过滤器,连接件就是管道,管道将一个过滤器的输出传送到另一个过滤器的输入。

调用/返回风格

下面画了一个带箭头的三角形,有点像数据经过下面处理后,又返回到中间这一横。我们想到了“返回”

这里我们记忆为调用/返回风格。

调用返回风格,就是在系统中采用了调用与返回机制。利用调用-返回实际上是一种分治的策略,其主要思想是将一个庞大的系统分解为一些子系统,以便降低复杂度,并且增加可修改性。程序从执行起点开始执行该构件的代码,程序执行结束,将控制返回给程序调用构件。

这里有5个架构风格的大类,其中调用/返回风格和仓库系统是有3个不同子类的。

主程序/子程序

主程序/子程序风格是结构化开发时期的经典架构风格。这种风格一般采用单线程控制,把问题划分为若干个处理步骤,构件即主程序和子程序。

子程序通常可以合成模块。过程调用作为交互机制,即充当连接件。调用关系具有层次性,即其语义逻辑表现为子程序的正确性,取决于它调用的子程序的正确性。

面向对象

抽象数据类型概念对软件系统有着重要作用,这种风格建立在数据抽象和面向对象的基础上,数据的表示方法和他们的相应操作封装在对象中。这种风格的构件是对象。对象是一种被称作管理者的构件,因为它负责保持资源的完整性。对象是通过函数和过程的调用来交互的。

层次结构

构件组织成一个层次结构,连接件通过决定层间如何交互的协议来定义。每一层为上一层提供服务,使用下一层的服务,智能看到与自己相邻的层。通过层次结构,可以将大的问题分解为若干个渐进的小问题逐步解决,可以隐藏问题的复杂度。修改某一层,最多影响其相邻的两层。

独立构件风格

上面中间画一个圆,表示画地为牢,那就是“独立”的意思。

之类我们记忆为独立构建风格。

独立构件风格主要强调系统中的每个构件都是相对独立的个体,它们之间不直接通信,以降低耦合度,提升灵活性。独立构件风格主要包括:进程通讯和事件系统子风格。

独立构建风格也分为2个不同的子类。

进程通信

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

事件驱动系统/隐式调用

构件不直接调用一个过程,而是触发或广播一个或多个事件。构件中的过程在一个或多个事件中注册,当某个事件被触发时,系统自动调用这个事件注册的所有过程。一个事件的触发就导致了另一个模块中的过程调用。这种风格中的构件是匿名的过程,它们之间交互的连接件往往是以过程之间的隐式调用来实现的。主要优点是为软件复用提供了强大的支持,为构件的维护和演化带来了方便;其缺点是构件放弃对系统计算的控制。

虚拟机风格

上面左边画了一个方形,有点像电脑,我们理解为“虚拟机”。

所以我们记忆为虚拟机风格。

虚拟机风格的基本思想是人为构建一个运行环境,在这个环境之上,可以解析与运行自定义的一些语言,这样来增加架构的灵活性,虚拟机风格主要包括解释器和规则为中心两种架构风格。

解释器

解释器通常包括一个完成解释工作的解释引擎,一个包含将被解释的代码的存储区,一个记录解释引擎当前工作状态的数据结构,以及一个记录源代码被解释执行的进度的数据结构,具有解释器风格的软件中含有一个虚拟机,可以仿真硬件的执行过程和一些关键应用。其缺点是执行效率比较低。

基于规则的系统、

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

仓库系统

上面右边画了一个三角形,有点像谷仓的顶。

我们将其记忆为仓库风格。

在仓库(repository)风格中,有两种不同的构件:中央数据结构说明当前状态,独立构件在中央数据存储上执行,仓库与外构件间的相互作用在系统中会有大的变化。

数据库系统

构件主要有两大类,一类是中央共享数据源,保存当前系统的数据状态;另一类是多个独立处理单元,处理单元对数据元素进行操作。

黑板系统

包括知识源、黑板和控制三部分。知识源包括若干独立计算的不同单元,提供解决向题的知识。知识源响应黑板的变化,也只修改黑板;黑板是一个全局数据库,包含问题域解空间的全部状态,是知识源相互作用的唯一媒介;知识源响应是通过黑板状态的变化来控制。

超文本系统

构件以网状链接方式相互连接,用户可以在构件之间进行按照人 类的联想思维方式任意跳转到相关构件,超文本是一种非线性的网状信息组织方法,它以结点为基本单位,链作为结点之间的联想式关联。

后记

通过随便画的一张图,帮助我们记住了几个大类,当时每个小类没有体现在其中。

需要完全理解架构风格的所有种类,还需要加强对每个风格的理解,和每个风格的典型代表和作用。

今天是2022年 9月13日 ,距离软考高级考试只有 53天了。继续加油吧。

在考试前,我还是会持续的总结和输出一些内容。并发布在掘金上。

希望能给大家一些帮助。

image.png