• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      目標(biāo)碼覆蓋率分析在PPC目標(biāo)環(huán)境中的應(yīng)用

      2013-12-31 00:00:00葉祥明劉偉
      電子世界 2013年18期

      【摘要】提出了一種對編譯器產(chǎn)生的目標(biāo)代碼覆蓋率的分析方法。傳統(tǒng)的結(jié)構(gòu)化語言的覆蓋技術(shù)使用的是源代碼級的,無法對編譯器產(chǎn)生的代碼進(jìn)行驗(yàn)證,本文介紹了VerOCode軟件在PPC目標(biāo)環(huán)境中目標(biāo)碼覆蓋率的分析驗(yàn)證。

      【關(guān)鍵詞】DO-178B;目標(biāo)碼覆蓋;VerOCode

      1.引言

      目標(biāo)碼覆蓋率分析技術(shù)是嵌入式軟件系統(tǒng)質(zhì)量保障的重要技術(shù)手段,目前在安全領(lǐng)域認(rèn)可與使用的目標(biāo)碼驗(yàn)證要求來自于美國航空無線電技術(shù)委員會(RTCA)和歐洲民用航空設(shè)備組織(EUROCAE),為美國聯(lián)邦航空管理局(FAA)以及歐洲航空管理部門的機(jī)載軟件適航認(rèn)證而制定的DO-178B/ED-12B標(biāo)準(zhǔn)。DO-178B/ED-12B標(biāo)準(zhǔn)將軟件安全等級分為A-E級,在DO-178B 6.4.4.2中要求:“覆蓋率分析可以在源代碼上開展,對于A級軟件并且編譯器產(chǎn)生的目標(biāo)代碼不能直接追蹤到源代碼的語句,那么需要對目標(biāo)碼進(jìn)行額外的驗(yàn)證工作以確保產(chǎn)生的代碼序列是正確的。”

      這里提到的“基于目標(biāo)碼的額外驗(yàn)證工作”可以由目標(biāo)碼覆蓋率分析來實(shí)現(xiàn),即:編譯器在編譯過程中在目標(biāo)碼中添加了額外的代碼,可以通過目標(biāo)碼覆蓋率分析發(fā)現(xiàn)這部分代碼,并且可以建立源代碼與目標(biāo)代碼之間的關(guān)系。而源代碼覆蓋率方法由于進(jìn)行了代碼插裝,測試的對象已經(jīng)改變了,無法對編譯器多添加的代碼進(jìn)行驗(yàn)證。在國外的適航認(rèn)證經(jīng)驗(yàn)中,目標(biāo)碼覆蓋率分析已經(jīng)得到廣泛的使用,并且被適航認(rèn)證局所認(rèn)可。

      2.目標(biāo)碼覆蓋

      2.1 目標(biāo)碼覆蓋的出處

      目標(biāo)碼覆蓋的概念和要求在RTCA/DO-178B標(biāo)準(zhǔn)中明確提出,相關(guān)內(nèi)容如下:結(jié)構(gòu)覆蓋分析的目的是確定在基于需求的測試過程中,哪些代碼結(jié)構(gòu)沒有被執(zhí)行。基于需求的測試用例可能沒有完全執(zhí)行所有的代碼結(jié)構(gòu),因此需要進(jìn)行結(jié)構(gòu)覆蓋分析,并要求進(jìn)行覆蓋分析驗(yàn)證。

      結(jié)構(gòu)化語言的覆蓋分析可以在源代碼級別進(jìn)行。但是如果是DO-178B A級軟件并且編譯器產(chǎn)生的目標(biāo)代碼不能直接追蹤到源代碼中的語句,那么驗(yàn)證工作就需要采取額外地分析方法,即在目標(biāo)代碼的級別上驗(yàn)證編譯器產(chǎn)生的代碼序列的正確性。在目標(biāo)代碼中的數(shù)組邊界檢查就是編譯成生成(compiler-generated)的不能直接追蹤到源代碼的目標(biāo)代碼的一個實(shí)例。

      2.2 進(jìn)行目標(biāo)碼驗(yàn)證的原因

      (1)測試充分性要求

      目標(biāo)碼的驗(yàn)證關(guān)心編譯器產(chǎn)生的目標(biāo)碼的控制流結(jié)構(gòu)有多少與源代碼不一致。這些不一致產(chǎn)生的原因有許多,如:編譯器的解釋、優(yōu)化等。然而,傳統(tǒng)的結(jié)構(gòu)化語言的覆蓋率技術(shù)使用的是源碼級的,盡管在處理器上執(zhí)行的是目標(biāo)碼,二者之間控制流結(jié)構(gòu)的不同在測試過程中會產(chǎn)生重大的差距。

      MISRA C:2004認(rèn)為C程序設(shè)計中存在的風(fēng)險可能由5個方面造成:程序員的失誤、程序員對語言的誤解、程序員對編譯器的誤解、編譯器的錯誤和運(yùn)行時錯誤(runtime errors)。

      (2)程序員對編程語言和編譯器的誤解

      編譯器的行為不符合程序員的想法。很多高級語言標(biāo)準(zhǔn)特別是工業(yè)級語言標(biāo)準(zhǔn)的定義并不精確。如果一個語言的某些特征是不完全定義的,或者說是歧義的,那么就可能出現(xiàn)程序員的意思與編譯器的解釋不一致的情況。所以對于不同的編譯器,相同的源代碼其行為可能不同;同一個編譯器,其行為也可能因?yàn)樯舷挛牡牟煌煌@鏑語言中的volatile的類型就是一個例子。

      (3)編譯器的錯誤

      語言的編譯器本身是一個軟件工具,它編譯代碼并不總是正確的。例如可能在某些情況下它沒有遵守語言標(biāo)準(zhǔn),或者它本身就有錯誤。隨著編譯器驗(yàn)證技術(shù)的不斷發(fā)展,越來越多的編譯器問題被暴露出來。

      針對嵌入式軟件,由于運(yùn)行資源有限,有時編譯器產(chǎn)成的代碼本身并沒有問題,但仍然會導(dǎo)致系統(tǒng)失效。

      3.關(guān)于編譯器驗(yàn)證

      對于高級語言程序,編譯器經(jīng)常會引入風(fēng)險。對編譯器進(jìn)行驗(yàn)證是保證其正確產(chǎn)生目標(biāo)碼的最直接的方法。然而,目前對編譯器的完全驗(yàn)證還存在非常困難的技術(shù)問題。編譯器是一種特殊的系統(tǒng)軟件,編譯器的輸入和輸出都是應(yīng)用軟件或系統(tǒng)軟件。由于編譯器的這個特殊性和編譯器本身結(jié)構(gòu)的復(fù)雜性,使編譯器的測試驗(yàn)證面臨著巨大的挑戰(zhàn)。目前,關(guān)于編譯器的驗(yàn)證問題已經(jīng)有廣泛的研究,例如編譯器使用的主要算術(shù)邏輯的驗(yàn)證、算術(shù)表達(dá)式的驗(yàn)證、編譯器結(jié)構(gòu)的驗(yàn)證等。但這些編譯器的驗(yàn)證方法都比較復(fù)雜,實(shí)用性和靈活性也不強(qiáng)。此外,編譯器驗(yàn)證軟件的價格昂貴,編譯器驗(yàn)證的效果難以估計,一般的軟件開發(fā)單位也不會出資進(jìn)行編譯器驗(yàn)證。在不能完全信賴編譯器的情況下,進(jìn)行目標(biāo)碼驗(yàn)證是唯一的選擇。

      4.解決途徑

      目前,為了滿足市場上不斷涌現(xiàn)的目標(biāo)碼驗(yàn)證需求,有幾個著名的外國廠商推出了相關(guān)的支持方案和工具,比如英國LDRA公司的Tbrun工具、美國IBM公司的TestRT工具和和美國VeroCel公司的VeroCode工具等,本文重點(diǎn)介紹VeroCode工具。VerOCode是目標(biāo)碼覆蓋率分析工具,VeroCode不需要特殊硬件,被測試的代碼也不需要插裝。應(yīng)用代碼在目標(biāo)計算機(jī)(例如:PowerPC)上執(zhí)行,執(zhí)行的數(shù)據(jù)圖表收集到一個宿主機(jī)上(PC)。VerOCode使用收集的執(zhí)行數(shù)據(jù)圖表與鏈接器符號信息和編譯器產(chǎn)生的清單一起,可以顯示出哪些指令執(zhí)行了,哪些指令沒有執(zhí)行,以及條件指令執(zhí)行過程中的分支條件代碼狀態(tài)。產(chǎn)生的VerOCode結(jié)果清單包含了DO-178B A級,適航認(rèn)證最高級別的安全性要求所要求的目標(biāo)碼覆蓋覆蓋率分析的證明。

      VerOCode已成功實(shí)施到國內(nèi)某研究所的實(shí)際項(xiàng)目之中,針對PPC裸板應(yīng)用和使用DeltaOS的PPC板應(yīng)用,VerOcode實(shí)現(xiàn)了目標(biāo)碼級的覆蓋率分析。

      VerOCode記錄和顯示被測試程序中執(zhí)行的目標(biāo)碼指令。對于條件指令,VerOCode顯示每次指令執(zhí)行時的條件代碼的狀態(tài)。VerOCode工作在Host-Target模式,其工作流程圖如圖1所示。

      監(jiān)控和測試程序(測試控制和被測單元)在PPC目標(biāo)機(jī)上執(zhí)行,覆蓋率在機(jī)器碼級獲得。由于目標(biāo)系統(tǒng)提供printk函數(shù),可在串口打印數(shù)據(jù)輸出,通過超級終端或其他串口監(jiān)控程序可獲得數(shù)據(jù)結(jié)果。一個測試運(yùn)行以后,收集的覆蓋率數(shù)據(jù)通過串口上傳到宿主機(jī)來分析。測試數(shù)據(jù)格式以字母H作為開頭行,D行和Z行交替出現(xiàn)作為數(shù)據(jù)行,T行做為結(jié)束行。

      VeroMon.o監(jiān)控程序要求必須運(yùn)行在系統(tǒng)態(tài)(supervisor-level),它要調(diào)用mfmsr等特權(quán)指令讀取寄存器狀態(tài)。同時被測試系統(tǒng)的剩余內(nèi)存分配必須滿足VeroMon.o的內(nèi)存要求:

      .text–Monitor’s code(approx.5KB);

      .data–initialized data(approx.1KB);

      .bss–coverage data table(256 KB,global symbol coverageDataTable).

      對于PPC裸板應(yīng)用,VeroCode提供的Monitor代碼不需要做任何定制即可實(shí)現(xiàn)目標(biāo)碼覆蓋的驗(yàn)證,并通過目標(biāo)板下載程序運(yùn)行,得到詳細(xì)的目標(biāo)碼覆蓋率報告。

      對于使用國產(chǎn)DeltaOS操作系統(tǒng)的PPC板,由于RTOS控制了目標(biāo)板的所有硬件資源,通過分析其RTOS的硬件Vector列表,重新對Monitor進(jìn)行定制,實(shí)現(xiàn)VerOcode代碼與DeltaOS代碼的兼容,從而實(shí)現(xiàn)了嵌入式操作系統(tǒng)“道DeltaOS”的支持。

      5.結(jié)束語

      不依賴于源代碼以及編譯器的目標(biāo)碼覆蓋率分析,是實(shí)現(xiàn)符合DO-178B/ED-12B標(biāo)準(zhǔn)規(guī)定的目標(biāo)碼分析與驗(yàn)證的難點(diǎn)之一,本文通過在PPC裸板應(yīng)用和使用DeltaOS的PPC板應(yīng)用,VerOcode實(shí)現(xiàn)了目標(biāo)碼級的覆蓋率分析。

      參考文獻(xiàn)

      [1]DO-178B,DO-178B software considerations in airborne systems and equipment certification[S].

      [2]Verocel inc.VerOCode-software coverage tool[OL].http://www.verocel.com.

      [3]文勇,蔡銘,陳剛,楊子江,金星.目標(biāo)碼流圖和結(jié)構(gòu)覆蓋率獲取方法[J].計算機(jī)工程與設(shè)計,2010,31(11).

      作者簡介:葉祥明(1978—),江西瑞昌人,大學(xué)本科,工程師,現(xiàn)供職于中國船舶重工集團(tuán)公司第七一○研究所,研究方向:軟件測試、軟件工程。

      望都县| 大足县| 南木林县| 林甸县| 明溪县| 雷山县| 图木舒克市| 突泉县| 莒南县| 宜宾县| 泽库县| 唐海县| 沙田区| 教育| 图木舒克市| 廉江市| 乐平市| 乌兰浩特市| 扎鲁特旗| 定兴县| 江城| 潮州市| 北安市| 天峨县| 全州县| 呼和浩特市| 富平县| 平邑县| 三穗县| 汽车| 肇庆市| 绩溪县| 苗栗市| 湖北省| 桑日县| 弋阳县| 子长县| 鄂尔多斯市| 鄂伦春自治旗| 麻栗坡县| 桦南县|