多种软件体系结构风格的分析与比较∗

2019-10-08 07:12李欣宜张俊萍赵丽娜
计算机与数字工程 2019年9期
关键词:连接件体系结构调用

刘 凯 梁 欣 李欣宜 张俊萍 赵丽娜

(1.航天器在轨故障诊断与维修重点实验室 西安 710043)(2.西安卫星测控中心 西安 710043)(3.东北林业大学 哈尔滨 150040)(4.63871部队 华阴 714200)(5.63870部队 华阴 714200)

1 引言

随着信息量的迅猛增长,信息系统软件变得日益复杂,与此同时软件体系结构的重要性在整个软件生命周期变得日益突出[1],具体体现在:

1)作为软件的雏形,软件体系结构是所有软件需求的一种客观表述;

2)优质的软件体系结构设计可以减少甚至避免软件错误,提高软件产品的质量;

3)软件体系结构分析有助于尽早识别系统设计中的潜在风险,尽早发现软件理解、设计中的错误,及时修改以降低软件的开发代价及日后维护阶段的高昂代价;

4)与单一系统的开发风险相比,基于软件体系结构的软件产品线只需付出较少的精力、花销,就可以开发出相似系统的系列产品,开发风险较低;

5)软件体系结构有助于维护人员熟悉软件系统[2~3]。

综上,软件体系结构设计对于系统设计与开发起着至关重要的作用。

2 基本概念

在软件体系结构这一领域,许多专家学者都提出了自己的模型和概念描述,但众多概念和描述规范尚未统一,仍需进行广泛而深入地研究。通过对几个具有代表性的软件体系结构的概念进行归纳、总结,发现其核心大都围绕下面一些实体。

1)构件:软件系统中担当处理与计算的单元或实体的抽象,包括计算构件和数据构件;

2)连接件:软件系统中担当构件间协调处理的协议单元或处理实体的抽象,实现构件之间的交互、通讯或调用关系;

3)限制:包括构件通讯协议、实时性、同步性等;

4)配置:反映系统的总体结构、构件和连接件构成的拓扑结构;

5)设计原则与指导方针:体系结构设计或描述的知识,包括体系结构风格、模式等高级概念[4~5]。

基于对软件体系结构定义的研究,本文倾向于文献[4]所给出的定义:“软件体系结构是从一个较高抽象层次来考虑组成系统的构件、构件之间的交互,以及由构件与构件交互形成的拓扑结构的关系。这些要素应该满足一定的限制,遵循一定的设计规则,能够在一定的环境下进行演化[4]。软件体系结构应能反映系统开发中具有重要影响的设计决策,便于各种人员的交流,反映多种关注,照此开发的系统能完成系统既定的功能和性能需求”。

软件体系结构风格,或称软件体系结构模式,从本质上反映了一些特定的元素按照特定的方式组成的一个特定结构。

3 软件体系结构风格的分类

目前,已经形成了多种不同的软件体系结构风格,如图1所示。

图1 软件体系结构风格的分类

4 典型软件体系结构风格分析

下面,分别对图1所示的不同软件体系结构风格进行分析。

4.1 数据流系统风格

数据流是一种将数据从输入端显式地输送到输出端的体系结构风格,其构件是数据的处理单元,连接件是连接处理单元的通道[6]。数据流风格又可细分为三种体系结构,分别是管道和过滤器、批处理以及任务处理。

1)管道和过滤器是最典型的数据流系统风格。在这种风格中,每个构件有一套输入集和一套输出集,构件从输入集中得到数据流,经过对输入流的变换及增量计算来完成内部处理,将产生的数据流送给输出集,按标准顺序传递一组完整的计算结果。在这种风格中,构件被称作“过滤器”;连接件被称为“管道”,它相当于数据流的导管,负责将一个过滤器的输出传输到另一个过滤器[7~8]。如图2所示,方框代表过滤器,带箭头的空心线代表管道。

图2 管道和过滤器

管道和过滤器风格中,过滤器不与其他过滤器共享数据,也不必知道与其连接的上下游过滤器的身份标识,只需要从输入管道接收数据,然后将计算结果送入输出管道。因此,过滤器之间相互独立。

2)批处理体系结构风格中,每个构件都是一个独立的程序。只有在当前构件处理完成后,下一个构件才会启动,数据以整体的形式在构件间传输[6],如批处理操作系统。

3)任务处理体系结构风格,主要用于控制系统,它包括前反馈系统、后反馈系统等。

4.2 调用/返回风格

调用/返回风格是基于模块间的显式调用而形成的体系结构风格。这种风格的构件是组成系统的模块、层或者对象,连接件是构件之间的调用关系。构件对外隐藏了数据表示、物理设备的属性、事件模型的实现、支持策略的机制等内部信息,使构件之间可以独立地改变内部系统的细节[6]。构件之间通过调用接口进行协同工作,而不必关心被调用的构件是如何实现的。

调用/返回风格可细分为主、子调用,数据抽象和面向对象,以及层次体系结构。

