软考笔记--软件架构风格
软件体系结构设计的一个核心目标是重复的体系结构模式,即达到体系结构级的软件重用。也就是说,在不同的软件系统中,使用统一体系结构。基于这个目标,主要任务就是研究和实践体系结构风格和类型问题。
一.软件架构风格概述
软件体系结构风格是描述某一特定应用领域中系统组织方式的惯用模式。体系结构风格定义了一个系统家族,即一个体系结构定义一个词汇表和一组约束。体系结构风格反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个模块和子系统有效组织成一个完整的系统。对软件体系结构风格的研究和实践促进对设计的重用,一些经过实践证实的解决方案也可以可靠地用于解决新的问题。
二.数据流体系结构风格
数据流体系结构是一种计算机体系结构,数据流体系结构没有概念上的程序计数器,指令的可执行和执行仅指令输入参数的可用性来确定,因此,指令执行的顺序是不可预测的,行为不确定的。数据流体系结构风格主要包括批处理风格和管道过滤器风格。
1.批处理体系结构风格
在批处理风格的软件体系结构中,每个处理步骤是一个单独的程序,每一步必须在前一步结束后才能开始,并且数据必须是完整的,以整体的方式传递。它的基本构件是独立的应用程序,连接件是某种类型的媒介。连接件定义了相应的数据流图,表达拓扑结构。
2.管道-过滤体系结构风格
当数据源源不断地产生,系统就需要对这些数据进行若干处理。现有的解决方案是把系统分解为几个处理步骤,这些步骤之间通过数据流连接,一个步骤的输出是另一个步骤的输入,每一个处理步骤由一个过滤器实现,处理步骤之间的数据传输由管道负责。每个处理步骤(过滤器)都有一组输入和输出,过滤器从管道中读取输入的数据流,经过内部处理,然后产生输出数据流并写入管道中。
三.调用/返回体系结构风格
调用/返回体系结构风格是指在系统中采用了调用与返回机制。利用调用返回实际上是一种分而治之的策略,其主要思想是将一个复杂的大系统分解为若干个子系统,以便降低复杂度,并且增加可修改性。调用/返回体系结构风格主要包括主程序/子程序风格,面向对象风格,层次型风格以及客户端/服务器风格。
1.主程序/子程序风格
主程序/子程序风格一般采用单线程控制,把问题划分为若干个处理步骤,构件即为主程序和子程序、子程序通常可合成为模块。过程调用作为交互机制,即充当连接件。
2.面向对象系统结构风格
抽象数据类型概念对软件系统有着重要作用,这种风格建立在数据抽象和面向对象的基础上,数据的表示方法和它们的响应操作封装在一个抽象数据类型或对象中。这种风格的构件是对象,或者是抽象数据类型的实例。
3.层次型体系结构风格
层次系统组成一个层次结构,每一层为上层提供服务,并作为下层的客户。在一些层次系统中,除了一些精心挑选的输出函数外,内部的层接口只对相邻的层可见。
4.客户端/服务端体系结构风格
两层 C/S 体系结构有3个主要组成部分:数据库服务器、客户应用程序和网络。服务器(后台)负责数据管理,客户机(前台)完成与用户的交互任务,称为“胖客户机,瘦服务器”。
三层C/S结构增加了一个应用服务器。整个应用逻辑驻留在应用服务器上,只有表示层存在于客户机上,故称为“瘦客户机”。应用功能分为表示层、功能层和数据层三层。表示层是应用的用户接口部分,通常使用图形用户界面;功能层是应用的主体,实现具体的业务处理逻辑;数据层是数据库管理系统。以上三层逻辑上独立。
四.以数据为中心的体系结构风格
以数据为中心的体系结构风格主要包括仓库体系结构风格和黑板体系结构风格。
1.仓库体系结构风格
仓库是存储和维护数据的中心场所。在仓库风格中,有两种不同的构件:中央数据结构说明当前数据的状态以及一组对中央数据结构进行操作的独立构件,仓库与独立构件间的相互作用在系统中会有大的变化。这种风格的连接件即为仓库与独立构件之间的交互。
2.黑板体系结构风格
黑板体系结构风格适用于解决复杂的非结构化的问题,能子求解过程中综合运用多种不同知识源使得问题的表达,组织和求解变得比较容易。黑板系统是一种问题求解模型,是组织推理步骤、控制状态数据集和问题求解领域知识的概念框架。它将问题的解空间组织成一个或多个应用的分级结构,分级结构的每一层信息有一个唯一的词汇来描述,它代码了问题的部分解。
五.虚拟机体系结构风格
虚拟机体系结构风格的基本思想是人为构造一个运行环境,在这个环境之上,可以解析与运行自定义的一些语言,这样来增加结构的灵活性。虚拟机体系结构风格主要包括解释器风格和规则系统风格。
1.解释器体系结构风格
一个解释器通常包括完成解释工作的解释引擎,一个包含将被解释的代码的存储区,一个记录解释引擎当前工作状态的数据结构,以及一个记录源代码被解释执行进度的数据结构。解释器通常被用来建立一种虚拟机以弥合程序语义与硬件语义之间的差异。其缺点是执行效率较低。典型的例子是专家系统。
2.规则系统体系结构风格
基于规则的系统包括规则集、规则解释器、规则/数据选择器及工作内存。
六.独立构件体系结构风格
独立构件风格主要强调系统中的每个构件都是相对独立的个体,它们之间不直接通信,以降低耦合度,提升灵活性。独立构件风格主要包括进程通信和事件系统风格。
1.进程通信体系结构风格
在进程通信体系结构风格中,构件是独立的过程,连接件是消息传递。这种风格的特点是构件通常是命名过程,消息传递的方式可以是点到点、异步或同步方式及远程调用等。
2.事件系统体系结构风格
事件系统体系结构风格基于事件的隐式调用风格的思想是构件不直接调用一个过程,而是触发或广播一个或多个事件。系统中的其他构件中的过程在一个或多个事件中注册,当一个事件触发,系统自动调用在这个事件中注册的所有过程,这样,一个事件的触发就导致了另一个模块中的过程调用。从架构上说,这种风格的构件是一些模块,这些模块既可以是一些过程,又可以是一些事件的集合。过程可以用通用的方式调用,也可以在系统事件中注册一些过程,当发生这些事件时,过程被调用。