軟件可靠性介紹(下)
3)編碼階段 編碼就是把設(shè)計(jì)方案變成計(jì)算機(jī)語(yǔ)言,也就是所謂的編程序。編碼產(chǎn)生的缺陷也是軟件缺陷的一個(gè)主要來(lái)源。常見的編碼缺陷有:鍵入錯(cuò)代碼、原始數(shù)據(jù)輸入錯(cuò)誤(含單位不一致等)、用了被零除這類不正確表達(dá)式等。 應(yīng)在編碼過程中盡可能早地查出缺陷并予以改正。
(4)檢驗(yàn)階段 檢驗(yàn)階段主要任務(wù)是發(fā)現(xiàn)軟件中的缺陷,并加以清除。這個(gè)階段對(duì)于保證軟件的可靠性是很關(guān)鍵的。 為了查找缺陷,首先要對(duì)軟件進(jìn)行靜、動(dòng)態(tài)調(diào)試。此時(shí),需檢查源程序的結(jié)構(gòu)、方法和過程間的接口是否有誤,運(yùn)行時(shí)是否存在不必要的功能,檢查“要求”、“數(shù)據(jù)”、“結(jié)果”和“內(nèi)部程序工作狀態(tài)”對(duì)應(yīng)關(guān)系是否正確。 軟件的測(cè)試按模塊測(cè)試、整體測(cè)試和系統(tǒng)測(cè)試的次序依次進(jìn)行,最終確認(rèn)軟件的全部功能能否正確而完全地實(shí)現(xiàn)。
(5)維護(hù)階段 軟件交付使用后,要對(duì)使用中發(fā)現(xiàn)的殘存缺陷進(jìn)行糾正。同時(shí),由于軟件的運(yùn)行環(huán)境和調(diào)試時(shí)不盡相同,也需對(duì)軟件進(jìn)行必要的修改、補(bǔ)充和完善。此時(shí)用戶也可能提出一些新的要求。此外,還應(yīng)經(jīng)常研究出錯(cuò)的記錄,前后對(duì)照和分析,弄清楚軟件是否存在某種隱患。
3.容錯(cuò)設(shè)計(jì) 對(duì)于軟件失效后果特別嚴(yán)重的場(chǎng)合,如飛機(jī)的飛行控制系統(tǒng)、空中交通管制系統(tǒng)、核反應(yīng)堆安全控制系統(tǒng)等,可采用容錯(cuò)設(shè)計(jì)方法。此時(shí),軟件的故障率要求低于0.001h-1。常用的容錯(cuò)方法如下:
(1)N版本編程法 N版本編程法的核心是:通過多個(gè)模塊或版本不同的設(shè)計(jì)軟件,對(duì)于相同初始條件和相同輸入的操作結(jié)果,實(shí)行多數(shù)表決,防止其中某一軟件模塊/版本的故障提供錯(cuò)誤的服務(wù),以實(shí)現(xiàn)軟件容錯(cuò)。
為使此種容錯(cuò)技術(shù)具有良好的結(jié)果,必須注意:
1)使軟件的需求說(shuō)明具有完全性和精確性。這是保證軟件設(shè)計(jì)錯(cuò)誤不相關(guān)的前提。因?yàn)檐浖男枨笳f(shuō)明是不同設(shè)計(jì)組織和人員的唯一共同出發(fā)點(diǎn)。
2)設(shè)計(jì)全過程的不相關(guān)性。它要求各個(gè)不同的軟件設(shè)計(jì)人員彼此不交流,程序設(shè)計(jì)使用不同的算法、不同的編程語(yǔ)言、不同的編譯程序、不同的設(shè)計(jì)工具、不同的實(shí)現(xiàn)方法和不同的測(cè)試方法。為了徹底保證軟件設(shè)計(jì)的不相關(guān)性,甚至提出設(shè)計(jì)人員應(yīng)具有不同的受教育背景,來(lái)自不同地域、不同的國(guó)家。
(2)恢復(fù)塊技術(shù) 恢復(fù)塊技術(shù)的設(shè)計(jì)思想是:把一些特有的故障測(cè)試和恢復(fù)特性引人單一版本軟件。其目的在于:用可接收性測(cè)試(Acceptance Test)實(shí)現(xiàn)軟件的故障測(cè)試。該測(cè)試對(duì)首先啟動(dòng)的模塊運(yùn)行結(jié)果實(shí)行。如果測(cè)試不通過,則恢復(fù)系統(tǒng)的原來(lái)狀態(tài),在相同的硬件上執(zhí)行另一模塊;若以后的可接受性測(cè)試得以通過,則被認(rèn)為完成了恢復(fù)功能。 恢復(fù)塊技術(shù)的要點(diǎn)是:可接收性測(cè)試準(zhǔn)則,恢復(fù)點(diǎn)的狀態(tài)保持和選擇策略,以及不同算法的設(shè)計(jì)。