秦 儉
(沈陽理工大學(xué) 遼寧 沈陽 110159)
軟件對(duì)當(dāng)今社會(huì)的發(fā)展具有重要意義,但是影響軟件可靠性的因素眾多,譬如軟件自身特性、人為因素以及軟件工程管理等。這些因素具體可分為客觀因素與主觀因素,客觀因素包括人為或環(huán)境的影響,主觀因素則包括軟件嚴(yán)密性、復(fù)雜性、易理解性、可修改性以及可靠性等。在排查影響軟件可靠性的因素時(shí),務(wù)必重視對(duì)主客觀的區(qū)分。
軟件可靠性是評(píng)測(cè)軟件多方性能的關(guān)鍵依據(jù)。具體而言,軟件的可靠性主要是指成品軟件能否在有限的資源范圍內(nèi)實(shí)現(xiàn)規(guī)定功能,有限的資源范圍指的是規(guī)定條件、指定時(shí)間、指定區(qū)間等。而規(guī)定條件能夠保障軟件的正常運(yùn)行,在有限的資源范圍內(nèi)實(shí)現(xiàn)了運(yùn)行效率的提升,直接與軟件運(yùn)作有關(guān)的輸入條件,均可成為規(guī)定條件[1]。
另外,指定時(shí)間的主要意義在于軟件成品的實(shí)際運(yùn)行,而指定功能指的是為使用者提供的定向服務(wù),實(shí)現(xiàn)既定的運(yùn)行指標(biāo)。軟件可靠性是成品軟件最為關(guān)鍵的功能之一,與軟件本身存在的缺點(diǎn)、使用質(zhì)量以及運(yùn)行系統(tǒng)等多個(gè)組成之間存在密切關(guān)聯(lián)。近年來,國(guó)內(nèi)對(duì)軟件可靠性測(cè)試的研究更加深入,同時(shí)為可靠性概率度量設(shè)置專門的單位,并稱之為“軟件可靠度”,為軟件的可靠性測(cè)試提供便利條件[2]。
隨著開發(fā)人員對(duì)軟件產(chǎn)品研究的深入,發(fā)現(xiàn)其可靠性的影響因素多種多樣,但是從本質(zhì)上分析,所有的影響因素均可劃分為主觀與客觀兩大類。主觀因素就是受到軟件自身影響,而客觀因素就是受到外界環(huán)境影響,開發(fā)人員在測(cè)試軟件可靠性時(shí)務(wù)必充分重視對(duì)主客觀因素的區(qū)分與歸類。軟件可靠性的影響因素有時(shí)細(xì)小入微,開發(fā)人員敲錯(cuò)一個(gè)字符都有可能對(duì)軟件可靠性造成負(fù)面影響[3]。
開發(fā)人員的工作能力與專業(yè)水準(zhǔn)是影響軟件編程質(zhì)量的重要因素,因此開發(fā)人員在軟件編程的過程中應(yīng)當(dāng)積攢大量的實(shí)踐經(jīng)驗(yàn),并且不斷糾正錯(cuò)誤的編程思路,以此形成正確、高效且保質(zhì)保量的軟件成品。雖然軟件開發(fā)單位對(duì)編程掌控的效果與質(zhì)量偏優(yōu),但是不能過于依賴開發(fā)人員的個(gè)人編程能力,如果開發(fā)人員的技術(shù)水準(zhǔn)并未達(dá)到標(biāo)準(zhǔn),那么極有可能影響軟件的開發(fā)質(zhì)量[4]。
近年來,為了響應(yīng)國(guó)家對(duì)現(xiàn)代化發(fā)展的號(hào)召,國(guó)內(nèi)很多軟件開發(fā)公司已經(jīng)著手?jǐn)U大發(fā)展規(guī)模。隨著軟件開發(fā)的不斷深入,軟件研發(fā)越來越復(fù)雜,其內(nèi)容愈發(fā)繁重?;诖耍皶r(shí)發(fā)現(xiàn)軟件開發(fā)過程中的技術(shù)問題,尤其是軟件可靠性等問題,愈發(fā)重要。由此可見,軟件規(guī)模是軟件可靠性的影響因素之一。通過多年的研究發(fā)現(xiàn),軟件的容錯(cuò)率與軟件規(guī)模無關(guān)。具體來說,軟件開發(fā)環(huán)境和編程語言之間的差異,改變了軟件產(chǎn)品的統(tǒng)計(jì)和分析結(jié)果,促使兩者無法形成正比關(guān)系[5]。
從軟件的組織結(jié)構(gòu)來看,其設(shè)計(jì)邏輯相對(duì)復(fù)雜,與硬件單一的編程形式不同,軟件在編程過程中無時(shí)無刻不在變化,呈現(xiàn)出極強(qiáng)的動(dòng)態(tài)性,軟件組織結(jié)構(gòu)的復(fù)雜性對(duì)其可靠性的影響較大。結(jié)合近年來的開發(fā)實(shí)例來說,軟件組織結(jié)構(gòu)的復(fù)雜性越高,軟件編程過程中出現(xiàn)錯(cuò)誤或技術(shù)失誤的可能性就越大,而軟件的可靠性則隨之不斷降低。綜上所述,可以明顯感知軟件組織結(jié)構(gòu)對(duì)其可靠性的影響之深,換言之,其自身的復(fù)雜程度才是導(dǎo)致可靠性下降的真正原因[6]。
前文提到,軟件的復(fù)雜程度是導(dǎo)致其可靠性下降的真正原因,故而與產(chǎn)品本身的組織結(jié)構(gòu)存在密切關(guān)聯(lián),但與軟件規(guī)模存在本質(zhì)差異。組織結(jié)構(gòu)主要是指精細(xì)化的系統(tǒng)概念,而軟件規(guī)模則是較為廣泛籠統(tǒng)的系統(tǒng)概念。我們可以理解為該軟件成品規(guī)模大,但是并不復(fù)雜,也就是說,軟件如果只是規(guī)模大,那么軟件的組織結(jié)構(gòu)可以是相同的組織無限復(fù)制,組織結(jié)構(gòu)之間并無差異,同樣的處理思路,同樣的系統(tǒng)運(yùn)行,因此軟件規(guī)模大并非表明組織結(jié)構(gòu)復(fù)雜[7]。
規(guī)模大,但不復(fù)雜,我們也可以理解為軟件內(nèi)部各子模塊結(jié)構(gòu)統(tǒng)一,且較易理解,這樣一來,即使軟件規(guī)模再大,卻并不復(fù)雜。舉例來說,即使軟件成品的規(guī)模再小,但它的邏輯復(fù)雜,知識(shí)牽涉范圍較廣,通過各種途徑方可克服困難,但是促使其編程的過程更加復(fù)雜。以下即為實(shí)例理解,一個(gè)鐵水凝固過程的數(shù)值模擬軟件,該過程實(shí)際規(guī)模很小,僅需計(jì)算一個(gè)獨(dú)立單位的鐵水在特定環(huán)境下自然冷卻的時(shí)間區(qū)間,從外向內(nèi)或從內(nèi)向外各單位點(diǎn)的溫度隨著時(shí)間的變化曲線,但從需要考慮的因素來看,該過程其實(shí)很復(fù)雜,例如需要計(jì)算時(shí)間、位置點(diǎn)、外界環(huán)境、構(gòu)成部分等多種因素。由此可見,軟件組織結(jié)構(gòu)是影響軟件可靠性的重要因素之一。另外,針對(duì)不同因素有可能對(duì)軟件造成的影響,可有效加深可靠性測(cè)試。
一般來說,軟件運(yùn)行剖面可以界定軟件的運(yùn)行環(huán)境,就像建筑物的橫截面一樣,可以看出其內(nèi)部構(gòu)造及環(huán)境。軟件運(yùn)行剖面能夠指出軟件運(yùn)行所需實(shí)際環(huán)境,而軟件的初始輸入狀態(tài)會(huì)影響系統(tǒng)狀態(tài)。為了明確軟件可靠性測(cè)試的定量與定向依據(jù),開發(fā)人員通常會(huì)采用軟件運(yùn)行剖面的形式進(jìn)行初步測(cè)定,以此制作定量的軟件使用方式。
從效用角度分析,軟件運(yùn)行剖面好比開發(fā)人員落實(shí)編程與設(shè)計(jì)的導(dǎo)向,在運(yùn)行剖面的支持下,開發(fā)人員可有效提高軟件的生產(chǎn)效率與生產(chǎn)質(zhì)量,進(jìn)一步加快軟件的研發(fā)進(jìn)度,同時(shí)確保軟件可靠性。具體而言,軟件運(yùn)行剖面即為軟件可執(zhí)行操作或可能發(fā)生的概率事件的統(tǒng)稱,或者說是軟件成品的不同使用途徑。在軟件的開發(fā)編程過程中,提供的運(yùn)行剖面數(shù)量越多,軟件內(nèi)部可被發(fā)現(xiàn)的遺漏點(diǎn)以及安全隱患數(shù)量越多。由此可見,軟件運(yùn)行剖面也是軟件可靠性的影響因素之一。
從面向角度分析,運(yùn)行剖面在面向使用者的同時(shí)也面向編程過程,因此直接獲取軟件的運(yùn)行剖面無異于異想天開。在獲取軟件運(yùn)行剖面的過程中,開發(fā)人員通常采用“金字塔”模型實(shí)施構(gòu)建,這里所說的“金字塔”實(shí)際上就是自上而下、逐級(jí)細(xì)化的分析手段,從而獲取較為完善的軟件運(yùn)行剖面。具體而言,其過程就是:首先,明確用戶剖面,用戶剖面是構(gòu)建軟件運(yùn)行剖面建設(shè)的基礎(chǔ);其次,就是按照由上而下的順序?qū)⒂脩暨\(yùn)用軟件的輸入空間細(xì)化為系統(tǒng)模式剖面,接著再將系統(tǒng)模式剖面劃分為功能剖面;最后,開發(fā)人員通過細(xì)致劃分,按照功能剖面的類型進(jìn)行界定,最終獲取完整的軟件運(yùn)行剖面。
從環(huán)境與可靠性的角度來看,當(dāng)軟件處于同一個(gè)開發(fā)環(huán)境,并且擁有同一個(gè)研發(fā)目的時(shí),假設(shè)過程中所采用的運(yùn)行剖面不同,那么該產(chǎn)品對(duì)可靠性的表現(xiàn)也將存在多處差異。通常情況下,軟件產(chǎn)品的輸入域包括R和S,實(shí)驗(yàn)中的S區(qū)域存在一定的軟件缺陷,而R部分中輸入恒不激活軟件缺陷。如果運(yùn)行剖面顯示,軟件單方面依靠S區(qū)域進(jìn)行運(yùn)作,該產(chǎn)品則永久故障,且并不具備容錯(cuò)方案,久而久之,導(dǎo)致軟件的永久失效,可靠性的測(cè)試結(jié)果恒為0;換言之,如果在運(yùn)行剖面中并未顯示出輸入域S,軟件始終正常運(yùn)行,并未出現(xiàn)故障,則該軟件的可靠性恒為1。
隨著新理念與新技術(shù)的介入,軟件的開發(fā)手段呈現(xiàn)多元化發(fā)展趨勢(shì),例如結(jié)構(gòu)化法、面向?qū)ο蠓?、形式化法等。同一軟件可采用多種方法開發(fā),但這樣做的劣勢(shì)在于沒有定量或定向的評(píng)判標(biāo)準(zhǔn),因而軟件的質(zhì)量只能在用戶端獲取,不利于及時(shí)反饋與后期修繕,因此該類軟件需要注意運(yùn)用的場(chǎng)合與環(huán)境,或者說應(yīng)當(dāng)注意面向?qū)ο蟆?/p>
舉例來說,結(jié)構(gòu)化法自身具備簡(jiǎn)單、實(shí)用的技術(shù)優(yōu)勢(shì),且在國(guó)內(nèi)的應(yīng)用前景廣闊,但并不適合用于大規(guī)?;蜉^復(fù)雜的軟件開發(fā)項(xiàng)目,無法在短時(shí)間內(nèi)有效解決軟件的重用問題,致使軟件代碼的重復(fù)率不斷增高。如此一來,假設(shè)軟件在使用過程中,某一處地方需要改動(dòng),那么編碼便會(huì)出現(xiàn)混亂,增加了軟件維護(hù)工作的復(fù)雜程度,同時(shí)也增加了軟件可靠性的風(fēng)險(xiǎn)。
軟件可靠性測(cè)試的主要目的是為了保證與驗(yàn)證軟件的可靠性。從性質(zhì)上講,軟件可靠性測(cè)試屬于一種隨機(jī)測(cè)試,可結(jié)合用戶對(duì)軟件的實(shí)際使用情況進(jìn)行性能及可靠性測(cè)試。目前為止,我國(guó)科研水準(zhǔn)持續(xù)提升,對(duì)軟件可靠性的評(píng)估水平隨之增長(zhǎng),促使軟件的各項(xiàng)性能指標(biāo)均可達(dá)到相應(yīng)標(biāo)準(zhǔn)??煽啃詼y(cè)試是解決軟件亂碼以及降低軟件使用風(fēng)險(xiǎn)的有效途徑。較之普通的軟件功能測(cè)試,可靠性測(cè)試更加復(fù)雜,需要考慮的綜合性因素更多,包括功能項(xiàng)、輸入集、數(shù)據(jù)集以及相關(guān)概率的早期識(shí)別等。結(jié)合軟件功能點(diǎn)中的使用概率分布,可靠性測(cè)試的多樣性也隨之提高。
綜上所述,軟件可靠性對(duì)于信息系統(tǒng)整體的正常運(yùn)行來說具有重要意義,因此必須明確軟件可靠性的影響因素以及關(guān)鍵特性。結(jié)合上文,影響軟件可靠性的因素主要包括軟件開發(fā)人員水平、軟件規(guī)模、軟件的組織結(jié)構(gòu)、軟件運(yùn)行剖面以及軟件開發(fā)辦法等。開發(fā)人員在軟件編程的過程中,務(wù)必高度重視對(duì)以上幾點(diǎn)因素的檢驗(yàn)與測(cè)試,避免軟件可靠性在使用時(shí)受到的影響。