`
javawebsoa
  • 浏览: 411950 次
社区版块
存档分类
最新评论

软件架构风格整理(1 数据流风格)

 
阅读更多

1 数据流风格

1.1 批处理序列

批处理风格的每一步处理都是独立的.并且每一步是顺序执行的.只有当前一步处理完后.后一步处理才能开始.数据传送在步与步之间作为一个整体.(组件为一系列固定顺序的计算单元,组件间只通过数据传递交互。每个处理步骤是一个独立的程序,每一步必须在前一步结束后才能开始,数据必须是完整的,以整体的方式传递)

批处理的典型应用:

l 经典数据处理;

l 程序开发;

l Windows下的BAT程序就是这种应用的典型实例。

批处理风格与管道过滤器风格比较:

l 共同点:把任务分成一系列固定顺序的计算单元(组件).组件间只通过数据传递交互。

l 区别:批处理是全部的、高潜伏性的,输入时可随机存取,无合作性、无交互性.而管道过滤器是递增的,数据结果延迟小,输入时处理局部化,有反馈、可交互。

.

1.2 管道/过滤器

每个构件都有一组输入和输出,构件读输入的数据流,经过内部处理,然后产生输出数据流。这个过程通常通过对输入流的变换及增量计算来完成,包括通过计算和增加信息丰富数据,通过浓缩和删除精炼数据,通过改变记录方式转化数据,递增地转化数据等。在输入被完全消费之前,输出便产生了。这里构件被称为过滤器,连接件就是数据流传输的管道,将一个过滤器的输出传到另一个过滤器的输入

l 优点:

1) 使得软构件具有良好的隐蔽性和高内聚.低耦合的特点

允许设计者将一个系统的整体输入/输出行为理解为各个独立过滤器行为的简单合成

2) 支持软件重用。只要提供适合在两个过滤器之间传送的数据.任何两个过滤器都可被连接起来;

3) 系统维护和性能增强简单:新的过滤器可以添加到现有系统中,或者利用改进的过滤器替换老的过滤器;

4) 支持并行执行:每个过滤器是作为一个单独的任务完成.因此可与其他任务并行

5) 方便系统分析:例如,吞吐量、死锁等

l 缺点:

1) 通过长的管道时会导致延迟的增加

2) 通常导致进程成为批处理的结构。这是因为虽然过滤器可增量式地处理数据.但它们是独立的.所以设计者必须将每个过滤器看成一个完整的从输入到输出的转换。

3) 不适合处理交互的应用。当需要增量地显示改变时.这个问题尤为严重。

4) 因为在数据传输上没有通用的标准,每个过滤器都增加了解析和合成数据的工作.这样就导致了系统性能下降.并增加了编写过滤器的复杂性。

5) 在维护或响应两个分离但相关的数据流时,利用管道/过滤器方式不易。

典型的管道/过滤器风格有:UNIX下的Shell编程。UNIX既提供一种符号以连接各组成部分(进程),又提供某种进程运行时机制以实现管道。另一个例子:传统的编译器。传统的编译器中,一个阶段(包括词法分析、语法分析、语义分析和代码生成)的输出是另一个阶段的输入。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics