【软考系统架构设计师】第二章 软件架构风格(知识点必知必会)
第二章 软件架构风格(知识点必知必会)
一. 软件架构风格概念
1)什么是软件架构风格
01. 官方定义
- 软件架构风格是描述某一特定应用领域中系统组织方式的惯用模式。
- 架构风格定义了一类架构所共有的特征,主要包括架构定义、架构词汇表和架构约束。
- 并指导如何将各个模块和子系统有效地组织成一个完整的系统。
02. 专有名词
- 组织方式:描述了系统的组成构件和这些构件的组织方式。
- 惯用模式:反映众多系统共有的结构和语义。
- 词汇表:包含一些构件和连接件类型;
- 约束:指出系统是如何将这些构件和连接件组合起来;
03. 其他特征
- 架构风格强调对架构设计的重用。
- 架构风格定义了用于描述系统的术语表和一组指导构件系统的规则。
- 架构风格的使用几乎完全是特定的。
- 架构风格反映了领域中众多系统所共有的结构和语义特征,并指导如何将各个模块和子系统有效地组织成一个完整的系统。
2)软件架构风格的作用
- 对软件架构风格的研究和实践促进了对设计的重用,一些经过实践证明的解决方案也可以可靠地用于解决新的问题。
- 软件架构风格为大粒度的软件重用提供了可能。
- 软件系统架构风格的共有部分可以使得不同系统共享同一个实现代码,系统能够按照常用的、规范化的方式来组织,便于不同设计者很容易地理解系统架构。
3)通用的架构风格分类
- 数据流风格:管道过滤器,批处理风格;
- 调用返回风格:主程序子程序;层次调用风格,面向对象风格;
- 虚拟机风格:基于规则的系统,解释器风格;
- 独立构件风格:进程通信,事件系统(隐式调用风格)
- 仓库风格:数据库系统,黑板系统,超文本系统
二. 数据流风格
1)批处理序列风格
- 关键字:传递的数据必须完整,前一步结束下一步开始。它更加强调整体
01. 特点
- 每一步都是独立的,都是按照顺序执行的,只有当前的一步处理完,后一步处理才能开始
- 数据传送在步与步之间作为一个整体,数据必须是完整的,以整体的方式进行传递
02. 典型应用
- BAT程序,经典数据处理,程序开发
03. 应用场景
- 传统的编译器设计中,上述处理过程都以独立功能模块的形式存在,程序源代码作为一个整体,依次在不同模块中进行传递,最终完成编译过程。
04. 优点优势
- 使得软件构件有良好的隐蔽性和高内聚,低耦合的特点
- 支持软件重用,只要提供合适在两个过滤器之间传送的数据,任何两个过滤器都可以被连接起来。
- 系统维护和增强系统性能简单。新的过滤器可以添加到现有的系统中来,旧的过滤器可以被改进后的过滤器替换掉。
- 允许对一些如吞肚量,死锁等属性的分析。
- 支持并行执行,每个过滤器是作为一个单独的任务完成,因此可与其他任务并行,但是这样的系统存在着若干不利因素。
2)管道过滤器风格
- 关键字:每个构件都有一组输入输出,递增的转化数据
01. 定义
- 每个构件都有一组输入和输出,构件读输入的数据流,经过内部处理,然后产生输出的数据流。
- 这个过程通常通过对输入流变换及增量计算来完成。
- 在输入被完全消费之前,输出便产生了。
- 这里的构件被称为过滤器,这种风格的连接件就像是数据流传输的管道。
02. 特点
- 此风格特别重要的是过滤器必须是独立的实体,它不能与其他过滤器共享数据,而且一个过滤器不知道它上游和下游的标识。
- 一个管道过滤器网络输出的正确性并不依赖于过滤器进行增量计算过程的顺序。
03. 适用场景
- 适合分阶段数据处理的场景使用。
- 早期的编译器釆用管道-过滤器架构风格,并且大多数编译器在词法分析时创造独立的符号表,在其后的阶段会不断修改符号表,因此符号表并不是程序数据的一部分。
04. ★与仓库风格比对
- 它的数据结构是流式数据(数据流),是数据驱动的
- 通过接口适配来实现功能扩展。
- 与数据仓库对比其优势在于支持并发调用,性能提高
- 劣势在于需数据格式转换
- 交互性不如仓库风格
05. ★与主程序子程序比对
- 它的特点有数据和处理是紧耦合的,通过接口适配的方式才可以扩展。
- 在性能上不如主程序子程序(直接显示调用),但在算法功能变更方面优于主程序子程序。
- 通过引入过滤器的数据并发处理可以有效提高系统性能。
3)批处理序列和管道过滤器风格的区别与联系
01. 共同点
- 把任务分成一系列固定顺序单元(组件),组件间只通过数据传递交互。
02. 区别
- 批处理是全部的,高潜伏性的,输入时可随机存取,无合作性无交互性。
- 管道过滤器是递增的,数据结果延迟小,输入时处理局部化,有反馈,有交互。
- 批处理强调步与步之间传递数据是作为一个整体的,而管道过滤器无此要求。
三. 调用返回风格
1)主程序子程序风格
- 关键字:单线程控制,若干步骤,过程调用是连接件。