蘇喜紅,劉宏偉,吳智博,楊孝宗,左德承
(哈爾濱工業(yè)大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,150001哈爾濱)
隨著分布式軟件與網(wǎng)絡(luò)的快速發(fā)展,軟件部署成為整個(gè)軟件生命過(guò)程中的一個(gè)獨(dú)立階段[1].軟件工程研究者和實(shí)踐者[2]通過(guò)利用軟件架構(gòu)(Software Architecture,SA)的原則來(lái)開發(fā)軟件系統(tǒng),已經(jīng)成功地處理軟件系統(tǒng)復(fù)雜性的增長(zhǎng).
架構(gòu)風(fēng)格決定了在風(fēng)格實(shí)例中可以使用的連接器與組件的詞匯表,限制架構(gòu)元素的功能和角色、以及可以存在的架構(gòu)元素之間關(guān)系的一組架構(gòu)約束[3-5].Wang[6]根據(jù)組件的可靠性、操作剖面和軟件架構(gòu)提出了一個(gè)架構(gòu)層次的軟件可靠性評(píng)估模型,該模型分析了調(diào)用和返回風(fēng)格、容錯(cuò)風(fēng)格、并行風(fēng)格的軟件可靠性,但是該方法只分析單個(gè)架構(gòu)風(fēng)格的可靠性.然而,在大規(guī)模的復(fù)雜系統(tǒng)中,往往存在多種架構(gòu)風(fēng)格來(lái)滿足不同性能需求.例如,對(duì)于一個(gè)用J2EE開發(fā)的應(yīng)用程序,可能既是“3層C/S風(fēng)格”,又是“面向?qū)ο箫L(fēng)格”,然而這種風(fēng)格的混合有可能導(dǎo)致風(fēng)格的適配問題[7].而風(fēng)格的集成是分別把風(fēng)格應(yīng)用到軟件的不同組成部分上,不會(huì)導(dǎo)致風(fēng)格適配問題.
另外,現(xiàn)有的部署階段可靠性研究主要為設(shè)計(jì)組件重部署算法[8]、組件復(fù)制算法[9]等,缺乏對(duì)部署階段的集成架構(gòu)風(fēng)格的可靠性分析.因此,本文通過(guò)連接器的方式,對(duì)軟件部署階段的集成架構(gòu)風(fēng)格進(jìn)行建模.分析部署階段的組件失效原因,對(duì)不同架構(gòu)風(fēng)格的軟件組件可靠性進(jìn)行建模,并分析集成架構(gòu)風(fēng)格的組件可靠性和系統(tǒng)可靠性.
通過(guò)連接器方法將多個(gè)架構(gòu)風(fēng)格集成在一個(gè)架構(gòu)結(jié)構(gòu)中.軟件組件間通過(guò)不同架構(gòu)風(fēng)格的連接器來(lái)進(jìn)行交互.設(shè)系統(tǒng)包括n個(gè)軟件組件C={C1,C2,…,Cn},m個(gè)主機(jī)節(jié)點(diǎn)H={H1,H2,…,Hm},k個(gè)連接器L={L1,L2,…,Lk}和s種架構(gòu)風(fēng)格A={A1,A2,…,As},如圖1所示.n個(gè)軟件組件被分為m個(gè)軟件組件子集合,CS1,CS2,…,CSm,其中CSi為第i個(gè)軟件組件子集合.CS1={C11,C12,…,C1i},…,CSm={Cm1,Cm2,…,Cml},并且C=∪iCSi.k個(gè)連接器被分為m個(gè)連接器的子集合,LS1,LS2,…,LSm,其中LSi為第i個(gè)連接器子集合.LS1={Lx,…,Ly},…,LSm={Li,…,Lj},并且L=∪iLSi,連接器的可靠性研究超出了本文范圍,假定連接器是完全可靠的.
圖1 集成架構(gòu)風(fēng)格的部署架構(gòu)圖
軟件組件部署到主機(jī)節(jié)點(diǎn)上,當(dāng)軟件組件執(zhí)行時(shí),軟件組件的失效原因主要有兩種情況:1)軟件組件部署到的主機(jī)節(jié)點(diǎn)失效和軟件組件內(nèi)部引起的組件失效;2)當(dāng)軟件組件未執(zhí)行時(shí),如果軟件組件部署到的主機(jī)節(jié)點(diǎn)失效,那么軟件組件則不能提供服務(wù)或者不能請(qǐng)求服務(wù),此時(shí)軟件組件被認(rèn)為是失效.這時(shí),軟件組件的失效率近似為主機(jī)節(jié)點(diǎn)的失效率.例如,假定軟件組件軟件在不同時(shí)間單元下的可靠性階段性變化如圖2所示.其中,在3、5、6和9 min,軟件組件處于未執(zhí)行狀態(tài).隨著系統(tǒng)運(yùn)行時(shí)間的增加,主機(jī)節(jié)點(diǎn)的某些部件有損耗,其可靠性略微降低.在1、2、4、7、8和10 min,軟件組件處于執(zhí)行狀態(tài).
圖2 不同時(shí)間單元單個(gè)軟件組件可靠性值
集成架構(gòu)風(fēng)格系統(tǒng)既有同構(gòu)的軟件組件,也有異構(gòu)的軟件組件.同構(gòu)軟件組件是傳統(tǒng)的完全由同一組織并且使用同一種技術(shù)來(lái)開發(fā)的軟件組件.異構(gòu)的軟件組件指包括COTS(commercial offthe-shelf)組件、Services組件等第三方開發(fā)的多種異構(gòu)的軟件組件,這些軟件組件可能由不同的提供者并且使用不同的技術(shù)來(lái)開發(fā)完成的[10].因此,所有軟件組件的失效行為服從同一分布的假設(shè)不合理.對(duì)于存在異構(gòu)軟件組件的系統(tǒng),其軟件組件失效行為用不同的函數(shù)分布來(lái)建模為
式中:f(t)為軟件組件的可靠性為隨時(shí)間變化的某一函數(shù)分布,如指數(shù)分布、威布爾分布等;ψi為軟件組件Ci處于未執(zhí)行狀態(tài)時(shí)的可靠性值,近似為部署到的主機(jī)節(jié)點(diǎn)的可靠性值.
實(shí)驗(yàn)系統(tǒng)包括CS、PF和C2這3種架構(gòu)風(fēng)格、5個(gè)主機(jī)節(jié)點(diǎn)H={H1,H2,H3,H4,H5}和17個(gè)軟件組件C={C1,C2,…,C17}.軟件組件間通過(guò)不同架構(gòu)風(fēng)格的連接器進(jìn)行交互,這里認(rèn)為連接器是完全可靠的.
隨機(jī)產(chǎn)生17個(gè)軟件組件在5個(gè)主機(jī)節(jié)點(diǎn)上的部署架構(gòu),軟件組件C4和C5部署到H1上,C1、C2和C3部署到H2上,C6、C7和C14部署到H3上,C12、C13、C15和C16部署到H4上,C8、C9、C10、C11和C17部署到H5上.這些軟件組件類型如表1所示.
17個(gè)軟件組件的處于執(zhí)行狀態(tài)和未執(zhí)行狀態(tài)的時(shí)間單元如表2所示.軟件組件處于執(zhí)行狀態(tài),用“√”表示,軟件組件處于未執(zhí)行狀態(tài),用“×”表示.
表1 軟件組件類型
表2 不同時(shí)間單元的軟件組件狀態(tài)
PF風(fēng)格的軟件組件可靠性用指數(shù)分布來(lái)建模.其中:如果軟件組件Ci為pipe組件,則λi=0.0004;如果組件Ci為filter組件,則λi=0.000 2.
CS和C2架構(gòu)風(fēng)格的軟件組件可靠性用威布爾分布來(lái)建模為
βi可由式(2)求出:
在式(1),(2)中,根據(jù)文獻(xiàn)[11],對(duì)于包含20個(gè)軟件組件的系統(tǒng),如果用威布爾分布建模軟件組件的可靠性,則η=2 917,β0=1.29.τi為在同一架構(gòu)風(fēng)格的不同類型的軟件組件對(duì)系統(tǒng)可靠性的影響,如果組件Ci是C2風(fēng)格的軟件組件,則τi=0.003 1;如果Ci是server組件,則τi=0.007 225;如果Ci是client組件,則τi=0.004 725.
隨著系統(tǒng)運(yùn)行時(shí)間增加,不同架構(gòu)風(fēng)格的軟件組件可靠性變化不確定,這里以C13和C2為例.C13為pipe組件,其可靠性變化情況如圖3所示.C2為server組件,其可靠性變化情況如圖4所示.
圖3 C13的可靠性變化
圖4 C2的可靠性變化
由圖3和圖4可知軟件組件在哪些時(shí)間單元處于執(zhí)行狀態(tài)和未執(zhí)行狀態(tài).隨著系統(tǒng)運(yùn)行時(shí)間的增加,軟件組件的可靠性總體趨勢(shì)是在下降.當(dāng)系統(tǒng)處于未執(zhí)行狀態(tài)時(shí),軟件組件的可靠性會(huì)增加.
在特定的時(shí)間下,各個(gè)軟件組件可靠性的變化情況如圖5所示.選取的時(shí)間為系統(tǒng)運(yùn)行到t=30、60、90、100 min.其中,t=a(a為呈)為系統(tǒng)運(yùn)行時(shí)間為a時(shí)各軟件組件的可靠性.
圖5 不同時(shí)間下各組件的可靠性
從圖5可以看出,隨著系統(tǒng)運(yùn)行時(shí)間的增加,軟件組件可靠性變化不確定.當(dāng)系統(tǒng)運(yùn)行到t=30 min時(shí),各軟件組件的可靠性差別并不很明顯,系統(tǒng)中沒有較弱的點(diǎn).當(dāng)系統(tǒng)運(yùn)行到t=90 min時(shí),軟件組件C7和C15的可靠性變得很低,成為系統(tǒng)中最弱的兩個(gè)點(diǎn).對(duì)于軟件組件C7,在t=60、90 min時(shí),組件的可靠性比較高,C7應(yīng)處于未執(zhí)行狀態(tài),此時(shí)組件的可靠性為主機(jī)節(jié)點(diǎn)H3的可靠性值.但是由于在其他時(shí)間段內(nèi)處于執(zhí)行狀態(tài)時(shí)情況比較多,導(dǎo)致C7下降明顯.對(duì)于軟件組件C16,系統(tǒng)執(zhí)行到t=30 min時(shí),C16處于未執(zhí)行狀態(tài),而在t=60、90、100 min時(shí),C16均處于執(zhí)行狀態(tài),其可靠性逐漸下降.
系統(tǒng)可靠性變化情況如圖6所示,隨著系統(tǒng)運(yùn)行時(shí)間的增加,系統(tǒng)可靠性總體趨勢(shì)是下降的.在t=40、60、80 min時(shí),系統(tǒng)可靠性有所提高,可能的原因是處于未執(zhí)行狀態(tài)的軟件組件數(shù)目增多,可靠性高的軟件組件數(shù)量增加,從而使系統(tǒng)可靠性增加.在t=[60,80]min內(nèi),系統(tǒng)可靠性波動(dòng)比較大,尤其在t=70 min時(shí),系統(tǒng)可靠性很低,可能的原因是處于執(zhí)行狀態(tài)的軟件組件數(shù)目增多,或者某些軟件組件已失效.因此,要重點(diǎn)分析系統(tǒng)可靠性波動(dòng)比較大的時(shí)間段內(nèi)的可靠降低的原因.在t=70 min時(shí),可以考慮通過(guò)軟件組件復(fù)制或者系統(tǒng)重部署來(lái)提高可靠性,從而使系統(tǒng)更穩(wěn)定地運(yùn)行.
圖6 系統(tǒng)可靠性
1)通過(guò)連接器的方式,對(duì)部署階段的集成架構(gòu)風(fēng)格進(jìn)行建模;
2)分析集成架構(gòu)風(fēng)格的組件失效原因,對(duì)不同架構(gòu)風(fēng)格的軟件組件可靠性進(jìn)行建模;
3)在系統(tǒng)運(yùn)行一段時(shí)間內(nèi),分析集成架構(gòu)風(fēng)格中的軟件組件可靠性和系統(tǒng)可靠性.
[1]梅宏,申峻嶸.軟件體系結(jié)構(gòu)研究進(jìn)展[J].軟件學(xué)報(bào),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.架構(gòu)風(fēng)格與基于網(wǎng)絡(luò)的軟件架構(gòu)設(shè)計(jì)[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]楊芙清,梅宏.構(gòu)件化軟件設(shè)計(jì)與實(shí)現(xiàn)[M].北京:清華大學(xué)出版社,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]張弛.異構(gòu)組件互操作技術(shù)研究[M].合肥:中國(guó)科學(xué)技術(shù)大學(xué)出版社,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.