許玉堂,殷永峰,孫靜,張弛,劉斌
(1.北京理工大學(xué)機(jī)電學(xué)院,北京100081;2.北京航空航天大學(xué)可靠性與系統(tǒng)工程學(xué)院,北京100191;3.中國兵器科學(xué)研究院,北京100089)
基于時(shí)間擴(kuò)展Petri網(wǎng)的實(shí)時(shí)嵌入式軟件體系結(jié)構(gòu)建模及可靠性評(píng)估
許玉堂1,殷永峰2,孫靜3,張弛2,劉斌2
(1.北京理工大學(xué)機(jī)電學(xué)院,北京100081;2.北京航空航天大學(xué)可靠性與系統(tǒng)工程學(xué)院,北京100191;3.中國兵器科學(xué)研究院,北京100089)
軟件可靠性是軟件質(zhì)量評(píng)估最重要的指標(biāo)之一,隨著軟件工程和組件重用技術(shù)的發(fā)展,近年來基于體系結(jié)構(gòu)的軟件可靠性評(píng)估已經(jīng)成為工程研究的熱點(diǎn)之一。為有效地提高軟件可靠性,調(diào)研現(xiàn)有體系結(jié)構(gòu)的可靠性評(píng)估模型,給出了現(xiàn)有體系結(jié)構(gòu)模型的分類和模型代表,并分析了現(xiàn)有模型的不足。由于Petri具有良好的擴(kuò)展性并且對(duì)異步和并行軟件有良好的描述性,因此重點(diǎn)研究Petri網(wǎng)可靠性評(píng)估模型,通過劃分時(shí)間變遷和瞬時(shí)變遷,并引入時(shí)間相關(guān)的可靠度,包括延時(shí)可靠度與時(shí)序可靠度,對(duì)Petri網(wǎng)進(jìn)行了擴(kuò)展,給出了時(shí)間擴(kuò)展的Petri網(wǎng)進(jìn)行體系結(jié)構(gòu)建模方法。通過研究組件狀態(tài)和系統(tǒng)可達(dá)狀態(tài)的關(guān)系,創(chuàng)建可達(dá)狀態(tài)轉(zhuǎn)移矩陣,對(duì)系統(tǒng)進(jìn)行可靠性評(píng)估。將所研究的方法應(yīng)用于某航電嵌入式系統(tǒng)軟件中,完成了體系結(jié)構(gòu)建模及可靠性評(píng)估,并通過誤差分析驗(yàn)證了該方法的有效性及準(zhǔn)確性。
計(jì)算機(jī)軟件;軟件體系結(jié)構(gòu);可靠性評(píng)估;時(shí)間擴(kuò)展Petri網(wǎng)
隨著社會(huì)的不斷進(jìn)步和計(jì)算機(jī)科學(xué)技術(shù)的飛速發(fā)展,計(jì)算機(jī)目前已經(jīng)廣泛地應(yīng)用于航空、航天、工業(yè)控制、交通、金融等各項(xiàng)領(lǐng)域。這些領(lǐng)域的系統(tǒng)越來越多地受到計(jì)算機(jī)的控制,而其控制軟件的結(jié)構(gòu)也越來越復(fù)雜,軟件失效帶來的危害也日趨嚴(yán)重[1]。軟件可靠性是軟件質(zhì)量的一項(xiàng)重要指標(biāo),提高軟件的可靠性已成為軟件產(chǎn)業(yè)發(fā)展和應(yīng)用的迫切要求。
傳統(tǒng)的軟件可靠性評(píng)估模型主要應(yīng)用于軟件測(cè)試、驗(yàn)證或運(yùn)行階段,它將軟件看作一個(gè)整體,僅僅考慮軟件的輸入和輸出,而不考慮軟件內(nèi)部的結(jié)構(gòu),即黑盒測(cè)試方法[2]。黑盒測(cè)試通過用戶的操作剖面隨機(jī)生成測(cè)試用例并執(zhí)行,獲得軟件的失效信息,并對(duì)其進(jìn)行數(shù)學(xué)建模,在檢測(cè)出錯(cuò)誤后立即修復(fù),從而得到用于評(píng)估的可靠性增長(zhǎng)模型[3-4]。目前基于黑盒的軟件可靠性評(píng)估技術(shù)已經(jīng)比較成熟。但由于這些模型大都是基于失效數(shù)據(jù)的,需要在軟件測(cè)試階段進(jìn)行,無法對(duì)軟件設(shè)計(jì)階段的錯(cuò)誤進(jìn)行預(yù)防;同時(shí)必須通過長(zhǎng)時(shí)間基于運(yùn)行剖面的測(cè)試才可以得到足夠多有意義的失效數(shù)據(jù),勢(shì)必會(huì)浪費(fèi)大量的人力物力[5-6]。
基于體系結(jié)構(gòu)的開發(fā)是現(xiàn)代軟件開發(fā)的重要途徑,也是軟件工程的要求。軟件的體系結(jié)構(gòu)與軟件本身的質(zhì)量和性能息息相關(guān)。并且實(shí)踐表明,越早發(fā)現(xiàn)軟件中存在的錯(cuò)誤,所花費(fèi)的開銷就會(huì)越小。軟件的可靠性與組成軟件的構(gòu)件可靠性和構(gòu)件結(jié)構(gòu)相關(guān),因此利用軟件體系結(jié)構(gòu)對(duì)軟件的可靠性進(jìn)行分析和評(píng)估是一種很有價(jià)值的方法。
本文首先介紹了基于體系結(jié)構(gòu)模型的可靠性評(píng)估的基本思路,并列舉了15種經(jīng)典模型。由于Petri網(wǎng)能夠良好地描述并發(fā)和異構(gòu)模式,而且具有良好的擴(kuò)展能力,因此本文對(duì)Petri網(wǎng)進(jìn)行可靠性評(píng)估的方法進(jìn)行了深入研究。將Petri網(wǎng)中的變遷,劃分為瞬時(shí)變遷和時(shí)間變遷,并引入時(shí)間方面的可靠性,主要表現(xiàn)在延時(shí)可靠性和時(shí)序可靠性方面。隨后基于時(shí)間擴(kuò)展的Petri網(wǎng)進(jìn)行系統(tǒng)體系結(jié)構(gòu)建模,并采用可達(dá)狀態(tài)圖的方法解決了組件和狀態(tài)并非一一對(duì)應(yīng)的問題。由于時(shí)間Petri網(wǎng)可以同構(gòu)成一個(gè)離散時(shí)間馬爾可夫鏈,采用狀態(tài)概率轉(zhuǎn)移矩陣計(jì)算整個(gè)系統(tǒng)的可靠性。最后將本文提出的方法運(yùn)用到一個(gè)工程實(shí)例中,驗(yàn)證模型的有效性及準(zhǔn)確性。
1.1組件的概念及其可靠性
現(xiàn)有的基于體系結(jié)構(gòu)的可靠性評(píng)估大都以組件為軟件的基本單元。一般認(rèn)為組件是指具有一定功能,可明確辨識(shí)的軟件單位,是軟件系統(tǒng)計(jì)算或者存儲(chǔ)的對(duì)象,并且語法完整、語義正確,有重用的價(jià)值,一個(gè)組件可以包含多個(gè)接口,這些接口說明了組件怎樣通過提供或者請(qǐng)求操作與環(huán)境交互。組件一般具有獨(dú)立性、可替換、低耦合、高內(nèi)聚等特點(diǎn)。對(duì)于基于體系結(jié)構(gòu)的可靠性評(píng)估,還假設(shè)組件具有如下約束:
1)組件接口分為輸入接口和輸出接口;
2)組件所有的輸入和輸出域都映射到接口。也就是說組件所有的輸入和輸出都由接口來完成,沒有其他方式的信息傳遞通道;
3)除了常見的功能接口描述以外,組件還應(yīng)有可靠性度量指標(biāo);
4)組件可靠性與軟件運(yùn)行的路徑無關(guān)。
對(duì)于組件的可靠性,部分模型假設(shè)單個(gè)組件可靠度為已知,文獻(xiàn)[7]使用傳統(tǒng)的可靠性增長(zhǎng)模型來計(jì)算可靠度,但是耗時(shí)較長(zhǎng),還有文獻(xiàn)[8]指出使用故障注入等方式還進(jìn)行計(jì)算,但到目前為止還沒有一個(gè)公認(rèn)的方法能夠在體系結(jié)構(gòu)評(píng)估過程中精確計(jì)算每個(gè)組件的可靠度。在此重點(diǎn)是對(duì)體系結(jié)構(gòu)建立符合其運(yùn)行特征的模型,并看單個(gè)組件可靠度的變化對(duì)整體可靠度的影響,因此對(duì)組件可靠度的計(jì)算不做深入討論,假設(shè)組件可靠度為已知。
1.2體系結(jié)構(gòu)模型的類別和典型模型介紹
1.2.1體系結(jié)構(gòu)評(píng)估模型分類
自1975年起,Parnas和Shooman開始提出了軟件結(jié)構(gòu)對(duì)軟件可靠性影響的重要性,率先突破了軟件可靠性只考慮整體與外部交互的局面,第一次將軟件內(nèi)部結(jié)構(gòu)應(yīng)用到可靠性評(píng)估當(dāng)中。文獻(xiàn)[9-10]中將三十幾年間出現(xiàn)了基于體系結(jié)構(gòu)的可靠性評(píng)估模型歸納為3類:狀態(tài)模型、路徑模型和其他模型,具體模型分類和各個(gè)模型基本情況見表1所示。
表1 體系結(jié)構(gòu)評(píng)估模型分類Tab.1 Classification of architecture evaluation models
1.2.2典型模型介紹
1.2.2.1基于狀態(tài)的評(píng)估模型
基于軟件狀態(tài)的可靠性模型采用狀態(tài)控制流程圖來描述軟件的體系結(jié)構(gòu)。由于構(gòu)件被定義為邏輯上獨(dú)立的功能集合,可將一個(gè)構(gòu)件的執(zhí)行看成一個(gè)狀態(tài)。假設(shè)軟件系統(tǒng)處于某一個(gè)狀態(tài)時(shí),那么它的下一時(shí)刻的狀態(tài)只與當(dāng)前狀態(tài)有關(guān),而與在此之前的狀態(tài)無關(guān),那么各個(gè)狀態(tài)的轉(zhuǎn)移就符合馬爾可夫過程。狀態(tài)模型采用馬爾可夫鏈對(duì)軟件體系結(jié)構(gòu)進(jìn)行建模。而根據(jù)軟件體系結(jié)構(gòu)和體系結(jié)構(gòu)元素失效方式的建模方式不同,狀態(tài)模型又可分為組合模型和分層模型兩種。Cheung模型是最早考慮到模塊可靠度應(yīng)用到軟件可靠性預(yù)測(cè)的模型之一[11]。該模型假設(shè)一個(gè)軟件系統(tǒng)中具有n個(gè)構(gòu)件,各構(gòu)件的可靠性和構(gòu)件之間的轉(zhuǎn)移概率已知,并假設(shè)狀態(tài)圖中有唯一的開始節(jié)點(diǎn)和結(jié)束節(jié)點(diǎn)。將軟件體系結(jié)構(gòu)用離散時(shí)間馬爾可夫過程(DTMC)進(jìn)行建模,創(chuàng)建狀態(tài)轉(zhuǎn)移矩陣P=[pij],通過n次計(jì)算得到系統(tǒng)可靠性。Wang W.在Cheung的研究基礎(chǔ)上做出了關(guān)系軟件體系結(jié)構(gòu)風(fēng)格評(píng)估的擴(kuò)展工作[12]。利用Cheung氏馬爾可夫模型來評(píng)估不同體系結(jié)構(gòu)風(fēng)格下的可靠性。文獻(xiàn)[11]使用到的體系結(jié)構(gòu)風(fēng)格有:批處理;管道—過濾器;調(diào)用—返回和備份容錯(cuò)。對(duì)于分層模型,最早的分層模型是Littlewood模型[13],將軟件體系結(jié)構(gòu)采用連續(xù)時(shí)間的馬爾可夫鏈過程(CTMC)進(jìn)行建模,假設(shè)構(gòu)件i轉(zhuǎn)移到構(gòu)件j的平均執(zhí)行時(shí)間是mij;構(gòu)件i的失效符合參數(shù)為λi的泊松過程;構(gòu)件i轉(zhuǎn)移到構(gòu)件j時(shí)接口發(fā)生失效的概率是vij,并做出假設(shè):
失效發(fā)生的次數(shù)要遠(yuǎn)少于軟件控制權(quán)轉(zhuǎn)移的次數(shù),則軟件系統(tǒng)的失效也符合泊松過程,軟件失效率為
1.2.2.2基于路徑的評(píng)估模型
基于路徑的可靠性模型與基于狀態(tài)的可靠性模型具有相似的分析方法,最主要的區(qū)別在于計(jì)算軟件系統(tǒng)可靠性時(shí)考慮了系統(tǒng)的執(zhí)行路徑。最早的基于體系結(jié)構(gòu)的路徑模型由Shooman等提出[14]。他從軟件的執(zhí)行路徑角度對(duì)軟件體系結(jié)構(gòu)進(jìn)行了建模,每個(gè)軟件具有m個(gè)執(zhí)行路徑,每條路徑i具有執(zhí)行頻率fi,每條路徑還具有相應(yīng)的失效概率qi.在軟件系統(tǒng)的N次運(yùn)行中,失效總數(shù)為式中:Nfi代表路徑i執(zhí)行總次數(shù)。則整個(gè)軟件系統(tǒng)的失效概率可以寫作Yacoub,Cukic和Ammar[2]結(jié)合了場(chǎng)景技術(shù)來計(jì)算軟件的可靠性,一個(gè)場(chǎng)景可以定義為一系列構(gòu)件的相互作用,具有特定的外部激勵(lì)。運(yùn)用場(chǎng)景技術(shù),可以建立一個(gè)隨機(jī)概率模型:組件關(guān)系依賴圖(CDG).CDG可以描述一個(gè)場(chǎng)景,其中包括執(zhí)行過程的時(shí)間信息、系統(tǒng)組件間的交互以及可靠性信息等。CDG的特別之處在于運(yùn)用統(tǒng)一建模語言UML建立了描述軟件系統(tǒng)運(yùn)行的執(zhí)行模型,并結(jié)合不同場(chǎng)景,遍歷模型,計(jì)算出不同場(chǎng)景下不同構(gòu)件對(duì)軟件系統(tǒng)可靠性影響的大小。
1.2.2.3其他模型
其他模型包括仿真模型和增量模型。仿真模型[15]對(duì)軟件系統(tǒng)在時(shí)間域內(nèi)的失效行為進(jìn)行仿真,假設(shè)軟件構(gòu)件的失效強(qiáng)度函數(shù)服從G-O模型λ(t)=αe-bτ,構(gòu)件平均執(zhí)行時(shí)間Φ和構(gòu)件i、j之間轉(zhuǎn)移概率wij作為仿真需要的參數(shù)。通過一個(gè)離散時(shí)間仿真模型算法來驅(qū)動(dòng)軟件系統(tǒng)運(yùn)行,其中輸入為軟件系統(tǒng)運(yùn)行一次時(shí)的可靠性和執(zhí)行時(shí)間,通過設(shè)定相應(yīng)的仿真算法,計(jì)算出軟件系統(tǒng)的可靠性。增量模型[16]沒有明顯的軟件體系結(jié)構(gòu)特征,而主要是利用組件的失效數(shù)據(jù)來估計(jì)系統(tǒng)的可靠性。這些模型假設(shè)構(gòu)件的可靠性可以用非齊次泊松過程(NHPP)建模,系統(tǒng)的失效強(qiáng)度可以用構(gòu)件的失效強(qiáng)度和來表示。
現(xiàn)有的體系結(jié)構(gòu)模型普遍存在參數(shù)準(zhǔn)確性不足,假設(shè)條件過多,且部分假設(shè)與實(shí)際情況不符等缺點(diǎn)。并且在大部分模型中,將每個(gè)組件的運(yùn)行看作一個(gè)狀態(tài),但軟件在實(shí)際運(yùn)行中,狀態(tài)可能需要不止一個(gè)組件來支持其實(shí)現(xiàn),因此需要研究組件與系統(tǒng)運(yùn)行狀態(tài)的關(guān)系。同時(shí),對(duì)于航電嵌入式軟件,時(shí)間方面的可靠性也是需要重點(diǎn)考慮的因素,而這些情況現(xiàn)有的模型無法良好地描述[17]。
2.1Petri網(wǎng)的體系結(jié)構(gòu)建模及時(shí)間擴(kuò)展研究
2.1.1Petri網(wǎng)簡(jiǎn)介
Petri網(wǎng)是20世紀(jì)60年代由卡爾·A·佩里發(fā)明的,適合于描述異步、并發(fā)的計(jì)算機(jī)系統(tǒng)的模型。首先給出經(jīng)典Petri網(wǎng)的定義:Petri網(wǎng)是一個(gè)四元組的集合Σ=(P,T,F(xiàn),M0),其中:
1)P={p1,p2,…,pn}是有限位置集合;
2)T={t1,t2,…,tm}是有限變遷集合(P∪T≠?,P∩T=?);
3)F∈(P×T)∪(T×P)為流關(guān)系;
4)M0是網(wǎng)的初始標(biāo)識(shí),Petri網(wǎng)的標(biāo)識(shí)是位置集上的多重集,M0代表系統(tǒng)在最開始狀態(tài)時(shí)令牌在各個(gè)位置中的分布情況。
Petri網(wǎng)可用一個(gè)有向二部圖表示,其中包含兩類節(jié)點(diǎn),并且用有向弧連接起來。兩類節(jié)點(diǎn)分別為位置和變遷,其中位置一般用圓圈表示,變遷一般采用矩形表示。Petri網(wǎng)除了具有以上靜態(tài)結(jié)構(gòu)外,還包括了描述動(dòng)態(tài)機(jī)制的行為。這一特征是通過允許位置中包含令牌,其中令牌用黑點(diǎn)表示。在含有令牌的Petri網(wǎng)中,依據(jù)遷移的使能條件,可以使得使能的遷移點(diǎn)火,遷移的點(diǎn)火會(huì)依據(jù)點(diǎn)火規(guī)則實(shí)現(xiàn)令牌的移動(dòng)。不斷變化著的令牌重新分布就描述了系統(tǒng)的動(dòng)態(tài)變化,一個(gè)典型的Petri網(wǎng)圖如圖1所示。
圖1 典型Petri網(wǎng)圖Fig.1 Typical Petri net
Petri網(wǎng)具有良好的擴(kuò)展性,可實(shí)現(xiàn)針對(duì)實(shí)時(shí)嵌入式軟件的建模及驗(yàn)證,特別是在安全關(guān)鍵軟件驗(yàn)證領(lǐng)域已得到成功應(yīng)用[18],本文對(duì)Petri網(wǎng)的時(shí)間方面的擴(kuò)展進(jìn)行了研究,提出了一種基于時(shí)間擴(kuò)展Petri網(wǎng)的體系結(jié)構(gòu)建模方法,并在此基礎(chǔ)上為后續(xù)基于體系結(jié)構(gòu)的可靠性評(píng)估奠定基礎(chǔ)。
2.1.2軟件體系結(jié)構(gòu)的Petri網(wǎng)描述
在之前的研究中,通過引入時(shí)間要素已經(jīng)出現(xiàn)了隨機(jī)Petri網(wǎng)(SPN)和時(shí)間Petri網(wǎng)(TPN)。SPN是一種引入時(shí)間因素的Petri網(wǎng),引入的方法是:在每個(gè)變遷的可實(shí)施和實(shí)施之間聯(lián)系一個(gè)隨機(jī)的延遲時(shí)間,變遷在獲得系統(tǒng)資源后不會(huì)立即點(diǎn)火,而是設(shè)置一個(gè)定時(shí)器,當(dāng)定時(shí)器時(shí)間變?yōu)?時(shí)變遷才會(huì)點(diǎn)火。時(shí)間Petri網(wǎng)也是將時(shí)間因素加入到變遷當(dāng)中,與SPN不同的是,引入的時(shí)間延時(shí)不是一個(gè)隨機(jī)時(shí)間,而是一個(gè)時(shí)間區(qū)間,變遷在該區(qū)間內(nèi)等可能引發(fā)。Petri網(wǎng)是一個(gè)描述系統(tǒng)動(dòng)態(tài)運(yùn)行的模型,系統(tǒng)中某個(gè)事件的發(fā)生通常用一個(gè)變遷來表示,軟件的運(yùn)行需要一定的運(yùn)行時(shí)間,因此將時(shí)間與變遷聯(lián)系起來也是合情合理的。
軟件體結(jié)構(gòu)都是以組件為基礎(chǔ),因此在進(jìn)行Petri網(wǎng)建模時(shí),將庫所看作組件的集合,庫所之間的轉(zhuǎn)移看作每個(gè)組件運(yùn)行狀態(tài)的轉(zhuǎn)移,當(dāng)組件獲得CPU和內(nèi)存等系統(tǒng)資源時(shí),即視為獲得令牌。對(duì)于變遷,可以按照廣義SPN的定義,將變遷分為瞬時(shí)變遷和時(shí)間變遷,可以將一些選擇狀態(tài)看作是瞬時(shí)變遷,其所花費(fèi)的系統(tǒng)時(shí)間可以忽略不計(jì)。而對(duì)于時(shí)間變遷,一般為需要獲得系統(tǒng)資源(如CPU,內(nèi)存等),進(jìn)行一定時(shí)間運(yùn)行的變遷,可將其看作是上一組件的運(yùn)行時(shí)間。瞬時(shí)變遷用一個(gè)黑線表示,時(shí)間變遷用一個(gè)矩形框表示,如圖2所示。
圖2 兩類變遷的圖形表示Fig.2 Graphical representation of two types of changes
使用引入瞬時(shí)變遷和時(shí)間變遷的Petri網(wǎng)可以很好的描述并發(fā),選擇等結(jié)構(gòu)。對(duì)于選擇結(jié)構(gòu),組件可以分成兩個(gè)瞬時(shí)變遷,因?yàn)榻M件的選擇不需要占用太多的系統(tǒng)資源,可以看作是瞬時(shí)變遷,對(duì)于選擇結(jié)構(gòu)中瞬時(shí)變遷,為變遷賦值該組件運(yùn)行的概率,選擇結(jié)構(gòu)后只有一個(gè)組件可以獲得令牌,選擇結(jié)構(gòu)可以用圖3表示。
對(duì)于并行結(jié)構(gòu),可以使用兩個(gè)時(shí)間變遷進(jìn)行描述,兩個(gè)組件都可以獲得令牌執(zhí)行,并行結(jié)構(gòu)的Petri網(wǎng)圖可用圖4表示。
圖3 選擇結(jié)構(gòu)的Petri網(wǎng)表示Fig.3 Petri net represetation of selected structure
圖4 并行結(jié)構(gòu)的Petri網(wǎng)表示Fig.4 Petri nets representation of parallel structure
2.1.3Petri網(wǎng)時(shí)間因素的引入
對(duì)于Petri網(wǎng)引入的時(shí)間要素,如何與可靠性評(píng)估結(jié)合起來,是本文研究的一個(gè)重點(diǎn)。在傳統(tǒng)的可靠性評(píng)估模型中,大都假設(shè)只有組件才具有小于等于1的可靠度。本文在此基礎(chǔ)上進(jìn)行了擴(kuò)展,除了組件具有單獨(dú)可靠度以外,部分變遷也具有可靠度,并不是所有的變遷可靠度都為1.對(duì)于瞬時(shí)變遷,引入執(zhí)行該變遷的概率作為參數(shù),不用考慮可靠性。而對(duì)于時(shí)間變遷引入可靠度參數(shù),其值與時(shí)間因素相關(guān),變遷失效的類型主要有以下方面:
1)變遷的發(fā)生超過其規(guī)定的時(shí)間;
2)兩個(gè)互斥事件的發(fā)生;
3)事件按照錯(cuò)誤的順序發(fā)生。
2.1.3.1延時(shí)可靠性的引入
在擴(kuò)展時(shí)間Petri網(wǎng)中,對(duì)于時(shí)間變遷,引入一個(gè)不確定時(shí)段,代表變遷可以在這一時(shí)間段實(shí)施,該時(shí)間段可以表示為X(t)=[tl,tu][19-20],其中0≤tl≤tu,tl和tu是相對(duì)時(shí)間,相對(duì)于系統(tǒng)初始運(yùn)行的時(shí)刻,由系統(tǒng)決定。假設(shè)變遷在時(shí)刻s使能,實(shí)際觸發(fā)的時(shí)刻記為t*,則s+tl≤t*≤s+tu.對(duì)于瞬時(shí)變遷,可表示為X(t)=[0,0],代表其實(shí)施不需要時(shí)間延遲。將時(shí)間因素引入到變遷當(dāng)中主要應(yīng)用于并發(fā)的發(fā)生,當(dāng)兩個(gè)組件并發(fā)執(zhí)行時(shí),各個(gè)變遷的執(zhí)行有各自的使能時(shí)間,而最后并發(fā)的變遷完成后需要合并,進(jìn)入下一組件運(yùn)行,此時(shí)兩個(gè)并發(fā)的變遷合并轉(zhuǎn)入下一組件時(shí)能否滿足系統(tǒng)內(nèi)變遷的延遲,當(dāng)變遷的發(fā)生大于該變遷規(guī)定的延遲時(shí),則該變遷會(huì)發(fā)生失效,失效的可能性與變遷發(fā)生的時(shí)間段和系統(tǒng)定義的變遷時(shí)延有關(guān)。
圖5為典型的并行結(jié)構(gòu)的Petri網(wǎng),變遷T1和T2之間沒有直接的時(shí)間約束關(guān)系,圖5中表示到達(dá)S后經(jīng)過瞬時(shí)變遷,使得T1,T2同時(shí)出發(fā),這兩個(gè)變遷在相同標(biāo)識(shí)中可獨(dú)立實(shí)施,一個(gè)變遷的運(yùn)行不影響另一個(gè)變遷的運(yùn)行,當(dāng)兩個(gè)變遷都執(zhí)行完畢后,經(jīng)過同步,標(biāo)識(shí)到達(dá)結(jié)束狀態(tài)E.用s1、s2、s分別表示變遷T1、T2、T的觸發(fā)使能時(shí)刻,分別表示變遷T1、T2和T的實(shí)際觸發(fā)時(shí)間。由于從S經(jīng)過瞬時(shí)變遷使得T1和T2同時(shí)使能,因此s1=s2=s,由于Petri網(wǎng)的性質(zhì),可得因此T1、T2結(jié)束時(shí)間段為[s+t1l,s+ t1u]、[s+t2l,s+t2u],最晚結(jié)束時(shí)間則為max(s+t1u,s+t2u),即T的等效觸發(fā)最早結(jié)束時(shí)間為max(s+t1l,s+t2l),最晚結(jié)束時(shí)間為max(s+t1u,s+t2u),因此可以得到s+max(t1l,t2l)≤t*≤s+max(t1u,t2u),通過Petri網(wǎng)的性質(zhì)可以獲得變遷T發(fā)生的時(shí)間段為[max(t1l,t2l),max(t1u,t2u)].
圖5 并行結(jié)構(gòu)的Petri網(wǎng)視圖Fig.5 Petri nets of parallel structure
在軟件實(shí)際運(yùn)行時(shí),變遷T的發(fā)生也是有延時(shí)方面的限制,假設(shè)系統(tǒng)運(yùn)行定義的變遷T發(fā)生的延時(shí)限制為t′,如果max(t1u,t2u)-max(t1l,t2l)≤t′,則代表兩個(gè)變遷合并之后其發(fā)生的時(shí)間段仍然小于系統(tǒng)規(guī)定時(shí)延,因此其可靠度為1,不會(huì)發(fā)生延時(shí)方面的失效。如果max(t1u,t2u)-max(t1l,t2l)>t′,則根據(jù)Petri網(wǎng)運(yùn)行推算出的時(shí)延大于系統(tǒng)規(guī)定時(shí)延,有可能發(fā)生延時(shí)方面失效,其可靠度
通過對(duì)變遷加入使能時(shí)間段,使得Petri網(wǎng)不僅能夠?qū)ο到y(tǒng)運(yùn)行狀態(tài)進(jìn)行描述,還能夠分析系統(tǒng)每個(gè)時(shí)段各個(gè)組件的運(yùn)行情況,滿足了嵌入式系統(tǒng)對(duì)于時(shí)間因素的敏感性,并且通過引入時(shí)間變遷的延時(shí)可靠度,對(duì)于并發(fā)結(jié)構(gòu)變遷的延時(shí)情況進(jìn)行了研究,使得評(píng)估更加符合實(shí)際情況。
2.1.3.2時(shí)序可靠性的引入
時(shí)間相關(guān)的后兩種情況,主要是系統(tǒng)資源互斥以及時(shí)序問題。軟件需要運(yùn)行,必須要獲得一定的系統(tǒng)資源,而在不同的時(shí)間段各個(gè)模塊所獲得的系統(tǒng)資源也各不相同。在某些系統(tǒng)中,有些事件不能同時(shí)占用系統(tǒng)資源運(yùn)行,這些事件就稱為互斥事件,當(dāng)互斥事件發(fā)生時(shí),也屬于一種失效。另一方面,在嵌入式系統(tǒng)中,某些變遷的發(fā)生需要之前變遷遵循一定的順序發(fā)生,只有滿足條件變遷才能正常使能,對(duì)于這種變遷,因此引入與時(shí)序相關(guān)的可靠性,增加可靠性評(píng)估的準(zhǔn)確性。
對(duì)于如何描述系統(tǒng)時(shí)序方面的信息,引入時(shí)序Petri網(wǎng)中相關(guān)概念[21]。時(shí)序Petri網(wǎng)是在基本Petri網(wǎng)上引入時(shí)序邏輯公式,而這些邏輯公式對(duì)Petri網(wǎng)中的變遷引發(fā)順序加以限制。當(dāng)且僅當(dāng)變遷T滿足Petri網(wǎng)中的引發(fā)條件和邏輯公式時(shí),T才能引發(fā),其他描述與基本Petri網(wǎng)相同。時(shí)序公式是一組公式的集合并且具有如下性質(zhì):
1)命題p,↑t和t是原子命題,其中p∈P,t∈T;
2)如果f和g是公式,則┑f,f∧g,f∨g,f?g,○f,◇f,□f,f∪g也是公式。
上述性質(zhì)中,p表示庫所獲得令牌,↑t表示變遷t在當(dāng)前標(biāo)識(shí)下使能,t表示變遷t在當(dāng)前標(biāo)識(shí)下引發(fā)。其中┑,∧,∨,?是布爾運(yùn)算符。公式○f,◇f,□f和f∪g是時(shí)序邏輯符號(hào)?!餱表示下一狀態(tài)f為真;◇f表示從當(dāng)前狀態(tài)(包括當(dāng)前狀態(tài))開始以后的所有狀態(tài)至少有一個(gè)狀態(tài)使得f為真;□f表示從當(dāng)前狀態(tài)(包括當(dāng)前狀態(tài))開始以后的所有狀態(tài)都為真;f∪g表示f為真,直到g為真。
在Petri網(wǎng)中引入時(shí)序邏輯公式后,需要將其運(yùn)用到可靠性評(píng)估中。首先分析系統(tǒng)中的時(shí)序邏輯公式,確定系統(tǒng)運(yùn)行需要遵循的規(guī)則,對(duì)于一個(gè)規(guī)則,例如時(shí)序約束公式(Fe1)□(t1?◇t2),表示t1不能一直使能,以后需要有一個(gè)狀態(tài)讓t2使能,否則t2就會(huì)一直無法獲得系統(tǒng)資源而處于饑餓狀態(tài)。對(duì)變遷t2加入一個(gè)時(shí)序可靠性,該變遷時(shí)序失效率λ為系統(tǒng)一直執(zhí)行t1而不執(zhí)行t2的概率,該變遷的時(shí)序可靠性即為1-λ.并非所有的變遷都具有時(shí)序相關(guān)可靠性,在進(jìn)行可靠性評(píng)估時(shí),首先需要了解系統(tǒng)運(yùn)行的一些特定規(guī)則,定義系統(tǒng)運(yùn)行的時(shí)序邏輯公式,根據(jù)公式確定哪些變遷的使能具有時(shí)序相關(guān)特性,并計(jì)算時(shí)序相關(guān)的可靠性。通過引入時(shí)序邏輯公式和變遷時(shí)序可靠性,可以描述嵌入式系統(tǒng)中的互斥事件和特定事件序列,進(jìn)一步提高了Petri網(wǎng)可靠性評(píng)估模型的準(zhǔn)確性。
在進(jìn)行體系結(jié)構(gòu)的可靠性評(píng)估時(shí),很多時(shí)候是因?yàn)檐浖贿m合進(jìn)行系統(tǒng)地測(cè)試,無法使用黑盒的測(cè)試方法通過可靠性增長(zhǎng)模型獲得整個(gè)系統(tǒng)可靠度。只能通過對(duì)軟件分開測(cè)試,獲得各個(gè)組件的基本信息,如運(yùn)行時(shí)間、單獨(dú)可靠度等。然后依據(jù)系統(tǒng)的架構(gòu)建立相應(yīng)的評(píng)估模型。因此如何描述系統(tǒng)的實(shí)際運(yùn)行情況是可靠性評(píng)估的一個(gè)重點(diǎn)。對(duì)于嵌入式軟件,時(shí)間因素的描述是一個(gè)重要環(huán)節(jié),本文通過引入TPN和時(shí)序Petri網(wǎng)中的相關(guān)概念,將其與可靠性評(píng)估結(jié)合起來,增強(qiáng)了Petri網(wǎng)描述嵌入式軟件的能力。而由于Petri網(wǎng)具有良好的擴(kuò)展性,因此這些概念的引入不會(huì)影響其本身的描述能力。
2.2基于TPN的可靠性評(píng)估
在完成了對(duì)Petri網(wǎng)的擴(kuò)展后,需要通過該網(wǎng)絡(luò)進(jìn)行可靠性評(píng)估。首先需要繪制體系結(jié)構(gòu)的Petri網(wǎng)模型。對(duì)于系統(tǒng)中的組件,定義其為Petri網(wǎng)中的庫所,通過令牌在庫所中的轉(zhuǎn)移來描述系統(tǒng)的運(yùn)行。然后通過分析系統(tǒng)的運(yùn)行時(shí)間和時(shí)序關(guān)系等特征,計(jì)算出某些變遷的時(shí)間相關(guān)可靠度。
在獲得了單獨(dú)組建可靠度和變遷可靠度時(shí),需要建立計(jì)算系統(tǒng)可靠性的模型。首先需要獲得系統(tǒng)運(yùn)行狀態(tài)的可靠度與運(yùn)行組件可靠度之間的關(guān)系。在系統(tǒng)實(shí)際運(yùn)行時(shí),一個(gè)系統(tǒng)狀態(tài)的運(yùn)行可能需要不止一個(gè)組件來支持。因此對(duì)于系統(tǒng)的運(yùn)行狀態(tài),如果系統(tǒng)中有n個(gè)組件,可定義一個(gè)n維向量Mi=(s1,s2,…,sn)來描述該狀態(tài),如果在此狀態(tài)下第i個(gè)組件處于運(yùn)行狀態(tài),則s1置為1,否則置0.對(duì)于狀態(tài)可靠度與運(yùn)行組件可靠度之間的計(jì)算關(guān)系,擬采用如下方式進(jìn)行計(jì)算:
1)如果當(dāng)且僅當(dāng)所有的組件都正常運(yùn)行時(shí)該狀態(tài)才能正常運(yùn)行,則為串聯(lián)狀態(tài),該狀態(tài)的可靠度為所有組件可靠度的乘積;
2)如果只要某一個(gè)組件能夠正常運(yùn)行該狀態(tài)便可以正常運(yùn)行下去,則為并聯(lián)狀態(tài),該狀態(tài)的失效率為所有組件失效率的乘積,可靠度則為一減去失效率;
3)如果系統(tǒng)既有串聯(lián)運(yùn)行狀態(tài)也有并聯(lián)運(yùn)行狀態(tài),則為混聯(lián)運(yùn)行狀態(tài)。此時(shí)的可靠性計(jì)算可以采用遞歸的方法:每次依據(jù)串聯(lián)或者并聯(lián)的形式,進(jìn)行逐層分解,直到分解所得的每一部分均含有單純串聯(lián)或者并聯(lián)狀態(tài)為止,再利用上述串/并聯(lián)狀態(tài)可靠性計(jì)算方法逐層回溯,最終得到該狀態(tài)的可靠度。
獲得了系統(tǒng)各個(gè)狀態(tài)可靠度和變遷的可靠度后,可以通過狀態(tài)模型來計(jì)算系統(tǒng)的可靠度,對(duì)于可靠性計(jì)算方法進(jìn)行如下假設(shè):
假設(shè)1 軟件任意可達(dá)狀態(tài)發(fā)生失效,都視為軟件系統(tǒng)的失效;
假設(shè)2 軟件各個(gè)狀態(tài)發(fā)生的失效相互獨(dú)立,軟件某個(gè)狀態(tài)發(fā)生的失效不會(huì)受到其他狀態(tài)的影響;
假設(shè)3 假設(shè)軟件各個(gè)狀態(tài)之間的轉(zhuǎn)移服從DTMC.軟件狀態(tài)之間的轉(zhuǎn)移概率由軟件系統(tǒng)的剖面決定,狀態(tài)間的控制轉(zhuǎn)移只與當(dāng)前狀態(tài)有關(guān),而與此狀態(tài)之前的狀態(tài)無關(guān)。
基于如上假設(shè),構(gòu)建系統(tǒng)的狀態(tài)轉(zhuǎn)移矩陣,假設(shè)系統(tǒng)由n個(gè)可達(dá)狀態(tài)構(gòu)成{M1,M2,…,Mn},其中M1為初始狀態(tài),Mn為終止?fàn)顟B(tài),每個(gè)狀態(tài)的可靠度用Ri表示,用pij表示系統(tǒng)正常從狀態(tài)i運(yùn)行到狀態(tài)j的概率,如果狀態(tài)轉(zhuǎn)移的變遷存在可靠度,則其值為轉(zhuǎn)移的概率與變遷可靠度的乘積。矩陣第i行、j列代表狀態(tài)i不發(fā)生失效并正確轉(zhuǎn)移到狀態(tài)j的概率,即Ripij,因此可得到如下矩陣:
對(duì)現(xiàn)有狀態(tài)空間進(jìn)行擴(kuò)充,加入兩個(gè)吸收狀態(tài)S和F,其中:S代表軟件正確完成并結(jié)束的概率,該狀態(tài)只能由最終狀態(tài)Mn轉(zhuǎn)移得到;F為軟件某一個(gè)狀態(tài)發(fā)生失效,可以由任意狀態(tài)獲得。這樣狀態(tài)空間擴(kuò)充為{S,F(xiàn),M1,M2,…,Mn},擴(kuò)展的狀態(tài)轉(zhuǎn)移矩陣如下所示:
由(4)式可以看出,矩陣M′為M增加了前兩列,其中:第1列為各狀態(tài)轉(zhuǎn)移到狀態(tài)S的概率,即軟件正常執(zhí)行的概率;第2列為各構(gòu)件狀態(tài)轉(zhuǎn)移到狀態(tài)F的轉(zhuǎn)移概率,即發(fā)生失效的概率。在矩陣M中,最后一行元素為0,而在矩陣M′中,最后一行元素和仍為0,這意味著終止?fàn)顟B(tài)Mn只能轉(zhuǎn)移到S或F狀態(tài)。
Mk(i,j)代表狀態(tài)i經(jīng)過k步轉(zhuǎn)移,到達(dá)狀態(tài)j的概率,因此Mk(1,n)為軟件初始狀態(tài),經(jīng)過k步轉(zhuǎn)移,到達(dá)終止?fàn)顟B(tài)n的概率。這樣可以得出:
式中:I為單位矩陣;E為(I-M)矩陣中刪除第n行和第1列后的矩陣。
則軟件的系統(tǒng)可靠度:
利用狀態(tài)之間轉(zhuǎn)移的馬爾可夫模型進(jìn)行可靠性評(píng)估具有良好的效果,特別是當(dāng)系統(tǒng)中存在循環(huán)路徑時(shí)。如果采用路徑的模型,可能需要對(duì)循環(huán)路徑進(jìn)行處理,需要對(duì)路徑循環(huán)執(zhí)行的次數(shù)進(jìn)行研究,計(jì)算方法較為復(fù)雜并且可能不太準(zhǔn)確。但是基于狀態(tài)轉(zhuǎn)移的馬爾可夫過程可以依據(jù)自身數(shù)學(xué)計(jì)算的特征順利地解決循環(huán)路徑的問題。
3.1被測(cè)軟件介紹
本節(jié)將之前的可靠性評(píng)估方法帶入到一個(gè)具體實(shí)例中,下面以某飛控系統(tǒng)中的縱向控制軟件為例,首先對(duì)其體系結(jié)構(gòu)進(jìn)行Petri網(wǎng)建模,然后進(jìn)行可靠性評(píng)估,并將計(jì)算結(jié)果的誤差與傳統(tǒng)模型進(jìn)行比較。飛控系統(tǒng)是飛機(jī)上的核心系統(tǒng)之一,包含了復(fù)雜的并發(fā)、異步等活動(dòng),系統(tǒng)共包含4個(gè)軟件模塊,包括系統(tǒng)自檢(BIT),縱向操控軟件,橫航向操控軟件以及操作系統(tǒng)軟件。
為了驗(yàn)證上述可靠性評(píng)估方法的有效性和準(zhǔn)確性,本文選取縱向操控軟件進(jìn)行實(shí)例研究,縱向系統(tǒng)主要包含兩個(gè)子系統(tǒng),分別為縱向控制增穩(wěn)軟件和縱向自動(dòng)駕駛軟件,工作流程如下:
1)當(dāng)縱向控制增穩(wěn)按鈕按下時(shí),駕駛員的操作處于主導(dǎo),通過操縱桿控制飛機(jī)的高度,系統(tǒng)軟件處于縱向控制增穩(wěn)功能,主要進(jìn)行控制增穩(wěn)控制律的計(jì)算,以及控制律的調(diào)參,并控制俯仰角以避免出現(xiàn)危險(xiǎn)情況,進(jìn)而輔助飛行員進(jìn)行駕駛;
2)當(dāng)縱向自動(dòng)駕駛按鈕按下時(shí),系統(tǒng)進(jìn)入縱向自動(dòng)駕駛狀態(tài),此時(shí)飛行狀態(tài)主要由軟件進(jìn)行控制,系統(tǒng)除了進(jìn)行各種調(diào)參之外,還需要對(duì)飛機(jī)俯仰姿態(tài)進(jìn)行跟蹤控制,并且當(dāng)駕駛員對(duì)駕駛儀進(jìn)行拉高或者俯沖操作時(shí)進(jìn)行控制律的計(jì)算,當(dāng)?shù)竭_(dá)指定高度后改平俯仰狀態(tài)使飛機(jī)進(jìn)入一個(gè)穩(wěn)定狀態(tài)。
3.2飛控系統(tǒng)建模
通過查閱文檔和代碼,根據(jù)3.1.1節(jié)中的建模方法,可以繪制該飛控縱向控制軟件體系結(jié)構(gòu)的Petri網(wǎng)圖,如圖6所示。
圖6 某飛控縱向控制軟件的Petri網(wǎng)結(jié)構(gòu)圖Fig.6 Longitudinal control of a flight control software structure of Petri nets
開始狀態(tài)為縱向飛行的穩(wěn)定狀態(tài),飛行員通過操縱界面對(duì)飛機(jī)縱向飛行狀態(tài)進(jìn)行控制,分別進(jìn)入縱向控制增穩(wěn)狀態(tài)和縱向自動(dòng)駕駛狀態(tài),在完成了對(duì)飛行姿態(tài)的控制以后,最后飛機(jī)再次進(jìn)入一個(gè)縱航向上的穩(wěn)定飛行狀態(tài),圖中各個(gè)組件和變遷和含義見表2.
3.3基于體系結(jié)構(gòu)的可靠性評(píng)估
通過構(gòu)建Petri網(wǎng)模型,對(duì)系統(tǒng)組件的信息以及組件之間的轉(zhuǎn)移進(jìn)行了描述。Petri網(wǎng)通過令牌的運(yùn)行來模擬整個(gè)軟件系統(tǒng)的運(yùn)行,在某一時(shí)刻如果組件獲得令牌則處于運(yùn)行狀態(tài),通過令牌的轉(zhuǎn)移可以獲得整個(gè)系統(tǒng)的可達(dá)狀態(tài)標(biāo)識(shí),進(jìn)而得到Petri網(wǎng)的可達(dá)狀態(tài)標(biāo)識(shí)轉(zhuǎn)移圖,如圖7所示。
系統(tǒng)有12個(gè)組件,因此對(duì)于每一個(gè)可達(dá)狀態(tài)標(biāo)識(shí),定義一個(gè)12個(gè)元素的向量表示,當(dāng)組件在該狀態(tài)運(yùn)行時(shí)則其值為1,否則為0,系統(tǒng)每個(gè)狀態(tài)的含義以及向量表示見表3.
表2 飛控縱向控制軟件組件和變遷名稱Tab.2 Names of flight control longitudinal control software components and changes
表3 可達(dá)狀態(tài)標(biāo)識(shí)含義及向量表示Tab.3 Identification meaning of reachable states and vector representation
在使用Petri網(wǎng)建立其體系結(jié)構(gòu)模型之后,需要添加可靠性信息。根據(jù)軟件測(cè)試獲得失效數(shù)據(jù),運(yùn)用可靠性增長(zhǎng)模型,可以得到各個(gè)組件的單獨(dú)可靠度為Rs1=0.999 2,Rs2=0.995 1,Rs3=0.994 8,Rs4= 0.987 5,Rs5=0.984 7,Rs6=0.994 5,Rs7=0.993 2,Rs8=0.994 8,Rs9=0.982 4,Rs10=0.991 2,Rs11= 0.991 2,Rs12=0.9981.幾個(gè)選擇變遷執(zhí)行的概率分別為:t1=0.7,t2=0.3,t4=0.8,t5=0.2,t10=0.5,t11=0.5,t3=0.2,t′3=1-t3=0.8,t9=0.2,t′9=1-t9=0.8.
在時(shí)間變遷中變遷t8具有延時(shí)方面的可靠性,t12具有時(shí)序方面的可靠性。由于變遷t8屬于兩個(gè)并行變遷t6、t7運(yùn)行之后的合并變遷,因此具有合并后的延時(shí)的可靠性。由系統(tǒng)運(yùn)行情況可知,變遷t7運(yùn)行的時(shí)間段可以表示為[46 ms,98 ms],變遷t6運(yùn)行的時(shí)間段為[47 ms,90 ms],因此可以獲得變遷t8期望的運(yùn)行時(shí)間段為[47 ms,96 ms].而系統(tǒng)中對(duì)于延時(shí)的要求為50 ms,因此可得該變遷的延時(shí)可靠度Rt8=50/51=0.980 4.對(duì)于變遷t12,根據(jù)Petri網(wǎng)圖以及變遷可以獲得時(shí)序邏輯公式為t11?◇t9∧t12,根據(jù)系統(tǒng)實(shí)際運(yùn)行情況,計(jì)算可得t12的時(shí)序可靠度為Rt12=0.992 0.
在獲得了所有可靠性信息以后,根據(jù)上文描述的計(jì)算方法,可以獲得可達(dá)狀態(tài)的概率轉(zhuǎn)移矩陣:
圖7 某飛控系統(tǒng)可達(dá)狀態(tài)轉(zhuǎn)移圖Fig.7 State transition of a flight control system
根據(jù)(6)式,計(jì)算得到整個(gè)系統(tǒng)的可靠度R= 0.963 4.
3.4誤差分析及與傳統(tǒng)模型的比對(duì)
基于軟件體系結(jié)構(gòu)的可靠性評(píng)估結(jié)果是否可以準(zhǔn)確反應(yīng)軟件系統(tǒng)的真實(shí)可靠性水平,是多年來一直困擾研究者的問題,文獻(xiàn)[22]提出了將模型評(píng)估結(jié)果與來自軟件測(cè)試數(shù)據(jù)的可靠性評(píng)估結(jié)果作對(duì)比,定義軟件可靠性的相對(duì)誤差為
式中:Ra是利用軟件系統(tǒng)測(cè)試的失效數(shù)據(jù)得到的系統(tǒng)“真實(shí)”可靠度;Rs是通過評(píng)估模型計(jì)算得出的可靠性。根據(jù)測(cè)試收集的失效數(shù)據(jù),得出該軟件的“真實(shí)”可靠度為0.955 1,因此有相對(duì)誤差
本文選用傳統(tǒng)的狀態(tài)模型[11]對(duì)軟件進(jìn)行可靠性評(píng)估,并與時(shí)間擴(kuò)展Petri網(wǎng)的可靠性評(píng)估模型的結(jié)果進(jìn)行對(duì)比。選用該狀態(tài)模型的原因是在現(xiàn)有的基于體系結(jié)構(gòu)的可靠性評(píng)估模型中,其評(píng)估結(jié)果的準(zhǔn)確度被認(rèn)為是最高的,同時(shí)也是應(yīng)用最為廣泛的模型。根據(jù)文獻(xiàn)[2]描述的方法,創(chuàng)建馬爾可夫狀態(tài)轉(zhuǎn)移矩陣,計(jì)算可靠度為0.974 4,因此有相對(duì)誤差
通過相對(duì)誤差分析,可以證明本文提出的基于時(shí)間擴(kuò)展Petri網(wǎng)的可靠性評(píng)估模型比傳統(tǒng)模型具有更高的準(zhǔn)確性。
基于體系結(jié)構(gòu)的可靠性評(píng)估主要有兩個(gè)方面的意義:一方面有些軟件無法進(jìn)行系統(tǒng)的黑盒測(cè)試,只能對(duì)各個(gè)組件單獨(dú)測(cè)試,然后建立體系結(jié)構(gòu)的可靠性評(píng)估模型來計(jì)算整個(gè)系統(tǒng)的可靠性;另一方面,可以在軟件開發(fā)的早期建立起軟件的體系結(jié)構(gòu)模型,因?yàn)榻?jīng)過大量的工程實(shí)踐表明,軟件的很多缺陷都是在設(shè)計(jì)階段產(chǎn)生的,通過在開發(fā)時(shí)期建立體系結(jié)構(gòu)的可靠性模型,能夠?qū)﹂_發(fā)有一定的指導(dǎo)意義。通過對(duì)各個(gè)組件進(jìn)行靈敏度分析,可以獲得對(duì)系統(tǒng)可靠性影響較大的關(guān)鍵組件,作為軟件開發(fā)階段的重點(diǎn),避免不必要的錯(cuò)誤,在開發(fā)階段可以有效提高系統(tǒng)的可靠性,從而節(jié)省在后期驗(yàn)證階段耗費(fèi)的人力物力。
本文首先總結(jié)了現(xiàn)有的基于體系結(jié)構(gòu)的可靠性評(píng)估模型,介紹了組件和基本Petri網(wǎng)的概念。然后對(duì)于基于組件的軟件體系結(jié)構(gòu),提出了時(shí)間擴(kuò)展的Petri網(wǎng)模型,通過引入時(shí)間變遷和瞬時(shí)變遷,并對(duì)時(shí)間變遷引入與時(shí)間關(guān)聯(lián)的可靠度,提高了模型對(duì)實(shí)時(shí)嵌入式軟件的描述能力。最后選用一個(gè)典型的嵌入式軟件——飛控系統(tǒng),對(duì)其中的縱向操控軟件,建立其Petri網(wǎng)圖,帶入相應(yīng)的可靠性信息,計(jì)算整個(gè)系統(tǒng)的可靠度,并進(jìn)行相對(duì)誤差分析,驗(yàn)證了模型的準(zhǔn)確性。
TPN模型會(huì)隨著庫所和變遷等建模元素的增長(zhǎng)呈指數(shù)級(jí)增長(zhǎng),會(huì)導(dǎo)致出現(xiàn)狀態(tài)空間的爆炸問題,如何緩解狀態(tài)空間,對(duì)模型進(jìn)行精簡(jiǎn),又不降低其描述能力,現(xiàn)在正在成為一個(gè)研究方向。而進(jìn)行體系結(jié)構(gòu)的可靠性評(píng)估時(shí),對(duì)于單個(gè)組件可靠度和變遷可靠度,如何能夠進(jìn)一步提高計(jì)算的準(zhǔn)確性,也是今后研究的一個(gè)重點(diǎn)。
(
)
[1]YIN Y F,LIU B,NI H Y.Real-time embedded software testing method based on extend finite state machine[J].Journal of Systems Engineering and Electronics,2012,23(2):276-285.
[2]Goseva-Popstojanova K,Trivedi K S.Architecture-based approach to reliability assessment of software systems[J].Performance Evaluation Journal,2001,45(2/3):179-204.
[3]Ramamoorthy C V,Bastani F B.Software reliability-status and perspectives[J].IEEE Transactions on Software Engineering,1982,8(4):354-371.
[4]Goel A L.Software reliability models:assumptions,limitations,and applicability[J].IEEE Transactions on Software Engineering,1985,11(12):1411-1423.
[5]Horgan J R,Mathur A P.Perils of software reliability modeling[R].US:Software Engineering Research Center,Purdue University,1995.
[6]Hsu C J,Huang C Y.An adaptive reliability analysis using path testing for complex component-based software systems.[J],Reliability,2011,60(1):158-170.
[7]Fiondella L,Rajasekaran S,Gokhale S S,et al.Efficient software reliability analysis with correlated component failures[J].IEEE Transactions on Reliability,2013,(6)2:244-255.
[8]Noh Y J,Choi K K,Du L.Reliability-based design optimization of problems with correlated input variables using a Gaussian Copula[J]. Structural and Multidisciplinary Optimization,2009,38(1):1-16.
[9]Gokhale S S,Trivedi K S.Structure-based software reliability prediction[C]∥Proceedings of 5th International Conference on Advanced Computing.Chennai,India:IEEE,1997:447-452.
[10]Gokhale S S,John R C,William H F.System availability analysis considering failure severities[J].International Journal of Performability Engineering,2007,3(4):467.
[11]Li Q Y,Lei L,Jun A,et al.The determination method for software reliability qualitative indices[C]∥Software Security and Reliability(SERE),2013 IEEE 7th International Conference on.Gaithersburg,MD:IEEE,2013:237-245.
[12]Inoue S J,Shigeru Y D.Two-dimensional software reliability measurement technologies[C]∥Industrial Engineering and Engineering Management.Hongkong:IEEE,2009:223-227.
[13]Littlewood B.Software reliability model for modular program structure[J].IEEE Transactions on Reliability,1979,28(3):241-246.
[14]Park J,Kim H J,Shin J H,et al.An Embedded Software Reliability Model with Consideration of Hardware Related Software Failures[C]∥IEEE Sixth International Conference on Software Security andReliability.Gaithersburg,MD:IEEE,2012:207-214.
[15]Lee W B,Boo G J,Jongmoon B.Early reliability prediction:An approach to software reliability assessment in open software adoption stage[C]∥Second International Conference on Secure System Integration and Reliability Improvement.Yokohama:IEEE,2008:226-227.
[16]Inoue S J,Shiho H,Shigeru Y.Toward practical software reliability assessment with change-point based on hazard rate models[C]∥2013 IEEE 37th Annual Computer Software and Applications Conference(COMPSAC).Kyoto,Japan:IEEE Computer Society,2013.
[17]Nelsen R B,Manuel'U Flores.The lattice-theoretic structure of sets of bivariate copulas and quasi-copulas[J].Comptes Rendus Mathematique.2005,341(9):583-586.
[18]Noh Y J,Choi K K,Liu D.Reliability-based design optimization of problems with correlated input variables using a Gaussian copula[J].Structural and Multidisciplinary Optimization,2009,38(1):1-16.
[19]Huang C,Lin C,Kuo S,et al.Software reliability growth models incorporating fault dependency with various debugging time lags[C]∥Proceedings of the 28th Annual International Conference on Computer Software and Applications.Hongkong:IEEE,2004:186-191.
[20]Kaneishi T,Tadashi D.Software reliability modeling and evaluation under incomplete knowledge on fault distribution[C]∥7th International Conference on Software Security and Reliability(SERE).Gaithersburg,MD:IEEE,2013.
[21]Chandra B,Koizumi T,Hayashi M,et al.A study on network reliability evaluation for developing countries[C]∥2012 18th Asia-Pacific Conference on Communications.Jeju Island Korea:IEEE,2012.
[22]Zeng J T,Li J Z,Zeng X H,et al.A prototype system of software reliability prediction and estimation[C]∥2010 Third International Symposium on Intelligent Information Technology and Security Informatics(IITSI).Jinggangshan:IEEE,2010.
Real-time Embedded Software Architecture Modeling and Reliability Estimation Based on Time-extended Petri Net
XU Yu-tang1,YIN Yong-feng2,SUN Jing3,ZHANG Chi2,LIU Bin2
(1.School of Mechatronical Engineering,Beijing Institute of Technology,Beijing 100081,China;2.School of Reliability and System Engineering,Beihang University,Beijing 100191,China;3.Ordnance Science and Research Academy of China,Beijing 100089,China)
Software reliability is one of the most important quality indices in software quality evaluation. With the development of software engineering and component reusing,the reliability analysis based on software architecture has become a researching hotspot.This paper puts a research on existed architecture-based reliability estimation models at first,then proposes existing architecture based reliability estimation types and typical models,putting forward the shortage of these models as well.As Petri net has a well expansibility and descriptive power of concurrency and asynchronism,this paper focuses on the research of Petri net model,divides transition into time transition and instant transition,and adds time-related reliability—time-delay reliability and temporal reliability,by this means establish the software archi-tecture modeling.The reachable state transition matrix is set up and the system reliability estimation is made by studing the relationship between component state and system reachable state.At last,the method is used in a avionics embedded software for architecture modeling,reliability estimation and error analysis,proving the effectiveness and accuracy of this method.
computer software;software architecture;reliability estimation;time-extended Petri net
文獻(xiàn)標(biāo)志碼:A文章編號(hào):1000-1093(2015)02-0363-11
10.3969/j.issn.1000-1093.2015.02.025
2014-04-15
航空科學(xué)基金項(xiàng)目(20140751008);中央高?;究蒲袠I(yè)務(wù)費(fèi)專項(xiàng)資金項(xiàng)目(YWF-11-03-Q-114)
許玉堂(1978—),男,博士生研究生。E-mail:xyutang@foxmail.com;殷永峰(1978—),男,副教授。E-mail:yyf@buaa.edu.cn