軟件可靠性與硬件可靠性分析及對(duì)比
引言
可靠性的定義是零件、部件、產(chǎn)品或系統(tǒng)在指定的時(shí)間內(nèi)、指定的環(huán)境中,并在特定的條件下無(wú)失效執(zhí)行其預(yù)定功能的概率。為了更好地理解這個(gè)定義,需要區(qū)分失效和故障兩個(gè)概念。
失效(Failure)是指系統(tǒng)或組件在規(guī)定條件下無(wú)法完成預(yù)定功能的事件。通常失效是由于發(fā)生了故障,從而無(wú)法繼續(xù)為用戶(hù)服務(wù)而導(dǎo)致的;故障(Fault)是指系統(tǒng)中的缺陷,能夠引發(fā)一次或多次失效。
本文主要闡述軟件可靠性和硬件可靠性的不同特點(diǎn),給出硬件可靠性和軟件可靠性的概述及一些研究和建模的方法。
1 軟件可靠性和硬件可靠性的比較
1.1 軟件可靠性和硬件可靠性的區(qū)別
軟件和硬件本質(zhì)上的不同決定了它們具有不同的失效機(jī)制。硬件是一種物質(zhì)產(chǎn)品,主要的失效原因是材料的老化;而軟件是一種邏輯產(chǎn)品,失效的根本原因是設(shè)計(jì)錯(cuò)誤,而設(shè)計(jì)錯(cuò)誤又是與人為因素和設(shè)計(jì)過(guò)程密切相關(guān)的,因此難以從直觀上分類(lèi)、檢測(cè)和糾正。正因?yàn)檫@樣,軟件可靠性相對(duì)來(lái)說(shuō)更加難以預(yù)測(cè)。表1所列是與可靠性相關(guān)的硬件和軟件屬性的比較。
1.2 軟件可靠性和硬件可靠性的相關(guān)性
軟件和硬件產(chǎn)品的生產(chǎn)在很多方面是相似的,在整個(gè)設(shè)計(jì)和開(kāi)發(fā)的過(guò)程中可以使用同樣的管理方法。其次,當(dāng)軟件和硬件是統(tǒng)一系統(tǒng)的不同組成部分時(shí),它們的失效問(wèn)題不能割裂開(kāi)來(lái)考慮,因?yàn)樗鼈冎g存在著顯著的相互作用。在這樣的系統(tǒng)中,硬件子系統(tǒng)和軟件子系統(tǒng)并不是完全相互獨(dú)立的。此外,任何軟件產(chǎn)品都需要在硬件平臺(tái)上運(yùn)行,而任何硬件產(chǎn)品的生產(chǎn)都包括軟件的因素,如產(chǎn)品設(shè)計(jì)、自動(dòng)控制程序等。從這個(gè)層面上來(lái)說(shuō),不存在絕對(duì)的軟件或絕對(duì)的硬件。隨著硬件和軟件相互涉及程度的不斷加深,區(qū)分硬件失效和軟件失效也變得越來(lái)越困難。
|
表1硬件可靠性和軟件可靠性屬性比較 |
||
|
特征 |
硬件 |
軟件 |
|
失效原因 |
物理原因(如失真、斷裂、腐蝕、漂移) |
主要為設(shè)計(jì)缺陷 |
|
磨損 |
會(huì)受到磨損 |
無(wú)磨損 |
|
時(shí)間相關(guān)性 |
失效率為常數(shù) |
失效率隨時(shí)間單調(diào)下降 |
|
環(huán)境因素 |
振動(dòng)、沖擊和溫度影響可靠性 |
可靠性基本不受影響 |
|
可靠性預(yù)測(cè) |
受物理規(guī)律制約,相對(duì)容易 |
無(wú)法由物理知識(shí)預(yù)測(cè) |
|
冗余 |
故障處理的一般手段 |
無(wú)法改進(jìn)可靠,性 |
|
以標(biāo)準(zhǔn)部件構(gòu)造 |
有助提高可靠性 |
無(wú)標(biāo)準(zhǔn)部件 |
2 硬件可靠性
2.1 失效率曲線
討論可靠性時(shí),一個(gè)典型的概念是失效率曲線(浴盆曲線)。如圖1所示,按硬件失效的發(fā)生時(shí)間,硬件失效率曲線可分為三個(gè)不同階段:早期、穩(wěn)定期和損耗期。每一時(shí)期可能發(fā)生的失效分別是質(zhì)量失效、隨機(jī)失效和損耗失效。
生命周期早期的失效是與過(guò)程有關(guān)的,比如在設(shè)備的生產(chǎn)過(guò)程中形成的一個(gè)潛在的缺陷在工作壓力下會(huì)逐漸暴露出來(lái)。而隨著時(shí)間的推移,存在生產(chǎn)缺陷的設(shè)備將先后失效。將這些設(shè)備移除或修復(fù)后,失效率會(huì)逐漸降低。
當(dāng)存在潛在缺陷的設(shè)備失效并全部被移除后,再發(fā)生的失效就是隨機(jī)失效。在這一階段,剩余的高品質(zhì)設(shè)備將穩(wěn)定工作,這時(shí)發(fā)生的失效通常可歸結(jié)為由于偶爾的壓力過(guò)大(如電源浪涌、軟件錯(cuò)誤)而隨機(jī)發(fā)生的,失效率趨于常數(shù)。
損耗失效是在工藝限制下的固有過(guò)程,它是由設(shè)備磨損、腐蝕等引起的老化而導(dǎo)致的。一般來(lái)說(shuō),這一時(shí)期的故障率是上升的。
2.2 常用分布
在可靠性分析中,通常需要對(duì)失效概率密度函數(shù)作出假設(shè),有了這些假設(shè)就可以借助傳統(tǒng)的統(tǒng)計(jì)方法來(lái)預(yù)測(cè)系統(tǒng)的行為。
具有穩(wěn)定失效率的指數(shù)形式失效概率分布是可靠性研究中應(yīng)用最廣泛的分布形式。它假定位于早期之后、損耗期之前的中間階段失效率一直保持常數(shù),尤其適用于電子元件和概率模型。
指數(shù)分布的概率密度函數(shù)可由下式給出:
p(t)=λe-λtt>0 (2)
將式(2)在時(shí)間區(qū)間[0,t]內(nèi)積分即可得出P(t),再應(yīng)用可靠度的定義R(t)=1-P(t)得到可靠度為:
R(t)=e-λt (3)
呈指數(shù)式分布的失效具有危害函數(shù)(hazardfunction)是:
將MTBF的定義應(yīng)用到式(3)所示的指數(shù)分布中,則可得到下式:
其中,t即是平均失效間隔時(shí)間(MTBF)。
若是已知R(t)求解t,可將式(5)變形為如下形式:
另一種廣泛使用的硬件可靠性分布是威布爾分布:
式(7)中由于引入了參數(shù)α,而威布爾分布的危害函數(shù)可以為常數(shù)、增函數(shù)或減函數(shù),而且具有很好的靈活性,因而非常適用于機(jī)電類(lèi)產(chǎn)品的磨損累計(jì)失效形式。
一般地,當(dāng)α=1時(shí)p(t)是常數(shù);當(dāng)a>1時(shí),h(t)單調(diào)增加;當(dāng)α<1時(shí),從p(t)單調(diào)遞減。這樣就可以全面分析系統(tǒng)三個(gè)階段的失效情況。威布爾分布的概率密度函數(shù)是:
p(t)=αλ(λt)α-1e-(λt)α,>0 (8)
式(8)中,λ稱(chēng)為形狀參數(shù)。當(dāng)α=l時(shí),威布爾分布即指數(shù)分布。威布爾分布的可靠度為:
R(t)=e-(λt)α (9)
3 軟件可靠性
3.1 失效率曲線
將軟件可靠性的特點(diǎn)也可通過(guò)坐標(biāo)曲線來(lái)表示,從而得到圖2所示的失效率曲線。
圖2 典型的軟件失效率曲線甘
由圖2可看出,軟件可靠性具有與硬件可靠性不同的特點(diǎn),主要區(qū)別有二:一是在軟件生命周期的中間段,每次升級(jí)軟件后失效率會(huì)有所增加,隨后又逐漸降低并趨于平穩(wěn),原因是潛在的問(wèn)題不斷地被發(fā)現(xiàn)和修復(fù)。第二個(gè)區(qū)別是在生命周期的最后一段中,失效率并不表現(xiàn)出像硬件失效率那樣明顯的增長(zhǎng),原因是這一時(shí)期軟件正接近報(bào)廢,不會(huì)再對(duì)其進(jìn)行升級(jí)或更新,因此失效率也不會(huì)改變。
3.2 軟件可靠性模型
作為一種重要的測(cè)量方法,建模能夠幫助我們?cè)谠O(shè)計(jì)、編碼和測(cè)試的過(guò)程中發(fā)現(xiàn)和修正故障,以及描述已交付產(chǎn)品中殘留故障可能造成的影響,從而減少錯(cuò)誤,降低影響。一個(gè)良好的軟件可靠性模型不但應(yīng)能夠準(zhǔn)確地預(yù)測(cè)未來(lái)的失效行為和計(jì)算其相關(guān)的數(shù)據(jù),而且應(yīng)該以合理的假設(shè)為基礎(chǔ),并具有廣泛的適用性。通過(guò)可靠性模型可以估計(jì)或預(yù)測(cè)可靠性,無(wú)論是軟件可靠性,還是硬件可靠性,建模技術(shù)都是基于觀察和積累失效數(shù)據(jù)并用統(tǒng)計(jì)推理方法對(duì)其進(jìn)行分析。兩者主要的區(qū)別在于前者使用從當(dāng)前軟件開(kāi)發(fā)過(guò)程中獲得的數(shù)據(jù)來(lái)計(jì)算過(guò)去和當(dāng)前的可靠性,主要用在軟件生命周期的較后階段;而后者使用歷史數(shù)據(jù)來(lái)提供對(duì)將來(lái)可靠性的預(yù)測(cè),因此常用于開(kāi)發(fā)或測(cè)試階段。
軟件可靠性模型指明了失效過(guò)程與一些主要失效因素之間的依賴(lài)性關(guān)系,如故障的引入,故障排除以及運(yùn)行環(huán)境等,這些因素在建模時(shí)必須加以考慮。實(shí)際應(yīng)用中一般的建模過(guò)程是:首先確定軟件應(yīng)用(軟件產(chǎn)品)中所有與可靠性評(píng)估或預(yù)測(cè)有關(guān)的部分并指明可靠性規(guī)范,然后確定項(xiàng)目中錯(cuò)誤、故障和失效的具體定義,選擇能夠反映系統(tǒng)實(shí)際使用方法的測(cè)試案例,最后選擇一個(gè)可靠性模型來(lái)應(yīng)用。收集的數(shù)據(jù)量應(yīng)能足以確定軟件是否能達(dá)到預(yù)定的可靠性目標(biāo),并選定一種參數(shù)估計(jì)方法。一旦完成數(shù)據(jù)收集和模型參數(shù)估計(jì),分析人員就能夠依此進(jìn)行合理的分析。
3.3 模型的分類(lèi)
自1972年第一個(gè)軟件可靠性模型發(fā)表以來(lái),過(guò)去的數(shù)十年中共出現(xiàn)了兩百多種模型,人們?cè)噲D借助它們來(lái)探究軟件失效的原因和過(guò)程,由此來(lái)量化軟件的可靠性,但這個(gè)問(wèn)題在很大程度上仍然未能解決。對(duì)于復(fù)雜的軟件,沒(méi)有一種模型能獲得滿意的效果,量化的過(guò)程中不得不加以約束條件和假設(shè)。因此,沒(méi)有一種模型能夠適用于所有的情況,也沒(méi)有一種模型是完善的,或是有代表性的。
大多數(shù)軟件模型包括這幾部分:假設(shè)、因素,以及一個(gè)能將可靠性和因素聯(lián)系起來(lái)的數(shù)學(xué)函數(shù),通常是高階指數(shù)或?qū)?shù)函數(shù)。根據(jù)參考文獻(xiàn)中提出的分類(lèi)方法,軟件可靠性模型大致可分為有限失效模型和無(wú)限失效模型兩類(lèi)。若假定有限時(shí)間內(nèi)的失效次數(shù)是有限次,也就是軟件中的故障最后能被全部清除,則這類(lèi)模型稱(chēng)為有限失效模型。Jelinski-Moranda模型㈤是一個(gè)早期的有限失效模型,它的失效數(shù)量在時(shí)間上呈二次分布。Schneidewind模型&和Musa模型E是具有泊松分布的有限失效模型。反之,若假定軟件無(wú)法達(dá)到無(wú)故障狀態(tài),則這類(lèi)模型稱(chēng)為無(wú)限失效模型。Musa-Okumoto模型和Little-Verrall模型団是這類(lèi)模型的典型例子。
4 結(jié)語(yǔ)
現(xiàn)代科技水平不斷提高使得各種設(shè)備和產(chǎn)品朝著高性能、高復(fù)雜度的方向發(fā)展,而可靠性往往隨著復(fù)雜度的提高而降低,因此可靠性研究的意義是非常重大的。在可靠性研究中,硬件可靠性技術(shù)相對(duì)成熟,而軟件可靠性正獲得越來(lái)越多的關(guān)注。
20210831_612da72182fe1__軟件可靠性與硬件可靠性分析及對(duì)比