软件建模技术6
21.2.3黑板模式
1、名称:黑板 2、别名:暂无 3、类型:体系结构模式
21.2.3黑板模式
4、意图:协同工作于同一个数据结构的独立程序集(P1,P2,…,Pn )。其中,每个程序负责整个任务的一个特定部分,所有程序一 起工作解决问题;程序之间互不调用;程序执行次序由中心控制 组件根据当前状态确定。如表所示,虚线箭头表示使用关系,箭 头指向被使用的元素。
21.2.2管道&过滤器模式
管道&过滤器(Pipes and Filters)体系结构模式为处理数据流系统提 供了一种结构。每个处理步骤封装在一个过滤器组件中。数据通过 相邻过滤器之间的管道传输。重组过滤器可以建立相应的系统族。 接下来按照通用模式描述模板对管道&过滤器体系结构进行描述。
21.2.2管道&过滤器模式
语境 问题 解决方案
1 语境
通过描述问题提出的场景,语境扩展了 清晰的问题-解决方案的二分法。 确定一个模式可能应用到的所有场景, 实现上是不可能的。一个实际的方法是 列出特殊模式关注问题可能出现的所有 已知场景。
2 问题
描述了在给定语境中重复出现的问题。 模式组织使用术语“强制条件”来说明 问题要解决时应该考虑的各个方面,如 :
1、名称:管道&过滤器 2、别名:管道过滤器 3、类型:体系结构模式 4、意图:系统任务分成几个有序的处理 步骤,步骤之间通过数据流连接,前一 个步骤的输出是下一个步骤的输入。
21.2.2管道&过滤器模式
5、动机:系统任务需要多个处理阶段并 且需求易于变动。希望系统实现后满足 以下条件:
通过替换或重组处理步骤响应系统变化; 不相邻的处理步骤不共享信息接口; 存在不同数据源(即输入); 数据输出方式灵活; 提供中间结果管理; 保留多重处理步骤。
21.2.2管道&过滤器模式
9、动态结构:交互场景如图所示,这两 幅图描述的交互场景可以同步进行
数据源 过滤器 1(拉 出 /压入) 1: 读数据 2: 执行操 f1 4: 读操作 3: 写数据 5: 执行操作法 f1 缓存管道
缓存管道 1: 读
过滤器 2(拉 出 /压入)
数据汇点
2: 返回数据 3: 执行操作2 4: 写数据
2 模式的作用
一个模式提供了一个问题族的一般解决 方案的计划,而不是可以使用的预制模 块。 模式有助于管理软件复杂度。每个模式 描述一种已被证明的方法以处理指出的 问题:所需组件的种类、它们的作用、 要隐藏的细节、必须看到的抽象以及每 一个是如何工作的等等。
21.1.2、模式的构成
模式构成的ห้องสมุดไป่ตู้要素
21.1.3、模式类别
模式可分为三种类型
体系结构模式 设计模式 惯用法
每一种类型都由具有相似规模或抽象程 度的模式组成。
1体系结构模式
根据一些整体构建原理来建立可行的软 件体系结构。 体系结构模式表示软件系统的基本结构 化组织图式。它提供一套预定义的子系 统,规定它们的职责,包含用于组织它 们之间关系的规则和指南。 例如:MVC体系结构模式
21.2.3黑板模式
黑板模式是一种常用的架构模式,应用中的多 种不同数据处理逻辑相互影响和协同来完成数 据分析处理。就好像多位不同的专家在同一黑 板上交流思想,每个专家都可以获得别的专家 写在黑板上的信息,同时也可以用自己的分析 去更新黑板上的信息,从而影响其它专家。黑 板(Blackboard)体系结构模式适用于无确定 性求解策略的问题。通过几个专用子系统收集 知识,并构建出问题可能的部分或近似解。
第
21章
体系结构模式
21.1 21.2 21.3 21.4 21.5 模式概论 从混沌到结构 分布式系统 交互系统 适应性系统
21.1.1、什么是模式
当专家求解一个特殊问题时,一般不会 发明一种和已有解决完全不同的方案来 处理这个问题。 他们往往想起已解决的相似问题,并重 用其解法的精华来解决新问题。 这种“专家行为”,即同时考虑一对问 题-求解方案,在很多不同领域中是共同 的。--模式
3 惯用法
惯用法处理特定设计问题的实现。 惯用法是具体针对一种编程语言的低层 模式。惯用法描述如何使用给定语言的 特征来实现组件的特殊方面或它们之间 的关系。 例如:C++使用引用-计数惯用法来管理 动态分配的资源,而Smalltalk则提供无 用单元收集机制
21.1.4、总结
模式有助于利用资深软件工程师的经验 来构建软件,为开发具有已定义属性的 软件提供了一种有前途的方法。 模式把现有的设计知识文档化,有助于 你为设计问题找到适当的解决方案。 模式存在于不同的规模和抽象之中,并 覆盖软件开发的许多不同的和重要的领 域。
21.2.1分层模式
8、静态结构:如图3.7所示。
21.2.1分层模式
9、动态结构
交互场景I是客户端请求从高层向底层逐层调用,而客户端的响应是 从底层向顶层逐层传回
21.2.1分层模式
9、动态结构
交互场景II两个相互通信的N层协议堆栈,客户端向左边N层堆栈发 出一个请求,请求通过层向下移直到到达第1层,然后再发送给右边 堆栈的第1层并向N层传递,然后在右边堆栈中通过层向上传递,最 后由右边堆栈的N层反向将相应传递左边堆栈N层的客服端
21.2.2管道&过滤器模式
6、适用性:适合处理数据流。 7、参与者:过滤器、管道、数据源和数 据汇点,其职责和协助者如表所示。
参与者名称 参与者职责 获得输入数据 对输入数据进行加工处理 提供输出数据 转换数据 缓存数据 同步相邻元素 将输入数据递送给处理流水线 消耗输出数据 协助者
过滤器
管道
管道 数据源 数据汇点
2 设计模式
软件体系结构的子系统,以及它们之间 的关系,通常由几个更小的体系结构单 元构成。我们用设计模式来进行描述。 设计模式提供一个用于细化软件系统的 子系统或组件,或它们之间关系的图式 。它描述通信组件的公共再现结构,通 信组件可以解决特定语境中的一个一般 设计问题。 例如观察者或出版者-订阅者模式。
数据源、数据汇点和过 滤器 管道 管道
21.2.2管道&过滤器模式
8、静态结构:管道&过滤器模式组成元素的关系如图所示。 并且,通过管道联合的过滤器序列称为处理流水线( Processing pipeline)。过滤器实现可以是被动过滤器或主动 过滤器。被动过滤器满足下一个过滤器拉出(Pull)此过滤器 的输出数据且上一个过滤器将输入数据压入(Push)此过滤 器;主动过滤器是从上一个过滤器拉出其输入数据,并向下 一个过滤器压入其输出数据。
解决方案必须满足的需求—例如:对等进程 的通信必须是高效的 你必须考虑的约束—例如:进程间通信必须 遵守特定协议 解决方案必须具有希望的特性—例如,软件 更改应该是容易的
3 解决方案
模式的解决方案给出了如何解决再现问 题,或者更恰当地说是如何平衡与之相 关的强制条件。其包括两个方面:
每个模式规定了一个特定的结构,即元素的 一个空间配置 每个模式规定了运行期间的行为
21.2.2管道&过滤器模式
12、已知应用:编译器、UNIX等 13、变体:分支与连接流水线系统(Tee and join pipeline systems),该系统的特点是允许 过滤器存在多个输入或输出。 14、相关模式:层模式,其与管道&过滤器模 式的对比如表所示。
错误处理 重组和重用
层模式 易 难 管道&过滤器模式 难 易
5: 读数据
6: 写数据
21.2.2管道&过滤器模式
10、效果:管道&过滤器模式的优缺点如表所示。
不必需要中间文件
过滤器可替换性提高了系统的灵活性 重组过滤器增加灵活性
优点
过滤器组件是可重用的 提供了流水线快速原型 并行提高执行效率 共享状态信息代价大或不灵活 并行处理未必提高效率
松散分层系统的特点: 层间关系约束少,每个层可以使用比它低的所有层的服 务; 灵活性和性能提升是以损失可维护性为代价。 继承分层系统的特点: 底层作为基类实现,高层从底层继承;
高层可修改底层服务,但继承关系将高层和底层捆绑起来。
14、相关模式:微核体系结构可以看作是特殊的分层 体系结构,另外PAC体系结构也强调提高抽象层次。
缺点
数据转换增加额外开销
错误处理困难
21.2.2管道&过滤器模式
11、实现:具体实现参考指南如表所示
1. 将任务分解一系列处理阶段,并且每个阶段只依 赖于前一个阶段的输出 2. 定义每个管道传输的数据格式,建议定义统一数 据格式 3. 根据过滤器的主被动,决定如何实现每个管道的 连接? 4. 设计和实现过滤器 5. 设计出错处理,缓解错误定位困难的问题 6. 建立处理流水线
21.2从混沌到结构
模式名称 分层模式 意图与基本原理 适用性 将应用分解成子任务组,其中每个子任 在描述体系结构划分中运 务组处于一个特定的抽象层次上。 用最广 为处理数据流的系统提供了一种结构。 每个处理步骤封装在一个过滤器组件中。 用得比较少,主要用于渐 数据通过相邻过滤器之间的管道传输。 增式处理数据流的领域 重组过滤器可以建立相关系统族。
管道&过滤器模式
黑板模式
在黑板模式中有几个专用子系统收集其 知识以建立一个可能的部分解或近似解。 用于无确定性求解策略的 模式来自人工智能领域,综合零碎知识 问题 获得解决问题的方法。
21.2.1分层模式
分层(layer)体系结构模式有助于构建 这样的应用:它被分解成多个子任务组 ,其中每个子任务组处于一个特定的抽 象层次上。接下来按照通用模式描述模 板对层体系结构进行描述。
21.2.1分层模式
12、已知应用:TCP/IP通信协议、虚拟机、API(封装 了底层常用功能)、信息系统(分为表示层、应用逻 辑层、领域层和数据库等不同层次)和Windows NT松 散分层系统,其中Windows NT分层系统如图所示。