一種符合DO-178B/CA級軟件目標(biāo)碼覆蓋分析方法技術(shù)領(lǐng)域本發(fā)明屬于綜合化航空電子系統(tǒng)軟件技術(shù)領(lǐng)域,具體涉及一種符合DO-178B/CA級軟件目標(biāo)碼覆蓋分析方法。
背景技術(shù):
機載軟件的開發(fā)符合DO-178B/C標(biāo)準(zhǔn)的要求,是其允許裝機使用的基本要求。目前,國產(chǎn)大飛機機載軟件的研制已進(jìn)入關(guān)鍵時期,面對A級軟件開發(fā)與認(rèn)證中的核心關(guān)鍵技術(shù)(如目標(biāo)碼覆蓋分析技術(shù)),國內(nèi)企業(yè)一直沒有一個有效的解決方案,這已成為制約國產(chǎn)大飛機機載A級軟件研制的主要技術(shù)壁壘。目標(biāo)碼覆蓋分析(OCA)是A級軟件獨有的技術(shù)要求,用于保證軟件源代碼與可執(zhí)行目標(biāo)碼的一致性。目前國外公司雖對OCA研究了專門目標(biāo)碼覆蓋分析工具及硬件仿真平臺,但是他們一直對該技術(shù)進(jìn)行封鎖和限制,技術(shù)細(xì)節(jié)一直未公開。而國內(nèi)在此技術(shù)方面基本是空白,所以目標(biāo)碼覆蓋分析技術(shù)的研究迫在眉睫。
技術(shù)實現(xiàn)要素:
為了解決背景技術(shù)中提出的問題,本發(fā)明提出了一種A級軟件目標(biāo)碼覆蓋分析方法,大大提高目標(biāo)碼覆蓋分析的效率與可信性。本發(fā)明的具體技術(shù)方案是:一種符合DO-178B/CA級軟件目標(biāo)碼覆蓋分析方法,其特征在于,包括以下步驟:1)根據(jù)源代碼與目標(biāo)碼一一對應(yīng)的映射關(guān)系制定編碼規(guī)則表;所述編碼規(guī)則表用于制定源代碼編碼規(guī)則及目標(biāo)碼編譯規(guī)則;2)對違反編碼規(guī)則的源代碼制定額外目標(biāo)碼映射表;3)目標(biāo)碼覆蓋分析;3.1)選擇編譯工具按照編碼規(guī)則表中定義的編碼規(guī)則對源代碼進(jìn)行編譯,形成目標(biāo)碼;3.2)利用編譯工具對目標(biāo)碼進(jìn)行插樁,生成帶插樁的可執(zhí)行模塊;3.3)使用一組語句覆蓋、分支覆蓋及判定覆蓋均達(dá)到100%的測試用例驅(qū)動可執(zhí)行模塊,生成目標(biāo)碼覆蓋分析報告;3.4)對目標(biāo)碼進(jìn)行目標(biāo)碼覆蓋分析;若生成的目標(biāo)碼覆蓋分析報告中目標(biāo)碼的語句覆蓋及分支覆蓋均為100%,則證明目標(biāo)碼可以被追蹤;若目標(biāo)碼的語句覆蓋及分支覆蓋其中一個不能達(dá)到100%,則按照以下原則之一執(zhí)行:原則一:添加測試用例再次出具分析報告,證明目標(biāo)碼的合理性;原則二:利用步驟2)中的額外目標(biāo)碼映射表,證明額外目標(biāo)碼的合理性。上述編譯工具采用LDRATestbed或者VerocelVeroCode。上述編碼規(guī)則表包括三個屬性,分別是:標(biāo)識:對編碼規(guī)則進(jìn)行標(biāo)識;內(nèi)容:描述軟件編碼中應(yīng)符合的編碼結(jié)構(gòu)及編譯參數(shù);等級:定義編碼規(guī)則執(zhí)行力度。上述額外目標(biāo)碼映射表包括三個屬性,分別是:標(biāo)識:對額外目標(biāo)碼結(jié)構(gòu)進(jìn)行標(biāo)識;內(nèi)容:描述額外目標(biāo)碼結(jié)構(gòu)內(nèi)容,通常為一組重復(fù)出現(xiàn)的、獨立的單元;條件:額外目標(biāo)碼產(chǎn)生的條件。本發(fā)明的有益效果是:本發(fā)明采用的目標(biāo)碼覆蓋分析方法,通過制定編碼規(guī)則表以及額外目標(biāo)碼映射表對目標(biāo)碼進(jìn)行分析,既不需要經(jīng)過FAA認(rèn)證的目標(biāo)碼覆蓋分析工具及硬件仿真設(shè)備做支持,又不需求對軟件執(zhí)行徹底的手工評審與分析,大大提高了目標(biāo)碼覆蓋分析的效率與可信性。附圖說明圖1為本發(fā)明目標(biāo)碼覆蓋分析的工作流程框圖。具體實施方式以下結(jié)合附圖1對本發(fā)明的目標(biāo)碼覆蓋分析方法的工作原理進(jìn)行描述:步驟1)根據(jù)源代碼與目標(biāo)碼一一對應(yīng)的映射關(guān)系(確定軟件編碼中應(yīng)該遵循的編碼規(guī)則,制定編碼規(guī)則表;源代碼與目標(biāo)碼追蹤技術(shù)定義待補充。該編碼規(guī)則表的制定應(yīng)盡量降低額外目標(biāo)碼產(chǎn)生的數(shù)量;步驟2)對違反編碼規(guī)則的源代碼制定一個額外目標(biāo)碼映射表;完成本目標(biāo)碼覆蓋分析方法,需要編碼規(guī)則表與額外目標(biāo)碼映射表做支撐;其中,如表1所示:編碼規(guī)則表應(yīng)包含以下屬性:標(biāo)識:對編碼規(guī)則進(jìn)行標(biāo)識;內(nèi)容:描述軟件編碼中應(yīng)符合的編碼結(jié)構(gòu)及編譯參數(shù);等級:定義編碼規(guī)則執(zhí)行力度。其中,如表2所示:額外目標(biāo)碼映射表,應(yīng)包含以下屬性:標(biāo)識:對額外目標(biāo)碼結(jié)構(gòu)進(jìn)行標(biāo)識;內(nèi)容:描述額外目標(biāo)碼結(jié)構(gòu)內(nèi)容,通常為一組重復(fù)出現(xiàn)、獨立的單元;條件:額外目標(biāo)碼產(chǎn)生的條件,如死循環(huán)、硬件限制。3)目標(biāo)碼覆蓋分析;3.1)選擇編譯工具按照編碼規(guī)則表中定義的編碼規(guī)則對源代碼進(jìn)行編譯,形成目標(biāo)碼;3.2)利用編譯工具對目標(biāo)碼進(jìn)行插樁,生成帶插樁的可執(zhí)行模塊;3.3)使用一組語句覆蓋、分支覆蓋及判定覆蓋均達(dá)到100%的測試用例驅(qū)動可執(zhí)行模塊,生成目標(biāo)碼覆蓋分析報告;3.4)對目標(biāo)碼進(jìn)行目標(biāo)碼覆蓋分析;若生成的目標(biāo)碼覆蓋分析報告中目標(biāo)碼的語句覆蓋及分支覆蓋均為100%,則證明目標(biāo)碼可以被追蹤;若目標(biāo)碼的語句覆蓋及分支覆蓋其中一個不能達(dá)到100%,則按照以下原則之一執(zhí)行:原則一:添加測試用例再次出具分析報告,證明目標(biāo)碼的合理性;原則二:利用步驟2)中的額外目標(biāo)碼映射表,證明額外目標(biāo)碼的合理性。在完成上述目標(biāo)碼覆蓋分析工作時,需要對以下事項重點說明:編譯工具選擇執(zhí)行目標(biāo)碼覆蓋分析的關(guān)鍵是對目標(biāo)碼插樁。目前,有兩種工具支持該功能:LDRATestbed及VerocelVeroCode。從功能上比較,兩者功能相近,LDRATestbed使用直接對匯編碼插樁的“硬樁”技術(shù),通過測試用例驅(qū)動輸出覆蓋信息,因此需要一定的軟、硬件資源支持,更適合于對應(yīng)用軟件執(zhí)行目標(biāo)碼覆蓋分析。而VerocelVerocode針對操作系統(tǒng)驗證研發(fā),使用監(jiān)控目標(biāo)碼執(zhí)行的“軟樁”技術(shù),更適合于對系統(tǒng)軟件,如操作系統(tǒng)執(zhí)行目標(biāo)碼覆蓋分析。通常采用LDRATestbed完成。制定嚴(yán)格的編碼規(guī)則表的目的是通過編碼方式盡量減少目標(biāo)碼中的不可追溯代碼。這需要對編譯工具、庫函數(shù)及語法結(jié)構(gòu)等進(jìn)行分析,盡可能得出造成源代碼與目標(biāo)碼不一致的地方,將其納入編碼規(guī)則之中加以避免,通過靜態(tài)分析及對代碼的評審分析保證這些編碼規(guī)則得到執(zhí)行。通過對大量工程案例分析,按照制定的編碼規(guī)則實現(xiàn)的軟件,編譯后產(chǎn)生的額外目標(biāo)碼大都由編譯參數(shù)或特定場景(如死循環(huán)、硬件環(huán)境限定)造成,為嚴(yán)格證明目標(biāo)碼與源代碼的一致性,需制定一個額外目標(biāo)碼映射關(guān)系表,該表應(yīng)涵蓋所有可能的額外目標(biāo)碼列表及其對應(yīng)的編譯參數(shù)或特定場景,為目標(biāo)碼分析提供支撐依據(jù)。以下是本實施例中使用的表格:表1編碼規(guī)則表表2目標(biāo)碼覆蓋分析表