999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于功能路徑的軟件可靠性評估方法

2015-04-17 02:46:36邵明正齊劍鋒
計算機工程與應用 2015年16期
關鍵詞:故障功能方法

邵明正,齊劍鋒,韓 震

SHAO Mingzheng1,QI Jianfeng1,HAN Zhen2

1.軍械工程學院 信息工程系,石家莊050003

2.軍械工程學院 裝備指揮與管理系,石家莊050003

1.Information Engineering Department,Ordnance Engineering College,Shijiazhuang 050003,China

2.Equipment Command and Management Department,Ordnance Engineering College,Shijiazhuang 050003,China

1 引言

軟件可靠性直接關系到計算機系統乃至更復雜的系統能否在給條件下完成指定任務,不可靠的軟件引發的失效可能給軟件的使用者或者軟件開發人員帶來災難性的后果。軟件可靠性的重要性不言而喻,其相關理論也得到了快速的發展。

廣泛意義上的可靠性工程發展至今已經有了完善的理論體系及有效的工程實踐方法,相比之下,軟件可靠性工程還處于初級階段,尚有大量的問題需要研究。軟件可靠性的理論及方法最初源于硬件的可靠性[1-2],不可否認這種一致性有利于軟硬結合系統的可靠性綜合評估,但是軟件的固有特性及其與硬件之間的本質差別又決定了它與硬件可靠性的差別。將軟件可靠性理論完全建立在硬件的基礎上并不能從根本上解決軟件可靠性相關的問題。軟件與硬件本來是同一層次的概念,其可靠性理論應該有各自的基礎,目前軟件可靠性大部分的評估方法并不沒有充分考慮軟件產品的特點,而只是從宏觀的角度去描述,其估計方法也難以為用戶理解使用。

軟件可靠性工程是一項系統性的工程,對可靠性的分析貫穿于軟件開發使用的各個階段[2],而用戶關心的主要是產品運行階段的可靠性,此階段的可靠性不呈現出增長特性。本文基于這樣的思考,首先分析了軟件與硬件可靠性的區別,指出了軟件失效與硬件故障本質上的一致性;然后從用戶的角度出發,提出了一種基于軟件功能路徑的可靠性評估方法,并分析了時間因素在軟件可靠性中的影響;最后給出了這種評估方法的工程應用步驟。

2 軟件可靠性與硬件可靠性

可靠性的概念經過了很長時間的爭論,雖然現在沒有一個普適的定義,但是以下的定義方式,卻是為大多數人認可的:產品在規定的條件下和規定的時間內,完成規定功能的能力[3-4]。最初的可靠性理論是以硬件為研究對象的,顯然軟件可靠性的定義繼承了硬件可靠性的理論體系,但是二者還是有著本質的區別的。

2.1 軟件與硬件可靠性的區別與聯系

2.1.1 軟硬件可靠性之間的區別

由于軟件與硬件在固有屬性上的不同,二者之間的可靠性有本質的區別,具體的表現形式有很多,但原則性的差別歸納起來主要有四個方面,見表1。

從二者的區別可以看出硬件可靠性是對時間敏感的特性,但是在軟件可靠性上過分強調時間因素的作用是不符合軟件特征的。考慮一個極端的例子:軟件操作界面只有一個按鈕,點擊這個按鈕不會引起軟件故障,且各次單擊之間沒有任何聯系,那么可以預見無論點擊這個按鈕多長時間,軟件的可靠性也不會發生變化,始終為1,但是如果是一個鍵盤上的物理按鍵,那么該按鍵的可靠性就與時間有很大關系了。

2.1.2 軟硬件故障產生的一致性

