软件体系结构复习-软件体系结构风格
原文链接:《软件体系结构复习-软件体系结构风格》
目录
0 体系结构风格概述
- 软件体系结构风格 (software architecture style) 是描述特定领域中软件系统家族的组织方式的惯用模式 (idiomatic paradigm),反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个模块和子系统有效地组织成一个完整的系统。
-

- 软件体系结构风格分类:
1 数据流风格(批处理、管道过滤器、过程控制)
1 直观理解
- 系统中的模块或者构件都是基于数据的流动而进行工作的,数据到达即被激活,无数据时不工作
2 定义
- 架构师基于系统对数据的处理或计算需求,设计相应的构件,构件间通过数据的流动实现交互连接
- 其核心组成包括构件和连接件,构件为数据处理,连接件位数据流
- 基本构件:数据处理(Components: data processing components)
-
- 构建接口:I/O接口
- 计算模型:从输入端口读数,经过计算处理,写道输出端口
-

- 连接件:数据流(Connectors: data flow (stream))
-
- 接口角色:reader 和 writer
- 计算模型:把数据从一个处理的输出端口送到另一个处理的输入端口
- 单向,通常是异步、有缓冲
3 特征
- 数据的可用性决定处理<计算单元>是否执行
- 系统结构由数据在各处理之间的有序移动决定
- 在纯数据流系统中,处理之间除了数据交换没有任何其他的交互
4 数据流动模式
- 自由模式——多向复杂,易形成死锁,不适合采用数据流体系结构
- 近似线性数据流(nearly linear data flow systems)——适合使用数据流
- 在限度内的循环数据流(highly constrained cyclic structures)——适合使用数据流
5 典型数据流风格
- 批处理体系结构风格——顺序处理步骤,运行至完成
- 管道-过滤器体系结构风格——数据流的增量转换
- 过程控制体系结构风格——循环结构来控制环境变量
1.1 批处理体系结构风格
1 实例引入
- 系统中存在多个不同的计算单元,计算单元之间存在数据的传输,而数据只有被一个计算单元处理完成计算之后才能完整地传输到下一个计算单元
-

2 定义
- 每个处理步骤是一个单独程序,每一步必须在前一步结束后才能开始,且数据必须完整,以整体的方式传递。
- 其构件为独立应用程序,连接件为某种类型的媒介。连接件定义相应数据流图,表达拓扑结构。
- 基本构件:独立的应用程序 (Components: independent programs)
- 连接件:某种类型的媒质(Connectors: media-traditionally tape)
- 拓扑结构(Topology)
-
- 连接件定义了相应的数据流图,表达拓扑结构
-

- 约束(Constraint)
-
- 独立应用程序构件必须是独立实体
- 独立应用程序构件无需了解数据流的源头与去处
3 应用实例
- 当每个数据处理的步骤需要处理的数据格式都不一致时,该风格便有可能是更好的选择
- 基于Eclipse的代码重复检测工具
4 优缺点
- 优点
-
- 具有良好隐蔽性、高内聚、低耦合
- 支持功能模块的复用
- 支持吞吐量、死锁等属性分析
- 具有较强可维护性和可扩展性
- 缺点
-
- 无法支持并行执行
- 交互式处理能力弱
- 数据传输缺乏通用标准
1.2 管道过滤器体系结构风格
1 实例引入
- 在数据原点产生数据之后,经过管道把数据运向不同的处理器,即过滤器,对数据进行处理之后,通过管道传输到下一个过滤器,直到数据完成所有的处理,并达到系统要求
-

2 定义
- 场景:数据源源不断的产生,系统需要对这些数据进行若干处理(分析、计算、转换等)
- 每个处理步骤(过滤器)都有一组输入和输出,过滤器从管道中读取输入的数据流,经过内部处理,然后产生输出数据流并写入管道中
- 构件:过滤器,处理数据流 (Components: Filters — process data streams)
- 连接件:管道,连接一个源和目的过滤器 (Connectors: A pipe connects a source and a end filter)
- 拓扑(Topology)
-
- 连接件定义数据流图(Connectors define data flow graph)
- 约束(Constraint)
-
- 过滤器必须是独立实体
- 过滤器无需了解数据流的源头与去处
- 系统递增的读取和消费数据流 (Incrementally transform data from the source to the sink),数据到来时便被处理,不是收集然后处理,即在输入被完全消费之前,输出便产生了
3 过滤器
- 多个过滤器可并行执行计算,且这种计算常常是递进




1万+

被折叠的 条评论
为什么被折叠?



