管道过滤器1

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

类推“软件体系结构”
构件:各种基本的软件构造模块(函数、对象、 模式 等); 连接件:将它们组合起来形成完整的软件系统 物理分布 约束 性能
Architecture = Components + Connectors + Constraints
任课教师:张伟芝 体系结构 = 构件 + 连接件 + 约束 zhangweizhi@eud2act.org
管道与过滤器(Pipe-and-Filter)
任课教师:张伟芝
zhangweizhi@eud2act.org
管道-过滤器风格的直观结构
任课教师:张伟芝
zhangweizhi@eud2act.org
3.1管道-过滤器模型的结构和特征
管道-过滤器模型的基本部件都有一套输入输出接 口。每个部件从输入接口中读取数据,经过处理,将结 果数据置于输出接口中,这样的部件称为“过滤器”。 这种模型的连接者将一个过滤器的输出传送到另一个过 滤器的输入,该文把这种连接者称为“管道”。 在这种模型中,过滤器必须是独立的实体,每一个 过滤器的状态不受其它过滤器的影响。并且,虽然人们 对过滤器的输入输出有一定的规约,但过滤器并不需要 知道向它提供数据流的过滤器和它要提供数据流的过滤 器的内部细节。
思考:是什么力量推动数据在管道中流动
数据流的分类:推式与拉式 推式:前面的过滤器把新产生的数据推入管道 拉式:随后的过滤器从管道中拉出所需数据 推拉式:过滤器以循环的方式,从管道中拉出 其输入数据,并将其处理产生的数据压入后续 管道
任课教师:张伟芝
zhangweizhi@eud2act.org
过滤器的分类:主动与被动
任课教师:张伟芝
zhangweizhi@eud2act.org
过滤器的设计
过滤器有如下状态:
停止状态,工作状态,等待状态,休眠状态。
可以将过滤器用状态转换图表示。
任课教师:张伟芝
zhangweizhi@eud2act.org
过滤器的设计
停止状态:表示过滤器处于待启动状态,当外 部启动过滤器后,过滤器处于处理状态; 处理状态:表示过滤器正在处理输入数据队列 中的数据; 等待状态:表示过滤器的输入数据队列为空, 此时过滤器等待,当有新的数据输入时,过滤 器处于处理状态; 任课教师:张伟芝 休眠状态:表示过滤器已经启动,但被挂起。
缺点:
(1)交互式处理能力弱:管道-过滤器模型适于数据流的处理和变换,不适 合为与用户交互频繁的系统建模。在这种模型中,每个过滤器都有自己的数据, 这些数据或者是从磁盘存储器中读取来,或者是由另一个过滤器的输出导入进 来,整个系统没有一个共享的数据区。这样,当用户要操作某一项数据时,要 涉及到多个过滤器对相应数据的操作,其实现较为复杂。 (2)数据的打包与解包:有时,系统中的过滤器需要有一个数据转换器来 对输入输出数据进行解包打包。这样会降低系统性能,增加实现过滤器的复杂 性。
Leabharlann Baidu
数据输出
管道-过滤器模式的系统构架
过滤器 过滤器 管道 过滤器
管道
过滤器
管道
过滤器
过滤器(Filter)
目标:将源数据变换成目标数据 过滤器对数据流的五种变换类型
任课教师:张伟芝
zhangweizhi@eud2act.org
过滤器读取与处理数据流的方式
递增的读取和消费数据流 在输入被完全消费之前,输出便产生了。
3
“体系结构”的共性
component connector
一组基本的构成元素—构件 deployment 这些要素之间的连接关系—连接件 这些要素连接之后形成的拓扑结构—物理分布 作用于这些要素或连接关系上的限制条件—约束 质量—性能
constraint
performance
任课教师:张伟芝
zhangweizhi@eud2act.org
一个混合型的管道-过滤器系统
任课教师:张伟芝
zhangweizhi@eud2act.org
一个混合型的管道-过滤器系统
任课教师:张伟芝
zhangweizhi@eud2act.org
带有缓冲区的混合型管道-过滤器系统
任课教师:张伟芝
zhangweizhi@eud2act.org
带有缓冲区的混合型管道-过滤器系统
zhangweizhi@eud2act.org
具有推式策略的被动过滤器
任课教师:张伟芝
zhangweizhi@eud2act.org
具有拉式策略的被动过滤器
数据终点相当于主动过滤器
任课教师:张伟芝
zhangweizhi@eud2act.org
具有拉式策略的被动过滤器
任课教师:张伟芝
zhangweizhi@eud2act.org
体系结构与设计模式的关系
体系 结构
设计模式
任课教师:张伟芝
zhangweizhi@eud2act.org
惯用法
二、体系结构的重要性
随着软件系统规模和复杂性的增加,系统总体结 构设计的重要性已远远超过特定算法和数据结构的选 择,良好的体系结构是保证系统成功的关键。基于软 件体系结构的过程开发是现代软件开发的基本途径, 也是软件工程成熟的标志。软件体系结构的风格或模 式包括客户-服务器模式的体系结构,管道-过滤器模 式的体系结构,层次式体系结构,面向对象的体系结 构等。
任课教师:张伟芝
zhangweizhi@eud2act.org
五、管道过滤器风格实现案例
查询出字典中包含a、b、cd子串,以end/END结尾, 长度>7的单词。
任课教师:张伟芝
zhangweizhi@eud2act.org
结构类图
管道过滤器
T型
Y型
双桶双联过 滤器
感谢大家欣赏
管道-过滤器的基本构成
构件:过滤器,处理数据流
一个过滤器封装了一个处理步骤 数据源点和数据终止点可以看作是特殊的过滤器
连接件:管道,连接一个源和一个目的过滤器
转发数据流
连接器定义了数据流图,形成拓扑结构
任课教师:张伟芝
zhangweizhi@eud2act.org
过滤器的基本结构如图
数据输入
输入数据 接口 处理中心 输出数据 接口
任课教师:张伟芝
zhangweizhi@eud2act.org
四、模型的优点和缺点
优点:
(1)设计人员将整个系统的输入输出行为理解为单个过滤器行为的叠加与 组合。这样可以将问题分解,化繁为简。 (2)任何两个过滤器,只要它们之间传送的数据遵守共同的规约就可以相 连接。每个过滤器都有自己独立的输入输出接口,如果过滤器间传输的数据 遵守其规约,只要用管道将它们连接就可以正常工作。 (3)整个系统易于维护和升级:旧的过滤器可以被替代,新的过滤器可以 添加到已有的系统上。软件的易于维护和升级是衡量软件系统质量的重要指 标之一,在管道-过滤器模型中,只要遵守输入输出数据规约,任何一个过滤 器都可以被另一个新的过滤器代替,同时为增强程序功能,可以添加新的过 任课教师:张伟芝 滤器。这样,系统的可维护性和可升级性得到了保证。 zhangweizhi@eud2act.org (4)支持并发执行:每个过滤器作为一个单独的执行任务,可以与其它过 滤器并发执行。过滤器的执行是独立的,不依赖于其它过滤器的。
管道过滤器模式
主讲人:周丰 负责人:胡骞、张富生
一、体系结构:
首先跟大家简单介绍一下软件的体系结构。软件的体 系结构来源于建筑业
结构设计师: 设计图纸
管理人员: 施工计划
施工人员: 建造建筑物
优秀的体系结构设计
任课教师:张伟芝
zhangweizhi@eud2act.org
鸟巢
玛雅阿兹特克金字塔
瑞士保险公司大楼
任课教师:张伟芝
zhangweizhi@eud2act.org
过滤器的一些基本特征
无上下文信息 不保留状态 对其他过滤器无任何了解 可使用数据缓冲区临时保存数据流
蓄水池
任课教师:张伟芝
zhangweizhi@eud2act.org
管道(Pipe)
作用:在过滤器之间传送数据
单向流 可能具有缓冲区
不同的管道中流动的数据流,具有不同的数据 格式(Data format) 原因:数据在流过每一个过滤器时,被过滤器 进行了丰富、精练、转换、融合、分解等操作, 任课教师:张伟芝 zhangweizhi@eud2act.org 因而 发生了变化。
主动过滤器:
具有pull/push类型的过滤器
被动过滤器:
拉式策略 推式策略
系统中至少有一个主动过滤器
任课教师:张伟芝
zhangweizhi@eud2act.org
主动过滤器
任课教师:张伟芝
zhangweizhi@eud2act.org
具有推式策略的被动过滤器
此时数据原点相当于主动过滤器
任课教师:张伟芝
zhangweizhi@eud2act.org
过滤器状态转换图
任课教师:张伟芝
zhangweizhi@eud2act.org
过滤器状态转换图
管道过滤器风格的典型应用
Unix pipes (Unix管道) DOS管道命令 Complier(编译器) Image processing (图像处理) Signal processing (信号处理) Voice and video streaming (声音与图像处理)
三、管道-过滤器模式的体系结构
管道-过滤器模式的体系结构是面向数据流的软 件体系结构。它最典型的应用是在编译系统。一个 普通的编译系统包括词法分析器,语法分析器,语 义分析与中间代码生成器,优化器,目标代码生成 器等一系列对源程序进行处理的过程。人们可以将 编译系统看作一系列过滤器的连接体,按照管道-过 滤器的体系结构进行设计。此外,这种体系结构在 其它一些领域也有广泛的应用。因此它成为软件工 程和软件开发中的一个突出的研究领域。
相关文档
最新文档