1)主、子调用风格只具有单一的控制线程,其调用关系是确定的。在这种风格中,主过程的正确性依赖于子过程的正确性,而子过程的正确性依赖于子过程所调用的子过程的正确性。子过程的聚集称为模块,模块可以是一段代码、一个编译单元或者一个工作单元。

2)数据抽象和面向对象风格是以抽象数据类型和面向对象技术为基础的,它的基本构件是对象。该风格体现了面向对象的封装性、继承性和多态性要求,数据结构和操作被封装在一个抽象数据类型里,对象之间通过传递消息发生联系[7]。

3)层次体系结构采取层次化的组织方法,每一层向上一层提供服务,同时又是下层的客户,调用下层的服务。在该风格中,内部的层只对相邻的层可见。连接件通过协议进行定义,它决定了各层之间如何进行交互,典型的例子是OSI七层结构。

4.3 虚拟机风格

虚拟机风格屏蔽了底层硬件的异构性,可以让不同的软件在它上面运行,就好像在另一台机器上运行一样。它好似一台计算机,有输入、输出,工作过程也像一台计算机,将虚拟机的指令映射到机器指令集上。虚拟机的构件包括用于保存输入数据的部件、虚拟机执行引擎、用于保存当前虚拟机状态的部件,连接件包括过程调用和直接存储访问[6~7]。

虚拟机风格包括解释器和基于规则的体系结构两种风格。

1)解释器通过建立一种虚拟机以弥合程序语义与计算引擎硬件之间的间隙。其构件包括正在被解释的程序、执行引擎、被解释的程序的状态和执行引擎的当前状态,典型例子是Java虚拟机。

2)基于规则的体系结构类似于解释器,它根据已知的规则对输入进行处理。构件包括工作内存、知识库、规则解释器、规则与数据元素选择器。

4.4 数据中心体系结构风格

数据中心体系结构,也叫数据仓库,它是一种以数据为中心的体系结构风格,用于收集、管理和维护大量的复杂数据。这种风格中,构件包括用于表示当前数据状态的中心数据结构和在数据中心存储的数据上进行操作的独立部件的集合,连接件是独立部件对中心数据结构的访问[6]。

依据不同的控制策略,数据中心体系结构可分为不同的两大类:一是传统的数据库模式,即数据库体系结构,系统由输入的事务信息驱动,典型的例子是数据库系统;二是黑板结构,即黑板体系结构,系统由黑板上的信息驱动,典型的例子是HearsayⅡ语音识别系统。

4.5 独立组件风格

独立组件风格以处理过程或对象作为构件,以事件绑定或者消息传递作为连接件,包括事件处理体系结构和通讯处理体系结构[7~8]。

1)事件处理体系结构主要处理隐式调用,因此也称为隐式调用风格。这种风格的构件是一个包含过程集合和一组事件的模块,连接件即过程调用,事件声明以及过程调用的绑定等。该风格的基本思想是构件不直接调用一个过程,而是触发或声明一个或多个事件。系统中其它构件中的过程可以通过一个与这个或这些事件相联系的过程,在这个或这些事件中进行登记[9~10]。当某事件被触发时,系统会自动调用所有在这个或这些事件中登记过的过程。举例来说,在一个用JAVA编写的程序中,当为某变量申请内存失败时,系统会抛出一个内存异常,从而产生一个异常事件,这时系统会通过调用注册过的相应的中断程序进行相应的处理,即隐式调用[11]。

2)通讯处理体系结构由一组过程组成,每个过程拥有自己的地址空间,因此也可以看作一个虚拟的处理器。消息之间通过同步的、异步的、点对点的或者基于某种协议的点对点调用进行消息传递[6]。

4.6 正交软件体系结构

正交软件体系结构是一种以垂直线索组件族为基础的层次化结构,它由组织层(横向)和线索(纵向)的组件两大部分组成。层是由一组具有相同抽象水平的组件构成的;线索(垂直线索组件族)是相对的子系统特例,它由完成不同层次功能的组件构成,每一条线索完成正交结构中相对独立的一部分功能而与其他线索的实现无关或关联很少,在同一层次中组件之间不存在相互调用。这完全符合正交的定义:“如果线索间是相互独立的,即不同线索中的组件之间没有相互调用,那么此结构就是完全正交的[10]”。正交体系结构的基本思想是把应用系统的结构按功能的正交相关性,垂直分割为若干个线索(子系统),线索又分为几个层次,每个线索由多个具有不同层次功能和不同抽象级别的构件构成,其结构如图3所示。

图3 正交软件体系结构框架

图3是一个三级线索、五层结构的正交软件体系结构框架图。其中,ABDFK组成了一条线索,ACEJK也是一条线索。因为B、C处于同一层次中,所以不允许进行互相调用;同理,H、J也不允许进行互相调用。第五层是一个物理数据库连接构件或设备构件,供整个系统共用。

正交软件体系结构的主要特征可以归纳如下[12~13]:

1)系统由完成不同功能的n(n>1)个线索(子系统)组成;

2)系统具有m(m>1)个不同抽象级别的层;

3)线索之间是相互独立的(正交的);

