面向服务的构件可信演化策略
2016-05-09蔡文华徐洪珍
蔡文华 徐洪珍
面向服务的构件可信演化策略
蔡文华 徐洪珍*
(东华理工大学信息工程学院 江西 南昌 330013)
针对目前软件动态演化研究很少考虑可信方面的不足,以面向服务的构件为对象,提出一种构件可信演化策略。该策略包括构件可信演化的相关定义、推理规则、计算公式和声望更新模型。在演化过程中,该策略根据构件提供的各种服务的可信性计算出构件的声望值,由构件的声望值向导构件的可信演化,并根据实际演化情况动态更新构件的声望值。最后,通过案例进行分析,验证了该策略的有效性。
构件 动态演化 服务 可信 声望
0 引 言
随着互联网技术和软件技术的不断发展,特别是以Web服务为代表的技术的发展与成熟,人们在开发软件系统中关注的重点已经从各个功能的实现逐渐转移到如何将实现具体功能的各种服务组装在一起,形成一个完整的系统。面向服务作为一种新兴的软件开发范型,已经被工业界和学术界广为接受[1]。使用这种范型开发的软件系统以互联网上分布的各种服务为基本单元,通过静态或者动态地发布服务,以服务完成系统的业务功能。
然而,由于软件本身和软件环境的复杂性日益增加,面向服务的软件系统往往具有协同性、动态性和不确定性。当面对协同性、动态性和不确定性时,面向服务的软件更需要不断演化才能增强生命力,才能适者生存。然而面向服务的软件系统的演化也面临着很多挑战,特别是软件演化的可信性保障成为当前一个重要的研究问题[2]。软件演化可信是指软件演化过程中的行为及结果符合人们的预期设想,满足用户的需求[3]。Internet的开放性、分布自治性和无中心控制,以及软件系统本身的异构性和动态性等特征也进一步增加了保障面向服务软件演化可信性的难度。
虽然目前的研究者在面向服务的软件系统演化方面做了一些工作:比如李长云等提出一种使用反射技术,由相关联的服务组成的软件模型SASM[4],SASM使用面向服务的架构实现软件动态演化;曾晋等提出一种基于服务组合的软件动态演化机制,通过组合服务的动态演化机制保障网络化软件的可信性[5];马晓星等提出一种面向服务的动态协同架构[6],架构中引入内置的运行时体系结构对象来解耦系统中的每个构件服务,从体系结构的角度来重新解释服务部件之间的引用和交互。通过这种方法,将体系结构的抽象概念具体化为可直接操控的对象,再利用面向对象程序设计语言的继承和多态等特性,导出一种面向体系结构的系统动态演化技术。以上方法都是从软件系统演化的技术或操作入手,建模或描述面向服务的软件系统演化,而很少考虑软件演化过程中构件的可信性问题。
本文在前期工作基础上[7-9],以面向服务的构件为对象,提出一种新的面向服务的构件可信演化策略。通过综合考虑构件服务的信任值以及信任权重,得出构件的声望值,把声望值作为软件可信演化的主要依据。构件间交互演化结束后,通过服务的完成情况,动态更新构件服务的信任值。信任值的改变,进一步会影响到声望值的变化,从而实现了声望值的动态更新。最后通过案例进行分析,验证了该策略的有效性。
1 面向服务的构件可信演化策略
在面向服务的软件系统中,每个构件都可以通过某种方式,与其他的构件关联,并提供相应的服务;同时也接受其他构件提供的服务。该基于服务的构件模型如图1所示(以三个构件为例)。
图1 构件服务模型
在上述模型中,构件a为构件b提供了sa1到san的n个服务,同时构件b也为构件a提供了sb1到sbn的n个服务,b与c依此类似。内部归约为构件演化约束条件,此处不作考虑。构件b可以调用构件a、c中的任一服务,它们之间的关系是服务与被服务的关系,其他构件的关系依此类推。在此模型基础上,提出一种面向服务的构件可信演化策略,以构件提供的服务为对象,建立面向服务的构件可信演化策略。首先建立如下定义:
定义1 构件是一个实体,能提供相关服务,记为Component(a),简记为a。
定义2 构件a需要其他构件提供服务s,用Need(a,s)表示。a需要其他构件提供所有服务的集合,用NEEDa={s1,s2,…,sn|Need(a,si),i∈[1,…,n]}表示。
定义3 构件a能提供的服务s,记为Offer(a,s)。a提供所有服务集合记为OFFERa={s1,s2…,sn|Offer(a,si),i∈[1,…,n]}。如图1中,a提供的服务集合为OFFERa={sa1,…,san|Offer(a,sai),i∈[1,2,…,n]}。
定义4 构件a向构件b承诺提供的服务s,记为Promise(a,b,s)。
定义5 构件a为构件b完成了某项服务s,记为Done(a,b,s)。
定义6 构件a信赖构件b提供的服务s,记为Rely(a,b,s)。
定义8 构件a的可信性以声望值表示,记为Reputation(a),简写为re(a)。在面向服务的软件系统演化过程中,声望值是作为其他构件判断是否选择此构件进行演化的重要参考值。声望值的计算方法是以其他构件对此构件的信任值为基础,进行加权平均计算,具体计算方法如下:
re(a) =αtr(b,a)+βtr(c,a)
根据以上定义,建立面向服务的构件可信演化推理规则如下:
规则1 需求规则
① Need(a,s)⟹Promise(bi,a,s)∧Offer(bi,s)
② Need(a,s)⟹Promise(bi,a,s)∧Offer(bi,s)
该规则①表示,如果构件a需要某种服务s,则在面向服务的软件中至少有一个构件bi包含服务s,且承诺为之提供服务s;②表示,如果构件a需要某种服务s,则在面向服务的软件中有一个构件bi在不能提供服务s的情况下,仍承诺向构件a提供服务s;“∧”表示逻辑符号与,“”表示逻辑符号非。
规则2 执行规则
① Offer(b,s)∧Promise(b,a,s)⟹Done(b,a,s)
其中,①表示,如果构件b能提供服务s,且承诺向构件a提供服务s,则在正常情况下,b会为a完成服务s;②表示,如果b不能提供服务s,却仍向a承诺提供服务s,则显然b不能为a完成服务s,
规则3 信赖规则
① Done(b,a,s)⟹Rely(a,b,s)
其中,①表示,如果构件b向构件a完成了服务s,则a信赖b提供的服务s;②表示,b向a没有最终完成服务s,则a不信赖b提供的服务s。
规则4 信任规则
①Rely(a,b,s)⟹↑Trust(a,b,s)⟹↑Trust(a,b)
其中,①表示,如果构件a信赖构件b提供的服务s,则a对b提供的服务s的信任值上升,从而a对b的信任值上升;②表示,如果a不信赖b提供的服务s,则a对b提供的服务s的信任值下降,从而a对b的信任值下降。本文约定,每次信赖关系影响构件服务的信任值上升或下降的幅度为1。
规则5 声望规则
① ↑Trust(a,b)⟹↑Reputation(b)
② ↓Trust(a,b)⟹↓Reputation(b)
其中,①表示,如果构件a对构件b的信任值上升,则b在演化过程中的声望值上升;②表示,如果a对b的信任值下降,则b在演化过程中的声望值下降。
最后,根据上述五个演化推理规则,建立面向服务的软件演化过程中构件声望值的更新模型如图2所示。
图2 声望值更新模型
图2的模型说明,在软件演化过程中,任一构件提出服务需求的时候,由相邻的另一构件承诺向其提供服务;根据构件承诺的服务的完成情况与否,决定对此构件的信赖与否;而信赖的结果影响着构件的信任值,并最终影响着构件的声望值大小。整个软件演化过程中,影响声望值的决定因素在于面向服务的完成情况与否,而决定构件是否参与演化的决定因素,则取决于构件的声望值的大小。
根据该模型,在面向服务的软件演化过程中,如果某构件事先对另一构件承诺提供某服务,则根据该服务的实际完成情况,决定对该构件服务是否信赖。如果信赖,则该构件服务的信任值增加1(如果信任值超过4,则仍然保持为4);如果不信赖,则该构件服务的信任值减少1(如果信任值少于0,则仍然保持为0)。通过对构件服务信任值的调整,根据构件间信任值和构件声望值的计算公式,相应更新构件间的信任值和构件的声望值。
在构件演化实现过程中,利用上述定义和推理规则,采用图3所示的构件自动演化策略,实现构件间的自动交互演化。
图3 构件自动演化策略
如图3所示,在软件系统中,如果某构件需要其他构件提供服务,则发出服务请求;相邻构件则对该服务请求进行应答,即是否承诺提供服务。发出服务请求的构件则在所有承诺提供服务的构件中,选择出声望值最高的构件进行交互演化;然后根据服务的演化结果做进一步处理,若演化成功,则直接调用声望值更新模型,并将更新后的声望值传回给构件,动态更新相关构件的声望值; 若演化不成功,则在更新相关构件的声望值后,重新进行上述过程。更新后的构件声望值将为后续构件演化提供选择参考依据。
在软件演化过程当中,声望值是构件整体信誉的表现。声望值的高低,代表着其他构件对它的信任水平。声望值高的,代表着它在整个软件系统中,是值得相信的,选择与之演化、服务的质量和执行可以得到保障;相反,声望值低的构件,表示它在以往的演化过程当中,存在着不当的行为,选择与之演化,则服务的执行和质量得不到保障。为保证演化正确性,在软件演化过程当中,应尽量选择声望值高的构件进行演化。具体演化过程可利用关联矩阵进行实现[9,10],本文限于篇幅,不再描述。
2 案例分析
下面采用一个面向服务的图书借阅系统来演示上述演化规则过程。设有一个面向服务的图书借阅系统,实现了高校间图书资源的共享服务。例如,各高校通过该系统,对合作的高校学生开放图书借阅等服务,同时,为方便学生查询,该系统还提供了网上查询服务等。
通过以上场景分析,根据声望值更新模型可知可得图书馆A的声望值的动态更新过程如下:
1) x需要借阅图书,故提交了服务s请求,A、B同时接受了服务请求。
由规则1可以得出:
2) A因为最后一本书已经在x来借之前,被其他同学外借出,则不能借书给x。
由规则2可以得出:
通过规则3可以得出:
由规则4可以得出:
5) x对A的信任值下降,导致A的声望值下降。
由规则5可以得出:↓tr(x,A)⟹↓re(A),根据面向服务的软件演化过程中构件声望值的计算方法可知:re(A)=tr(x,A)=1,即此时图书馆A的声望值动态更新为1。
同时,对于图书馆B而言,因为学生x自身的原因,未能及时到图书馆B办理借阅手续,故B认为x不可信赖,从而B对x的信任值下降,进而影响x的声望值,x的声望值的具体更新过程如下:
1) 由规则2可知:
2) 由规则3可知:
3) 由规则4可知:
根据面向服务的软件演化过程中构件信任值的计算方法可知:tr(B,x,s)=2-1=1,且tr(B,x)=tr(B,x,s)=1。
4) 由规则5可知:
↓tr(B,x)⟹↓re(x),根据面向服务的软件演化过程中构件声望值的计算方法可知:re(x)=0.5×tr(A,x)+0.5×tr(B,x)=0.5×2+0.5×1=1.5,即此时学生x的声望值动态更新为1。
3 结 语
面向服务的软件已经成为目前软件开发的主流。然而,由于技术的发展和环境的变化,面向服务的软件往往需要演化才能增强竞争力。针对目前面向服务的软件演化很少考虑构件的可信性问题,提出了一种面向服务的构件可信演化策略。该策略综合考虑构件服务及构件间的信任值,得出构件在演化过程中的声望值。然后在软件演化过程中,根据声望值的大小有条件地选择构件进行交互演化,并根据演化结果,动态地调整声望值,克服了以往软件演化过程中,没有考虑可信性进行演化的问题。在下一步的工作中,将从推荐信任关系方面,研究两个非直接相连构件交互演化的信任问题,以及可信交互演化的具体实现过程等。
[1] 王立军,白晓颖,陈以农,等.数据驱动的SOA应用可靠性动态评估[J].清华大学学报:自然科学版,2009,49(10):158-162.
[2] Manling Zhu,Lin Liu,Zhi Jin.A Social Trust Model for Services[C]//AWRE 2006 Adelaide,Australia,2006:72-80.
[3] 丁博,王怀民,史殿习,等.一种支持软件可信演化的构件模型[J].软件学报,2011,22(1):17-27.
[4] 李长云,李莹,吴健,等.一个面向服务的支持动态演化的软件模型[J].计算机学报,2006,29(7):1020-1028.
[5] 曾晋,孙海龙,刘旭东,等.基于服务组合的可信软件动态演化机制[J].软件学报,2010,21(2):261-276.
[6] 马晓星,余萍,陶先平,等.一种面向服务的动态协同架构及其支撑平台[J].计算机学报,2005,28(4):467-477.
[7] 徐洪珍,曾国荪.基于超图文法的软件体系结构动态演化[J].同济大学学报(自然科学版),2011,39(5):745-750.
[8] 徐洪珍,曾国荪,陈波.软件体系结构动态演化的条件超图文法及分析[J].软件学报,2011,22(6):1210-1223.
[9] 陈利平,徐洪珍.基于关联矩阵的软件体系结构动态演化及其实现[J].计算机应用研究,2013,30(9):2726-2729.
[10] 王映辉,张世琨,刘瑜,等.基于可达矩阵的软件体系结构演化波及效应分析[J].软件学报,2004,15(8):1107-1115.
CREDIBLE EVOLUTION STRATEGY OF SERVICE-ORIENTED COMPONENTS
Cai Wenhua Xu Hongzhen*
(SchoolofInformationEngineering,EastChinaInstituteofTechnology,Nanchang330013,Jiangxi,China)
Focusing on the deficiency of current studies on software dynamic evolution that the credibility are rarely considered, we presented a component credible evolution strategy by taking the service-oriented components as the object. The strategy includes corresponding definitions, inference rules, calculation formulas and a reputation updating model of component credible evolution. During the component evolution process, the strategy calculates the reputation value of component based on the credibilities of various services offered by component, guides the component credible evolution by its reputation value, and dynamically updates the reputation value according to actual evolution situation. In end of the paper, we verified the effectiveness of the proposed strategy through case analysis.
Component Dynamic evolution Service Credible Reputation
2014-11-03。国家自然科学基金项目(61262001);江西省青年科学家培养对象计划项目(20142BCB23017);江西省发明专利产业化技术示范项目(20143BBM26115);江西省自然科学基金项目(20114BAB201043);江西省科技支撑计划项目(20112BBE50048);江西省教育厅科技计划项目(GJJ12382)。蔡文华,硕士生,主研领域:软件体系结构动态演化。徐洪珍,副教授。
TP311
A
10.3969/j.issn.1000-386x.2016.04.003