• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于靜態(tài)分析方法的軟件可靠性模型研究

    2012-11-08 06:55:40緋,王
    關(guān)鍵詞:軟件可靠性源代碼靜態(tài)

    鄧 緋,王 凱

    (1.四川職業(yè)技術(shù)學(xué)院,四川 遂寧 629000;2.西南大學(xué),重慶 北碚 400715)

    基于靜態(tài)分析方法的軟件可靠性模型研究

    鄧 緋1,王 凱2

    (1.四川職業(yè)技術(shù)學(xué)院,四川 遂寧 629000;2.西南大學(xué),重慶 北碚 400715)

    隨著網(wǎng)絡(luò)通訊與計(jì)算機(jī)應(yīng)用的不斷發(fā)展,軟件可靠性問(wèn)題日益受到關(guān)注。針對(duì)更新COTS或開(kāi)源組建,提供了一種定量評(píng)估軟件可靠性的方法模型。該模型結(jié)合了靜態(tài)分析源代碼方法,對(duì)執(zhí)行路徑進(jìn)行有限測(cè)試,并建立貝葉斯信任網(wǎng)絡(luò),構(gòu)建一個(gè)綜合的軟件可靠性度量模型。最后使用STREW[1]工具對(duì)3個(gè)開(kāi)源程序進(jìn)行實(shí)驗(yàn)驗(yàn)證,得到了實(shí)驗(yàn)結(jié)果,證明模型有效。

    軟件可靠性;靜態(tài)分析;貝葉斯信任網(wǎng)絡(luò)

    0 引言

    隨著網(wǎng)絡(luò)通訊與計(jì)算機(jī)技術(shù)的不斷發(fā)展,軟件已滲透到國(guó)民經(jīng)濟(jì)和國(guó)防建設(shè)的各個(gè)領(lǐng)域。隨著軟件系統(tǒng)功能的不斷增加,其規(guī)模和復(fù)雜程度也越來(lái)越大,軟件可靠性日益受到人們的關(guān)注,尤其是在航空航天、銀行等領(lǐng)域。如果軟件可靠性得不到保證,軟件系統(tǒng)存在缺陷和漏洞,就會(huì)造成許多問(wèn)題和故障,必然會(huì)對(duì)國(guó)民生活帶來(lái)不利的影響,甚至造成巨大的損失。

    1983年美國(guó)IEEE[2]計(jì)算機(jī)學(xué)會(huì)對(duì)“軟件可靠性”作出了定義:(1)在規(guī)定條件及時(shí)間內(nèi),軟件不引起系統(tǒng)失效的概率;(2)在規(guī)定的時(shí)間周期內(nèi),在所述條件下程序執(zhí)行所要求的功能的能力。傳統(tǒng)的軟件可靠性模型需要在開(kāi)發(fā)和測(cè)試期間進(jìn)行數(shù)據(jù)收集,包括可靠度R(t),平均故障前時(shí)間MTTF、平均修復(fù)時(shí)間MTTR、平均故障間隔時(shí)間MTBF,失效率,失效強(qiáng)度,容錯(cuò)性等。但錯(cuò)誤數(shù)據(jù)不一定能被充分收集,因此檢測(cè)軟件可靠性有一定難度。

    1 靜態(tài)分析方法

    源代碼的靜態(tài)分析是復(fù)查軟件錯(cuò)誤中的一種常用技術(shù),是對(duì)代碼的機(jī)械性的、程式化的特性分析方法。靜態(tài)分析可以進(jìn)行緩沖區(qū)檢查[2],發(fā)現(xiàn)緩沖區(qū)溢出和安全漏洞、內(nèi)存泄露[3]、定時(shí)異常等等其他常見(jiàn)的編程錯(cuò)誤。

    靜態(tài)分析一般采用軟件工具進(jìn)行分析,包括控制流分析、數(shù)據(jù)流分析、接口分析等。該方法常用于任務(wù)關(guān)鍵代碼的開(kāi)發(fā),如航天和交通領(lǐng)域。

    Nagappan[1]等人指出,自動(dòng)檢測(cè)的故障和實(shí)際錯(cuò)誤數(shù)目有密切關(guān)系。在本文中,需要使用Java靜態(tài)分析工具估計(jì)Java程序的可靠性。有研究者使用Findbugs,JLint,PMD等等靜態(tài)分析工具來(lái)分析Java源代碼,并對(duì)源代碼的結(jié)果進(jìn)行比較。本文使用9種不同的分析工具對(duì)程序進(jìn)行分析,以提高評(píng)估有效性。

    2 構(gòu)建可靠性模型

    本模型的基本前提是:軟件可靠性與源代碼中靜態(tài)檢測(cè)故障數(shù)、靜態(tài)檢測(cè)故障數(shù)的路徑以及代碼塊的覆蓋率相關(guān)。

    首先將源代碼分成一系列方法(函數(shù)),將每一方法(函數(shù))劃分為語(yǔ)句塊,語(yǔ)句塊由連續(xù)的代碼指令組成,靜態(tài)分析檢測(cè)被分配到適當(dāng)?shù)拇a塊中。一旦源代碼被分解成語(yǔ)句塊,靜態(tài)分析工具有效地鏈接到分解的源代碼,并輸出結(jié)果。為了預(yù)測(cè)可靠性,必須確定執(zhí)行每個(gè)分支的概率。在完成該程序的靜態(tài)分析后,結(jié)合理論與實(shí)際,對(duì)程序的路徑進(jìn)行跟蹤觀察,實(shí)施測(cè)試。測(cè)試包括一系列的黑盒測(cè)試和功能測(cè)試。對(duì)每個(gè)方法,每個(gè)代碼塊的可靠性是基于貝葉斯信念網(wǎng)絡(luò)(BBN)的靜態(tài)檢測(cè)故障與可靠性的輸出,并對(duì)程序代碼結(jié)構(gòu)達(dá)到80%代碼覆蓋率的基礎(chǔ)上進(jìn)行有限測(cè)試。

    2.1 貝葉斯信念網(wǎng)絡(luò)

    為了準(zhǔn)確評(píng)估靜態(tài)分析檢測(cè)到得故障以及有效性,建立BBNs來(lái)評(píng)估單一的靜態(tài)檢測(cè)故障的失敗風(fēng)險(xiǎn)。如圖1所示,BBNS結(jié)合靜態(tài)檢測(cè)錯(cuò)誤以及有限測(cè)試中的代碼覆蓋率,得到軟件可靠性。該BBNs結(jié)合歷史數(shù)據(jù)以及程序執(zhí)行路徑,預(yù)測(cè)一個(gè)給定的靜態(tài)檢測(cè)故障,以及會(huì)導(dǎo)致程序出現(xiàn)故障的概率。這個(gè)網(wǎng)絡(luò)有效地分為三個(gè)主要部分,左上方用來(lái)處理靜態(tài)檢測(cè)到相關(guān)故障的風(fēng)險(xiǎn),右上方用來(lái)評(píng)估程序執(zhí)行中出現(xiàn)錯(cuò)誤的概率,底部結(jié)合以上數(shù)據(jù),提供總體靜態(tài)檢測(cè)故障的可靠性估計(jì)。

    圖1 靜態(tài)檢測(cè)軟件可靠性模型

    2.2 模塊綜合可靠性

    依靠代碼塊進(jìn)行單一的靜態(tài)檢測(cè)錯(cuò)誤,僅僅可以確定一個(gè)代碼塊綜合可靠性。該情況下,通過(guò)BBN中“校準(zhǔn)網(wǎng)可靠性”的結(jié)點(diǎn)輸出確定代碼塊的可靠性。但在具有多個(gè)靜態(tài)檢測(cè)錯(cuò)誤存在的情況下,需要進(jìn)一步處理代碼塊的可靠性。

    在傳統(tǒng)的可靠性模型中,存在兩個(gè)故障,如果一個(gè)獨(dú)立錯(cuò)誤導(dǎo)致整個(gè)系統(tǒng)失敗,那么一個(gè)系統(tǒng)的失敗概率可以表示為

    Pf(F1)是在執(zhí)行中任何可能會(huì)導(dǎo)致失敗的概率。Pf(F2)也一樣,在這種情況下

    但是,如果各個(gè)故障并不互相獨(dú)立,那么

    為了解決這個(gè)問(wèn)題,必須依靠相關(guān)依賴(lài)對(duì)故障分組。因此,如果兩個(gè)靜態(tài)檢測(cè)故障的屬于同一分類(lèi),則假定它們是同一故障的不同實(shí)例;如果該故障不是同一分類(lèi),則必須估算它們的組合效應(yīng)取得可靠性。在傳統(tǒng)的可靠性模型中,使用乘其可靠性得到。在本模型中,需要建立另一個(gè)BBNs,如圖2所示。

    圖2 結(jié)合兩個(gè)靜態(tài)檢測(cè)錯(cuò)誤的BBN

    建立圖2以連接網(wǎng)絡(luò)實(shí)例,根據(jù)每一個(gè)代碼塊的可靠性,由該圖組合得到總體的可靠性。

    2.3 整個(gè)系統(tǒng)的可靠性

    為了結(jié)合每個(gè)方法得到的可靠性,從而得到整個(gè)系統(tǒng)的可靠性。創(chuàng)建BBNs用于結(jié)合每個(gè)方法的可靠性,如圖3所示。

    圖3 綜合可靠性BBNs

    3 實(shí)驗(yàn)驗(yàn)證

    本文中選用3個(gè)程序進(jìn)行試驗(yàn)來(lái)驗(yàn)證模型的可靠性,對(duì)程序進(jìn)行可靠性計(jì)算,用STREW軟件測(cè)試與可靠性預(yù)警度量方法進(jìn)行可靠性分析相比較,并得到實(shí)驗(yàn)數(shù)據(jù)。其中STREW指標(biāo)體系是一套有效使用于軟件可靠性估計(jì)度量的工具。

    本文選用俄羅斯方塊游戲,五子棋程序和黑白棋程序進(jìn)行實(shí)驗(yàn)。首先,為了簡(jiǎn)化可靠性模型,以上3個(gè)程序都是5千行代碼以下,并使用SoSART(Software Static Analysis Reliability Toolkit)軟件靜態(tài)分析可靠性工具包進(jìn)行分析。SoSART工具包旨在幫助開(kāi)發(fā)人員通過(guò)使用靜態(tài)分析評(píng)估現(xiàn)有的Java源代碼的可靠性。其次,需要一套JUnit測(cè)試腳本來(lái)應(yīng)用STREW模型。STREW度量通過(guò)工具度量和測(cè)試度量與軟件可靠性關(guān)聯(lián)。最后,用程序文檔估計(jì)程序需求以估計(jì)軟件可靠性結(jié)果。

    度量的發(fā)展指標(biāo)定義組由Nagappan等人使用,該度量能夠有效地估計(jì)軟件可靠性。該估量參數(shù)包括測(cè)試用例的數(shù)量,SLOC源代碼行,TLOC測(cè)試代碼行,需求數(shù)目,源類(lèi),條件數(shù),測(cè)試類(lèi)等等,通過(guò)測(cè)試以上參數(shù),并進(jìn)行組合以估計(jì)軟件可靠性。

    STREW工具通過(guò)測(cè)量組合參數(shù)來(lái)估計(jì)軟件的可靠性。而STREW度量由GERT(Graphical Evalution and Review Technique圖表評(píng)審技術(shù))工具箱支持,GERT可以對(duì)網(wǎng)絡(luò)邏輯關(guān)系和歷時(shí)估算進(jìn)行概率處理。PERT(Program Evaluation and Review Technique)利用網(wǎng)絡(luò)順序邏輯關(guān)系和加權(quán)歷時(shí)來(lái)估算項(xiàng)目歷時(shí)的重要技術(shù)。STREW方法在PERT的基礎(chǔ)上,增加決策節(jié)點(diǎn),不僅將活動(dòng)的各參數(shù)如時(shí)間和費(fèi)用設(shè)為隨機(jī)性分布,而且其各個(gè)活動(dòng)及相互之間的影響關(guān)系也具有隨機(jī)性,即活動(dòng)按一定概率可能發(fā)生或不發(fā)生,相應(yīng)地反映在活動(dòng)開(kāi)始或結(jié)束的節(jié)點(diǎn)或分支發(fā)生或不發(fā)生。在網(wǎng)絡(luò)的表現(xiàn)形式上,增加決策節(jié)點(diǎn),并且節(jié)點(diǎn)之間具有回路和環(huán)存在。

    3.1 軟件可靠性評(píng)估過(guò)程

    對(duì)3個(gè)測(cè)試程序的軟件可信性評(píng)估主要發(fā)生在四個(gè)步驟上,即使用STREW度量評(píng)估可信性,然后使用靜態(tài)分析工具分析代碼,再對(duì)范例進(jìn)行功能測(cè)試,最后使用SoSART工具對(duì)結(jié)果進(jìn)行綜合評(píng)定。

    為了提供軟件程序的可靠性估計(jì)邊界,首先,在Eclipse編譯環(huán)境中使用GERT分析工具。

    在使用GERT工具分析進(jìn)行評(píng)估后后,使用SoSART工具支持的八個(gè)獨(dú)立靜態(tài)分析工具對(duì)源代碼進(jìn)行分析。通過(guò)使用ANT(Another Neat Tool)編譯工具,靜態(tài)分析工具完全自動(dòng)執(zhí)行,以便消除人為錯(cuò)誤。總體而言,采用靜態(tài)分析工具分析三個(gè)方案,靜態(tài)檢測(cè)故障檢測(cè)到1157個(gè)故障,其中259被認(rèn)為是有效的故障。

    完成后靜態(tài)分析階段之后,獲得軟件模塊的執(zhí)行配置文件。在源代碼內(nèi)執(zhí)行功能測(cè)試或驗(yàn)收測(cè)試,通過(guò)運(yùn)行驗(yàn)收測(cè)試或功能測(cè)試獲得執(zhí)行配置文件。

    一旦得到執(zhí)行配置文件,使用SoSART工具,并獲得適當(dāng)?shù)目煽啃源胧┑撵o態(tài)檢測(cè)到的故障和執(zhí)行的文件進(jìn)行了分析。對(duì)于每一個(gè)程序,首先將源代碼導(dǎo)入工具。隨著源代碼導(dǎo)入后,得到靜態(tài)分析工具的輸出,放進(jìn)SoSART,得到有效性評(píng)估。在這一點(diǎn)上,產(chǎn)生了初步的可靠性報(bào)告評(píng)估的可靠性(假設(shè)每一個(gè)和每一個(gè)程序被執(zhí)行的均勻分布)。產(chǎn)生該評(píng)估后,將獲得源代碼的執(zhí)行概況可靠性報(bào)告。該過(guò)程在提供的三個(gè)方案中被重復(fù)執(zhí)行。

    3.2 實(shí)驗(yàn)結(jié)果

    表1提供這一系列的實(shí)驗(yàn)結(jié)果。表的上段給出了STREW指標(biāo)的選定項(xiàng)目的可靠性評(píng)估的結(jié)果,該表下部分提供使用模型的可靠性評(píng)估。在提供的例子中,最大的差異為0.015。

    表1 實(shí)驗(yàn)結(jié)果

    5 結(jié)語(yǔ)

    本文在針對(duì)更新COTS或開(kāi)源組建,結(jié)合靜態(tài)分析方法、有限測(cè)試、以及構(gòu)建2個(gè)貝葉斯網(wǎng)絡(luò),提出了一個(gè)綜合的軟件可靠性模型。其中,靜態(tài)分析方法用來(lái)檢測(cè)在源代碼中有可能導(dǎo)致的執(zhí)行錯(cuò)誤,使用代碼覆蓋率檢測(cè)源代碼中可執(zhí)行的路徑以及執(zhí)行率,建立第一個(gè)BBNs用于結(jié)合各個(gè)參數(shù)并估計(jì)每種方法的可靠性,并建立第二個(gè)BBNs用來(lái)結(jié)合各個(gè)模塊可靠性并估計(jì)網(wǎng)絡(luò)軟件的可靠性。該模型通過(guò)3個(gè)程序測(cè)試了其有效性。但是,在貝葉斯網(wǎng)絡(luò)上,實(shí)驗(yàn)的網(wǎng)絡(luò)是簡(jiǎn)化了的,若要在實(shí)際運(yùn)用中,則需要進(jìn)一步探討改進(jìn)其準(zhǔn)確性和額外附加參數(shù)的給定的參數(shù)可能。

    [1] Nachiappan Nagappan.A Software Testing and Reliability Early Warning(STREW)Metric Suite[M].PhD Thsis,2005.

    [2] John D.Musa.韓柯譯.軟件可靠性工程[M].北京:機(jī)械工業(yè)出版社,2003.

    [3] 戈戟,史洪,徐良華.Shellcode靜態(tài)檢測(cè)技術(shù)研究[J].計(jì)算機(jī)應(yīng)用與軟件,2010,27(2):47-49.

    [4] 李倩,潘學(xué)敏,李宣東.內(nèi)存泄露檢測(cè)工具與評(píng)估方法[J].計(jì)算機(jī)科學(xué)與探索,2010(1):33-39.

    Research on Software Reliability Model Based on Static Analysis

    DENG Fei1,WANG Kai2

    (1.Sichuan Vocational and Technological College,Suining 629000,China;2.Southwest University,Beibei 400715,China)

    Along with the network communication and the continuous development of computer applications,software reliability has attracted increasing attention.This paper proposes a methodology model for quantitative evaluation of software reliability in updated COTS or open source components.Combining with the static analysis of the source code,the model tests the execution paths limitedly,as well as sets up Bayesian Belief Networks to provide a comprehensive software reliability measurement model.Finally it uses STREW[1]to give the three open source programs experimental verification and the experiment results are attained.The model is proved to be effective.

    software reliability;static analysis;Bayesian Belief Networks

    TN915.1

    A

    1009-3907(2012)08-0937-04

    2012-05-20

    鄧緋(1975-),女,重慶江津人,副教授,碩士,主要從事計(jì)算機(jī)應(yīng)用方面的研究。

    責(zé)任編輯:吳旭云

    猜你喜歡
    軟件可靠性源代碼靜態(tài)
    人工智能下復(fù)雜軟件源代碼缺陷精準(zhǔn)校正
    靜態(tài)隨機(jī)存儲(chǔ)器在軌自檢算法
    基于TXL的源代碼插樁技術(shù)研究
    軟件可靠性工程綜合應(yīng)用建模技術(shù)研究
    軟件源代碼非公知性司法鑒定方法探析
    數(shù)控系統(tǒng)軟件可靠性設(shè)計(jì)與故障分析技術(shù)
    揭秘龍湖產(chǎn)品“源代碼”
    機(jī)床靜態(tài)及動(dòng)態(tài)分析
    具7μA靜態(tài)電流的2A、70V SEPIC/升壓型DC/DC轉(zhuǎn)換器
    簡(jiǎn)談使用BoundsChecker進(jìn)行計(jì)算機(jī)聯(lián)鎖系統(tǒng)人機(jī)界面軟件可靠性測(cè)試
    柳州市| 壶关县| 久治县| 安丘市| 汤阴县| 黄大仙区| 西吉县| 周至县| 察雅县| 台东县| 乌恰县| 女性| 乌什县| 洛扎县| 类乌齐县| 甘孜县| 新乡市| 霍城县| 南昌县| 潜山县| 南宫市| 达日县| 鹤壁市| 民勤县| 城口县| 桐柏县| 阜宁县| 精河县| 七台河市| 板桥市| 沙坪坝区| 长葛市| 砀山县| 雅安市| 云霄县| 堆龙德庆县| 海门市| 富顺县| SHOW| 胶南市| 独山县|