摘要:基于構件的軟件開發方法已經逐漸成為主流的軟件開發方法,因而構件式系統的可靠性評估問題受到了更多的關注。目前雖然已經取得了一定的成果,但還有許多不足。對當前構件式系統可靠性評估的研究現狀進行了深入分析,對基于路徑的、基于狀態的及累加方法進行了比較,闡述了這三種方法的優缺點;并進一步總結了構件可靠性的評估方法及構件間組裝代碼可靠性的評估方法現有的研究成果。最后展望了構件式系統可靠性評估方法進一步的研究方向。
關鍵詞:構件式系統; 可靠性評估; COTS; 組裝代碼; 構件
中圖分類號:TP311 文獻標識碼:A文章編號:2095-2163(2013)02-0020-06
0引言
可靠性評估是軟件可靠性工程的核心內容之一,是通過軟件系統的已有信息對系統可靠性進行有效評估和科學預測的技術方法的統稱。所得結果可用于指導軟件結構的設計,并進一步驗證軟件是否符合設計要求。可靠性評估是運用計算機技術、人工智能、概率論知識等一系列測評手段對軟件可靠性完成評估和預測的實踐過程,由此可對影響軟件可靠性的各種影響因素實施有效控制。目前,基于構件的軟件技術正蓬勃發展,這是對面向對象技術的進一步發展與改進。隨著面向對象開發技術的逐漸普及,基于構件的軟件開發方法也日益廣及各類應用。軟件開發人員可以直接使用已有的構件,通過構件組裝來完成系統的開發。其中,既可以是購買的商用構件(Commercial Off-The-Shelf ,COTS),也可以是自行開發實現的,因而每個構件的實現可能是完全異質的,由其而組合開發的系統也不可避免地趨向于越發復雜。迄今為止,基于構件的軟件開發技術還未臻成熟,仍然缺乏可用于構件及基于構件的軟件非功能技術(可靠性、性能)實現的系統有效方法。如何確保軟件的穩定質量,并準確評測基于構件的軟件系統(簡稱構件式系統)的可靠性,仍將是一項需要投入巨大、長期且復雜的艱巨任務。
本文通過對構件式系統評估方法和模型的分析比較,總結了現有的研究成果及存在的問題,并展望了進一步的研究方向和研究前景。
1系統的可靠性評估技術研究現狀
研究發展至今,已有上百種可靠性的評估、預測及分配模型[1-4]。其中,用于實現構件式系統可靠性評估的方法主要有黑盒方法和白盒方法。黑盒方法是將軟件系統看作一個整體,不考慮其內部結構,僅考慮系統與外界環境的交互,該類方法對完全獨立開發系統的評測較為合適。但黑盒方法過高估計了交互部分對系統可靠性的影響,因此在實際應用中受到了一定限制,評估結果也不夠準確。白盒方法[5-10]考慮軟件系統的內部結構,將系統分解為構件,通過系統內部構件之間的關系及每個構件個體的可靠性來估算系統整體的可靠性。此類方法具體涉及了每個構件的使用頻率,因此不需再有系統錯誤數與系統故障率成正比的假設,可以更準確地評測系統的可靠性。這類方法主要分為基于路徑的[5,6,11]、基于狀態的[1-3,7-9,12-15]兩類,均可用于指導開發人員進行構件選擇,完成系統設計。另外,還有一類方法叫可加模型(Additive modes)[16-19],該類模型沒有考慮軟件內部結構,但卻考慮了構件的可靠性。下面對這三類算法分別進行研究論述。
11基于路徑的系統可靠性評測方法研究現狀
基于路徑(path-based)的模型[5, 6, 20-24],首先建立構件間的概率依賴關系,再通過算法、實驗或仿真等過程找到所有從起點到終點的執行路徑,并將每條路徑的可靠性估算出來,其后計算所有路徑的可靠性平均值作為整個構件系統的可靠性。第2期郭勇,等:構件式系統可靠性評估技術研究現狀智能計算機與應用第3卷
Shooman 模型[20]是首次見諸發表的利用模塊可靠性評估系統可靠性的實現方法。該方法通過構件可靠性計算路徑可靠性,再根據各路徑在系統中的權重綜合評估系統的可靠性。即在方法中假定程序有 m條不同的執行路徑,每條路徑均具有一定的執行概率,第i條路徑的執行概率用fi表示,并用qi表示第i條路徑的執行失效率,則在N次測試中,系統的失效率為:
nf=∑mi=1Nfiqi(1)
式中,Nfi是路徑i的總執行次數,由此系統的失效可按如下公式計算:
q0=∑mi=1fiqi(2)
Yacoub等[6]提出了一種基于使用場景的可靠性分析方法。該方法假定,已知每個場景的運行剖面,通過構件依賴圖完成構件之間轉換概率的分析,再將構件間的連接可靠性也一并加以考慮,對系統進行完整、全面的可靠性評測。Hsu等[23]通過路徑可靠性評估系統可靠性,并分別討論了順序、分支及循環三種路徑可靠性的計算方法。該方法運用構件的執行次數來計算構件在系統中的可靠性,但卻未將構件的可靠性與時間直接相關聯。Krishnamurthy等[21]使用構件依賴圖描述系統結構,依據系統結構定義測試用例,再使用測試用例對系統進行測試,由此獲得系統各路徑的失效行為,而后取其平均值作為系統的可靠性。只是該方法沒有考慮接口的可靠性。Hamlet等[25]在所提出的模型中主要討論了構件設計者如何更好地進行構件的開發與測試,滿足使用者能更為有效地進行系統可靠性評測的需求。毛曉光等[26]給出了基于構件概率遷移圖的軟件可靠性的通用模型。這是一種動態分析方法,具有較好的實用性。Lo等[27]提出了一種基于構件可靠性的綜合評測方法,并分別給出了單輸入/單輸出、單輸入/多輸出及多輸入/多輸出等各種類型的可靠性評估方法,同時也進行了敏感性分析,但是文中沒有討論構件可靠性的獲取方法。
綜上所述,基于路徑的方法考慮了軟件系統的結構,且假定每個組件的失效均是相互獨立的。這是一種實驗方法,因此,其準確性很大程度上依賴于實驗過程的初始條件,如果輸入數據選擇并不全面、充分,就可能會影響最終的測試結果。并且,該方法還有一個瓶頸式問題就是,如果系統中存在循環,就只能用近似方法來計算可靠性。如果絕大部分的路徑執行都有組件處于循環中,而循環次數又非常大,那么最終系統可靠性的估計值就可能會低于實際情況,尤其但系統存在無限循環時,該方法更是難以處理。
12基于狀態的系統可靠性評測方法研究現狀
該類方法使用軟件控制流圖來描述系統的結構,并假設構件間的轉移過程是一個馬爾可夫過程,即組件某一時刻的狀態僅與上一時刻的狀態有關而與其它狀態無關,也就是將構件系統的執行過程看成一個狀態轉移過程[2,8-9, 14-15]。利用隨機過程的理論實現對系統可靠性的分析,首數就是Markov 過程理論,文獻[28]即對此進行了較為詳盡的綜論。源起于該理論的方法主要有兩類,分別是時間離散的馬爾可夫模型[9]和時間連續馬爾可夫模型[8, 14, 29]。對于時間離散的馬爾可夫模型,是將應用程序建模成時間離散的馬爾科夫鏈(discrete time Markov chain, DTMC)[9, 14],這就表示了按照用戶需求運行的軟件,每次運行都對應一個終止狀態;而對于時間連續馬爾可夫模型,就是將應用程序建模成時間連續馬爾科夫鏈 (continuous time Markov chain, CTMC)[8]及半馬爾可夫過程模型(semi-Markov process, SMP )[15],如此則表示了持續運行的軟件應用,例如實時控制系統。
Littlewood[7]模型給出兩個假定,一個是假定構件失效行為相互獨立, 另一個是假定連續運行的軟件結構可以對應為一個不可約的半馬爾可夫過程,由此即可使用構成系統的模塊可靠性及轉換可靠性來共同估算系統可靠性。構件間的控制轉移是有一定概率關系的,在此假設系統失效率符合參數為λi的泊松分布,該模型主要描述的是在(0,t)時間內的總失效數,就是所有模型運行時發生的失效數與接口失效數的總和,可用N(t)表示。其失效率可表示如下:
λs=∑iaiλi+∑i,jbijvij(3)
Gokhale模型[30]提出軟件系統中各構件的執行可以描述為吸收態的時間離散馬爾可夫模型。其中,失效率與時間相關,因此考慮了每個構件累積的執行時間。通過軟件結構和各構件的可靠度來計算整個系統的可靠度,并用一個單步轉移矩陣P來表達DTMC,系統的可靠性公式則如下:
R=Πnf=1e-∫τj0λj(t)dt(4)
Cheung[14]模型是從模塊的應用及其可靠性兩個方面來考慮系統整體的可靠性,并將軟件系統構建為一個簡單的馬爾可夫模型。在經由操作剖面確定構件間的轉換概率后,再根據構件可靠性來估算系統則可靠性主要是針對一個可終止的應用程序而進行的可靠性建模,并同時假定模塊的控制轉換過程可用一個吸收態的DTMC做以完整描述。系統的可靠性可按如下公式計算:
R=S(1,n)Rn(5)
其中,S(1,n)表示N1經過任意次狀態轉換后,準確到達狀態Nn的概率。Rn態表示從狀態Nn轉移到C的發生概率。文獻[31]又擴展了文獻[14]的工作,其中提出的模型能夠支持不同的結構類型。
Kubat模型[15]將模塊之間的變化視為時間離散的馬爾可夫過程,并在綜合考慮了構件的運行時間、運行次數以及構件間的轉換概率后,構建實現了系統可靠性模型。文中討論的是n個模塊組成的可執行k個任務的應用。在任務執行過程中,每個任務會調用多個模塊,每個模塊又能被多個任務調用。模塊間的控制轉移遵循著DTMC,而每個任務的結構模型則確定為SMP。系統的失效率λS按如下公式計算,其中,rk為任務k發生的概率。
λs=∑Kk=1rk[1-R(k)](6)
Gokhale等[28]提出了一種基于狀態的可靠性評測框架,介紹了模型中各參數的估計方法。文獻[32]則依據軟件結構預測系統的可靠性和可用性,并借助軟目標相互依賴圖(soft-goal interdependency graph)為生產線確定實際可用的軟件結構。Cheune等[33]論述了單個構件的可靠性,沒有討論構件之間的調用。Gokhale等[34]又將軟件系統描述為吸收態的時間離散馬爾可夫模型,失效率與時間相關,并考慮了每個構件累積的執行時間。
大部分可靠性評測模型均假設構件失效即會導致系統失效,同時又進一步假設構件之間是按順序執行的,而文獻[24]提出的方法,則突破了此假設的局限,通過將構件的故障傳播與多重執行模式相結合,來開展可靠性評測研究。
13可加方法研究現狀
加模型[16]主要用在軟件測試階段,通常假設每個構件的可靠性符合NHPP(non-homogeneous Poisson process,),由此整個系統的失效行為也即成為一個NHPP分布[12]。加模型是根據構件失效來計算系統失效率,卻不會考慮系統結構。Xie模型[19]是早期的可加模型,該模型認為系統的失效密度是構件失效密度的累加和,只是直接利用構件的測試數據評估系統的可靠性,不曾考慮構件間的相關性,而且將構件測試數據直接應用于系統而不做任何變換,必然會造成評測的不準確。Everett等[16]介紹了一種通過六步即可完成系統可靠性評估的方案及方法,其中不僅進行了系統可靠性的分析,還開展了構件可靠性的分析,同時使用了擴展的執行時間模型來評估構件可靠性,并詳細介紹了根據軟件特性估計模型中各項參數的具體細節,是早期階段具有良好效用的基于構件的可靠性模型。但該模型只能用于系統開發完畢后,卻不能在系統設計階段就用其對系統實行可靠性預測。
2構件可靠性評估技術研究現狀
到目前為止,已有一些用于構件可靠性評測的專門技術,其中有,主要用于構件提供者對所開發構件進行評測的模型[35-36],開發人員可以使用這類模型進行構件評測,評測之后將所得結果與構件一起存入構件庫中,供其他人在需要時提取使用;也有一些主要針對使用者進行構件評測的模型[33, 37-39],這類模型主要是為構件使用者在選擇所需構件時發揮既定效能,以確定構件是否符合使用要求;另外,還有一些構件評測模型,既適用于開發者,也可用于使用者[40-41]。對于COTS構件來說,構件的開發者和使用者的目標不同,決定了其所考慮問題的角度也將不同。構件開發者為了使構件具有更大范圍的通用性,往往使所開發的構件包含多種功能。開發者僅能從預期的構件運行環境條件下進行構件的開發和評測,并對構件所提供的全部功能進行評測,最終得到的構件可靠性只是預期運行環境下的理想評測結果。構件的使用者在運行構件時,常常只會用到構件的部分功能,很難找到恰好符合要求,且不帶冗余功能的構件。這樣就給基于構件系統的可靠性的真實評測制造了難題,需要重視,并積極加以解決。
3構件間組裝代碼可靠性技術研究現狀
繼Parnas [42]提出模塊概念后,相應的基于模塊的可靠性研究也隨之出現, 標志著一個新的軟件可靠性研究方向——基于構件的可靠性研究的崛起和發現。基于對軟件劃分方法的不同,可靠性研究也將采用不同的方法。已有研究者將軟件直接劃分成許多模塊,模塊間的關聯完全隱藏在模塊內部,模塊間是一種緊耦合關系,而在此基礎上進行可靠性分析[23]。然而,從已經建立的軟件體系結構的概念來看,任何一個基于構件開發的系統除了要有構件(或模塊)外,至少還要有連接代碼或連接部件(connectors、connections、connecting elements or common patterns of interaction)[43- 44]來實現構件之間的彼此交互。目前,大部分基于架構的可靠性評估模型都簡化了對構件間組裝代碼的可靠性評測,或者將組裝代碼視作構件的一部分,總的來說可分為如下幾類,分析如下。
第一類,如文獻[23,33]中給出的模型,將軟件系統劃分為多個模塊,模塊之間的連接關系完全通過模塊內部的代碼來實現。組裝代碼作為模塊的一部分貫穿在模塊內部。通過模塊的可靠性和模塊間的關系來評估系統的可靠性。構成系統的模塊之間形成了一種緊耦合的連接結構,因此,無法單獨考慮組裝代碼的可靠性。
第二類,如文獻[26,30]提出的基于構件的系統可靠性模型,其中假定組裝代碼完全可靠。文獻中提出的模型僅考慮了構件的可靠性,并通過構件的可靠性來評估系統的可靠性。
第三類,如文獻[45]中給出的可靠性模型,考慮了構件及連接子的可靠性。但文獻中的連接子的可靠性具體專指的是分布在不同機器上的構件間的通訊可靠性,而如果構件位于同一臺機器上,則認為連接子是完全可靠的。文獻[6, 46-47]與[45]類似,所提到的連接子詳指的則是構件之間的網絡連接,因此這里的連接子并不是本文中所提到的組裝代碼。
第四類,如文獻[48],雖然提到構件組裝,但在所給出的可靠性模型中,卻未提及組裝代碼可靠性問題。
第五類,模型與本文所提方法相近。文獻[49]使用體系結構描述語言描摹系統模型。模型中包含了構件對外交互接口的可靠性,并將用戶剖面與環境的可靠性進行組合來完成系統可靠性的分析預測。而且這類模型也沒有對構件間協同連接的可靠性進行分析。文獻[50]提出了一種考慮構件故障傳播的可靠性預測方法,此方法中考慮了連接子的可靠性。但是卻需在所給出的模型中假設連接子的可靠性為已知。文獻[51]雖然提及了連接子的可靠性,但也必須假設連接子的可靠性為已知。其后,再將連接子的可靠性與構件間的轉換概率進行了簡單相乘,而以其結果作為構件間的實際轉移概率,而且還未指出應該如何對連接子的可靠性進行評測。
4存在的問題
經過幾十年的研究,雖然已研制得到了上百種的可靠性模型,但由于軟件本身及應用環境的復雜性、高質量的可靠性相關信息較低的收集率,以及計算能力的限制約束,目前仍未找到眾所公認的理想方法評估軟件系統的可靠性。而相對于黑盒評測方法來說,基于構件軟件的可靠性研究,因其起步相對較晚,還存在著許多問題并未得到有效解決。
由于構件的來源可能會有所不同,基于構件的系統采用單一模型進行可靠性評測,并無法取得很好的評測結果。若要更為準確地評測基于構件系統的可靠性,就要根據各構件的歷史數據合理選擇構件可靠性評測模型,由其而對構件進行可靠性評估,在此基礎上再對系統展開可靠性評估,如此方能得到科學有效的結果。在基于構件的可靠性評測方法中,為了簡化問題,通常將構件的可靠性假設為已知并且設為固定值[29],這樣就不需再考慮每個構件的有效可靠性問題。但在某些情況下,這種假設并不合理,因為許多構件在系統中得到使用的只是部分功能,而每個構件的可靠性卻是該構件全部功能在某一應用域的可靠性,僅以這個可靠性數值作為構件在該系統中的可靠性來對系統進行可靠性評測,顯然其理論依據并不充足。而且,雖然有一部分基于構件的系統可靠性評測模型已經考慮了時間因素,但是并未充分、細致地考慮同一構件在執行路徑上不同位置時的構件有效運行時間的差別及在某一指定時間點構件可靠性與系統可靠性的關系。因而,當系統運行到某一時刻,同一構件如果處于不同的執行路徑或同一個執行路徑的不同位置, 在系統中所表現的可靠性也將不會相同,這種情況也是必須認真重視并詳加考慮的,否則就將不可避免地導致不準確的評測結果[2]。目前,大部分基于架構的可靠性評估模型都簡化了對構件間組裝代碼的可靠性評測,或者根本就未曾考慮組裝代碼的可靠性。但是,組裝代碼通常在基于構件的軟件系統中發揮著非常重要的現實作用,組裝代碼的失效同樣會導致系統失效。如果不對其可靠性細加考慮,必將會導致系統可靠性的評測結果與實際值存在較大偏差。
5結束語
本文詳細論述了構件式系統可靠性評估技術的研究現狀,并對構件可靠性的評估及構件間組裝代碼可靠性的評估技術進行了闡述。在研究過程中,還對各種技術的優缺點進行了詳細說明。通過比較可以看出,白盒評估方法優于黑盒評估方法。白盒方法不僅可以用于系統設計階段,也可用于系統實現后的可靠性評估。目前已經有上百種可靠性評估模型,新模型的研發空間已經不大,因此,針對所開發的系統,如何在已有的模型中選擇恰當的評估模型,則是一件具有重要價值的研究工作。
參考文獻:
[1] TYAGI K, SHARMA A. Reliability of component based systems: A critical survey. ACM SIGSOFT Software Engineering Notes, 2011, 36 (6): 16.
[2] GOKHALE S S. Architecture-based software reliability analysis: Overview and limitations[J]. IEEE Transactions on Dependable and Secure Computing, 2007, 4 (1): 3240.
[3] VOUK M A. Software reliability engineering. 2000,
[4] ZHANG W, ZHU F. An evaluation model of software testing management in core banking system programme[J]. Physics Procedia, 2012, 25 : 18571862.
[5] SINGH H, CORTELLESSA V, CUKIC B, et al. A bayesian approach to reliability prediction and assessment of component based systems[C]//Software Reliability Engineering, 2001. ISSRE 2001. Proceedings. International Symposium on, 2001: 1221
[6] YACOUB S, CUKIC B, AMMAR H H. A scenario-based reliability analysis approach for component-based software[J]. IEEE Transactions on Reliability, 2004, 53 (4): 465480.
[7] LITTLEWOOD B. Software reliability model for modular program structure[J]. IEEE Transactions on Reliability, 1979, R-28 (3): 241246.
[8] GOKHALE S S, MICHAEL R T L. A simulation approach to structure-based software reliability analysis[J]. IEEE Transactions on Software Engineering, 2005, 31 (8): 643656.
[9] WEI Y, SHEN X H. Heterogeneous architecture-based software reliability estimation: Case study[C]// Proceedings of the Third International Conference on Convergence and Hybrid Information Technology, Busan, Korea, 2008: 286290.
[10] YUAN Y, ZHU H, LIU B, et al. Software reliability modeling with removed errors and compounded-decreased-rate[J]. Mathematical and Computer Modelling, 2012, 55 (34): 697709.
[11] PALVIAINEN M, EVESTI A, OVASKA E. The reliability estimation, prediction and measuring of component-based software[J]. Journal of Systems and Software, 2011, 84 (6): 10541070.
[12] GOSEVA-POPSTOJANOVA K, TRIVEDI K S. Architecture-based approaches to software reliability prediction[J]. Computers Mathematics with Applications, 2003, 46 (7): 10231036.
[13] GOSˇEVA-POPSTOJANOVA K, TRIVEDI K S. Architecture-based approach to reliability assessment of software systems[J]. Performance Evaluation, 2001, 45 (2): 179204.
[14] CHEUNG R C. A user-oriented software reliability model[J]. IEEE Transactions on Software Engineering, 1980, SE-6 (2): 118125.
[15] KUBAT P. Assessing reliability of modular software[J]. Operations Research Letters, 1989, 8 (1): 3541.
[16] EVERETT W. Software component reliability analysis[C]//Proceedings of Application-Specific Systems and Software Engineering and Technology—ASSET, 1999:204211.
[17] WANG S, WU Y, LU M, et al. Discrete nonhomogeneous poisson process software reliability growth models based on test coverage. Quality and Reliability Engineering International, 2012, n/a-n/a.
[18] GOSEVA-POPSTOJANOVA K, TRIVEDI K S. Architecture-based approach to reliability assessment of software systems[J]. Performance Evaluation, 2001, 45 (2): 179204.
[19] XIE M, WOHLIN C. An additive reliability model for the analysis of modular software failure data[C]// Proceedings of the 6th International Symposium on Software Reliability Engineering, Toulouse, France, 1995:188194.
[20] SHOOMAN M L. Structural models for software reliability prediction[C]//Proceedings of the 2nd International Conference on Software Engineering, San Francisco, California, 1976:1315.
[21] KRISHNAMURTHY S, MATHUR A P. On the estimation of reliability of a software system using reliabilities of its components[C]//Proceedings of the 8th International Symposium On Software Reliability Engineering, Albuquerque, New Mexico, 1997:146155.
[22] FIONDELLA L, GOKHALE S S. Software reliability with architectural uncertainties[C]//Proceedings of the 2008 IEEE International Symposium on Parallel and Distributed Processing, Miami, Florida, 2008:15.
[23] HSU C J, HUANG C Y. An adaptive reliability analysis using path testing for complex component-based software systems[J]. IEEE Transactions on Reliability, 2011, 60 (1): 158170.
[24] PHAM T T, DEFAGO X. Reliability prediction for component-based systems: Incorporating error propagation analysis and different execution models[C]//Quality Software (QSIC), 2012 12th International Conference on, 2012:106115.
[25] HAMLET D, MASON D, WOIT D. Theory of software reliability based on components[C]//Proceedings of the 23rd International Conference on Software Engineering—ICSE, Toronto, Ontario, Canada, 2001:361370.
[26] 毛曉光, 鄧勇進. 基于構件軟件的可靠性通用模型[J]. 軟件學報, 2004, 15 (1): 3035.
[27] LO J H, HUANG C Y, CHEN I Y, et al. Reliability assessment and sensitivity analysis of software reliability growth modeling based on software module structure[J]. Journal of Systems and Software, 2005, 76 (1): 313.
[28] GOKHALE S S, TRIVEDI K S. Analytical models for architecture-based software reliability prediction: A unification framework[J]. IEEE Transactions on Reliability, 2006, 55 (4): 578590.
[29] GOKHALE S S, TRIVEDI K S. Reliability prediction and sensitivity analysis based on software architecture[C]//the Proceedings of the 13th International Symposium on Software Reliability Engineering, Annapolis, Maryland, 2002: 6475.
[30] GOKHALE S S, WONG W E, Trivedi K S, et al. An analytical approach to architecture-based software reliability prediction[C]//Computer Performance and Dependability Symposium, 1998. IPDS '98. Proceedings. IEEE International, 1998:1322.
[31] SHARMA V S, TRIVEDI K S. Quantifying software performance, reliability and security: An architecture-based approach[J]. Journal of Systems and Software, 2007, 80 (4): 493509.
[32] IMMONEN A. A method for predicting reliability and availability at the architectural level[J]. Software Product-Lines-Research Issues in Engineering and Management, 2006, 373422.
[33] CHEUNG L, ROSHANDEL R, MEDVIDOVIC N, et al. Early prediction of software component reliability[C]//Proceedings of the 30th international conference on Software engineering—ICSE, Leipzig, Germany, 2008: 111120
[34] GOKHALE S S, LYU M R, TRIVEDI K S. Reliability simulation of component-based software systems[C]// Proceedings on Software Reliability Engineering —, 1998:192-201.
[35] VOAS J M. Certifying off-the-shelf software components. Computer, 1998, 31 (6): 5359.
[36] ANDREOU A S, TZIAKOURIS M. A quality framework for developing and evaluating original software components[J]. Information and Software Technology, 2007, 49 (2): 122141.
[37] ORSO A, HARROLD M J, ROSENBLUM D, et al. Using component metacontent to support the regression testing of component-based software[C]//Software Maintenance, 2001. Proceedings. IEEE International Conference on, 2001:716725.
[38] ZULKERNINE M, SEVIORA R. Towards automatic monitoring of component-based software systems[J]. Journal of Systems and Software, 2005, 74 (1): 1524.
[39] ALEXANDRE A E S d A, DE LEMOS MEIRA S R. A component quality assurance process[C]//Fourth international workshop on Software quality assurance, 2007:94101.
[40] GAO J, ZHU E Y, SHIM S, et al. Monitoring software components and component-based software, 2000: 403412
[41] ROCHA C R, MARTINS E. A strategy to improve component testability without source code. SOQUA/TECOS, 2004:4762.
[42] PARNAS D L. On the criteria to be used in decomposing systems into modules. Communications of the Acm, 1972, 15 (12): 10531058.
[43] MEDVIDOVIC N, TAYLOR R N. Software architecture: Foundations, theory, and practice[C]//the Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 2, 1810435: ACM, 2010.
[44] GARLAN D, MONROE R, WILE D. Acme: An architecture description interchange language[C]//CASCON First Decade High Impact Papers, 2010:159173.
[45] CORTELLESSA V, SINGH H, CUKIC B. Early reliability assessment of uml based software models[C]//the Proceedings of the 3rd international workshop on Software and performance: ACM, 2002.
[46] BROSCH F, KOZIOLEK H, BUHNOVA B, et al. Parameterized reliability prediction for component-based software architectures[C]//Research into Practice-Reality and Gaps, Proceedings, 2010, 6093: 3651.
[47] CUKIC B. The virtues of assessing software reliability early. Software, IEEE, 2005, 22 (3): 5053.
[48] FAN Z, ZHOU Xingshe, C Junwen , et al. A novel model for component-based software reliability analysis[C]//High Assurance Systems Engineering Symposium, 2008. HASE 2008. 11th IEEE, 2008: 303309.
[49] REUSSNER R H, SCHMIDT H W, POERNOMO I H. Reliability prediction for component-based software architectures[J]. Journal of Systems and Software, 2003, 66 (3): 241252.
[50] POPIC P, DESOVSKI D, ABDELMOEZ W, et al. Error propagation in the reliability analysis of component based systems[C]//Software Reliability Engineering, 2005. ISSRE 2005. 16th IEEE International Symposium on, 2005:1062.
[51] WANG W L, WU Y, CHEN M. An architecture-based software reliability model[C]//Proceeding of the 1999 Pacific Rim International Symposium on Dependable Computing, Hong Kong, China, 1999:14.