產品的故障如果不進行處理,就會影響其功能的實現,也就是產品發生失效[3]。為了簡化討論,本文主要使用“故障”一詞進行論述,暫不考慮故障出現后的處理。盡管軟件和硬件在失效的根源上是不同的,但是它們發生故障的本質卻是一致的,即運行狀態觸發了產品存在的缺陷,其關系如圖1 所示。這里的缺陷可能是設計時的錯誤,也可能是在使用過程中產生的缺陷。而運行狀態可能與時間有關,也可能是無關的。仍然以上述的例子加以說明:假如單擊按鈕的次數會被記錄下來,如果次數超過1 000 次就會產生數組下標越界的錯誤。在這里,軟件就存在一個數組下標越界的軟件缺陷,而單擊第1 000 次時的運行狀態就會觸發這個缺陷,產生故障。對于硬件按鈕來說,也許按鈕本身沒有設計缺陷,但是隨著時間的流逝,按鍵彈片發生了銹蝕,這是在使用過程中產生的缺陷,達到它的強度壽命再按下這個按鈕,就會引起產品故障。

圖1 產品故障產生的一致性

就軟件而言,運行狀態觸發缺陷的直接原因是由軟件的操作所引起的[5],而硬件運行狀態的變化除了使用操作,還包括時間對硬件性能造成的影響。圖2 表示了軟件故障產生的根本過程,將軟件看成是從輸入空間到輸出空間的一種轉變過程。對軟件的操作就是通過不同的輸入數據來改變軟件的運行狀態,以期實現正常的功能,而有些輸入可能會激活隱藏在軟件中的缺陷,從而產生故障。

圖2 軟件故障產生的過程

2.2 軟件可靠性評估方法分析

對軟件可靠性的評估一般是根據軟件可靠性數據以統計方法給出軟件可靠性的估計值或預測值[6]。目前已經開發出近百種方法用于可靠性的評估,而且新的方法還在不斷發表[7-11,16]。根據數據對象的不同,評估方法可以分為動態分析方法與靜態分析方法。動態分析方法在時間因素的基礎上分析軟件失效的時間與失效的次數。靜態分析方法不考慮軟件運行的時間因素,這類方法可以進一步分為缺陷播種、基于數據域和基于經驗的方法[5]。表2 列出了幾種典型的軟件可靠性評估方法,表中“√”表示隸屬關系。

表1 軟件與硬件可靠性的主要區別

表2 典型軟件可靠性評估方法

目前的軟件評估方法與軟件實際存在較大差異,由于各種評估方法都有一定的假設前提,比如假設故障排除是完全獨立的,并不會引起新故障的產生[12],這就限制了評估方法的使用范圍和有效性。不同的軟件類型、同一軟件不同的開發階段往往需要采用不同的評估方法,到目前為止,并沒有一種普適的軟件可靠性評估方法[2]。由于軟件本身的特性以及獲取有效的可靠性評估數據方面的困難,實現完全反映軟件可靠性的方法非常困難。通過2.1 與2.2 節的分析可知,軟件可靠性從本質上體現的是一種靜態特性,軟件本身并不會隨時間而變化,所以本文認為分析其可靠性應當從軟件自身的屬性出發,研究其在不同觸發條件下的運行結果,進而結合統計特征計算軟件的可靠性。

3 基于功能路徑的可靠性評估方法

通過上述的分析可知,產品故障的本質是運行狀態觸發產品中的缺陷,而軟件故障產生的本質與其是一致的,為了更為清楚地描述軟件的故障本質與其可靠性,從面向用戶使用的角度出發,提出一種便于用戶理解和使用的軟件可靠性的概念。

3.1 基本概念

定義1(運行狀態)軟件在運行過程中,所占有的資源處于不同狀態,稱為軟件不同的運行狀態。其中資源可以是內存、硬盤、外設等計算機資源。

定義2(操作)使軟件的運行狀態發生改變的輸入,并且對它的處理與其他操作有顯著的不同。操作的發起者可以是用戶、系統本身或外部系統。

定義3(路徑)完成某個功能的一系列操作。

