7.3 软件架构风格
软件体系结构设计的一个核心目标是重复的体系结构模式,即达到体系结构级的软件重用。也就是说,在不同的软件系统中,使用同一个体系结构。基于这个目标,主要任务是研究和实践软件体系结构的风格和类型问题
7.3.1软件架构风格概述
软件体系结构风格是描述某一特定应用领域中系统组织方式的惯用模式。
体系结构风格定义一个系统家族,即一个体系结构定义一个词汇表和一组约束。
词汇表中包含一些构件和连接件类型,而这组约束支出系统是如何将这些构件和连接件组合起来的。
体系结构风格反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个模块和子系统有效地组织成一个完整的系统。
对软件体系结构风格的研究和实践促进对设计的重用,一些经过实践证实的解决方案也可以可靠地用于解决新的问题。
7.3.2数据流体系结构风格
1、批处理体系结构风格

2、管道-过滤器体系结构风格

7.3.3调用/返回体系结构风格
在系统重采用了调用与返回机制。实际上一种分而治之的策略,其主要思想是将一个复杂的大系统分解成若干子系统,以便降低复杂度,并且增加了可修改性。程序从其执行起点开始执行该构件的代码,程序执行结束,将控制返回给程序调用构件。调用/返回体系结构风格主要包括主程序/子程序风格、面向对象风格、层次型风格以及客户端/服务器风格。
1、主程序/子程序风格
一般采用单线程控制,把问题划分成若干处理步骤,构件即为主程序和子程序。子程序通常可合成为模块。过程调用作为交互机制,即充当连接件。调用关系具有层次性,其语义逻辑表现为子程序的正确性取决于它调用的子程序的正确性。
2、面相对象体系结构风格
抽象数据类型概念对软件系统有着重要作用,目前软件界已普遍转向使用面向对象系统。这种风格建立在数据抽象和面向对象的基础上,数据的表示方法和它们的相应操作封装在一个抽象数据类型或对象中。这种风格的构件是对象,或者说抽象数据类型的实例。

3、层次型体系结构风格
层次系统组成一个层次结构,每一层为上层提供服务,并作为下层的客户端。

4、C/S体系结构风格
C/S是基于资源不对等,且为实现共享而提出的,
2层的C/S体系结构有3个主要组成部分:数据库服务器、客户应用程序和网络。服务器(后台)负责数据管理,客户机(前台)完成与用户交互的任务,称为“胖客户机,瘦服务器”

3层C/S结构, 增加了一个应用服务器。整个应用逻辑驻留在应用服务器上,只有表示层存在于客户机上,故称为“瘦客户机”。应用功能分为表示层、功能层和数据层。
表示层是应用的用户接口部分,通常使用图形用户界面;
功能层是应用的主体,实现具体的业务处理逻辑;
数据层是数据管理系统。
以上三层逻辑上独立

7.3.4以数据为中心的体系结构风格
1、仓库体系结构风格
仓库(Repository)是存储和维护数据的中心场所。在仓库风格中,有两种不同的构件:中央数据结构说经当前数据的状态以及一组对中央数据进行操作的独立构件,仓库与独立构件间的相互作用在系统重会有很大变化。

2、黑板体系结构风格
适用于解决复杂的非结构化的问题,能在求解过程中综合运动多种不同的知识源,使得问题的表达、组织和求解变得比较容易。
黑板系统是一种求解模型,是组织推理步骤、控制状态数据和问题求解之领域的概念框架。
它将问题的解空间组织成一个或多个应用相关的分级结构。
分级结构的每一层信息有一个唯一的词汇来描述,它代表了问题的部分解。
领域相关的知识被分成独立的知识模块,它将某一层中的信息转换成同层或相邻层的信息

7.3.5虚拟机体系结构风格
基本思想是人为的构建一个运行环境,在这个环境之上,可以解析与运行自定义的一些语言,这样来增加架构的灵活性。
1、解释器体系结构风格
一个解释器通常包括完成解释工作的解释引擎,一个包含将被解释的代码的存储区,一个记录解释引擎当前工作状态的数据结构,以及一个记录记录源代码被解释执行进度的数据结构。
具有解释器风格的软件含有一个虚拟机,可以仿真硬件的执行过程和一些关键应用。解释器通常被用来建立一种虚拟机以弥合程序语义和硬件语义之间的差异。其特点是执行效率较低。典型的例子是专家系统。

2、 规则系统体系结构风格
包括规则集、规则解释器、规则/数据选择器及工作内存

7.3.6独立构件体系结构风格
独立构件风格主要强调系统中的每个构件都是相对独立的个体,他们之间不直接通信,以降低耦合度,提升灵活性。独立构件风格主要包括进程通信和事件系统风格。
1、进程通信体系结构风格
构件是独立的过程,连接件是消息传递。
2、事件系统体系结构风格
基于事件的隐式调用风格的思想是构件不直接调用一个过程,而是触发或广播一个或多个事件。
