1、軟件可靠性面臨的挑戰(zhàn)
當(dāng)前,航天、航空等關(guān)鍵任務(wù)系統(tǒng)越來(lái)越依賴(lài)軟件控制來(lái)執(zhí)行關(guān)鍵功能。不幸的是,軟件故障是當(dāng)今任務(wù)關(guān)鍵系統(tǒng)中最主要的故障原因之一,此類(lèi)任務(wù)中的軟件故障可導(dǎo)致任務(wù)性能下降,甚至完全任務(wù)失敗,導(dǎo)致嚴(yán)重的科學(xué)和經(jīng)濟(jì)損失。
例如,飛行控制軟件是在航天器上的執(zhí)行軟件。它是一個(gè)嵌入式實(shí)時(shí)軟件系統(tǒng),該系統(tǒng)當(dāng)前呈指數(shù)級(jí)增長(zhǎng),軟件規(guī)模每十年增長(zhǎng)一個(gè)數(shù)量級(jí)。這在航天器、飛機(jī)和汽車(chē)領(lǐng)域尤其具有挑戰(zhàn)性。增長(zhǎng)的主要來(lái)源是日益增加的需求和將眾多新功能置于軟件而非硬件中的優(yōu)勢(shì)。另外,飛行控制軟件的系統(tǒng)架構(gòu)的日益復(fù)雜,這會(huì)導(dǎo)致越來(lái)越復(fù)雜的相互依賴(lài)的變量,這些變量任何差錯(cuò)均可能會(huì)導(dǎo)致故障,從而使此類(lèi)系統(tǒng)的測(cè)試變得極為具有挑戰(zhàn)性。
因此,對(duì)于如何保證軟件的可靠性,除了加強(qiáng)軟件的整個(gè)生命周期的研發(fā)過(guò)程管理、嚴(yán)格把控軟件的驗(yàn)證測(cè)試工作外,更需要借助軟件可靠性分析等技術(shù)手段,全面掌握軟件不同階段的可靠性水平,指導(dǎo)軟件的可靠性持續(xù)改進(jìn)、指導(dǎo)軟件測(cè)試計(jì)劃的制定以及后續(xù)軟件保障工作規(guī)劃。
在這里,我們將詳細(xì)介紹NASA機(jī)構(gòu)的軟件可靠性分析方法。NASA開(kāi)展軟件可靠性分析的目標(biāo)是評(píng)估軟件可靠性,以及評(píng)估每個(gè)軟件版本可實(shí)現(xiàn)的軟件可靠性增長(zhǎng)水平,并選擇最適合的增長(zhǎng)模型集,從中可以估計(jì)軟件發(fā)布時(shí)剩余缺陷的數(shù)量,以及整個(gè)觀測(cè)期內(nèi)的故障強(qiáng)度曲線,以做好相應(yīng)的資源規(guī)劃及保障決策。以下是NASA機(jī)構(gòu)針對(duì)航天飛行相關(guān)軟件產(chǎn)品的可靠性分析做法、工作流程。
第一步:缺陷信息收集處理
搜集軟件相應(yīng)版本的所有缺陷信息。收集缺陷信息時(shí),可能會(huì)遇到需要將不同版本的缺陷信息整合的問(wèn)題。他們制定了相應(yīng)整合不同版本缺陷信息的方法進(jìn)行整合。
例如,假設(shè)軟件小版本(如V3.1.0、V3.2.0)是在大版本(如V3.0.0)的基礎(chǔ)進(jìn)行了功能擴(kuò)展或者改進(jìn),并將這些擴(kuò)展或者改進(jìn)融入大版本中,交給測(cè)試團(tuán)隊(duì)進(jìn)行測(cè)試。我們假設(shè)在進(jìn)行大版本調(diào)試、測(cè)試時(shí),在小版本調(diào)試、測(cè)試中發(fā)現(xiàn)的缺陷也得到了糾正。這種現(xiàn)象是非常普遍的,且在大多數(shù)這樣的場(chǎng)景中,我們可以看到在大版本(如V3.0.0)發(fā)布之后,大多數(shù)缺陷都是針對(duì)小版本(如V3.1.0)歸檔的。對(duì)于特殊情況,我們認(rèn)為這可能是一個(gè)錯(cuò)誤??傊?,如果小版本的需求是大版本需求的子集,我們考慮合并小版本和大版本的缺陷報(bào)告(例如NASA使用缺陷跟蹤工具DDT記錄的報(bào)告),將它們合并起來(lái)進(jìn)行分析。
第二步:非正式數(shù)據(jù)處理
整理所收集的缺陷數(shù)據(jù),剔除正式交付給測(cè)試團(tuán)隊(duì)之前的缺陷數(shù)據(jù)。
第三步:剔除無(wú)關(guān)數(shù)據(jù)
整理所收集的缺陷數(shù)據(jù),剔除掉獨(dú)立測(cè)試團(tuán)隊(duì)提交的缺陷(比如單獨(dú)的、特殊的驗(yàn)證和確認(rèn)(IV&V)。因?yàn)檫@些團(tuán)隊(duì)的測(cè)試屬于指定測(cè)試特定類(lèi)型的缺陷的(例如在進(jìn)行靜態(tài)分析時(shí)發(fā)現(xiàn)的缺陷),并且他們工作相對(duì)獨(dú)立,因此,如有需要,這些缺陷應(yīng)單獨(dú)分析。
第四步:趨勢(shì)分析及可靠性評(píng)估
使用故障間隔時(shí)間作為缺陷的時(shí)間度量參數(shù),單位為天,開(kāi)展趨勢(shì)分析。
4A:如果通過(guò)分析,發(fā)現(xiàn)存在顯著的可靠性增長(zhǎng)或衰退趨勢(shì),我們將確定最佳軟件可靠性增長(zhǎng)模型(SRGM),并討論結(jié)果。 使用的趨勢(shì)分析方法:從軟件可靠性的角度來(lái)看,趨勢(shì)分析提供了軟件生命周期中可靠性演變、變化的相關(guān)信息。請(qǐng)注意,在確定適用的軟件可靠性增長(zhǎng)模型之前,必須進(jìn)行可靠性增長(zhǎng)或衰退趨勢(shì)分析。我們使用拉普拉斯趨勢(shì)檢驗(yàn)方法進(jìn)行趨勢(shì)分析,因?yàn)樗撬衅渌厔?shì)估計(jì)技術(shù)中應(yīng)用最廣泛的。此外,趨勢(shì)變化規(guī)律還提示了最合適的軟件可靠性增長(zhǎng)模型。我們選擇在5%的顯著性水平上進(jìn)行雙側(cè)拉普拉斯趨勢(shì)檢驗(yàn)。
關(guān)于可靠性增長(zhǎng)模型選擇:對(duì)于軟件產(chǎn)品的不同版本來(lái)說(shuō),SRGM(軟件可靠性增長(zhǎng)模型)可以讓我們更清晰地掌握和了解缺陷改進(jìn)的過(guò)程。我們更喜歡看到軟件版本迭代更新過(guò)程中的缺陷持續(xù)改進(jìn)。通過(guò)好的SRGM模型,我們可以評(píng)估殘留的故障量,并可評(píng)估與預(yù)測(cè)測(cè)試過(guò)程中的可靠性,以及預(yù)測(cè)特定假設(shè)下的使用階段的可靠性水平。以NASA GSFC的觀點(diǎn)認(rèn)為,他們更喜歡建立基本的失效概率密度特征曲線,以便能夠觀察到不同版本之間的失效概率變化情況。這些基本信息可以指導(dǎo)未來(lái)的資源規(guī)劃,并提升項(xiàng)目的效率。
他們?cè)陂_(kāi)展趨勢(shì)分析及軟件可靠性預(yù)測(cè)、評(píng)估工作時(shí),使用相應(yīng)的工具實(shí)現(xiàn)??煽啃栽u(píng)估模型主要選擇使用Geometric Model (GEO), Jelinski-Moranda (JM), Littlewood-Verralllinear (LVL), Musa Basic (MB), Musa Logarithmic (ML)。同時(shí),他們也使用工具分析有限故障數(shù)據(jù)下的NHPP SRGM模型,適用的分布包括Weibull (WB), S-shaped(S), Log-logistic (LogL)。他們忽略掉 Littlewood-Verrallquadratic (LVQ) 模型,因?yàn)樵撃P团c他們實(shí)際測(cè)試得到的數(shù)據(jù)不太相符。
具體趨勢(shì)及可靠性增長(zhǎng)分析過(guò)程:
(a)根據(jù)缺陷信息,整理并提取故障間隔時(shí)間數(shù)據(jù)集
(b)把數(shù)據(jù)集輸入到可靠性增長(zhǎng)評(píng)估工具中(通過(guò)text文件格式),獲得所有模型的參數(shù)點(diǎn)估計(jì)值。通過(guò)選擇極大似然評(píng)估(MLE)方法進(jìn)行參數(shù)評(píng)估。因?yàn)檫@個(gè)方法考慮更多的魯棒性以及評(píng)估統(tǒng)計(jì)特性。
(c)計(jì)算所有模型的故障平均值、故障密度函數(shù)
(d)使用均方差MSE、平均絕對(duì)標(biāo)度誤差(MASE)和平均絕對(duì)百分比誤差(MAPE)等參數(shù)評(píng)估出最優(yōu)擬合。
(e)計(jì)算故障概率密度。
軟件可靠性增長(zhǎng)模型的性能取決于其對(duì)所觀察到的故障數(shù)據(jù)的異常剔除處理(IEEE 1633- 2008),以及根據(jù)所觀察到的數(shù)據(jù)進(jìn)行未來(lái)軟件故障檢測(cè)/糾正過(guò)程的預(yù)估。我們傾向于使用U圖和先驗(yàn)概率等技術(shù)來(lái)進(jìn)行預(yù)測(cè)精度分析。
4B:如果根據(jù)相應(yīng)的數(shù)據(jù)分析,找不出顯著的趨勢(shì),可以假定故障間隔時(shí)間樣本是獨(dú)立的,并且服從分布相同。NASA主要考慮三種常用的分布類(lèi)型,即指數(shù)分布、威布爾分布、伽瑪分布(Gamma),因?yàn)樗鼈儽粡V泛使用并適用于軟件可靠性工程中的故障間隔時(shí)間數(shù)據(jù)集分析。同時(shí),使用最大似然估計(jì)(MLE)技術(shù)來(lái)確定參數(shù)值的點(diǎn)估計(jì)。 分析過(guò)程中,使用KS檢驗(yàn)進(jìn)行擬合優(yōu)度檢驗(yàn),顯著性水平選擇5%。
根據(jù)KS檢驗(yàn)標(biāo)準(zhǔn),如果多個(gè)分布擬合適用于隨機(jī)樣本,我們使用赤池信息量準(zhǔn)則(AIC)來(lái)確定分布中的最佳候選。選擇AIC最低的模型作為最佳模型。然而,當(dāng)幾個(gè)分布的AIC值太接近時(shí),優(yōu)先選擇分布參數(shù)數(shù)量較少的、分布更簡(jiǎn)單的。
結(jié)束語(yǔ)
航天、航空系統(tǒng)對(duì)于軟件的依賴(lài)性越來(lái)越強(qiáng),軟件本身的結(jié)構(gòu)也越來(lái)越復(fù)雜,常規(guī)的軟件測(cè)試手段面臨極大挑戰(zhàn),畢竟需要考慮成本和時(shí)間、進(jìn)度。如何保證軟件產(chǎn)品的可靠性,如何逐步從定性的軟件可靠性認(rèn)知轉(zhuǎn)向定量認(rèn)定,如何開(kāi)展軟件產(chǎn)品的可靠性工作,其任重而道遠(yuǎn)也。
注:需咨詢(xún)軟件可靠性相關(guān)信息以及廣州寶順的軟件可靠性分析系統(tǒng)SREL的,可聯(lián)系我們。