集成架构风格的SA软件部署可靠性
2012-09-02苏喜红刘宏伟吴智博杨孝宗左德承
苏喜红,刘宏伟,吴智博,杨孝宗,左德承
(哈尔滨工业大学计算机科学与技术学院,150001哈尔滨)
随着分布式软件与网络的快速发展,软件部署成为整个软件生命过程中的一个独立阶段[1].软件工程研究者和实践者[2]通过利用软件架构(Software Architecture,SA)的原则来开发软件系统,已经成功地处理软件系统复杂性的增长.
架构风格决定了在风格实例中可以使用的连接器与组件的词汇表,限制架构元素的功能和角色、以及可以存在的架构元素之间关系的一组架构约束[3-5].Wang[6]根据组件的可靠性、操作剖面和软件架构提出了一个架构层次的软件可靠性评估模型,该模型分析了调用和返回风格、容错风格、并行风格的软件可靠性,但是该方法只分析单个架构风格的可靠性.然而,在大规模的复杂系统中,往往存在多种架构风格来满足不同性能需求.例如,对于一个用J2EE开发的应用程序,可能既是“3层C/S风格”,又是“面向对象风格”,然而这种风格的混合有可能导致风格的适配问题[7].而风格的集成是分别把风格应用到软件的不同组成部分上,不会导致风格适配问题.
另外,现有的部署阶段可靠性研究主要为设计组件重部署算法[8]、组件复制算法[9]等,缺乏对部署阶段的集成架构风格的可靠性分析.因此,本文通过连接器的方式,对软件部署阶段的集成架构风格进行建模.分析部署阶段的组件失效原因,对不同架构风格的软件组件可靠性进行建模,并分析集成架构风格的组件可靠性和系统可靠性.
1 集成架构风格建模
通过连接器方法将多个架构风格集成在一个架构结构中.软件组件间通过不同架构风格的连接器来进行交互.设系统包括n个软件组件C={C1,C2,…,Cn},m个主机节点H={H1,H2,…,Hm},k个连接器L={L1,L2,…,Lk}和s种架构风格A={A1,A2,…,As},如图1所示.n个软件组件被分为m个软件组件子集合,CS1,CS2,…,CSm,其中CSi为第i个软件组件子集合.CS1={C11,C12,…,C1i},…,CSm={Cm1,Cm2,…,Cml},并且C=∪iCSi.k个连接器被分为m个连接器的子集合,LS1,LS2,…,LSm,其中LSi为第i个连接器子集合.LS1={Lx,…,Ly},…,LSm={Li,…,Lj},并且L=∪iLSi,连接器的可靠性研究超出了本文范围,假定连接器是完全可靠的.
图1 集成架构风格的部署架构图
2 软件组件可靠性建模
软件组件部署到主机节点上,当软件组件执行时,软件组件的失效原因主要有两种情况:1)软件组件部署到的主机节点失效和软件组件内部引起的组件失效;2)当软件组件未执行时,如果软件组件部署到的主机节点失效,那么软件组件则不能提供服务或者不能请求服务,此时软件组件被认为是失效.这时,软件组件的失效率近似为主机节点的失效率.例如,假定软件组件软件在不同时间单元下的可靠性阶段性变化如图2所示.其中,在3、5、6和9 min,软件组件处于未执行状态.随着系统运行时间的增加,主机节点的某些部件有损耗,其可靠性略微降低.在1、2、4、7、8和10 min,软件组件处于执行状态.
图2 不同时间单元单个软件组件可靠性值
集成架构风格系统既有同构的软件组件,也有异构的软件组件.同构软件组件是传统的完全由同一组织并且使用同一种技术来开发的软件组件.异构的软件组件指包括COTS(commercial offthe-shelf)组件、Services组件等第三方开发的多种异构的软件组件,这些软件组件可能由不同的提供者并且使用不同的技术来开发完成的[10].因此,所有软件组件的失效行为服从同一分布的假设不合理.对于存在异构软件组件的系统,其软件组件失效行为用不同的函数分布来建模为
式中:f(t)为软件组件的可靠性为随时间变化的某一函数分布,如指数分布、威布尔分布等;ψi为软件组件Ci处于未执行状态时的可靠性值,近似为部署到的主机节点的可靠性值.
3 实验及结果分析
3.1 实验输入
实验系统包括CS、PF和C2这3种架构风格、5个主机节点H={H1,H2,H3,H4,H5}和17个软件组件C={C1,C2,…,C17}.软件组件间通过不同架构风格的连接器进行交互,这里认为连接器是完全可靠的.
随机产生17个软件组件在5个主机节点上的部署架构,软件组件C4和C5部署到H1上,C1、C2和C3部署到H2上,C6、C7和C14部署到H3上,C12、C13、C15和C16部署到H4上,C8、C9、C10、C11和C17部署到H5上.这些软件组件类型如表1所示.
17个软件组件的处于执行状态和未执行状态的时间单元如表2所示.软件组件处于执行状态,用“√”表示,软件组件处于未执行状态,用“×”表示.
表1 软件组件类型
表2 不同时间单元的软件组件状态
PF风格的软件组件可靠性用指数分布来建模.其中:如果软件组件Ci为pipe组件,则λi=0.0004;如果组件Ci为filter组件,则λi=0.000 2.
CS和C2架构风格的软件组件可靠性用威布尔分布来建模为
βi可由式(2)求出:
在式(1),(2)中,根据文献[11],对于包含20个软件组件的系统,如果用威布尔分布建模软件组件的可靠性,则η=2 917,β0=1.29.τi为在同一架构风格的不同类型的软件组件对系统可靠性的影响,如果组件Ci是C2风格的软件组件,则τi=0.003 1;如果Ci是server组件,则τi=0.007 225;如果Ci是client组件,则τi=0.004 725.
3.2 实验结果分析
随着系统运行时间增加,不同架构风格的软件组件可靠性变化不确定,这里以C13和C2为例.C13为pipe组件,其可靠性变化情况如图3所示.C2为server组件,其可靠性变化情况如图4所示.
图3 C13的可靠性变化
图4 C2的可靠性变化
由图3和图4可知软件组件在哪些时间单元处于执行状态和未执行状态.随着系统运行时间的增加,软件组件的可靠性总体趋势是在下降.当系统处于未执行状态时,软件组件的可靠性会增加.
在特定的时间下,各个软件组件可靠性的变化情况如图5所示.选取的时间为系统运行到t=30、60、90、100 min.其中,t=a(a为呈)为系统运行时间为a时各软件组件的可靠性.
图5 不同时间下各组件的可靠性
从图5可以看出,随着系统运行时间的增加,软件组件可靠性变化不确定.当系统运行到t=30 min时,各软件组件的可靠性差别并不很明显,系统中没有较弱的点.当系统运行到t=90 min时,软件组件C7和C15的可靠性变得很低,成为系统中最弱的两个点.对于软件组件C7,在t=60、90 min时,组件的可靠性比较高,C7应处于未执行状态,此时组件的可靠性为主机节点H3的可靠性值.但是由于在其他时间段内处于执行状态时情况比较多,导致C7下降明显.对于软件组件C16,系统执行到t=30 min时,C16处于未执行状态,而在t=60、90、100 min时,C16均处于执行状态,其可靠性逐渐下降.
系统可靠性变化情况如图6所示,随着系统运行时间的增加,系统可靠性总体趋势是下降的.在t=40、60、80 min时,系统可靠性有所提高,可能的原因是处于未执行状态的软件组件数目增多,可靠性高的软件组件数量增加,从而使系统可靠性增加.在t=[60,80]min内,系统可靠性波动比较大,尤其在t=70 min时,系统可靠性很低,可能的原因是处于执行状态的软件组件数目增多,或者某些软件组件已失效.因此,要重点分析系统可靠性波动比较大的时间段内的可靠降低的原因.在t=70 min时,可以考虑通过软件组件复制或者系统重部署来提高可靠性,从而使系统更稳定地运行.
图6 系统可靠性
4 结论
1)通过连接器的方式,对部署阶段的集成架构风格进行建模;
2)分析集成架构风格的组件失效原因,对不同架构风格的软件组件可靠性进行建模;
3)在系统运行一段时间内,分析集成架构风格中的软件组件可靠性和系统可靠性.
[1]梅宏,申峻嵘.软件体系结构研究进展[J].软件学报,2006,17(6):1257-1275.
[2]MALEK S,KRISHNAN H R,SRINIVASAN J.Enhancing middleware support for architecture-based development through compositional weaving of styles[J].Journal of System and Software,2010,83(12):2513-2527.
[3]FIELDING R T.架构风格与基于网络的软件架构设计[D].李锟,廖志刚,刘丹,等译.Irvine:dissertation of University of California,2000:10-74.
[4]GARLAN D,ALLEN R,OCKERBLOOM J.Architectural mismatch:why reuse is so hard[J].IEEE Software,1995,12(6):17-26.
[5]SHAW M,CLEMENTS P.A field guide to boxology:preliminary classification of architectural styles for software systems[C]//Proceedings of the 21st Annual International Computer Software and Applications Conference(COMPSAC).Washington:IEEE Computer Society,1997:6-13.
[6]WANG W,WU Y,CHEN M.An architecture-based software reliability model[C]//Proceedings of Pacific Rim International Symposium on Dependable Computing.Hong Kong:IEEE Computer Society,1999:143-150.
[7]杨芙清,梅宏.构件化软件设计与实现[M].北京:清华大学出版社,2008:3-297.
[8]MIKIC-RAKIC M,MALEK S,MEDVIDOVIC N.Improving availability in large,distributed,componentbased systems via redeployment[J].Lecture Notes in Computer Science,2005,3798:83-98.
[9]POPESCU D.Framework for replica selection in faulttolerant distributed systems[R].Technical Report USCCSSE-2007-702,2007.http://csse.usc.edu/csse/TECHRPTS/2007/2007-main-exp.htm.
[10]张弛.异构组件互操作技术研究[M].合肥:中国科学技术大学出版社,2008:17-18.
[11]WANG P,JIN T.Complex systems reliability estimation considering uncertain component lifetime distributions[C]//Proceeding of the 8th International conference on Reliability,Maintainability and Safety(ICRMS).San Diego,CA:IEEE Computer Society,2009:20-24.