劉玉寶 祝海英
摘 要:提出了一個(gè)基于嵌入式軟件架構(gòu)分析方法,在開發(fā)初期對(duì)系統(tǒng)架構(gòu)進(jìn)行可靠性分析,得到可能引起軟件失效的主要因素。
關(guān)鍵詞:可靠性分析 嵌入式軟件 軟件架構(gòu) 故障樹
中圖分類號(hào):TG659 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-3791(2014)04(b)-0001-01
在嵌入式軟件開發(fā)中,一個(gè)很重要的質(zhì)量因素是可靠性[1]。為了降低風(fēng)險(xiǎn),需要有合適的可靠性分析和設(shè)計(jì)技術(shù)以便于及時(shí)預(yù)測(cè)潛在的失效。目前,工程領(lǐng)域普遍認(rèn)為可靠性分析不應(yīng)該僅僅在代碼級(jí)而還應(yīng)該在系統(tǒng)開發(fā)的早期進(jìn)行。因此,在軟件架構(gòu)分析中預(yù)測(cè)系統(tǒng)的質(zhì)量和潛在的風(fēng)險(xiǎn)也很必要。
1 故障樹集合
為了描述嵌入式軟件架構(gòu)[2]中相關(guān)的失效因素,定義如下概念:
定義1:失效場(chǎng)景:失效場(chǎng)景是潛在的失效,它在特定的背景下可由外因或者內(nèi)因引發(fā)軟件的失效。
定義2:故障樹:一個(gè)故障樹是一個(gè)模型,它表示了故障和失效的因果關(guān)系。故障樹的樹根表示失效,葉子結(jié)點(diǎn)表示故障。
定義3:故障樹集合:故障樹集合是一個(gè)由故障樹集合組成的圖G(V,E)。G據(jù)有如下的性質(zhì):
(1)V=F∪A。
(2)F是失效場(chǎng)景的集合,其中的每個(gè)場(chǎng)景都是和架構(gòu)元素相關(guān)的。Fu為F的子集,它是組成失效的失效場(chǎng)景的集合,該失效能被用戶感知(例如系統(tǒng)失效),F(xiàn)u中的頂點(diǎn)構(gòu)成故障樹的根節(jié)點(diǎn)。
(3)A是表示邏輯連接的邏輯門集合。A=AAND∪AOR,對(duì)于任意AAND或者AOR,其出度等于1并且其入度大于等于1。
(4)E是有向邊(u,v)的集合,u,v∈A。
圖1所示即為一個(gè)故障樹集合。這里,故障樹集合有兩個(gè)故障樹組成,F(xiàn)u={F1,F(xiàn)5}。左邊的故障樹表示F1由F2或F3引起,右邊一個(gè)表示F5由F4和F6共同引起。
2 定義嚴(yán)重性級(jí)別值
本文以一個(gè)多媒體播放系統(tǒng)為例,分析的主要是對(duì)用戶的感知產(chǎn)生重大影響的失效。例如完全黑屏要比瞬間的圖像扭曲的嚴(yán)重性級(jí)別要高。在計(jì)算某個(gè)單獨(dú)的葉子結(jié)點(diǎn)的失效概率之前,首先根據(jù)失效對(duì)用戶的影響給根節(jié)點(diǎn)失效賦予一個(gè)嚴(yán)重性級(jí)別值。本例中嚴(yán)重性級(jí)別為:1-非常低;2-低;3-中等;4-高;5-非常高。
嚴(yán)重性程度級(jí)別值的范圍為1~5。值越大表示它對(duì)用戶感知的影響程度越高。根失效的嚴(yán)重性級(jí)別通常用來決定故障樹集合中低層結(jié)點(diǎn)的嚴(yán)重性級(jí)別值。這些值由如下所示公式計(jì)算:
(1)
(2)
公式(1)定義了根失效的嚴(yán)重性級(jí)別的分配。公式(2)定義了低層結(jié)點(diǎn)f的嚴(yán)重性級(jí)別值分配。在此,P(v|f)代表f發(fā)生導(dǎo)致v發(fā)生的概率。把這個(gè)值乘以v的嚴(yán)重性級(jí)別計(jì)算出f的嚴(yán)重性級(jí)別值。
3 軟件架構(gòu)的分析
架構(gòu)分析[3]主要針對(duì)架構(gòu)中與可靠性相關(guān)的關(guān)鍵元素[4]。在此,考慮兩種類型的關(guān)鍵元素:(1)不可靠元素;(2)敏感元素。在架構(gòu)層次分析中,主要從用戶感知的角度,識(shí)別出和大多數(shù)關(guān)鍵失效相關(guān)的敏感元素。之后,在架構(gòu)元素層次的分析中,故障,錯(cuò)誤類型和實(shí)際的失效源被識(shí)別出來。用這種方式,就把分析的目標(biāo)定位到用戶可以直接感知到的失效的可靠性分析上了。
本文采用和元素相關(guān)的失效百分比(PF)作為衡量指標(biāo),對(duì)于每一個(gè)元素c,其失效百分比由下式計(jì)算:
(3)
據(jù)此,WPF值高的就是主要的失效元素。
4 結(jié)論
本文提出了一個(gè)基于軟件架構(gòu)可靠性分析方法,在軟件架構(gòu)的設(shè)計(jì)階段,對(duì)敏感的失效元素進(jìn)行分析,以便在嵌入式軟件的設(shè)計(jì)階段提高其可靠性。該方法比以往僅僅在硬件級(jí)水平和軟件的代碼實(shí)現(xiàn)級(jí)別實(shí)現(xiàn)可靠性的分析的水平上更進(jìn)一步,具有一定的科學(xué)性和實(shí)用性。
參考文獻(xiàn)
[1] McAllister, D.F., Vouk, M.A., 1996. Handbook of software reliability engineering. In: Lyu, M.R. (Ed.), Fault-Tolerant Software Reliability Engineering[M]. McGraw-Hill, New York, pp. 567-613, Chapter 14.
[2] Dobrica, L., Niemela, E., 2002. A survey on software architecture analysis methods[M]. IEEE Transactions on Software Engineering,28(7),638-654.
[3] Daniel Perovich et al. Model-driven approach to software architecture design[J].Proceedings of the 2009 ICSE Workshop on Sharing and Reusing Architectural Knowledge, 2009:1-8.
[4] Magdalena Balazinska et al. Fault-tolerance in the Borealis distributed stream processing system[J]. Journal ACM Transactions on Database Systems,Volume 33 Issue 1, Article No. 3 ,2008.