文章目录
0. 概述
软件
架构风格
就是软件体系结构风格
,只是对Architectural Style
的汉语翻译不同
- 概念:描述某一特定应用领域中系统组织方式的惯用模式
- 它定义一个系统家族:
- 一个体系结构定义
- 一个词汇表:包含一些构件、连接件类型
- 一组约束:指出系统是如何将这些构件和连接件组合起来的
- 反映了领域中众多系统所共有的结构和语义特性
- 指导如何将各个模块和子系统有效地组织成一个完整的系统
- 它定义一个系统家族:
上边这段是
重点
的重点
- 对软件体系结构风格的研究和实践促进对设计的重用
1. 数据流风格
- 其行为的不确定性:指令执行的顺序是不可预测的
1.1 批处理风格
- 概述
- 基本构件:独立的应用程序
- 连接件:某种类型的媒介
- 连接件定义了相应的数据流图,表达拓扑结构。
- 特性
- 每个处理步骤是一个单独的程序
- 每一步必须在前一步结束后才能开始
- 数据必须是完整的(以整体的方式传递)
1.2 管道-过滤器风格
- 概述
- 基本构件:过滤器
- 连接件:数据流传输管道
- 将一个过滤器的输出传到另一过滤器的输入。
- 过程:
- 把系统分解为几个序贯的处理步骤
- 每个处理步骤由一个
过滤器
(Filter) 实现
- 每个处理步骤由一个
- 处理步骤之间的数据传输由
管道
(Pipe) 负责- 每个处理步骤都有一组输入和输出
- 一个步骤的输出是另一个步骤的输入
- 把系统分解为几个序贯的处理步骤
- 过滤器的工作:过滤器从管道中读取输入的数据流,经过内部处理,然后产生输出数据流并写入管道中
- 应用:传统编译器
2. 调用/返回风格
- 概念:在系统中采用了调用与返回机制
- 主要思想:将一个复杂的大系统分解为若干子系统,以降低复杂度,增加可修改性
2.1 主程序/子程序风格
- 概述
- 基本构件:主程序、子程序
- 连接件:过程调用
- 调用具有层次性
- 程序的正确性取决于它所调用的子程序的正确性。
2.2 面向对象风格
- 基本构件:对象(或抽象数据类型的实例)
- 建立在数据抽象和面向对象的基础上
- 数据的表示方法和它们的相应操作封装在一个抽象数据类型或对象中
2.3 层次型风格
- 层次结构
- 每一层为上层提供服务
- 作为下层的客户
- 连接件:由层间交互协议决定。
由于每一层最多只影响两层,同时只要给相邻层提供相同的接口,允许每层用不同的方法实现,这同样为软件重用提供了强大的支持。
- 常用层次是架构
- 通常会分为:表现层、中间层(业务层)、数据访问层(持久层)和数据层
- 通常会分为:表现层、中间层(业务层)、数据访问层(持久层)和数据层
2.4 C/S风格
- 概念:
- 即,客户端/服务器软件体系结构
2.4.1 两层 C/S 体系结构
- 组成部分:
- 数据库服务器
- 客户应用程序
- 网络
- 胖客户机,瘦服务器
- 服务器(后台)负责数据管理
- 客户机(前台)完成与用户的交互
2.4.2 三层C/S结构
- 组成部分:
- 2层的结构
- 增加了应用服务器
- 应用功能分为:
- 表示层:应用的用户接口部分,通常使用图形用户界面
- 功能层:应用的主体,实现具体的业务处理逻辑
- 数据层:数据库管理系统
- 瘦客户机:
- 应用逻辑驻留在应用服务器上
- 只有表示层存在于客户机上
瘦客户机也可以存在于两层结构,这里教材中并未说明
3. 以数据为中心的风格
3.1 仓库风格
-
概述:
- 仓 库 (Repository) 是存储和维护数据的中心场所。
- 仓库与独立构件间的相互作用在系统中会有大的变化
-
两种不同的构件:
- 中央数据结构:说明当前数据的状态
- 独立构件:对中央数据进行操作的
- 应用:集成IDE
3.2 黑板风格
-
概述:
- 用于解决复杂的非结构化的问题
- 是一种问题求解模型
其领域包括:组织推理步骤、控制状态数据、问题求解
-
原理:
- 它将问题的解空间组织成一个或多个应用相关的分级结构
- 分级结构的每一层信息由一个唯一的词汇来描述,它代表了问题的部分解
- 领域相关的知识被分成独立的知识模块
- 它将某一层次中的信息转换成同层或相邻层的信息
- 各种应用通过不同知识表达方法、推理框架和控制机制的组合来实现
- 应用:
- 信号处理领域:语音识别、模式识别(
重点
) - 松耦合代理数据共享存取
- 信号处理领域:语音识别、模式识别(
4. 虚拟机风格
- 概述:
- 人为构建一个运行环境,用来解析与运行自定义的语言
- 优点:增加架构的灵活性
- 包括:解释器风格、规则系统风格
4.1 解释器风格
-
概述:建立一种虚拟机,来解决程序语义与硬件语义之间的差异
-
包括:
- 解释引擎:完成解释工作
- 存储区:存储被解释的代码
- 数据结构:
- 记录解释引擎当前的工作状态的数据结构
- 记录源代码被解释和执行的进度的数据结构
-
缺点:执行效率较低
-
应用:专家系统(
重点
)
4.2 规则系统风格
- 包括:
- 规则集
- 规则解释器
- 规则/数据选择器
- 工作内存
5. 独立构件风格
- 概述:
- 每个构件都是相对独立的个体
- 它们之间不直接通信
- 目的:降低耦合度,提升灵活性
- 包括:进程通信风格、事件系统风格
5.1 进程通信风格
- 概述:
- 构件:独立的过程
- 连接件:消息传递
- 消息传递方式:可以是点到点、异步或同步方式、远程过程调用等
5.2 事件驱动风格
-
概述
- 即,基于事件的隐式调用风格
- 构件触发(或广播)一个或多个事件(而不直接调)
- 构件:一些过程或事件的集合
-
过程:
- 其他构件在事件中注册
- 当事件被触发,系统自动调用在这个事件中注册的所有过程
- 结果:一个事件的触发就导致了另一模块中的过程的调用
-
特点:事件的触发者并不知道哪些构件会被这些事件影响
- 导致的缺点:不能假定构件的处理顺序,甚至不知道哪些过程会被调用
- 解决:显式调用作为构件交互的补充形式
-
应用:
- 在编程环境中用于集成各种工具
- 在数据库管理系统中确保数据的一致性约束
- 在用户界面系统中管理数据
- 在编辑器中支持语法检查
- 编辑器和变量监视器的断点事件(
重点
)