楊宏帥
(黑龍江職業(yè)學(xué)院,黑龍江 哈爾濱 150080)
軟件可靠性與安全性研究
楊宏帥
(黑龍江職業(yè)學(xué)院,黑龍江 哈爾濱 150080)
文章通過(guò)對(duì)軟件可靠性與安全性基本概念的探討與澄清,提出了當(dāng)前對(duì)軟件可靠性進(jìn)行定性評(píng)價(jià)是十分必要并且切實(shí)可行的判斷,并希望為今后的研究找到一條切實(shí)可行的技術(shù)路線。
軟件;可靠性;安全性
長(zhǎng)期以來(lái),如何給出應(yīng)用軟件的可靠性和安全性要求是一個(gè)一直困擾我國(guó)軟件開(kāi)發(fā)人員的問(wèn)題。當(dāng)前關(guān)于軟件可靠性的研究沿著定量和定性兩個(gè)方向進(jìn)行,但無(wú)論是定量研究還是定性研究都沒(méi)有給出一個(gè)明確的、普遍適用的、具有實(shí)際操作性的、可考核的可靠性度量指標(biāo)。在定量方面,軟件可靠度是被普遍接受的軟件可靠性度量指標(biāo),但存在無(wú)法驗(yàn)證的問(wèn)題,在工程上無(wú)法實(shí)施。在定性方面,軟件缺陷避免、消除、遏制等軟件可靠性工程技術(shù)能夠極大地提高軟件的可靠性,具有很好的實(shí)際應(yīng)用效果,但沒(méi)有形成基于軟件可靠性技術(shù)的軟件可靠性評(píng)價(jià)體系,無(wú)法基于軟件所采用的可靠性技術(shù)對(duì)軟件的可靠性進(jìn)行評(píng)價(jià)。本文在分析軟件可靠性、安全性相關(guān)概念的基礎(chǔ)上,對(duì)一些容易引起混淆的概念予以澄清,以期梳理出一個(gè)清晰的研究框架,為今后的研究找到一條切實(shí)可行的技術(shù)路線。
2.1 可靠性
軟件可靠性從直觀上講就是軟件運(yùn)行期間不發(fā)生失效的概率。從用戶角度看,兩個(gè)同樣功能的軟件,如果其中一個(gè)在使用中發(fā)生失效的頻率較高,而另一個(gè)發(fā)生失效的頻率較低,用戶會(huì)認(rèn)為失效頻率較高的那一個(gè)可靠性較差。軟件失效與硬件失效不同,硬件失效主要是由器件“磨損”所導(dǎo)致的,是時(shí)間的函數(shù),而軟件失效則是由軟件內(nèi)存在的缺陷所導(dǎo)致的,是軟件固有的,是不隨時(shí)間變化的。軟件失效的頻率不僅與軟件中存在的缺陷數(shù)相關(guān),而且與軟件的使用相關(guān)。即使軟件中缺陷數(shù)量較少,如果存在缺陷的那部分軟件功能是用戶經(jīng)常使用的,則同樣會(huì)頻繁地出現(xiàn)軟件失效。從另一個(gè)方面看,即使軟件中存在的缺陷數(shù)量較多,如果都存在于用戶不經(jīng)常使用的功能中,則有可能出現(xiàn)失效概率較低的情況。因此定義軟件的可靠性不能僅考慮軟件中缺陷的密度,還要考慮軟件的實(shí)際使用情況。軟件的實(shí)際使用情況在數(shù)學(xué)上可以用規(guī)定的使用時(shí)間內(nèi)軟件的輸入空間及其概率分布來(lái)描述。對(duì)于任何一個(gè)給定的軟件,由于其中存在的缺陷是確定的,所以能引起軟件失效的輸入集合就是確定的,根據(jù)軟件輸入空間的概率分布就能計(jì)算出引起失效的輸入集合出現(xiàn)的概率,因此就能定量地計(jì)算出軟件的可靠性,如圖1所示。
圖1 引起失效的輸入集合出現(xiàn)的概率
GB/T11457-1995軟件工程術(shù)語(yǔ)中將軟件可靠性定義為:在規(guī)定的條件下、規(guī)定時(shí)間內(nèi)軟件不引起系統(tǒng)失效的概率[1]。在這個(gè)定義中,規(guī)定的條件和規(guī)定的時(shí)間體現(xiàn)了軟件的實(shí)際使用情況,在數(shù)學(xué)上同樣可以用規(guī)定的使用時(shí)間內(nèi)軟件的輸入空間及其概率分布來(lái)描述。基于前文所述,對(duì)任一給定的軟件,該定義給出的可靠性度量指標(biāo)(不失效概率)是存在的并且是理論上可計(jì)算的,因此該定義是關(guān)于可靠性的科學(xué)的定量定義。
但該定義中將軟件可靠性定義為不引起“系統(tǒng)”失效的概率是值得商榷的。從前文所述可知,軟件可靠性是軟件自身的一種屬性,是由軟件中存在的缺陷決定的,外在的“系統(tǒng)”對(duì)軟件可靠性產(chǎn)生的作用已經(jīng)在軟件的輸入空間及概率分布上體現(xiàn),在這種情況下并不存在軟件引起系統(tǒng)失效的概率,而只存在軟件自身失效的概率,因此準(zhǔn)確的軟件可靠性定義應(yīng)該為:在規(guī)定的條件下、規(guī)定時(shí)間內(nèi)軟件不出現(xiàn)失效的概率。將軟件可靠性與外在的“系統(tǒng)”相分離既可以在軟件可靠性與系統(tǒng)可靠性之間劃清明確的界限,使軟件可靠性的分析變得非常確定,又可以使軟件可靠性定義能夠適用于沒(méi)有外在“系統(tǒng)”的純軟件產(chǎn)品的情況。
當(dāng)前國(guó)外的軟件可靠性工程研究以軟件可靠性定量評(píng)估模型為主要研究?jī)?nèi)容。美國(guó)宇航協(xié)會(huì)(AIAA)將軟件可靠性工程定義為:應(yīng)用統(tǒng)計(jì)技術(shù)處理在系統(tǒng)開(kāi)發(fā)和運(yùn)行期間所采集的數(shù)據(jù),以便詳細(xì)說(shuō)明、預(yù)計(jì)、估計(jì)和評(píng)價(jià)基于軟件的系統(tǒng)可靠性。目前已獲得的模型包括:Jelinski-Moranda模型、Schneidewind模型、Musa-Okumoto模型、Duane's模型、Littlewood-Verrall模型等,但還沒(méi)有一個(gè)普遍適用的模型能夠?qū)浖煽啃赃M(jìn)行準(zhǔn)確地定量評(píng)估[2]。究其原因在于:(1)基于統(tǒng)計(jì)的分析需要大量的原始數(shù)據(jù),目前原始數(shù)據(jù)積累不夠;(2)數(shù)學(xué)上比較復(fù)雜,首先軟件輸入空間是一個(gè)無(wú)窮的集合,其次還需要考慮輸入的各種組合情況;(3)牽扯因素較多,需要考慮軟件開(kāi)發(fā)各階段引入缺陷的情況;(4)可靠性評(píng)估結(jié)果還與測(cè)試技術(shù)相關(guān)。以上因素都使得基于定量定義的軟件可靠性評(píng)估在短時(shí)間內(nèi)難以取得具有較強(qiáng)實(shí)際應(yīng)用價(jià)值的成果。
除上述軟件可靠性定量定義外,還有關(guān)于軟件可靠性的定性定義。GB/T11457—1995軟件工程術(shù)語(yǔ)中給出的第二個(gè)軟件可靠性定義為:在規(guī)定的時(shí)間周期內(nèi)所述條件下程序執(zhí)行所要求的功能的能力[3]。眾所周知,軟件可靠性能力的獲得與軟件開(kāi)發(fā)過(guò)程所采用的設(shè)計(jì)、分析、測(cè)試、管理技術(shù)密切相關(guān),最終軟件產(chǎn)品的可靠性與軟件開(kāi)發(fā)過(guò)程中所采用的軟件可靠性技術(shù)的數(shù)量和合理性成正相關(guān)關(guān)系。目前國(guó)內(nèi)關(guān)于軟件可靠性技術(shù)和工程化方法研究很多,但還沒(méi)有形成基于軟件可靠性技術(shù)的軟件可靠性評(píng)價(jià)體系,導(dǎo)致在航天軟件開(kāi)發(fā)實(shí)踐中既沒(méi)有軟件可靠性定量指標(biāo)可用,也沒(méi)有軟件可靠性定性衡量標(biāo)準(zhǔn)的現(xiàn)狀。究其原因在于:(1)對(duì)定量指標(biāo)的追求,導(dǎo)致對(duì)定性指標(biāo)的忽視;(2)定性指標(biāo)的建立需要大量的統(tǒng)計(jì)數(shù)據(jù),國(guó)內(nèi)目前沒(méi)有開(kāi)展相應(yīng)的數(shù)據(jù)積累工作;(3)軟件可靠性相關(guān)的技術(shù)研究不充分,沒(méi)有從建立軟件可靠性評(píng)價(jià)體系的角度對(duì)各項(xiàng)軟件可靠性技術(shù)進(jìn)行分析研究。
2.2 安全性
與軟件可靠性相關(guān)的另一個(gè)問(wèn)題是軟件的安全性。GJB/ Z 102—97軟件可靠性和安全性設(shè)計(jì)準(zhǔn)則中將軟件的安全性定義為:軟件運(yùn)行不引起系統(tǒng)事故的能力。從定義中可以看出,軟件的安全性不能脫離一個(gè)外在的“系統(tǒng)”而獨(dú)立存在。對(duì)于軟件計(jì)算器一類的純軟件產(chǎn)品是不存在什么安全性的,然而對(duì)于軟件計(jì)算器這類的純軟件產(chǎn)品可靠性是存在的,這說(shuō)明軟件可靠性是軟件自身的一種性質(zhì),而軟件安全性并不是軟件自身的一種性質(zhì),兩者是截然不同的概念。從可靠性和安全性的定量關(guān)系上看也是如此,如果軟件中的缺陷僅存在于安全關(guān)鍵的模塊中,而安全關(guān)鍵模塊又是被較少使用的功能,雖然軟件具有很高的可靠性,但系統(tǒng)的安全性卻是很低的。相反如果軟件中的缺陷存在于非安全關(guān)鍵模塊中,而非安全模塊是被較多使用的功能,雖然系統(tǒng)具有很高的安全性,但軟件的可靠性卻是相當(dāng)?shù)偷?。?dāng)前對(duì)軟件的安全性普遍存在著認(rèn)識(shí)上的誤區(qū)。一種有代表性的觀點(diǎn)認(rèn)為“軟件可靠性包含了軟件安全性,軟件安全性是軟件可靠性問(wèn)題的子集”,并由此得出了“軟件不安全,一定不可靠;軟件可靠,才能安全”的錯(cuò)誤結(jié)論。
從系統(tǒng)整體的角度,可靠性存在于應(yīng)用于系統(tǒng)中的軟件,對(duì)應(yīng)的安全性則面向整個(gè)系統(tǒng),如圖2所示。
圖2 可靠性與安全性定義范疇
由軟件外部因素所引發(fā)的失效并不能定義為軟件可靠性的缺失,應(yīng)屬于系統(tǒng)安全性范疇;系統(tǒng)軟件通過(guò)增加功能或其他保障方式,對(duì)一定范圍內(nèi)軟件可處理的外部因素進(jìn)行處理,從而避免外部因素引起的失效,是對(duì)系統(tǒng)安全性的提升。系統(tǒng)安全性的提升,也可能導(dǎo)致軟件可靠性的下降。
軟件可靠性工程的目標(biāo)是如何應(yīng)用理論知識(shí)、科學(xué)方法,結(jié)合實(shí)際領(lǐng)域工程標(biāo)準(zhǔn)要求來(lái)指導(dǎo)可靠軟件的開(kāi)發(fā),目前軟件可靠性驗(yàn)證處于逐步提升的階段。軟件可靠性定量評(píng)估需要軟件與硬件的結(jié)合,雖然現(xiàn)在硬件設(shè)計(jì)與生產(chǎn)已有一套可以給定、預(yù)測(cè)和驗(yàn)證的定量方法,但軟件可靠性定量評(píng)估仍然非常困難。
在可靠性定量評(píng)估技術(shù)短期內(nèi)難以取得突破的情況下,應(yīng)盡快建立基于軟件可靠性定性定義的軟件可靠性評(píng)價(jià)體系。參照軟件能力成熟度模型(Capability Maturity Model for Software,SW-CMM)的方法,根據(jù)軟件開(kāi)發(fā)過(guò)程所采用的軟件可靠性技術(shù),對(duì)軟件預(yù)期能夠達(dá)到的可靠性給出評(píng)價(jià)等級(jí)。這樣,一方面能夠解決國(guó)內(nèi)軟件工程實(shí)踐的需要,另一方面也能夠?yàn)榭煽啃远垦芯康於ǜ鼮榱己玫幕A(chǔ)。
[1]陸民燕.軟件可靠性工程[M].北京:國(guó)防工業(yè)出版社,2011.
[2]原航天工業(yè)部第七零八所.GJB/Z 102—97軟件可靠性和安全性設(shè)計(jì)準(zhǔn)則[S].北京:航天工業(yè)總公司,1997.
[3]全國(guó)信息技術(shù)標(biāo)準(zhǔn)化技術(shù)委員會(huì).GB/T11457—1995信息技術(shù)軟件工程術(shù)語(yǔ)[S].北京:國(guó)家標(biāo)準(zhǔn)化管理委員會(huì),1995.
Research on software reliability and safety
Yang Hongshuai
(Heilongjiang Polytechnic,Harbin 150080,China)
This article puts forward the judgement that current qualitative evaluation on the reliability of the software is very necessary and feasible through the discussion and clarification of basic concepts of software reliability and safety,and hopes to find a feasible technical route for future research.
software;reliability;safety
楊宏帥(1975—),男,吉林德惠,碩士,助教;研究方向:機(jī)器人。