對于操作的概念,處理上明顯的不同是指操作作為一個實體,包含的錯誤在其他操作中是很難出現的。對于一個操作可以有不同的輸入,但這些輸入只屬于一個操作。表3 說明了功能、路徑與操作之間的關系。一個功能可能有多條路徑實現,比如功能F2可通過R2、R3兩條路徑實現。而一個操作可能在不同路徑中出現,如操作O21分別應用在路徑R2、R3中。一個軟件在功能上是有限的,實現功能的路徑也是有限的,但是操作中的輸入卻可能是無限的,這就導致了在軟件的系統測試中不能實現窮舉測試。

表3 功能、路徑、操作三者之間的關系

把軟件的運行抽象為由節點和路徑組成的一個網絡,如圖3 所示,其中節點代表軟件不同的運行狀態,而路徑則表示運行狀態的轉移,即一系列操作。軟件功能的實現就是按照不同的路徑,達到期望的運行狀態。軟件出現故障的原因是某些路徑會觸發軟件固有的缺陷,當軟件狀態的轉移遇到了這些路徑,便會發生故障。

圖3 軟件運行狀態轉移

3.2 評估模型

為了清楚地討論,可以從兩個方面來說明軟件可靠性這個概念,從定性的角度來講,軟件的可靠性可以用其他定量指標來度量,比如軟件可靠度、失效強度、平均故障間隔時間等[13];從定量的角度來講,可靠性本身也可以作為一個定量的指標,比如IEEE對其做出的定義[1]。本文將軟件可靠性和軟件可靠度作為不同的定量指標來描述。

根據軟件可靠性的特點,可以將軟件可靠度描述為軟件從輸入數據計算出正確的輸出數據的概率[14]。

由該定義導出它的數學描述:設非空集合D為軟件的輸入空間,D′為輸出空間。將軟件P看作D上的函數,P*為功能期望函數,則P,P*:D→D′。讓Pr為D上的一個給定的概率分布。當輸入變量為xi時,軟件P在概率分布Pr下相對于功能期望P*的可靠度定義為:

如果軟件的各次輸入是相互獨立的,則軟件在進行n次輸入后的可靠度為:

實際情況要復雜得多,因為軟件的各次輸入之間不能是完全獨立的[15],它們之間可能有著各種各樣的聯系,輸入的選取也可能是按照一定的順序。而且這樣理論上的表達并不能應用于工程實踐。因此,以此為基礎,借助于路徑、操作的概念建立一種更易理解和使用的可靠性度量方法。

對于用戶來講,軟件在運行上是以完成某些功能為目標的,因此基于用戶的功能需求,通過建立路徑的概念來分析軟件的可靠性。其基本思路如下:

(3)路徑Ri是一個包含有限個元素的操作序列Oi={Oij|j=1,2,…},這些操作是根據功能需求按照一定的順序選取的,且各路徑操作的個數不相等。

(4)由于軟件S 本身存在缺陷,某些操作Oe的執行會觸發這些缺陷,路徑不能完成,影響了軟件功能的實現,即產生軟件故障。這些不能完成的路徑稱為故障路徑。

一條路徑Ri的完成或產生執行故障的過程,稱為軟件S 的一次運行。在實際工作中,用戶往往不會均勻地選擇路徑,而是有的路徑被選擇的概率大,有的路徑被選擇的概率小。這種特定的需求用概率分布pi來描述:pi是路徑Ri從集合R中被選中的概率。路徑Ri執行的結果取決于其中操作的結果,更深刻地,操作的結果由操作所涉及的輸入決定,由于輸入的不確定性,操作是否產生故障是隨機性的,所以路徑是否是故障路徑也是有概率的。為了計算軟件運行的故障率,定義路徑故障概率yi,它表示路徑出現故障的可能性。

軟件運行一次出現故障的概率p等于所選路徑出現故障的概率,即

式中,Rel1表示軟件依概率分布pi從R 中選擇一條路徑正確運行的概率,即為運行一次的軟件可靠性,也就是軟件可靠度。那么,軟件連續運行s次的可靠性為:

接下來考慮,路徑故障概率yi的確定。一條路徑是一個工作序列,路徑中只要有一個操作出現問題,則整條路徑就是故障的路徑。如果路徑Ri中包含k個操作,操作出現故障的概率用Bij來表示,則路徑能成功運行的前提是所有的操作不出現故障,路徑故障概率yi可寫成如下表達式:

