付強(qiáng) 陳溦


摘要
機(jī)載軟件仿真驗(yàn)證環(huán)境是機(jī)載軟件前期驗(yàn)證過(guò)程中非常有效且常用的發(fā)現(xiàn)軟件問(wèn)題和設(shè)計(jì)問(wèn)題的手段。通過(guò)分析接口控制文檔(ICD)對(duì)應(yīng)的配置文件,并結(jié)合數(shù)據(jù)激勵(lì)和數(shù)據(jù)監(jiān)控功能模塊的需求,提出了一種能夠自動(dòng)生成仿真驗(yàn)證環(huán)境中數(shù)據(jù)激勵(lì)和數(shù)據(jù)監(jiān)控的方法,實(shí)現(xiàn)了根據(jù)配置文件自動(dòng)完成應(yīng)用層數(shù)據(jù)和底層網(wǎng)絡(luò)數(shù)據(jù)的雙向轉(zhuǎn)換,并在此功能基礎(chǔ)上生成對(duì)應(yīng)的數(shù)據(jù)激勵(lì)和數(shù)據(jù)監(jiān)控功能模塊,有效地支持了仿真驗(yàn)證環(huán)境的構(gòu)建。
【關(guān)鍵詞】ICD 數(shù)據(jù)激勵(lì) 數(shù)據(jù)監(jiān)控 自動(dòng)化生成
在機(jī)載軟件前期研制過(guò)程中,為了能夠發(fā)現(xiàn)軟件設(shè)計(jì)和開(kāi)發(fā)階段存在的問(wèn)題,經(jīng)常會(huì)搭建仿真驗(yàn)證環(huán)境預(yù)先驗(yàn)證軟件功能的正確性,為后期基于機(jī)載硬件平臺(tái)的系統(tǒng)級(jí)交聯(lián)試驗(yàn)提供功能級(jí)的保證,并降低系統(tǒng)交聯(lián)過(guò)程中功能性問(wèn)題的驗(yàn)證成本,提高系統(tǒng)驗(yàn)證效率。而數(shù)據(jù)激勵(lì)和數(shù)據(jù)監(jiān)控功能作為仿真驗(yàn)證環(huán)境的關(guān)鍵功能,為了能夠支持應(yīng)用軟件的功能驗(yàn)證,往往需要根據(jù)現(xiàn)有的接口控制文檔(ICD)開(kāi)發(fā)對(duì)應(yīng)的數(shù)據(jù)激勵(lì)器和數(shù)據(jù)監(jiān)控工具,為仿真驗(yàn)證環(huán)境的構(gòu)建增加了工作時(shí)間。此外,ICD的變更會(huì)導(dǎo)致數(shù)據(jù)激勵(lì)器和數(shù)據(jù)監(jiān)控工具的更改,也增加了仿真驗(yàn)證環(huán)境維護(hù)成本。
本文在充分分析現(xiàn)有ICD配置文件的基礎(chǔ)上,提出了一種能夠自動(dòng)生成仿真驗(yàn)證環(huán)境中數(shù)據(jù)激勵(lì)和數(shù)據(jù)監(jiān)控功能模塊的方法。
1 ICD應(yīng)用數(shù)據(jù)自動(dòng)轉(zhuǎn)換
ICD數(shù)據(jù)與應(yīng)用數(shù)據(jù)轉(zhuǎn)換功能主要實(shí)現(xiàn)底層ICD格式數(shù)據(jù)與應(yīng)用數(shù)據(jù)的相互轉(zhuǎn)換,自動(dòng)完成數(shù)據(jù)塊、信號(hào)量、數(shù)據(jù)位域的解析。數(shù)據(jù)激勵(lì)模塊中的發(fā)送數(shù)據(jù)轉(zhuǎn)換功能、數(shù)據(jù)監(jiān)控模塊中的接收數(shù)據(jù)轉(zhuǎn)換功能,都需要依賴于該功能庫(kù)。如圖1所示。
初始化過(guò)程中根據(jù)ICD配置信息,在內(nèi)存中創(chuàng)建對(duì)應(yīng)ICD配置的數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)結(jié)構(gòu)定義如圖1所示,ICD列表數(shù)據(jù)結(jié)構(gòu)中,每一條ICD數(shù)據(jù)塊包含標(biāo)識(shí)號(hào)、ICD的描述信息和待轉(zhuǎn)換類型的描述信息,每個(gè)數(shù)據(jù)塊描述包含若干條信號(hào)量描述,每條信號(hào)量描述包含若干位域描述。如圖2所示,參考機(jī)載網(wǎng)絡(luò)中ICD定義的消息塊、信號(hào)量、數(shù)據(jù)域的層級(jí)定義方式,在對(duì)消息塊的解析過(guò)程中,創(chuàng)建多級(jí)緩存,按照非結(jié)構(gòu)化數(shù)據(jù)格式配置文件中定義的數(shù)據(jù)條目順序,順次解析條目化的數(shù)據(jù)配置信息項(xiàng),解析過(guò)程中同步更新解析完成的數(shù)據(jù)格式緩存區(qū),并在應(yīng)用層內(nèi)存中創(chuàng)建與非結(jié)構(gòu)化數(shù)據(jù)格式配置對(duì)應(yīng)的結(jié)構(gòu)化數(shù)據(jù)格式。
ICD數(shù)據(jù)到應(yīng)用數(shù)據(jù)的轉(zhuǎn)換過(guò)程:接收到外部消息后,根據(jù)消息塊ID號(hào)查找結(jié)構(gòu)表,找出對(duì)應(yīng)的ICD描述信息,遍歷解析每一條信號(hào)量及對(duì)應(yīng)的每一個(gè)位域。根據(jù)位域類型信息(浮點(diǎn)型、整型、字符串型),調(diào)用類型對(duì)應(yīng)的數(shù)據(jù)處理流程完成數(shù)據(jù)解析,每一條解析后的數(shù)據(jù)都順次填入到待解析應(yīng)用層數(shù)據(jù)塊的內(nèi)存區(qū)域中,完成一條數(shù)據(jù)塊的解析后,將完成解析的內(nèi)存區(qū)域中對(duì)應(yīng)的數(shù)據(jù)拷貝給上層應(yīng)用程序。其中ICD定義結(jié)構(gòu)和上層應(yīng)用的數(shù)據(jù)結(jié)構(gòu)是——對(duì)應(yīng)的。
應(yīng)用數(shù)據(jù)到ICD數(shù)據(jù)的轉(zhuǎn)換過(guò)程:根據(jù)待轉(zhuǎn)換的數(shù)據(jù)塊ID,根據(jù)消息塊ID號(hào)查找結(jié)構(gòu)表,找出對(duì)應(yīng)的ICD描述信息,遍歷并解析應(yīng)用層數(shù)據(jù)結(jié)構(gòu)中每一條數(shù)據(jù)信息。根據(jù)應(yīng)用層ICD與網(wǎng)絡(luò)層ICD的配置對(duì)應(yīng)關(guān)系,按照位域類型(浮點(diǎn)型、整型、字符串型),調(diào)用類型對(duì)應(yīng)的數(shù)據(jù)處理流程完成逆向數(shù)據(jù)解析,解析后的數(shù)據(jù)順次填入待解析ICD數(shù)據(jù)塊的內(nèi)存區(qū)域中,完成一條數(shù)據(jù)塊的解析后,將完成解析的內(nèi)存區(qū)域中對(duì)應(yīng)的數(shù)據(jù)拷貝給底層通信驅(qū)動(dòng),并調(diào)用總線數(shù)據(jù)發(fā)送接口完成消息發(fā)送。
2 數(shù)據(jù)激勵(lì)自動(dòng)生成
數(shù)據(jù)激勵(lì)功能模塊作為仿真驗(yàn)證環(huán)境中的數(shù)據(jù)源,可以向應(yīng)用軟件發(fā)送激勵(lì)數(shù)據(jù),驅(qū)動(dòng)應(yīng)用軟件的測(cè)試和驗(yàn)證。
圖3描述了數(shù)據(jù)激勵(lì)功能實(shí)現(xiàn)的原理與流程。數(shù)據(jù)激勵(lì)功能模塊通過(guò)讀取ICD配置文件,自動(dòng)生成對(duì)應(yīng)的數(shù)據(jù)設(shè)置界面,包括對(duì)周期型數(shù)據(jù)和事件型數(shù)據(jù)的設(shè)置。對(duì)于周期型數(shù)據(jù),能夠設(shè)置發(fā)送周期和是否激活待發(fā)送數(shù)據(jù),開(kāi)始數(shù)據(jù)發(fā)送后,每條激活的周期型數(shù)據(jù)將按照設(shè)置的發(fā)送周期向目標(biāo)節(jié)點(diǎn)發(fā)送激勵(lì)數(shù)據(jù)。對(duì)于事件型數(shù)據(jù),通過(guò)對(duì)應(yīng)的發(fā)送按鈕來(lái)觸發(fā)發(fā)送時(shí)機(jī),每次發(fā)送一個(gè)對(duì)應(yīng)的數(shù)據(jù)包。數(shù)據(jù)內(nèi)容采用逐層設(shè)置的方式,分別對(duì)應(yīng)數(shù)據(jù)塊、信號(hào)量和數(shù)據(jù)位域。完成數(shù)據(jù)激勵(lì)設(shè)置后,能夠?qū)?dāng)前的設(shè)置以文件的形式保存為一個(gè)副本,并支持后續(xù)以加載的形式恢復(fù)當(dāng)前設(shè)置的數(shù)據(jù)內(nèi)容和參數(shù)信息。數(shù)據(jù)激勵(lì)節(jié)點(diǎn)內(nèi)部通過(guò)ICD數(shù)據(jù)與應(yīng)用數(shù)據(jù)的轉(zhuǎn)換庫(kù)將應(yīng)用數(shù)據(jù)轉(zhuǎn)換為ICD格式的數(shù)據(jù),并通過(guò)底層以太網(wǎng)以UDP數(shù)據(jù)包的形式將數(shù)據(jù)發(fā)送到目標(biāo)節(jié)點(diǎn)。封裝的數(shù)據(jù)包格式與仿真驗(yàn)證環(huán)境中其他節(jié)點(diǎn)間交互采用的通信協(xié)議保持一致。
3 數(shù)據(jù)監(jiān)控功能自動(dòng)生成
數(shù)據(jù)監(jiān)控功能模塊用于監(jiān)控虛擬化節(jié)點(diǎn)間的數(shù)據(jù)交互,模擬真實(shí)目標(biāo)機(jī)環(huán)境下的總線監(jiān)控器,包括選擇待監(jiān)控?cái)?shù)據(jù)塊,啟動(dòng)和停止監(jiān)控操作,歷史數(shù)據(jù)緩存、遍歷和查看。數(shù)據(jù)內(nèi)容采用逐層顯示的方式,分別對(duì)應(yīng)數(shù)據(jù)塊、信號(hào)量和數(shù)據(jù)位域。
圖4描述了數(shù)據(jù)監(jiān)控節(jié)點(diǎn)實(shí)現(xiàn)的原理與流程。底層通過(guò)以太網(wǎng)以UDP數(shù)據(jù)包的形式接收,數(shù)據(jù)包格式的解析邏輯與虛擬仿真節(jié)點(diǎn)采用的通信協(xié)議保持一致。數(shù)據(jù)監(jiān)控節(jié)點(diǎn)內(nèi)部通過(guò)ICD數(shù)據(jù)與應(yīng)用數(shù)據(jù)的轉(zhuǎn)換庫(kù),根據(jù)需要設(shè)置的待監(jiān)控?cái)?shù)據(jù),將需要監(jiān)控的ICD數(shù)據(jù)轉(zhuǎn)換為應(yīng)用數(shù)據(jù)格式,并存儲(chǔ)在對(duì)應(yīng)的數(shù)據(jù)緩存中。顯示界面部分根據(jù)當(dāng)前的顯示視圖驅(qū)動(dòng)監(jiān)控界面的顯示樣式,以及人工操作選擇的歷史數(shù)據(jù),在對(duì)應(yīng)數(shù)據(jù)塊的數(shù)據(jù)位域中顯示數(shù)據(jù)信息。
4 結(jié)束語(yǔ)
本文首先針對(duì)接口控制文檔(ICD)對(duì)應(yīng)的配置文件格式進(jìn)行分析,并結(jié)合機(jī)載軟件仿真驗(yàn)證環(huán)境中數(shù)據(jù)激勵(lì)和數(shù)據(jù)監(jiān)控功能模塊的需求,設(shè)計(jì)ICD數(shù)據(jù)和應(yīng)用數(shù)據(jù)間的雙向自動(dòng)轉(zhuǎn)換方法,創(chuàng)建ICD數(shù)據(jù)轉(zhuǎn)換功能庫(kù),并以ICD數(shù)據(jù)轉(zhuǎn)換功能庫(kù)為核心子功能,構(gòu)建了數(shù)據(jù)激勵(lì)功能模塊和數(shù)據(jù)監(jiān)控功能模塊的自動(dòng)化生成。通過(guò)自動(dòng)生成機(jī)載軟件仿真驗(yàn)證環(huán)境中數(shù)據(jù)激勵(lì)和數(shù)據(jù)監(jiān)控功能模塊,能夠有效降低仿真驗(yàn)證環(huán)境的開(kāi)發(fā)工作量和維護(hù)成本。
參考文獻(xiàn)
[1]李驍?shù)ぃ笥婪澹瑥埑?綜合模塊化航電系統(tǒng)軟件技術(shù)研究[J].航空計(jì)算技術(shù),2013(03).
[2]劉暢,劉斌,蔣崇武.嵌入式軟件仿真測(cè)試環(huán)境實(shí)時(shí)數(shù)據(jù)處理研究[J].計(jì)算機(jī)工程與設(shè)計(jì),2009(07).
[3]殷永峰,劉斌,王志.基于虛擬機(jī)的嵌入式軟件仿真測(cè)試環(huán)境[J].沈陽(yáng)工業(yè)大學(xué)學(xué)報(bào),2011(04).