蘇喜紅,劉宏偉,吳智博,楊孝宗,左德承
(哈爾濱工業大學計算機科學與技術學院,150001哈爾濱)
隨著分布式軟件與網絡的快速發展,軟件部署成為整個軟件生命過程中的一個獨立階段[1].軟件工程研究者和實踐者[2]通過利用軟件架構(Software Architecture,SA)的原則來開發軟件系統,已經成功地處理軟件系統復雜性的增長.
架構風格決定了在風格實例中可以使用的連接器與組件的詞匯表,限制架構元素的功能和角色、以及可以存在的架構元素之間關系的一組架構約束[3-5].Wang[6]根據組件的可靠性、操作剖面和軟件架構提出了一個架構層次的軟件可靠性評估模型,該模型分析了調用和返回風格、容錯風格、并行風格的軟件可靠性,但是該方法只分析單個架構風格的可靠性.然而,在大規模的復雜系統中,往往存在多種架構風格來滿足不同性能需求.例如,對于一個用J2EE開發的應用程序,可能既是“3層C/S風格”,又是“面向對象風格”,然而這種風格的混合有可能導致風格的適配問題[7].而風格的集成是分別把風格應用到軟件的不同組成部分上,不會導致風格適配問題.
另外,現有的部署階段可靠性研究主要為設計組件重部署算法[8]、組件復制算法[9]等,缺乏對部署階段的集成架構風格的可靠性分析.因此,本文通過連接器的方式,對軟件部署階段的集成架構風格進行建模.分析部署階段的組件失效原因,對不同架構風格的軟件組件可靠性進行建模,并分析集成架構風格的組件可靠性和系統可靠性.
通過連接器方法將多個架構風格集成在一個架構結構中.軟件組件間通過不同架構風格的連接器來進行交互.設系統包括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 集成架構風格的部署架構圖
軟件組件部署到主機節點上,當軟件組件執行時,軟件組件的失效原因主要有兩種情況: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處于未執行狀態時的可靠性值,近似為部署到的主機節點的可靠性值.
實驗系統包括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.
隨著系統運行時間增加,不同架構風格的軟件組件可靠性變化不確定,這里以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 系統可靠性
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.