徐叶军
摘要:构件适配被广泛认为是基于构件化软件工程研究的重点及难点问题,它直接影响软件开发的周期、成本及构件复用程度。该文首先分析构件语义层的特征提出了构件语义组的概念并给出构件失配的四种类别,其次,建立了构件语义动态适配模型,最后,将其应用在信息系统开发的过程中,提高了系统的灵活性和可维护性。
关键词:构件化;动态适配;软件设计
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2015)20-0209-02
Application of Dynamic Adaptation of Component Semantic in Information System
XU Ye-jun
(Suzhou Industrial Park Institute of Services Outsourcing, Suzhou 215123, China)
Abstract:Component adaptation is widely considered to be the key and difficult problems in software engineering based on the component, which directly affects the cycle, cost and reuse of software development. Firstly, the paper analyzes the characteristics of component semantic layer, puts forward the concept of component semantic group and presents four categories on component mismatch. Secondly, the paper presents component semantic adaptation model. Finally, it is applied in the information system,improve the flexibility and maintainability of the system.
Key words:component; dynamic adaptation; software design
随着信息技术的飞速发展,信息系统软件已经应用到各行各业,基于构件化软件开发模式已成为面向对象之后软件开发的主要模式,其目的是为了将构件语义动态适配的方法成功应用在信息系统开发中,以此降低开发成本,缩短开发周期,并且能够增强系统的灵活性和可维护性。因此,构件适配成为关键议题之一[3]。本文通过对构件语义动态适配的研究,将其应用到信息系统开发的过程中,提高了系统的灵活性和可维护性。
1构件语义及构件语义组
为了描述构件语义失配类别,本文提出了构件语义组概念,构件语义与构件语义组形式化定义如下:
定义1 构件语义.假设Cs代表构件语义,Cs可以表示为一个三元组,Cs =
ii I fi F 且 fi = φ( ii) , 其中, φ ( )代表→的映射关系.
定义2 构件语义组. 假设CSG代表构件语义组,CSG可以表示为一个四元组,CSG = < CS, R, A, [Φ] > 其中: CS表示构件语义组成的集合;[Φ]表示空集; R描述构件语义之间的关系运算符集合 R ={>, =, !=, }, 符号>, =, !=, 分别表示语义包容、语义等价、语义不等及语义正交;A表示构件语义操作运算符集合 A ={ -, } , 其中:符号-, 分别表示语义差和异或操作. 并且满足以下条件:
Csi a Csj r {Csi, Csj, [Φ]} Csi r Csj , 其中:假设Csi , Csj CS; a A; r R. (1)
在定义1 中的条件反映构件的接口与构件的功能对应关系,构件每个接口都有一定功能于之对应,但并不限于一对一的关系,同时构件内部还有可能存在哑功能(不暴露接口);在定义2中的条件反映了构件语义组中的构件语义之间通过一定的操作运算所的到结果,根据该结果判断构件语义失配类别。
2构件语义失配类别
待选构件选择是以系统规格说明中的需求构件描述为依据,主要依赖需求构件的接口形式、行为交互条件和功能语义三个条件,其中功能语义是最基础、最重要的前提条件。然而,在实际系统开发中原封不动“as is”利用第三方构件的情况并不多,或多或少的存在语义失配,下面利用构件语义组分析构件语义失配类别。假设Csi ,Csj CS; a A; r R。
Csi - Csj =[Φ]&& Csj - Csi =[Φ] Csi = Csj ; (2)
Csi - Csj = Csi && Csj - Csi = Csj Csi Csj ; (3)
Csi Csj !=[Φ]&& Csi – Csj =[Φ] Csi > Csj; (4)
Csi Csj !=[Φ]&& Csi – Csj! =[Φ]&& Csj – Csi! =[Φ] Csi > Csj&& Csj > Csi. (5)
如果需求构件与待选构件满足(2)式即需求构件与待选构件是语义层等效,语义层等效具有传递性、对称性、自反性,语义层适配将变得简单;最坏的情况构件与待选构件满足(3)式即需求构件与待选构件语义层正交的,需求构件将重新开发,构件化软件又回到以前软件开发的旧路上;然而现实中(4)(5)式情况是最常见,最需要解决的失配情况。
3 构件语义动态适配模型的建立
构件语义适配是建立在构件语义失配分类前提之下的,为了实现构件语义适配,我们创建了构件语义适配模型,如图1所示。
图1 构件语义适配模型
4 构件语义动态适配在信息系统中的应用
为了更具体的说明构件语义动态适配在信息系统开发中的现实意义,本文结合信息系统后台数据库操作构件(CreateSQL),说明构件语义动态适配在信息系统中具体应用过程,如图2所示。
a)需求构件 b)待选构件
图2 CreateSQL构件描述
首先,根据图2的描述得到Req构件和Pro构件语义即Csr和Csp,例如,Csr=
[
表1 构件及适配部分代码
构件及适配部分代码,表1的第一行是原Pro构件的代码,表格第二行左右两列分别表示引入的接口和实现即Aspect1;通过对Pro构件时间属性操作发现GetInsertStr(objEntity)与Req构件规格说明中时间格式不一致,故CsrCsp!=[Φ]&&Csr–Csp!=[Φ]&&Csp –Csr!=[Φ]Csr>Csp&&Csp>Csr,得到构件语义失配类别:语义层相互部分包容,为了实现时间格式不一致,我们创建Aspect2哑功能,如图3所示:
图3 Aspect2主要代码
Aspect2主要代码,利用SpringAOP工具将Aspect1和Aspect织入到Pro构件中,利用动态切入点在运行时捕捉Aspect1,Aspect2,通过Advice通知完成相关逻辑处理;最后,修改Pro在规格说明中的描述,完成整个构件的适配过程。
5 结束语
本文通过面向方面的方法,在构件运行时完成构件具体功能适配,提出了构件语义组的概念,利用构件语义组得到构件在语义层失配的四种类别,并建立了构件语义适配模型,最后,将构件语义动态适配的方法成功应用在信息系统开发中,以此降低开发成本,缩短开发周期,并且增强了系统的灵活性和可维护性。
参考文献:
[1]张友生.基于体系结构的软件开发模型[J].计算机工程与应用,2004(34)
[2]赵硕.构件的形式化描述及其组合研究[D].浙江: 浙江师范大学,2012.