一种总线型软件体系结构的设计与应用

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

收稿日期:2003-11-21;修订日期:2004-01-08

作者简介:莫世锋(1976-),男,重庆荣昌人,硕士研究生,主要研究方向:软件工程、软件体系结构、中间件技术; 何贤江(1958-),男,四川南充人,副教授,主要研究方向:软件工程、计算机网络与通信; 王秉中(1980-),男,四川成都人,主要研究方向为:管理信息系统、计算机网络与通信.

文章编号:1001-9081(2004)05-0098-04

一种总线型软件体系结构的设计与应用

莫世锋,何贤江,王秉中

(四川大学计算机学院,四川成都610065)

(m os f @ )

摘 要:在构造基于面向对象技术的软件系统中,采用良好的软件体系结构可以有效地提高整个系统的可扩展性、灵活性、可插入性,获得较好的可复用性。针对这一点,提出了一种基于组件和中间件技术的总线型软件体系结构,该结构以面向对象技术为基础,并借鉴了计算机硬件系统的设计思想。文中介绍了该体系结构的设计和应用情况,以实例说明了该结构有助于使系统的结构定义更加清晰和具备良好的“可拔插”特性。

关键词:软件体系结构;总线;组件;中间件中图分类号:TP311 文献标识码:A

Design and Application of a Bus 2type Softw are Architecture

M O Shi 2feng ,HE X ian 2jiang ,W ANG Bing 2zhong

(School o f Computer Science and Engineering ,Sichuan Univer sity ,Chengdu Sichuan 610065,China )

Abstract :In the process of construction of a object 2oriented s oftware ,using a s ound s oftware architecutre can effectively improve the extensibility ,flexibility ,pluggablility and reuseability of the s oftware.In this paper ,a bus 2type s oftware architecture based on object 2oriented components ,middlewares and the thinkings of computer hardware designing is introduced.The design and application of this architecture is described in detail ,and it is proved by the using of it in a large 2scale s oftware that the architecture can contribute to the improvement of clarity and pluggablility of the structures of the s oftware ,which can greatly improve the efficiency of s oftware development.

K ey w ords :s oftware architecture ;bus ;component ;middleware

1 引言

软件体系结构一般被定义为“从一个较高抽象层次来考虑组成系统的构件、构件之间的交互,以及由构件与构件交互形成的拓扑结构的关系”[1]

。软件体系结构主要涵盖了如下实体

[2]

:

构件,包括计算构件和数据构件。

连接件,实现构件之间的交互、通信或协调关系。限制,包括构件通信协议、实时性、同步等。

配置,反映系统的总体结构,构件和连接件构成的拓扑结构。

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

软件体系结构提供了待建造系统的整体视图,它描述软件构件的结构和组织、它们的性质以及它们之间的连接。一个好的软件体系结构应该有如下的性质[3]:可扩展性、灵活性、可插入性。所谓可扩展性就是指新的功能可以很容易地加入到系统中去;灵活性是指系统可以允许代码修改平稳地进行,而不会波及到很多的系统其它部分;可插入性是指可以很容易地将一个类“拔”出去,然后将另一个有同样接口的

类加入进来。

因此,一个好的软件体系结构不仅能实现系统中的部件重用,而且可以实现系统部分或整体重构。部分重构是指可以任意增加、减少和更改系统中的部分功能而不影响整体架构;做到增加、减少功能,绝对不动其它部分程序,仅通过控制工具调整;更改功能仅编译相关的功能模块,再通过控制工具调整。整体重构是在已有的系统的基础上,根据用户的需求做很少的编码改动,用工具重构出一个与原系统控制流程和处理流程差异较大的新系统。而且,基于这种体系结构的软件的开发过程是分部分、按部件独立开发,部件可以单独测试,根据用户的应用逻辑变化按部件实现单独组装、拆卸、替换等维护。因此,这样的软件体系结构具备良好的可扩展性、灵活性和可插入性,对于提高软件质量和开发效率以及降低开发成本都具有重要意义。

运用面向对象技术,并结合相关的设计模式和借鉴计算机硬件的“可拔插”设计思想,给出了一种具备良好的灵活性、可扩展性和可插入性的基于组件和中间件技术的总线型软件体系结构[4],并运用UM L 对其进行静态和动态特性进行了建模。

第24卷第5期

2004年5月

计算机应用C om puter Applications

Vol.24,No.5May ,2004

2 总线型软件体系结构

总线型的体系结构是基于组件和中间件的,组件被用于实现业务逻辑和数据的持久性操作,而中间件则被用于实现各组件的整合,实现各组件间的相互协作、通信和协调。总线型的体系结构是一种面向对象的结构

