软件架构设计的一个核心问题是能否使用重复的软件架构模式,即能否达到架构级别的软件重用。——基于这个目的,学者们开始研究和实践软件架构的风格和类型问题。
软件架构风格是描述某一特定应用领域中系统组织方式的惯用模式,即定义了用于描述系统的术语表和一组指导构建系统的规则。
软件架构风格为大粒度的软件重用提供了可能性。
软件架构风格涉及的问题:设计词汇表是什么?构件和连接件的类型是什么?可容许的结构模式是什么?基本的计算模型是什么?风格的基本不变性是什么?此风格的优缺点是什么?其常见的特例是什么?
一、数据流风格
包括两种具体的风格:批处理序列和管道/过滤器。
批处理的风格的每一步都是独立的,并且每一步都是顺序执行的。依赖关系。典型应用包括:经典数据处理、程序开发、Windows下的BAT程序。
在管道/过滤器软件风格中,每个构件都有一组输入和输出,一般对输入进行变换和增量计算完成。
二、调用/返回风格
实际上是一种分而治之的策略,其主要思想是将一个复杂的大系统分解为一些子系统,以便降低复杂度,并且增加可修改性。
包括:主程序/子程序、面向对象风格、层次结构风格。
三、独立构件风格
每个构件都是相对独立的个体,之间不直接通信,以降低耦合度,提升灵活性。
包括进程通信风格、事件系统风格
四、虚拟机风格
基本思想是人为构建一个运行环境,在这个环境之上,可以解析与运行自定义的一些语言,这样来增加架构的灵活性。
包括解释器和规则为中心的风格。
五、仓库风格
包括数据库系统、超文本系统、黑板风格。
超文本系统的典型代表就是早期的静态网页。
黑板风格包括:知识源、黑板(共享数据)、控制
六、特定领域软件架构
DSSA:领域分析——领域设计——领域实现
七、状态转移
RESTFULL风格
八、分布式风格
包括C/S、B/S、CORBA、EJB、DCOM等。