于是,軟件可靠度為:

3.3 時間因素影響分析

時間對于硬件的影響不僅體現在對硬件的操作上,更重要的是它影響了硬件本身的理化性能。而時間對軟件的影響僅僅體現在操作上,對已經發布的軟件系統本身沒有影響。

3.3.1 可靠性影響因素分析

軟件可靠度是軟件正確運行一次的概率,從公式(7)中可知,影響軟件可靠度的有:路徑選擇的概率分布pi、操作結果Bij、路徑數目n及操作數目k。這些因素都是軟件本身所固有屬性,并不隨時間而產生變化。

而軟件可靠性在一段時間內表現出的是一種累積結果,它是軟件按照功能要求在若干次運行內一直保持正確運行的概率。從公式(5)和公式(6)中可以看出,影響軟件可靠性的主要因素有四個:路徑選擇的概率分布pi、操作結果Bij、路徑數目n及軟件運行次數s。其中,Bij和n是由軟件本身所確定的,而pi和s則是由用戶使用所決定。同樣,時間因素對于軟件可靠性并無直接的影響,但是它與運行次數s有一定的關系。

3.3.2 軟件可靠性與時間的關系

軟件可靠性中的時間更具體的分為執行時間和日歷時間,日歷時間更容易為普通用戶所理解[3],因此以日歷時間作為研究對象,設Δt表示軟件運行一次的平均時間,那么軟件運行s次的總時間t=sΔt。則,

圖4 顯示了軟硬件可靠性、可靠度與時間的關系。圖4(a)(c)說明軟件與硬件在一段時間內連續無故障運行的概率都是隨時間而降低,這是概率累積的結果。但是在可靠度方面,軟硬件分別表現出了不同的特點。圖4(b)圖表示軟件可靠度不隨時間而變化,在任意時刻,軟件獨立運行出現故障的可能性從統計上來講都是一樣的。而硬件在其壽命的不同階段性能會發生變化,呈現出不同的可靠度。比如硬件在磨合期與正常運行期出現故障的概率是不同的。

圖4 軟硬件可靠性與時間的關系

軟件在使用期間,更能為用戶所理解的時間概念是使命時間[16-17],也就是在特定的時間內完成特定的任務,后一階段的任務是前一階段的重復,比如飛機導航控制軟件,它的任務隨著飛機的每次飛行而呈現階段性的重復,每次飛行時間就可以看作是軟件的使命時間。在軟件的整個生命周期內,不考慮軟件的升級維護,軟件的可靠性會隨著使命時間呈現出周期性的變化,如圖5所示。

圖5 軟件使用周期內的可靠性變化規律

4 軟件可靠度測試

確定軟件可靠度,需要對軟件進行可靠性測試,以獲得相應的失效數據,按照一定的評估模型通過概率統計的方法估計出軟件可靠度。測試策略分為代表性隨機測試和非代表性隨機測試兩種[13],本文所提出的模型適用代表性隨機測試的策略。

4.1 軟件可靠度的測試流程

在實際應用中,基于功能路徑的可靠度評估方法可以按照:功能→路徑→操作→輸入的順序來分析軟件可靠度。由公式(7)知,驗證軟件可靠度需要如下的數據:路徑選擇的概率分布pi、操作結果Bij、路徑數目n及操作數目k。路徑選擇的概率分布pi可以根據功能區分來確定;操作結果Bij則需要分析操作的輸入空間,通過測試來估計;路徑數目n及操作數目k可以根據軟件的具體構成得知。測試流程如圖6。

圖6 基于功能路徑的軟件可靠度測試流程圖

根據軟件實際情況確定每條路徑對應的操作序列,根據各操作的輸入空間,制定覆蓋全面的測試用例。執行測試之后,利用統計出的失效數據,由公式(7)計算出軟件整體的可靠度。

4.2 確定操作故障率

