体系风格
如武林门派各有异长之处,其所长即是风格体现。
对于软件体系来说"每一套体系风格里装载着独特的结构、语义特性"
体系构成
组成体系的几大要素
- 数据流风格: API接口规范、管道、过滤器
- 调用/返回风格: 主次程序关系、面向对象模式、层次结构
- 独立性的构建风格: 进程间通信方式、事件处理系统
- 虚拟机风格: 解析器、约定的规则系统
- 厂库数据风格: 数据库系统、超文本系统、黑板系统
但凡软件领域里的系统及架构都离不开这些由这些要素来构建。
而且,对应软件层次结构画分可以按以上要素进行分层。
经典风格
管道与过滤器
可以粗略的将管道与过滤器看成一个黑盒子,一端往里丢数据,然后再从另一端取出已处理的数据。
管道:
Unix 进程通信之管道详解
过滤器: 比较官方的解释"输入被消费前,输出已产生",实际上也是内部加上特定的处理后输出数据。不同的是其需要为独立的实体,每一个过滤器的数据为独立,不与其他过滤器共享。
优点:
- 软件结构有良好的隐蔽性和高内聚、低耦合
- 方便开发人员(设计师)处理输入\输出数据流
- 支持软件重用
- 便于系统维护,易于扩展系统性能
- 支持并发处理 (过滤器为独立任务,每一个任务可以并行处理)
缺点:
- 对交互式的应用,"黑盒子处理方式显得不太友好"
- 过滤器处理数据的成本随着其数量增加而增加
数据抽象和面对对象系统
构件作为对象,负责保证资源的完整性,通过函数和过程调用来实现交互。
优点:
- 根据对象的属性,可以做到高内聚、低耦合(通过隐藏来实现)。(即改变某个对象的表示,不会影响到其他对象)
缺点
- 在过程调用及交互中,对象标志被改变了,那么调用该该标志的函数都需要进行改变(不太利于后续维护)
基于事件系统
其思想是系统构件不直接通过调用对象或者过程,而是通过触发器或者广播一个及多个事件来激活对应的进程调用。(为隐式调用)
优点:
- 易于重构
- 易于扩展系统(当用一个构件替代另外一个构件时,不会影响到其他构件接口)
缺点:
- 数据通信问题。(消息广播后,不能确定有构件对其进行响应)
分层系统
所谓层次秉承上启下,对上层提供调用接口,对下层封装调用的接口。
仓库系统及知识库
主要由两种构件组成,中央数据结构+独立构件。
通常情况下,黑板系统作为仓库
其黑板由以下构成:
a. 知识源 。 (知识源之间互为独立,其通信通过黑板来完成(数据共享))
b. 黑板数据结构
c. 控制 (黑板的状态驱动为控制主导者)
C2风格
通过连接件绑定在一起的按照一组规则运作的并行构件网络。
其特点如下:
- 系统中的构件可以通过不同的网络组成来构造复杂的应用需求
- 构件的通信可以通过异步消息交换机制来实现
- 构件之间互为独立,关联性比较小
网友评论