2011年軟考系統(tǒng)架構(gòu)設(shè)計(jì)師學(xué)習(xí)筆記第十三章
系統(tǒng)的可靠性
13.1 軟件可靠性
目前,硬件可靠性測(cè)試技術(shù)和評(píng)估手段日趨成熟,已經(jīng)得到了業(yè)界的認(rèn)可。
軟件可靠性模型的研究多集中在開發(fā)階段、測(cè)試階段、評(píng)估階段的可靠性模型。
13.1.1 軟件可靠性的定義
可靠性(Reliability)是指產(chǎn)品在規(guī)定的條件下和規(guī)定的時(shí)間內(nèi)完成規(guī)定功能的能力。
按照產(chǎn)品可靠性的形成,分為固有可靠性、使用可靠性。
固有可靠性是通過設(shè)計(jì)、制造賦予產(chǎn)品的可靠性。
使用可靠性既受設(shè)計(jì)、制造的影響,又受使用條件的影響。
軟件與硬件從可靠性角度來看,主要有4個(gè)不同點(diǎn):
1、復(fù)雜性,軟件內(nèi)部的邏輯高度復(fù)雜,硬件則相對(duì)簡(jiǎn)單。
2、物理退化,一個(gè)正確的軟件任何時(shí)刻均可靠,一個(gè)正確的硬件、元器件、系統(tǒng)則可能在某個(gè)時(shí)刻失效。
3、唯一性,軟件是唯一的,軟件復(fù)制不改變軟件本身,硬件不可能完全相同,概率方法在硬件可靠性領(lǐng)域取得巨大成功。
4、版本更新快,軟件版本更新較快,也給軟件可靠性評(píng)估帶來較大的難度。
1983年,美國(guó)IEEE 對(duì)“軟件可靠性”做出了更明確的定義。
1989年,我國(guó)國(guó)家標(biāo)準(zhǔn) GB/T-11457也采用了這個(gè)定義。
定義:在規(guī)定的條件下,在規(guī)定的時(shí)間內(nèi),軟件不引起系統(tǒng)失效的概率。
依然沿用了“產(chǎn)品可靠性”的定義。
1、規(guī)定的時(shí)間
由于軟件運(yùn)行的環(huán)境與程序路徑選取的隨機(jī)性,軟件的失效為隨機(jī)事件,所以運(yùn)行時(shí)間屬于隨機(jī)變量。
2、規(guī)定的條件
不同的環(huán)境條件下的可靠性是不同的,計(jì)算機(jī)的配置情況、對(duì)輸入的要求。
有了明確規(guī)定的環(huán)境條件,還可以有效地判斷軟件失效的責(zé)任在用戶方還是開發(fā)放。
3、所要求的功能
軟件可靠性還與規(guī)定的任務(wù)和功能有關(guān)。
要準(zhǔn)確度量軟件系統(tǒng)的可靠性,必須先明確它的任務(wù)和功能。
4、“軟件可靠性”定義具有如下特點(diǎn):
1. 用內(nèi)在的“缺陷” 和 外在的“失效”關(guān)系來描述可靠性。
2. 定義使人們對(duì)軟件可靠性進(jìn)行量化評(píng)估成為可能。
3. 用概率的方法描述可靠性是比較科學(xué)的。
13.1.2 軟件可靠性的定量描述
軟件的可靠性可以基于 使用條件、規(guī)定時(shí)間、系統(tǒng)輸入、系統(tǒng)使用、軟件缺陷 等變量構(gòu)建的數(shù)學(xué)表達(dá)式。
1、規(guī)定時(shí)間:自然時(shí)間、運(yùn)行時(shí)間、執(zhí)行時(shí)間。
使用執(zhí)行時(shí)間來度量軟件的可靠性最為準(zhǔn)確。
2、失效率:把軟件從運(yùn)行開始,到某一時(shí)刻t 為止,出現(xiàn)失效的概率用 F(t)表示。
F(0)=0,即軟件運(yùn)行初始時(shí)刻失效概率為0。
F(t)在時(shí)間域(0,+無窮大)上是單調(diào)遞增的。
F(+無窮大)=1,即失效概率在運(yùn)行時(shí)間不斷增長(zhǎng)時(shí) 趨向于1,這也意味著任何軟件都存在缺陷。
3、可靠度:在規(guī)定的條件下,規(guī)定的時(shí)間內(nèi) 不發(fā)生失效的概率。
4、失效強(qiáng)度(Failure Intensity)單位時(shí)間 軟件系統(tǒng)出現(xiàn)失效的概率。
5、失效率(Failure Rate)又稱 風(fēng)險(xiǎn)函數(shù)(Hazard Function),也可以稱為條件失效強(qiáng)度。
就是當(dāng)軟件在 0~t 時(shí)刻內(nèi) 沒有發(fā)生失效的條件下,t 時(shí)刻軟件系統(tǒng)的失效強(qiáng)度。
公式略。
6、可靠度與失效率之間的換算。
7、平均失效時(shí)間(Mean Time to Failure,MTTF)就是軟件運(yùn)行后,到下一次出現(xiàn)失效的平均時(shí)間。更直觀地表明一個(gè)軟件的可靠度。
需要對(duì) 軟件可靠度 這個(gè)反映軟件可靠性的肚量指標(biāo)作下列補(bǔ)充說明:
1. 需指明它與其他軟件的界限。
2. 軟件失效必須明確定義。
3. 必須假設(shè)硬件無故障(失效)和軟件有關(guān)變量輸入正確。
5. 必須指明時(shí)間基準(zhǔn):自然時(shí)間(日歷時(shí)間)、運(yùn)行時(shí)間、執(zhí)行時(shí)間(CPU 時(shí)間)、其他時(shí)間基準(zhǔn)。
6. 通常以概率度量,也可以模糊數(shù)學(xué)中的可能性加以度量。
7. 在時(shí)間域上進(jìn)行,是一種動(dòng)態(tài)度量,也可以是在數(shù)據(jù)域上,表示成功執(zhí)行一個(gè)回合的概率。
軟件回合是軟件運(yùn)行最小的、不可分的執(zhí)行單位。
8. 有時(shí)將軟件運(yùn)行環(huán)境簡(jiǎn)單地理解為軟件運(yùn)行剖面(Operational Profile)。
運(yùn)行剖面定義了關(guān)于軟件可靠性描述中的“規(guī)定條件”,測(cè)試環(huán)境、測(cè)試數(shù)據(jù) 等一系列問題。
13.1.3 可靠性目標(biāo)
使用 失效強(qiáng)度 表示軟件缺陷對(duì)軟件運(yùn)行的影響程度。
不僅取決于軟件失效發(fā)生的概率,還和軟件失效的嚴(yán)重程度有很大關(guān)系。引出另外一個(gè)概念——失效嚴(yán)重程度類(Failure Severity Class)。
失效嚴(yán)重程度類 就是對(duì)用戶具有相同程度影響的失效集合。
對(duì)失效嚴(yán)重程度的分級(jí) 可以按照不同的標(biāo)準(zhǔn)進(jìn)行,對(duì)成本影響、對(duì)系統(tǒng)能力的影響 等。
對(duì)成本的影響可能包括失效引起的額外運(yùn)行成本、修復(fù)和恢復(fù)成本、現(xiàn)有潛在的業(yè)務(wù)機(jī)會(huì)的損失等。
對(duì)系統(tǒng)能力的影響常常表現(xiàn)為 關(guān)鍵數(shù)據(jù)的損失、系統(tǒng)異常退出、系統(tǒng)崩潰、導(dǎo)致用戶操作無效等。
可靠性目標(biāo)是指客戶對(duì)軟件性能滿意程度的期望。通常用 可靠度、故障強(qiáng)度、平均失效時(shí)間(MTTF)等指標(biāo)來描述。
建立定量的可靠性指標(biāo)需要對(duì)可靠性、交付時(shí)間、成本進(jìn)行平衡。
13.1.4 可靠性測(cè)試的意義
1、軟件失效可能造成災(zāi)難性的后果。
2、軟件的失效在整個(gè)計(jì)算機(jī)系統(tǒng)失效中的比例較高。
80%和軟件有關(guān)。
結(jié)構(gòu)太復(fù)雜了,一個(gè)較簡(jiǎn)單的程序,其所有路徑數(shù)量可能是一個(gè)天文數(shù)字。
3、相比硬件可靠性技術(shù),軟件可靠性技術(shù)很不成熟。
4、軟件可靠性問題是造成費(fèi)用增長(zhǎng)的主要原因之一。
5、系統(tǒng)對(duì)于軟件的依賴性越來越強(qiáng)。
13.1.5 廣義的可靠性測(cè)試與俠義的可靠性測(cè)試
廣義的軟件可靠性測(cè)試是指為了最終評(píng)價(jià)軟件系統(tǒng)的可靠性而運(yùn)用建模、統(tǒng)計(jì)、試驗(yàn)、分析、和評(píng)價(jià)等一系列手段對(duì)軟件系統(tǒng)實(shí)施的一種測(cè)試。
俠義的軟件可靠性測(cè)試是指為了獲取可靠性數(shù)據(jù),按預(yù)先確定的測(cè)試用例,在軟件的預(yù)期使用環(huán)境中,對(duì)軟件實(shí)施的一種測(cè)試。
也叫“軟件可靠性試驗(yàn)(Software Reliability Test)”,它是面向缺陷的測(cè)試,以用戶將要使用的方式來測(cè)試軟件,所獲得的測(cè)試數(shù)據(jù)與軟件的實(shí)際運(yùn)行數(shù)據(jù)比較接近。
可靠性測(cè)試是對(duì)軟件產(chǎn)品的可靠性進(jìn)行調(diào)查、分析、評(píng)價(jià)的一種手段。
對(duì)檢測(cè)出來的失效的分布、原因、后果 進(jìn)行分析,并給出糾正建議。
總的來說,可靠性測(cè)試的目的可歸納為以下三個(gè)方面:
1、發(fā)現(xiàn)軟件系統(tǒng)在 需求、設(shè)計(jì)、編碼、測(cè)試、實(shí)施 等方面的 各種缺陷。
2、為軟件的使用、維護(hù)提供可靠性數(shù)據(jù)。
3、確認(rèn)軟件是否達(dá)到可靠性的定量要求。
13.2 軟件可靠性建模
13.2.1 影響軟件可靠性的因素
軟件可靠性模型(Software Reliability Model)是指 為預(yù)計(jì)或估算軟件的可靠性所建立的可靠性框圖和數(shù)學(xué)模型。
模型將復(fù)雜系統(tǒng)的可靠性逐級(jí)分解為簡(jiǎn)單系統(tǒng)的可靠性,以便 定量預(yù)計(jì)、分配、估算、評(píng)價(jià)復(fù)雜系統(tǒng)的可靠性。
影響軟件可靠性的主要因素:缺陷的引入、發(fā)現(xiàn)、清除。
缺陷的引入主要取決于軟件產(chǎn)品的特征和軟件的開發(fā)過程特性。
缺陷的發(fā)現(xiàn)依靠運(yùn)行剖面。
缺陷的清除依賴于失效的發(fā)現(xiàn)、修復(fù)活動(dòng)、可靠性方面的投入。
影響軟件可靠性的主要因素如下:
1、運(yùn)行剖面(環(huán)境)。
2、軟件規(guī)模。
3、軟件內(nèi)部結(jié)構(gòu)。
4、軟件的開發(fā)方法和開發(fā)環(huán)境。
5、軟件的可靠性投入。人力、資金、資源、時(shí)間 等。
早期重視軟件可靠性并采取措施開發(fā)出來的軟件,可靠性有明顯的提高。
13.2.2 軟件可靠性建模方法
可靠性模型通常由以下幾部分組成:
1、模型假設(shè)。模型是實(shí)際情況的簡(jiǎn)化或規(guī)范化,總要包含若干假設(shè)。
2、性能度量。軟件可靠性模型的輸出量就是性能度量。
3、參數(shù)估計(jì)方法。
4、數(shù)據(jù)要求。
絕大多數(shù)模型包含三個(gè)共同假設(shè):
1、代表性假設(shè)。選取代表軟件實(shí)際的運(yùn)行剖面。
2、獨(dú)立性假設(shè)。假設(shè)認(rèn)為軟件失效是獨(dú)立發(fā)生于不同時(shí)刻。
3、相同性假設(shè)。認(rèn)為所有軟件失效的后果(等級(jí))相同,即建模過程只考慮軟件失效的具體發(fā)生時(shí)刻,不區(qū)分軟件的失效嚴(yán)重等級(jí)。
如果在進(jìn)行預(yù)測(cè)時(shí)發(fā)現(xiàn)引入了新的錯(cuò)誤,或修復(fù)行為使新的故障不斷發(fā)生,就應(yīng)該停止預(yù)測(cè)。否則,這樣的變化會(huì)因?yàn)樵黾訂栴}的復(fù)雜程度而使模型的適用性降低。
好的軟件可靠性模型應(yīng)該具有如下重要特性:
1、基于可靠性的假設(shè)。
2、簡(jiǎn)單。
3、計(jì)算一些有用的量。
4、給出未來失效行為的好的映射。
5、可廣泛使用。
13.2.3 軟件的可靠性模型分類
可靠性模型大致可分為如下10類:
1、種子方法模型。
利用捕獲一再捕獲抽樣技術(shù)估計(jì)程序中的錯(cuò)誤數(shù),在程序中預(yù)先有意“播種”一些設(shè)定錯(cuò)誤的“種子”,然后根據(jù)測(cè)試出的原始錯(cuò)誤和發(fā)現(xiàn)的誘導(dǎo)錯(cuò)誤比例,估計(jì)程序中殘留的錯(cuò)誤數(shù)。
優(yōu)點(diǎn)是簡(jiǎn)單易行,缺點(diǎn)是誘導(dǎo)錯(cuò)誤的“種子”與實(shí)際的原始錯(cuò)誤之間的類比性估量困難。
2、失效率類模型。
3、曲線擬合類模型。
用回歸分析的方法研究軟件 復(fù)雜性、缺陷數(shù)、失效率、失效間隔時(shí)間,包括參數(shù)方法和非參數(shù)方法兩種。
4、可靠性增長(zhǎng)模型。
5、程序結(jié)構(gòu)分析模型。
通過對(duì)每一個(gè)節(jié)點(diǎn)可靠性、節(jié)點(diǎn)間轉(zhuǎn)換的可靠性和網(wǎng)絡(luò)在節(jié)點(diǎn)間的轉(zhuǎn)換概率,得出該持續(xù)程序的整體可靠性。
6、輸入域分類模型。
7、執(zhí)行路徑分析方法模型。
8、非其次泊松過程模型。
NHPP,以軟件測(cè)試過程中單位時(shí)間的失效次數(shù)為獨(dú)立泊松隨機(jī)變量,來預(yù)測(cè)今后軟件的某使用時(shí)間點(diǎn)的積累失效次數(shù)。
9、馬兒可夫過程模型。
10、貝葉斯模型。
利用失效率的試驗(yàn)前分布和當(dāng)前的測(cè)試失效信息,來評(píng)估軟件的可靠性。
當(dāng)軟件可靠性工程師對(duì)軟件的開發(fā)過程有充分的了解,軟件的繼承性比較好時(shí)具有良效果的可靠性分析模型。
時(shí)間域。
失效數(shù)類:失效數(shù)是有限的還是無限的。
失效數(shù)分布。
有限類:用時(shí)間表示的失效強(qiáng)度的函數(shù)形式。
無限類:用經(jīng)驗(yàn)期望失效數(shù)表示的失效強(qiáng)度的函數(shù)形式。
13.2.4 軟件可靠性模型舉例
1、模型假設(shè)
JM 模型的基本假設(shè)如下:
1. 初始錯(cuò)誤個(gè)數(shù)為一個(gè)未知的常數(shù)。
2. 發(fā)現(xiàn)錯(cuò)誤立即被完全排除,并且不引入新的錯(cuò)誤,排除時(shí)間忽略不記,因此每次排錯(cuò)后就要減 1。
3. 失效率剩余的錯(cuò)誤個(gè)數(shù)成正比。
2、函數(shù)表達(dá)式。
軟件可靠性模型并不成熟,定量分析方法和數(shù)學(xué)模型要在實(shí)踐中不斷加以驗(yàn)證和修正。
不同類型的軟件,應(yīng)用方式也有很大區(qū)別。
13.2.5 軟件可靠性測(cè)試概述
可靠性測(cè)試 由可靠性目標(biāo)的確定、運(yùn)行剖面的開發(fā)、測(cè)試用例的設(shè)計(jì)、測(cè)試實(shí)施、測(cè)試結(jié)果的分析 等主要活動(dòng)組成。
軟件可靠性測(cè)試 還必須考慮對(duì)軟件開發(fā)進(jìn)度和成本的影響,最好是在受控的自動(dòng)測(cè)試環(huán)境下,由專業(yè)測(cè)試機(jī)構(gòu)完成。
13.2.6 定義軟件運(yùn)行剖面
弧 用來連接狀態(tài)并表示由各種激勵(lì)導(dǎo)致的轉(zhuǎn)換,將轉(zhuǎn)換概率分配給每個(gè)弧。
每類用戶都可能以不同的方式使用系統(tǒng)。
兩種類型分層形式:用戶級(jí)分層、用法級(jí)分層。
用法級(jí)分層依賴于在測(cè)試狀態(tài)下系統(tǒng)能做什么。
用戶級(jí)分層考慮各種類型的用戶,以及他們?nèi)绾问褂孟到y(tǒng)。
這些概率估計(jì)主要是基于如下幾個(gè)方面:
1、從現(xiàn)有系統(tǒng)收集到的數(shù)據(jù)。
2、與用戶的交談或?qū)τ脩暨M(jìn)行觀察獲得的信息。
3、原型使用與測(cè)試分析的結(jié)果。
4、相關(guān)領(lǐng)域?qū)<业囊庖姟?/p>
13.2.7 可靠性測(cè)試的實(shí)施
有必要檢查軟件需求與文檔是否一致,檢查軟件開發(fā)過程中形成的文檔的準(zhǔn)確性、完整性、一致性。
可靠性測(cè)試依賴于軟件的可測(cè)試性。
為了獲得更多的可靠數(shù)據(jù),應(yīng)該使用多態(tài)計(jì)算機(jī)同時(shí)運(yùn)行軟件,以增加累計(jì)時(shí)間。
用時(shí)間定義的軟件可靠性數(shù)據(jù)分為4類:
1、失效時(shí)間數(shù)據(jù)。
2、失效間隔時(shí)間數(shù)據(jù)。
3、分組時(shí)間內(nèi)的失效數(shù)據(jù)。
4、分組時(shí)間的累計(jì)失效數(shù)。
這 4類數(shù)據(jù)可以相互轉(zhuǎn)化。
測(cè)試過程中必須真實(shí)地進(jìn)行記錄,每個(gè)測(cè)試記錄必須包含如下信息:
1、測(cè)試時(shí)間。
2、含有測(cè)試用例的測(cè)試說明或標(biāo)識(shí)。
3、所有與測(cè)試有關(guān)的測(cè)試結(jié)果,包括失效數(shù)據(jù)。
4、測(cè)試人員。
測(cè)試活動(dòng)結(jié)束后要編寫《軟件可靠性測(cè)試報(bào)告》具備如下內(nèi)容:
1、軟件產(chǎn)品標(biāo)識(shí)。
2、測(cè)試環(huán)境配置(硬件和軟件)。
3、測(cè)試依據(jù)。
4、測(cè)試結(jié)果。
5、測(cè)試問題。
6、測(cè)試時(shí)間。
13.3 軟件可靠性評(píng)價(jià)
13.3.1 軟件可靠性評(píng)價(jià)概述
估計(jì)軟件當(dāng)前的可靠性,以確認(rèn)是否可以終止測(cè)試并發(fā)布軟件,還可以預(yù)計(jì)軟件要達(dá)到相應(yīng)的可靠性水平所需要的時(shí)間和工作量,確認(rèn)軟件的執(zhí)行與需求的一致性。
13.3.2 怎樣選擇可靠性模型
可以從以下幾個(gè)方面進(jìn)行比較和選擇:
1、模型假設(shè)的適用性。
2、預(yù)測(cè)的能力與質(zhì)量。
3、模型輸出值能否滿足可靠性評(píng)價(jià)需求。
最重要的幾個(gè)需要精確估計(jì)的可靠性定量指標(biāo)包括如下內(nèi)容:
1. 當(dāng)前的可靠度。
2. 平均失效時(shí)間。
3. 故障密度。
4. 期望達(dá)到規(guī)定可靠性目標(biāo)的日期。
5. 達(dá)到規(guī)定的可靠性目標(biāo)的成本要求。
4、模型使用的簡(jiǎn)便性
簡(jiǎn)便性一般包含如下三層含義:
1. 模型需要的數(shù)據(jù) 易于收集,成本不能超過可靠性計(jì)劃的預(yù)算。
2. 模型應(yīng)該簡(jiǎn)單易懂,測(cè)試人員不會(huì)花費(fèi)太多的時(shí)間去研究專業(yè)的數(shù)學(xué)理論。
3. 模型應(yīng)該便于使用。
13.3.3 可靠性數(shù)據(jù)的收集
面向缺陷的可靠性測(cè)試 產(chǎn)生的測(cè)試數(shù)據(jù)經(jīng)過分析后,可以得到非常有價(jià)值的可靠性數(shù)據(jù),這部分?jǐn)?shù)據(jù)取決于定義的運(yùn)行剖面和選取的測(cè)試用例集。
可靠性數(shù)據(jù)的收集工作是貫穿整個(gè)軟件生命周期的。
可行的一些辦法如下:
1、及早確定所采用的可靠性模型。
2、指定可實(shí)施性較強(qiáng)的可靠性數(shù)據(jù)收集計(jì)劃,指定專人負(fù)責(zé),按照統(tǒng)一的規(guī)范收集記錄可靠性數(shù)據(jù)。
3、重視軟件測(cè)試特別是可靠性測(cè)試產(chǎn)生的測(cè)試數(shù)據(jù)的整理和分析。
4、充分利用數(shù)據(jù)庫來完成可靠性數(shù)據(jù)的存儲(chǔ)和統(tǒng)計(jì)分析。
13.3.4 軟件可靠性的評(píng)估和預(yù)測(cè)
1、判斷是否達(dá)到了可靠性目標(biāo)。
2、如未能達(dá)到,要再投入多少時(shí)間、多少人力、多少資金。
3、在軟件系統(tǒng)投入實(shí)際運(yùn)行 若干時(shí)間后,能否達(dá)到交付或部分交付用戶使用的可靠性水平。
沒有失效就無法估計(jì)可靠性。
要在模型之外運(yùn)行一些統(tǒng)計(jì)技術(shù)和手段對(duì)可靠性數(shù)據(jù)進(jìn)行分析,作為可靠性模型的補(bǔ)充、完善、修正。
輔助方法如下:
1、失效數(shù)據(jù)的圖形分析方法。
1. 積累失效個(gè)數(shù)圖形。
2. 單位時(shí)間段內(nèi)的失效數(shù)的圖形。
3. 失效間隔時(shí)間圖形。
2、試探性數(shù)據(jù)分析技術(shù)(Exploratory Data Analysis,EDA)對(duì)可靠性分析有用的信息如下:
1. 循環(huán)相關(guān)。
2. 短期內(nèi)失效數(shù)的急劇上升。
3. 失效數(shù)集中的時(shí)間段。
13.4 軟件的可靠性設(shè)計(jì)與管理
13.4.1 軟件可靠性設(shè)計(jì)
實(shí)踐證明,保障軟件可靠性,最有效、最經(jīng)濟(jì)、最重要的手段是 在軟件設(shè)計(jì)階段采取措施進(jìn)行可靠性控制。
1、軟件可靠性設(shè)計(jì)是軟件設(shè)計(jì)的一部分,必須在軟件的總體設(shè)計(jì)框架中使用,并且不能與其他設(shè)計(jì)原則相沖突。
2、軟件可靠性設(shè)計(jì)在滿足提高軟件質(zhì)量要求的前提下,以提高和保障軟件可靠性為最終目標(biāo)。
3、軟件可靠性設(shè)計(jì)應(yīng)確定軟件的可靠性目標(biāo),不能無限擴(kuò)大化,排在功能度、用戶需求、開發(fā)費(fèi)用之后考慮。
容錯(cuò)設(shè)計(jì)、檢錯(cuò)設(shè)計(jì)、降低復(fù)雜度設(shè)計(jì) 等技術(shù)。
1、容錯(cuò)設(shè)計(jì)技術(shù)
1. 恢復(fù)塊設(shè)計(jì),一旦文本出現(xiàn)故障,用備份文本加以替換。
2. N版本程序設(shè)計(jì),對(duì)于相同初始條件和相同輸入的操作結(jié)果,實(shí)行多數(shù)表決,防止其中某一軟件模塊/版本的故障提供錯(cuò)誤的服務(wù)。
必須注意以下兩方面:
使軟件的需求說明具有完整性和精確性。
設(shè)計(jì)全過程的不相關(guān)性。
3. 冗余設(shè)計(jì)
在相同的運(yùn)行環(huán)境中,一套軟件出故障的地方,另外一套也一定會(huì)出現(xiàn)故障。
在一套完整的軟件系統(tǒng)之外,設(shè)計(jì)一種不同路徑、不同算法或不同實(shí)現(xiàn)方法的模塊或系統(tǒng)作為備份。
費(fèi)用可能接近單個(gè)版本軟件開發(fā)費(fèi)用的兩倍,還有可能導(dǎo)致軟件運(yùn)行時(shí)所花費(fèi)的存儲(chǔ)空間、內(nèi)存消耗、運(yùn)行時(shí)間有所增加,需要在可靠性要求和額外付出代價(jià)之間做出折中。
2、檢錯(cuò)技術(shù)
檢錯(cuò)技術(shù)實(shí)現(xiàn)的代價(jià)一般低于容錯(cuò)技術(shù)和冗余技術(shù),但它有一個(gè)明顯的缺點(diǎn),就是不能自動(dòng)解決故障。
著重考慮幾個(gè)要素:檢測(cè)對(duì)象、檢測(cè)延時(shí)、實(shí)現(xiàn)方式、處理方式。
3、降低復(fù)雜度設(shè)計(jì)
模塊復(fù)雜性主要包含模塊內(nèi)部數(shù)據(jù)流向和程序長(zhǎng)度兩個(gè)方面,結(jié)構(gòu)復(fù)雜性用不同模塊之間的關(guān)聯(lián)程度表示。
軟件復(fù)雜性是產(chǎn)生軟件缺陷的重要根源。
在設(shè)計(jì)師就應(yīng)該考慮降低軟件的復(fù)雜性,是提高軟件可靠性的有效方法。
在保證實(shí)現(xiàn)軟件功能的基礎(chǔ)上,簡(jiǎn)化軟件結(jié)構(gòu),縮短程序代碼長(zhǎng)度,優(yōu)化軟件數(shù)據(jù)流向,降低軟件復(fù)雜度,從而提高軟件可靠性。
13.4.2 軟件可靠性管理
為了進(jìn)一步提高軟件可靠性,又提出軟件可靠性管理的概念,把軟件可靠性活動(dòng)貫穿于軟件開發(fā)的全過程。
各個(gè)階段的可靠性活動(dòng)的目標(biāo)、計(jì)劃、進(jìn)度、任務(wù)、修正措施等。
由于軟件之間的差異較大,下面的每項(xiàng)活動(dòng)并不是每一個(gè)軟件系統(tǒng)的可靠性管理的必須內(nèi)容,也不是軟件可靠性管理的全部?jī)?nèi)容。
【編輯推薦】