軟件失效的相關(guān)概念
掃描二維碼
隨時(shí)隨地手機(jī)看文章
一、軟件失效機(jī)理
由于軟件內(nèi)部邏輯復(fù)雜,運(yùn)行環(huán)境動(dòng)態(tài)變化,并且不同的軟件可能差異很大,因而軟件失效機(jī)理可能有不同的表現(xiàn)形式。例如,有的失效過程比較簡(jiǎn)單,易于跟蹤分析;有的失效過程可能非常復(fù)雜,難于甚至不可能進(jìn)行詳盡地描述和分析。因此,對(duì)于軟件的失效機(jī)理及有關(guān)軟件失效的基本概念,目前尚無統(tǒng)一的認(rèn)識(shí)和定義。
為了避免在使用術(shù)語時(shí)造成歧義,首先應(yīng)明確缺陷(Defect)、故障(Fault)、隱錯(cuò)或臭蟲(Bug)、錯(cuò)誤(Error)、失效(Failure)等近義詞匯的含義。
1.軟件故障和缺陷、隱錯(cuò)或臭蟲
軟件故障和缺陷、隱錯(cuò)或臭蟲是同義詞,是存在于軟件(包括說明文檔、應(yīng)用數(shù)據(jù)、程序代碼等)之中的那些不期望的或不可接受的偏差。軟件故障靜態(tài)地存在于軟件內(nèi)部,是軟件開發(fā)過程中人為錯(cuò)誤的結(jié)果。例如缺少一個(gè)逗號(hào)、多一條語句等等。其后果是當(dāng)軟件運(yùn)行于某一特定條件時(shí)將導(dǎo)致軟件失效。
軟件故障具有下列一些特征:
1)軟件故障的固有性
軟件故障主要源于人的失誤和水平、能力的局限性。一旦軟件開發(fā)結(jié)束后交付給用戶,如果存在軟件故障,那么它將一直潛伏于軟件之中直到被發(fā)現(xiàn)或被修改。
2)軟件故障對(duì)環(huán)境的敏感性
所謂環(huán)境,是指軟件的運(yùn)行環(huán)境(包括軟硬件平臺(tái)、軟硬件配置和其他支撐軟件)和輸入環(huán)境(如應(yīng)用對(duì)象、用戶要求、輸入數(shù)據(jù)等)。在大多數(shù)情況下,一個(gè)程序的運(yùn)行,并不一定遍歷程序的所有部分。程序中的各個(gè)部分可做多種不同的邏輯組合,形成不同的執(zhí)行路徑,從而實(shí)現(xiàn)不同的功能。而這些組合取決于輸入環(huán)境,輸入環(huán)境的改變決定了程序內(nèi)部路徑的重新組合。如果程序中有故障,并且程序的執(zhí)行路徑經(jīng)過了故障點(diǎn),那么必然會(huì)引起錯(cuò)誤;如果程序的執(zhí)行路徑?jīng)]有經(jīng)過故障點(diǎn),則不會(huì)引起錯(cuò)誤;而對(duì)在一定輸入環(huán)境下執(zhí)行出錯(cuò)的程序,當(dāng)退出該環(huán)境后,對(duì)于其他環(huán)境又可能正常執(zhí)行,但當(dāng)再次進(jìn)入該環(huán)境時(shí),程序又會(huì)出錯(cuò)??梢?,軟件故障對(duì)輸入環(huán)境十分敏感。至于軟件故障對(duì)運(yùn)行環(huán)境的敏感性則更容易理解。一般在某一運(yùn)行環(huán)境下開發(fā)和正常執(zhí)行的程序,改換到另一運(yùn)行環(huán)境下去執(zhí)行,就會(huì)表現(xiàn)出許多的軟件錯(cuò)誤。
3)軟件故障的傳染性
軟件一旦出錯(cuò),如果不對(duì)軟件故障進(jìn)行糾正,那么其錯(cuò)誤結(jié)果作為后續(xù)邏輯路徑的輸入必然使得運(yùn)行結(jié)果不是程序本身所期望的合理結(jié)果,從而故障可能會(huì)一直存在并影響其他位置而發(fā)生錯(cuò)誤,最終造成系統(tǒng)失效的后果。例如一個(gè)子程序的故障,通過子程序的調(diào)用可能傳染調(diào)用者,通過進(jìn)程間的通信,還可能傳染更多其他的進(jìn)程。
2.軟件錯(cuò)誤
軟件錯(cuò)誤是指系統(tǒng)運(yùn)行時(shí),引起或可能潛在的引起系統(tǒng)失效的軟件故障。在大多數(shù)情況下,錯(cuò)誤可被檢測(cè)并排除,但是在某些情況下,仍然會(huì)有部分錯(cuò)誤隱藏于軟件內(nèi)部之中。
軟件錯(cuò)誤和軟件故障具有相同或十分近似的含義,在GB/T11457-89“軟件工程術(shù)語”中沒有刻意對(duì)這兩個(gè)詞加以區(qū)別。軟件故障并非就一定會(huì)使軟件出錯(cuò),它只有在特定的條件下才會(huì)導(dǎo)致軟件錯(cuò)誤,在一般的情況下,軟件仍然能夠正常運(yùn)行。
3.軟件失效
軟件失效是泛指程序在運(yùn)行中喪失了全部或部分功能、出現(xiàn)偏離預(yù)期的正常狀態(tài)的事件。預(yù)期的正常狀態(tài)應(yīng)以用戶的需求為依據(jù)。
可見,軟件錯(cuò)誤是相對(duì)于軟件而言的,是一種面向開發(fā)的概念,而軟件失效則是一種面向用戶的概念。一個(gè)錯(cuò)誤在在沒有被排除的情況下,可以使軟件發(fā)生多次失效。相同的失效現(xiàn)象,可能由不同的錯(cuò)誤所造成。
綜上所述,軟件失效機(jī)理可以概述為三個(gè)不同層次概念的因果關(guān)系。軟件故障可以導(dǎo)致軟件錯(cuò)誤并最終造成系統(tǒng)的失效,因而軟件故障是一切系統(tǒng)失效的根源。
二、軟件失效的軟劃分
系統(tǒng)處于不同狀態(tài)時(shí),可能會(huì)發(fā)生多種不同類型的失效,這些失效對(duì)整個(gè)系統(tǒng)完成規(guī)定功能的影響程度千差萬異,因而在研究處理措施時(shí)應(yīng)按輕重緩急區(qū)別對(duì)待。當(dāng)具體分析軟件發(fā)生的某種失效的危害度(Criticality,簡(jiǎn)稱為Cr)時(shí),須考慮兩個(gè)重要因素:失效發(fā)生的可能性(Possibility,簡(jiǎn)稱為Po),和失效對(duì)系統(tǒng)影響的嚴(yán)重度(Severity,簡(jiǎn)稱為Se)。不妨定義某種失效的危害度
Cr=Se×Po,
顯然,不同失效的危害性千差萬別,當(dāng)需考慮多種失效時(shí),則可針對(duì)具體系統(tǒng)建立相應(yīng)的復(fù)雜模型。
軟件失效嚴(yán)重程度類是一個(gè)失效集合,其中失效發(fā)生時(shí)對(duì)用戶產(chǎn)生相同影響。常見的分級(jí)標(biāo)準(zhǔn)包括對(duì)人員生命、成本和系統(tǒng)能力的影響。這些分級(jí)標(biāo)準(zhǔn)又包括很多子標(biāo)準(zhǔn),不同的子標(biāo)準(zhǔn)對(duì)于特定的不同的應(yīng)用系統(tǒng)來說可能非常重要。例如,成本影響可能包括額外的運(yùn)行成本、修復(fù)和恢復(fù)成本、現(xiàn)有或潛在業(yè)務(wù)機(jī)會(huì)的損失;系統(tǒng)能力影響可能包括關(guān)鍵數(shù)據(jù)損失、可恢復(fù)性和停機(jī)時(shí)間等子標(biāo)準(zhǔn)。對(duì)于可應(yīng)用性很重要的系統(tǒng),導(dǎo)致更長時(shí)間停機(jī)的失效常常被分配更高的失效嚴(yán)重程度類。還需要注意的是,嚴(yán)重程度可以隨失效發(fā)生的時(shí)間而發(fā)生變化。
在定義要使用的失效程度類時(shí),經(jīng)驗(yàn)表明最好的方法是集體討論需要考慮的所有可能的導(dǎo)致失效的因素,然后逐步確定最重要的失效因素。有些因素是客觀存在的,但是很難度量,例如對(duì)公司榮譽(yù)的影響,進(jìn)而對(duì)市場(chǎng)份額產(chǎn)生的影響。
一般而言,軟件失效嚴(yán)重程度類的影響分布很廣泛,因而不可能很準(zhǔn)確地估計(jì)影響。表1給出了一個(gè)根據(jù)成本硬性劃分的失效嚴(yán)重程度類的例子,然而用戶的實(shí)際評(píng)價(jià)在各個(gè)失效嚴(yán)重等級(jí)之間并不存在“非此即彼”的清晰分界點(diǎn),相鄰等級(jí)之間存在著“亦此亦彼”的性質(zhì)。根據(jù)系統(tǒng)能力影響劃分失效嚴(yán)重程度類,如表2所示,但該表中定義含混,沒有進(jìn)一步闡明“多項(xiàng)”、“關(guān)鍵”、“重要”、“小錯(cuò)誤”等概念。
表1 根據(jù)成本劃分的失效嚴(yán)重程度類
表2 根據(jù)系統(tǒng)能力影響劃分失效嚴(yán)重程度類
Putnam等將軟件失效嚴(yán)重度分為4類:致命的(Critical)、嚴(yán)重的(Serious)、一般的(Moderate)、輕微的(Cosmetic)。
李德毅等將系統(tǒng)失效嚴(yán)重度分為5類:①保持系統(tǒng)“全部功能正常”的能力,即系統(tǒng)無任何失效;②保持系統(tǒng)“主要功能正常”的能力,即系統(tǒng)有弱失效;③保持系統(tǒng)“基本功能正?!钡哪芰?,即系統(tǒng)有失效,但尚能維持;④保持系統(tǒng)“最低功能”正常的能力,即失效已達(dá)到臨界,再嚴(yán)重則不能容忍;⑤系統(tǒng)失去最低功能,即系統(tǒng)出現(xiàn)了致命失效。顯然,這種劃分同樣適用于軟件失效。
人類思維具有不確定性,我們習(xí)慣于且擅長用自然語言對(duì)失效的嚴(yán)重度和可能性進(jìn)行軟性劃分。一般地,系統(tǒng)發(fā)生失效的嚴(yán)重度和可能性都可用自然語言中“很小”、“小”、“一般”、“大”、“很大”等五個(gè)定性概念來描述,我們稱這五個(gè)語言值的集合構(gòu)成一個(gè)軟件失效評(píng)價(jià)概念集。若要從定量的角度分析,我們可以應(yīng)用云模型有效地實(shí)現(xiàn)語言值表示的定性概念與其定量表示之間不確定性轉(zhuǎn)換,從而可對(duì)軟件失效程度的定量描述實(shí)現(xiàn)類似自然語言的軟性劃分。這些語言值都可適當(dāng)?shù)剡x用一些定義在論域[0, 1]上的云模型(通常采用云變換方法根據(jù)屬性域中數(shù)據(jù)值的分布情況,自動(dòng)生成一系列由云模型表示的基本概念,實(shí)現(xiàn)對(duì)論域的軟劃分,具體請(qǐng)參見附錄)來表示。圖1為相應(yīng)的不確定定性定量表示轉(zhuǎn)換示意圖,其中“很小”、“很大”分別用半降云、半升云表示。
圖1 軟件失效嚴(yán)重度(或可能性)評(píng)價(jià)概念集的云圖表示
三、軟件失效數(shù)據(jù)
軟件失效數(shù)據(jù)是整個(gè)軟件可靠性分析和估測(cè)過程的工作基礎(chǔ),在整個(gè)軟件可靠性工程的研究中,占據(jù)重要的地位。所收集的數(shù)據(jù)是否真實(shí)、準(zhǔn)確和有效,是否滿足模型要求,都直接影響到軟件可靠性評(píng)估的準(zhǔn)確性和可信性。因此,在研究軟件可靠性模型之前,對(duì)軟件失效數(shù)據(jù)做一個(gè)透徹的了解是非常必要的。
在實(shí)際研究工作中,通常將軟件失效數(shù)據(jù)分為完全數(shù)據(jù)和不完全數(shù)據(jù)兩大類。其定義如下:
定義3.1 數(shù)據(jù)集合{N(ti)|N(t0)=0,i=1,2, …,n}稱為完全數(shù)據(jù)集合,如果
?i∈{1,2, …,n},有N(ti)-N(ti-1)=1,
其中:t0為初始時(shí)刻,ti表示累積時(shí)刻,N(ti)為時(shí)刻ti時(shí)的累積失效數(shù)。
定義3.2 數(shù)據(jù)集合{N(ti)|N(t0)=0,i=1,2, …,s}稱為不完全數(shù)據(jù)集合,如果
?i∈{1,2, …,s},有N(ti)-N(ti-1)>1,
其中:t0為初始時(shí)刻,ti表示累積時(shí)刻,N(ti)為直到時(shí)刻ti時(shí)的累積失效數(shù)。
顯而易見,完全數(shù)據(jù)給出了每個(gè)失效發(fā)生的時(shí)間間隔,而不完全數(shù)據(jù)給出了在一定的時(shí)間間隔(不一定要求是均勻的)內(nèi)的累積失效數(shù)。
由于軟件中一個(gè)相同的錯(cuò)誤可能會(huì)導(dǎo)致多次失效,并且若干個(gè)錯(cuò)誤之間有時(shí)存在相關(guān)性,從而會(huì)降低所收集數(shù)據(jù)的精確度。因此,收集軟件可靠性數(shù)據(jù)時(shí),首先要制訂出詳細(xì)的計(jì)劃和標(biāo)準(zhǔn),諸如人力資源、時(shí)間的分配,所收集數(shù)據(jù)的形式、記錄方式、存儲(chǔ)方式等等;其次,應(yīng)對(duì)數(shù)據(jù)作具體的分析處理后方可應(yīng)用,如數(shù)據(jù)的提取、合并、相關(guān)性分析等,采用的主要技術(shù)有EM算法、分段擬合技術(shù)等;另外,當(dāng)使用某一具體的軟件可靠性模型時(shí),可能會(huì)出現(xiàn)需要的是其中的一類失效數(shù)據(jù),而收集到的卻是另一類,這時(shí)需進(jìn)行失效數(shù)據(jù)間的轉(zhuǎn)換。目前雖已開發(fā)出了一些自動(dòng)收集軟件可靠性數(shù)據(jù)的支持工具,但局限性很大,因此,如何準(zhǔn)確而高效地自動(dòng)收集各種軟件可靠性數(shù)據(jù),還是一項(xiàng)有待于進(jìn)一步研究和實(shí)踐的課題。
1.軟件失效數(shù)據(jù)的缺乏
要保證全部、精確的數(shù)據(jù)收集是十分困難的,特別是要保證出現(xiàn)失效時(shí)作出完全而精確的報(bào)告則更難。其中,最經(jīng)常也是最嚴(yán)重的問題是失效時(shí)間的丟失。目前,軟件可靠性研究工作者,普遍感到由于缺乏數(shù)據(jù),嚴(yán)重地影響到研究工作的進(jìn)展。同時(shí),關(guān)于數(shù)據(jù)的收集工作,又存在著許多問題有待解決:
(1)收集到的數(shù)據(jù)大多總是不完全的,而遺漏的數(shù)據(jù)確恰恰又是最重要的;
(2)進(jìn)行數(shù)據(jù)收集同樣需要方便實(shí)用的工具,這方面的工作目前還十分缺乏;
(3)由于所使用的數(shù)據(jù)而產(chǎn)生的可靠性估計(jì)誤差比由于使用軟件可靠性模型而產(chǎn)生的誤差要大一個(gè)數(shù)量級(jí),這說明數(shù)據(jù)質(zhì)量改進(jìn)的重要性。
2.影響軟件失效數(shù)據(jù)收集的因素
軟件產(chǎn)業(yè)是一門典型的知識(shí)密集型產(chǎn)業(yè),存在于軟件開發(fā)過程中的特殊復(fù)雜性問題,大多來源于人類腦力勞動(dòng)的社會(huì)化,對(duì)它的管理要復(fù)雜、困難得多。由于受到許多潛在因素的影響,要想從一個(gè)實(shí)際的項(xiàng)目中收集一組軟件失效數(shù)據(jù)是十分困難的。主要因素有:
(1)對(duì)軟件進(jìn)行度量的尺度定義混亂不清。如對(duì)時(shí)間、失效、錯(cuò)誤類型、模型結(jié)構(gòu)等的定義,就相當(dāng)含糊,缺乏統(tǒng)一的標(biāo)準(zhǔn)。這樣就使得在進(jìn)行軟件失效數(shù)據(jù)的收集時(shí),目標(biāo)不明確。
(2)對(duì)軟件產(chǎn)品的管理問題。軟件產(chǎn)品的隨意復(fù)制,可使它們?cè)诓煌南到y(tǒng)上運(yùn)行;同一產(chǎn)品的不同版本,又可以不受限制地同時(shí)被使用。于是,其后果就可能使收集的軟件失效數(shù)據(jù)含混不清。
(3)不完全的排錯(cuò)及診斷,使收集的數(shù)據(jù)中含有不少的虛假成分,它們不能正確反映軟件的真實(shí)狀況。
(4)收集技術(shù)本身需要許多方便、實(shí)用的工具,以及結(jié)構(gòu)精良、定義嚴(yán)謹(jǐn)?shù)臄?shù)據(jù)庫。但是,目前由于這些工具及數(shù)據(jù)庫的制作、設(shè)計(jì)及應(yīng)用并未受到應(yīng)有的重視,以致嚴(yán)重妨礙了對(duì)軟件失效數(shù)據(jù)的收集。特別是在“自動(dòng)錯(cuò)誤數(shù)據(jù)收集”的問題,因?yàn)橛嘘P(guān)錯(cuò)誤信息與自動(dòng)診斷難以定義,存在著許多有待解決的難題。
(5)心理因素的障礙。在軟件開發(fā)過程中,自始至終存在著進(jìn)度壓力。爭(zhēng)取將軟件早日投放市場(chǎng)的激烈競(jìng)爭(zhēng),使進(jìn)度成為首先要考慮的問題。如果缺乏嚴(yán)格而科學(xué)的管理,數(shù)據(jù)收集的任務(wù)就會(huì)被當(dāng)作令人厭煩的“額外負(fù)擔(dān)”而得不到應(yīng)有的重視,從而無法完成。
長按二維碼識(shí)別關(guān)注我們
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問題,請(qǐng)聯(lián)系我們,謝謝!