4)系统有且仅有一个公共驱动层(一般为最上层,触发各线索运行),而且有且仅有一个公共数据结构(一般为最底层,包含所有线索使用的公共数据资源等)。

4.7 C/S软件体系结构

C/S软件体系结构,即Client/Server(客户机服务器)结构,是基于资源不对等,且为实现共享而提出来的技术[13]。它最鲜明的特征是资源共享,可以分配处理任务和数据给客户机和服务器,使系统共享从数据到处理能力的每一种资源[10]。C/S软件体系结构又可细分为二层C/S结构和三层C/S结构。

1)二层C/S结构以局域网为中心,将应用一分为二,单一服务器(后台)负责数据管理,客户机(前台)完成与用户的交互任务。在实际应用中,这种结构大多采用一台数据库服务器(如DB2、ORACEL等数据库)作为服务器,客户端选用可视化编程语言(如Microsoft Visual Basic6.0)编写的客户软件,通过ODBC或ADO同数据库服务器通信,组成一个应用系统[10]。这种结构的不足之处在于客户端很庞大,应用程序升级和维护困难且耗资很大。

2)三层C/S结构是在二层C/S结构的基础上提出的,系统在客户机和数据库服务器间添加一个应用服务器。三层C/S结构将应用功能分成表示层、功能层和数据层三个部分。作为应用的用户接口部分,表示层承担系统与用户间的对话功能,用于简单检查用户输入的数据、显示输出的数据;功能层又称业务逻辑层,它将具体的业务处理逻辑编入程序中;数据层即数据库管理系统,负责管理对数据库数据的读写,要求能够迅速执行大量数据的更新和检索。通过对三层结构的功能进行合理划分,使整个系统的逻辑结构更为清晰,有效地提高了系统和软件的可维护性和可扩展性[9]。

4.8 B/S软件体系结构

B/S结构,即Browser/Server(浏览器/服务器)结构,是随着Internet技术的兴起对C/S结构进行变化或改进的结构。它利用了不断成熟的WWW浏览器技术,结合浏览器的多种Script语言(如VBScript、JavaScript等)和ActiveX技术,用通用浏览器实现了原来需要复杂专用软件才能实现的强大功能,并节约了开发成本,是一种全新的软件系统构造技术[12]。在这种结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但主要事务逻辑在服务器端实现,通过Internet/Intranet模式应用数据库。以目前的技术看,这种B/S结构的网络应用相对易于把握、成本较低,是一次性到位的开发,能实现不同人员、从不同地点、以不同接入方式(比如LAN、WAN、Internet/Intranet等)访问和操作公共数据库,并能有效保护数据平台,管理访问权限,服务器数据库也很安全[14]。

4.9 异构软件体系结构

实际上,各种软件体系结构并非独立存在的,一个系统中可能同时存在多种软件体系结构,从而形成复杂的体系结构,我们称之为“异构的软件体系结构”。这种体系结构的组合方式有多种,可以采用平行的方式,即根据软件各子系统的结构、功能和性能,为每个子系统选择相应的体系结构,也可以分层组织,即在某种体系结构的一个组成部分的内部采用另一种不同的体系结构[10]。许多学者已开始了对异构软件体系结构风格的研究,如文献[12]提出的“B/S与C/S混合软件体系结构”,把B/S和C/S两种软件体系结构进行了有机的结合,扬长避短,有效地发挥了各自的优势[12];又如文献[15]提出的“整体应用框架采用正交体系结构而子部分系统采用C/S模式”[15],综合了正交和C/S结构的优点,结构清晰,易于理解,保证了应用系统的安全性。异构软件体系结构将成为软件体系结构领域的发展趋势。

5 多种软件体系结构风格的特点比较

下面对上述常见软件体系结构风格的优缺点进行分析、比较,以深化对体系结构风格的理解,如表1所示。

通过对上述多种软件体系结构风格的优缺点比较发现,众多软件体系结构风格各有所长,同时也存在不足。系统研发时,建议将不同的体系结构有机地结合起来,发挥各自结构的优势,弥补不足,取长补短,以更好地为系统服务。

表1 多种软件体系结构风格的优缺点比较

6 结语

由于视角不同,系统设计师在考虑体系结构风格时存在着很大的选择空间,若要为系统选择或设计一种适合的体系结构风格,必须根据特定项目的具体特点,进行反复分析比较后确定。本文在对软件体系结构及其风格的概念分析的基础上,对多种软件体系结构风格展开了研究,并对这些不同风格的优缺点进行了比较与分析,可为软件体系结构风格的优化设计提供强有力的指导。

猜你喜欢
连接件体系结构调用
基于思维导图的化学知识体系结构构建
制作吸管塔台
基于PPP工程采购模式的工程项目合同体系结构研究
足球机器人并行行为组合控制体系结构分析
系统虚拟化环境下客户机系统调用信息捕获与分析①
CJ/T493—2016给水用高性能硬聚氯乙烯管材及连接件
基于试验设计的汽车悬架轻量化设计
Acoustic Characteristics of Advertisement Calls in Babina adenopleura
基于属性数据的系统调用过滤方法
利用RFC技术实现SAP系统接口通信