高级系统架构师笔记——系统架构设计基础知识(3)软件架构风格
系统架构设计基础知识(3)软件架构风格
- 软件架构风格
- 概述
- 数据流体系结构风格
- 批处理体系结构风格
- 管道-过滤器体系结构风格
- 调用/返回体系结构风格
- 主程序/子程序风格
- 面向对象体系结构风格
- 层次型体系结构风格
- 客户端/服务器体系结构风格
- 以数据为中心的体系结构风格
- 仓库体系结构风格
- 黑板体系结构风格
- 虚拟机体系结构风格
- 解释器结构风格
- 规则系统体系结果风格
- 独立构件体系结构风格
- 进程通信体系结构风格
- 事件系统体系结构风格
- 总结
软件架构风格
概述
数据流体系结构风格
数据流体系结构没有概念上的程序计数器:指令的可执行性和执行仅基于指令输入参数的可用性来确定,因此,指令执行的顺序是不可预测的,即行为是不确定的。
批处理体系结构风格
特点:每个处理步骤是一个单独的程序,每一步必须在前一步结束后才能开始,并且数据必须是完整的,以整体的方式传递。
构件:独立的应用程序
连接件:某种类型的媒介。连接件定义了相应的数据流图,表达拓扑结构。
管道-过滤器体系结构风格
特点:一个步骤的输出是另一个步骤的输入。每个处理步骤由一个过滤器(Filter)实现,处理步骤之间的数据传输由管道(Pipe)负责。
构件:过滤器
连接件:数据流传输管道,将一个过滤器的输出传到另一过滤器的输入。
调用/返回体系结构风格
调用/返回风格是指在系统中采用了调用与返回机制。利用调用-返回实际上是一种分而治之的策略,其主要思想是将一个复杂的大系统分解为若干子系统,以便降低复杂度,并且增加可修改性。
主程序/子程序风格
特点:主程序/子程序风格一般采用单线程控制,把问题划分为若干处理步骤
构件:主程序和子程序
连接件:主程序和子程序间的过程调用
面向对象体系结构风格
特点:建立在数据抽象和面向对象的基础上,数据的表示方法和它们的相应操作封装在一个抽象数据类型或对象中。
构件:对象
连接件:过程调用
层次型体系结构风格
特点:层次系统组成一个层次结构,每一层为上层提供服务,并作为下层的客户。在一些层次系统中,除了一些精心挑选的输出函数外,内部的层接口只对相邻的层可见。
构件:层上的虚拟机
连接件:层间的交互协议
客户端/服务器体系结构风格
特点:基于资源不对等,且为实现共享而提出的
两层C/S体系结构:数据库服务器、客户应用程序和网络组成。服务器(后台)负责数据管理,客户机(前台)完成与用户的交互任务,称为“胖客户机,瘦服务器”。
三层C/S体系结构:相比于两层增加了一个应用服务器。整个应用逻辑驻留在应用服务器上,只有表示层存在于客户机上,故称为“瘦客户机”
以数据为中心的体系结构风格
仓库体系结构风格
特点:是存储和维护数据的中心场所。
构件:中央数据结构说明当前数据的状态以及一组对中央数据进行操作的独立构件
连接件:仓库与独立构件之间的交互
黑板体系结构风格
特点:适用于解决复杂的非结构化的问题,能在求解过程中综合运用多种不同知识源,使得问题的表达、组织和求解变得比较容易。黑板系统是一种问题求解模型,是组织推理步骤、控制状态数据和问题求解之领域知识的概念框架。
构件:黑板(共享数据)、知识源和控制模块
虚拟机体系结构风格
虚拟机体系结构风格的基本思想是人为构建一个运行环境,在这个环境之上,可以解析与运行自定义的一些语言,这样来增加架构的灵活性。
解释器结构风格
特点:软件中含有一个虚拟机,可以仿真硬件的执行过程和一些关键应用。解释器通常被用来建立一种虚拟机以弥合程序语义与硬件语义之间的差异。其缺点是执行效率较低。典型的例子是专家系统。
规则系统体系结果风格
特点:基于规则的系统包括规则集、规则解释器、规则/数据选择器及工作内存。
独立构件体系结构风格
独立构件风格主要强调系统中的每个构件都是相对独立的个体,它们之间不直接通信,以降低耦合度,提升灵活性。独立构件风格主要包括进程通信和事件系统风格。
进程通信体系结构风格
特点:构件通常是命名过程,消息传递的方式可以是点到点、异步或同步方式及远程过程调用等。
构件:独立的过程
连接件:消息传递
事件系统体系结构风格
特点:构件不直接调用一个过程,而是触发或广播一个或多个事件。
构件:模块或事件的集合
总结
| 架构风格 | 关键字 | 简介 |
|---|---|---|
| 数据流-批处理 | 传统编译器,每个阶段的结果作为下个阶段输入 | 一个接一个,以整体为单位 |
| 数据流-管道过滤器 | 与批处理区别在整体 | 一个接一个,前一个输出是后一个输入 |
| 调用/返回-主程序/子程序 | 显式调用,主程序直接调子程序 | |
| 调用/返回-面向对象 | 对象是构件,通过对象调用封装的方法和属性 | |
| 调用返回-层次结构 | 分层,每层最多影响其上下两层,有调用关系 | |
| 数据为中心-仓库 | 现代编译器集成开发环境IDE,以数据为中心,又称数据共享风格 | 中央共享数据源,独立处理单元 |
| 数据为中心-黑板 | 现代编译器集成开发环境IDE,以数据为中心,又称数据共享风格 | 语音识别、知识推理等问题复杂、解空间很大,求解过程不确定的软件系统,黑板,知识源,控制 |
| 虚拟机-解释器 | 自定义流程,按流程执行,规则随时改变,灵活定义 | 解释自定义的规则,解释引擎、存储区、数据结构 |
| 虚拟机-规则系统 | 自定义流程,按流程执行,规则随时改变,灵活定义 | 规则集、规则解释器、选择器和工作内存,用于DSS和人工智能、专家系统 |
| 独立构件-进程通信 | 进程间独立的消息传递,同步异步 | |
| 独立构件-事件系统(隐式调用) | 事件触发推动作,如程序语言的语法高亮、语法错误提示 | 不直接调用,通过事件驱动 |
| 闭环-过程控制 | 汽车巡航定速,空调温度调节,设定参数,并不断调整 | 发出控制命令并接受反馈,循环往复达到平衡 |
| C2风格 | 构件和连接件,顶部和底部 | 通过连接件绑定在一起,按照一组规则运作的并行构件网络 |