路徑選擇的概率分布pi、路徑數目n及操作數目k可由開發、測試人員通過分析軟件功能和開發文檔得到,所以如何確定每個操作的故障率Bij是重點。由于操作涉及的輸入數量巨大,甚至是無窮的,所以確定操作的故障率需要采用統計分析的方法進行估計。

確定某一操作的故障率的步驟:

第一步:假設該操作的輸入數量總數為N個,根據操作輸入空間的大小,依等價類劃分策略從輸入空間中選取n個輸入。

第二步:針對每一輸入設計相應的測試用例。

第三步:根據測試用例將軟件進行n次操作,則必定會出現有的輸入產生正確的輸出,有的輸入導致運行故障,每次出現故障時都不排錯,只收集故障數據。

4.3 實例驗證

以某系統指控軟件的文電子模塊為實驗對象,該模塊設計可實現27 項子功能,依據不同的操作方法,功能實現路徑有49 條,每條路徑由不同數量的操作組成。按照4.2 節所述方法,為每一操作制定測試用例[18],測試并記錄運行結果。部分功能路徑測試結果如表4 所示。

依公式(7)及表3 的數據,可計算出軟件可靠度Rel1=0.990 4,為了驗證擴展模型的性能,將數據進行轉化并結合所記錄時間因素,利用著名的時間域模型J-M 模型求得該子模塊的缺陷個數為41 個,可靠性Rel=0.932 5。由于本方法對時間因素理解上的不同,使得測試結果與傳統方法有一定出入。從計算過程可以看出,本方法能較為直觀地得到軟件可靠度,對于衡量軟件本身的可靠程度有一定的參考價值。

表4 部分測試結果

5 結論

軟硬件固有屬性上的差別決定了它們可靠性理論的不同,本文提出的基于功能路徑的可靠性評估方法,從軟件故障產生的根源出發,利用路徑、操作和輸入的概念闡述了軟件可靠性度量方法,該方法具有良好的理論基礎,面向用戶操作,層次清晰、便于使用,適用于軟件使用階段的可靠性驗證。另外,本方法要求測試人員對于軟件的功能路徑要有清晰的把握,了解用戶的使用習慣,如何合理地確定路徑選擇的概率是下一步研究的重點。

[1] 尚珊珊,趙軼群.軟件可靠性綜述[J].軟件導刊,2006,2(8):3-5.

[2] 孫志安,裴曉黎.軟件可靠性工程[M].北京:北京航空航天大學出版社,2009.

[3] Musa J D.軟件可靠性工程[M].韓柯,譯.北京:機械工業出版社,2003.

[4] 陸文,徐鋒,呂建.一種開放環境下的軟件可靠性評估方法[J].計算機學報,2010,33(3):352-361.

[5] Munson J C.Software faults,software failures and software reliability modeling[J].Information and Software Technology,1996,38:687-699.

[6] 孫志華.面向多用戶軟件可靠性評估和測試方案研究[J].計算機工程與科學,2004,26(1):70-72.

[7] Wang W L,Pan D,Chen M H.Architecture-based software reliability modeling[J].The Journal of Systems and Software,2006,79:132-146.

[8] Crespo A N,Jino M.A binomial software reliability model based on coverage of structural testing criteria[J].Empire Software Eng,2008,13:185-209.

[9] 樓俊鋼,江建慧,靳昂.考慮軟件不同失效過程偏差的軟件可靠性模型[J].計算機學報,2010,33(7):1263-1270.

[10] 樊林波,吳智,趙明.基于構件的軟件可靠性分析[J].計算機科學,2007,34(5):266-268.

[11] 李海峰,王栓奇,劉暢,等.考慮測試工作量與覆蓋率的軟件可靠性模型[J].軟件學報,2013,24(43):749-760.

[12] Ferneda E,Cornelio N N,Filho A H.Prediction of software quality based on variables from the development process[J].Lecture Notes in Computer Science,2013,7828(1):78-87.