图1 总线型体系结构示意图体系结构中的对象是按照业务规范设计的模块,这些定义良好的软件模块(组件)在系统中共存,并且充分地相互作用。按照这种结构,可以将若干组件组合起来,以建立更大和更复杂的系统。

这种体系结构的关键在于一种高效的总线结构,使组件之间能以一个公共的接口互相连接,做到组件的即插即用,无缝集成。这种结构的系统中,组件间的通信链接数是线性的,并且由于各组件接口规范的一致性,通信的复杂度下降,提高了组件的互操作性。

根据组件在系统中地位的差异,应用软件系统中的组件可以分为两个层次:核心组件和应用组件。相对于核心组件来说,应用组件所要求的系统服务要少得多,请求服务的频度也较低。相应地,总线也可以分为核心总线和应用总线,从而形成双总线结构。在这种总线结构中,核心组件和应用组件之间仍然保持良好的互操作性,但应用总线屏蔽了应用组件的一部分服务请求,减少了核心总线上的流量,从而提高了应用软件系统核心的效率。核心组件与核心总线构成了应用软件系统的原型和框架,在此基础上与各应用组件集成。在分布式环境中,应用组件通常不是直接连结到应用总线(也称Broker )上,而是通过一个软件代理(Agent )间接地连在总线上(如图1)。Agent 的作用在于,一方面代理应用组件的复杂通信过程,使应用组件更专注于功能的实现;另一方面将适应不同应用需求的组件内部的异构数据转换成同构数据,以保证Broker 上通信语言的统一。由此可见,在基于总线的系统模型中,Broker 与Agent 构成了介于应用组件(客户)与核心系统(服务器)之间的中间件。

上述总线型软件体系结构具有如下优点:(1)由于采用了“插件”结构,所以系统具备良好的可扩展性;(2)系统体系结构清晰,因此可以降低开发的难度;(3)由于具备高内聚、低耦合的特点,因此易于系统的扩展和维护。

在某大型的“五保合一”的社保综合管理系统中,我们采用了上述的总线型软件体系结构,取得了预期的良好效果。

3 设计

3.1 静态特性

“五保合一”的社保综合管理系统规模较大,业务规则非常复杂,涉及到的各种数据量很大,系统的可靠性和健壮性要求高,因此该系统具有较高的开发难度。

“五保”是指养老、医疗、工伤、生育和失业五种社保险种业务,将系统中的各险种的业务规则分别封装为不同粒度大小的业务对象和构件,同时各业务对象和构件各自提供必要的接口供表示层调用和实现相互间的通信与协作。这样,封装了具体的险种业务逻辑险种业务对象对应于总线型体系结构中的各业务对象,而这些业务对象间的通信、交互和协作则

通过连接件总线(Broker )和软件代理(Agent )来实现和管理。可以降低各业务对象和构件之间的耦合度,也是实现各业务对象和构件“可拔插”的关键。

在本系统中,连接件总线被命名为业务对象总线,它通过一个被称之为业务对象插槽的软件代理Agent 来管理各业务

对象。这样,通过业务对象总线提供的一个公共接口和业务对象插槽,各业务对象被间接地连接于业务对象总线上。作为连接件的业务对象总线是整个总线体系结构模型的核心,它提供一个公共的接口使得各业务对象组件能够通过业务对象插槽连接上去,实现各组件的“可拔插”特性。作为软件代理Agent 的对象业务插槽负责创建和销毁业务对象,并在需要时提供业务对象定义的服务供客户使用。可以使得业务对象能够专注于业务规则和功能的实现。为了简化和方便调用各种业务对象的服务,采用一个外壳封装对整个总线型体系结构加以封装,并提供一个统一的接口给外界使用。

综上所述,体系结构中各对象的主要职责如下:业务集外壳:对外界提供系统的一个统一的接口。业务对象总线:是整个体系结构的核心,作为连接件负责各业务对象的相互协作、通信和协调。

业务对象插槽:作为业务对象的代理,负责业务对象的创建和销毁,与业务对象总线一起完成对业务对象的管理。

业务对象:封装业务逻辑,实现相关服务功能。整个系统的体系结构静态特性可用UM L 类图简单表示(如图2)

图2 总线型体系结构的类图

3.2 动态特性

各业务对象组件的“可拔插”性的本质即是业务对象的存在与否不会导致系统无法运行或出现致命错误。当一业务对象未集成到系统中时,用户只是无法使用该业务对象提供的功能,而与该业务对象无关的其它业务对象提供的功能应能正常使用。

要实现业务对象的“可拔插”,就要求各业务对象间必须要降低耦合度。各业务对象之间的交互与协作不应直接进行,而是通过业务对象总线这个中介对象完成。这样可以使

9

9第5期莫世锋等:一种总线型软件体系结构的设计与应用

相关文档
最新文档