[13] Jung H,Hong S.The quality control of software reliability based on functionally reliability and usability[J].Lecture Notes in Computer Science,2012,7709(1):119-126.

[14] Palviainen M,Evesti A,Ovaska E.The reliability estimation,prediction and measuring of component-based software[J].Journal of Systems and Software,2011,84(6):112-129.

[15] 朱鴻.軟件可靠性估計與計算復雜性的關系淺析[J].軟件學報,1998,9(9):713-717.

[16] 韓峰巖,覃征,王昕.一種考慮數據截尾的非參數軟件可靠性模型[J].西安交通大學,2006,40(6):667-671.

[17] Huang C Y,Lin C T.Software reliability analysis by considering fault dependency and debugging time lag[J].IEEE Trans on Reliability,2006,55(3):436-450.

[18] 張旭.基于使用剖面的軟件可靠性測試用例生成方法[J].計算機仿真,2009,26(12):66-69.

猜你喜歡
故障功能方法
也談詩的“功能”
中華詩詞(2022年6期)2022-12-31 06:41:24
故障一點通
關于非首都功能疏解的幾點思考
奔馳R320車ABS、ESP故障燈異常點亮
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
捕魚
故障一點通
江淮車故障3例
中西醫結合治療甲狀腺功能亢進癥31例
主站蜘蛛池模板: 草逼视频国产| 欧类av怡春院| 黄色网页在线观看| 国产一级在线播放| 青青热久麻豆精品视频在线观看| 亚洲男女天堂| 性欧美在线| 国产电话自拍伊人| 欧美成人精品欧美一级乱黄| 亚洲精品无码专区在线观看 | 日韩欧美视频第一区在线观看| aⅴ免费在线观看| 精品视频一区在线观看| 一区二区三区高清视频国产女人| 亚洲欧美成aⅴ人在线观看| 久久精品免费看一| jizz国产在线| 99久久国产综合精品女同| 欧洲欧美人成免费全部视频| 波多野结衣一区二区三区AV| 亚欧乱色视频网站大全| 最新痴汉在线无码AV| jizz亚洲高清在线观看| 国产中文在线亚洲精品官网| 美女扒开下面流白浆在线试听| 免费无码在线观看| 國產尤物AV尤物在線觀看| 亚洲成人播放| 18禁色诱爆乳网站| 亚洲精品国产成人7777| 视频二区国产精品职场同事| 欧美区在线播放| 在线看免费无码av天堂的| 91美女视频在线观看| 91www在线观看| 免费国产好深啊好涨好硬视频| 国产成人精品日本亚洲| 久操中文在线| www.91在线播放| 午夜a级毛片| 一级片一区| 多人乱p欧美在线观看| 久久精品人人做人人爽97| 免费在线播放毛片| 欧美成人午夜影院| 亚洲六月丁香六月婷婷蜜芽| 亚洲永久色| 欧美在线天堂| 一本久道久综合久久鬼色| 国产一二三区视频| 内射人妻无码色AV天堂| 国产福利小视频高清在线观看| 国产网站黄| 国产在线八区| 久久人人97超碰人人澡爱香蕉| 538国产视频| 97国产精品视频人人做人人爱| 亚洲欧洲日产国产无码AV| a级毛片在线免费| 国内精品自在欧美一区| 亚洲乱码在线播放| 国产在线无码一区二区三区| 国产成人区在线观看视频| 亚洲小视频网站| 永久免费AⅤ无码网站在线观看| 久久精品日日躁夜夜躁欧美| 91无码人妻精品一区二区蜜桃| 99热这里只有精品在线观看| 欧美成在线视频| 欧美精品成人| 最新亚洲人成无码网站欣赏网| 国产区福利小视频在线观看尤物| 久久久久夜色精品波多野结衣| 一区二区三区国产精品视频| 97亚洲色综久久精品| 国产日本欧美亚洲精品视| 免费毛片在线| 国产精品自拍露脸视频| 欧美精品1区| 曰韩免费无码AV一区二区| 国产91精品最新在线播放| 老司机精品一区在线视频|