虛擬試驗(yàn)對象一體化構(gòu)建系統(tǒng)及方法
【專利摘要】虛擬試驗(yàn)對象一體化構(gòu)建系統(tǒng)及方法,包括:VDL文本編輯器、UML可視化描述模塊、虛擬試驗(yàn)對象開發(fā)模塊和虛擬試驗(yàn)對象測試模塊,各模塊以Eclipse核心框架為基礎(chǔ),以插件的形式開發(fā)。本發(fā)明使虛擬試驗(yàn)對象可復(fù)用,提高虛擬試驗(yàn)應(yīng)用系統(tǒng)搭建效率。
【專利說明】虛擬試驗(yàn)對象一體化構(gòu)建系統(tǒng)及方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種虛擬試驗(yàn)對象構(gòu)建系統(tǒng)及方法,屬于虛擬試驗(yàn)【技術(shù)領(lǐng)域】。
【背景技術(shù)】
[0002]隨著政治、經(jīng)濟(jì)等因素的制約和軍事發(fā)展的需要,在國防工業(yè)領(lǐng)域中,進(jìn)行虛擬試驗(yàn)至關(guān)重要。虛擬試驗(yàn)是利用計(jì)算機(jī)建模仿真技術(shù)結(jié)合測試技術(shù)、通信技術(shù)和計(jì)算機(jī)網(wǎng)絡(luò)技術(shù),為武器裝備的性能試驗(yàn)、技術(shù)指標(biāo)考核、綜合效能評估開發(fā)的一種試驗(yàn)新技術(shù)。虛擬試驗(yàn)具有多模型、多節(jié)點(diǎn)、廣分布、異構(gòu)性等特點(diǎn),在各試驗(yàn)節(jié)點(diǎn)間多采用分布式架構(gòu)。如何高效、可靠的構(gòu)建虛擬試驗(yàn)對象,并實(shí)現(xiàn)試驗(yàn)對象的可重用和可組合成為虛擬試驗(yàn)領(lǐng)域的一大研究方向。
[0003]美國國防部提出的分布式虛擬試驗(yàn)體系架構(gòu)HLA (High Level Architecture,高層體系結(jié)構(gòu))及TENA (Test and Training ENable Architecture)規(guī)定了虛擬試驗(yàn)對象的描述規(guī)范,但并未研究對象的開發(fā)、測試、組件生成于一體的構(gòu)建系統(tǒng)。因此,開發(fā)虛擬試驗(yàn)對象需要應(yīng)用人員用文本工具描述,手動(dòng)調(diào)用編譯器生成虛擬試驗(yàn)對象組件,編寫測試代碼對試驗(yàn)對象進(jìn)行測試,虛擬試驗(yàn)對象開發(fā)的過程不夠直觀,虛擬試驗(yàn)對象的可靠性得不到保證,給虛擬試驗(yàn)對象的重用帶來困難,虛擬試驗(yàn)應(yīng)用系統(tǒng)的開發(fā)效率不高。
[0004]目前,國內(nèi)外對虛擬試驗(yàn)對象技術(shù)展開了一些研究,如《計(jì)算機(jī)測量與控制》第20卷第11期發(fā)表的“分布式仿真環(huán)境下虛擬試驗(yàn)對象建模技術(shù)研究及應(yīng)用”研究了虛擬試驗(yàn)對象的形式化描述及具體元素的定義,并未研究試驗(yàn)對象構(gòu)建系統(tǒng)及方法。專利CN201210429079.0 “一種虛擬試驗(yàn)分布式對象模型框架代碼自動(dòng)生成方法”研究了分布式虛擬試驗(yàn)對象框架代碼的生成方法,缺乏虛擬試驗(yàn)對象描述、虛擬試驗(yàn)對象測試、虛擬試驗(yàn)對象組件生成等部分,并沒有形成一整套虛擬試驗(yàn)對象構(gòu)建系統(tǒng)及方法。
【發(fā)明內(nèi)容】
[0005]本發(fā)明技術(shù)解決問題:克服現(xiàn)有技術(shù)的不足,提出虛擬試驗(yàn)對象一體化構(gòu)建系統(tǒng)及方法,使虛擬試驗(yàn)對象可復(fù)用,提高虛擬試驗(yàn)應(yīng)用系統(tǒng)搭建效率。
[0006]本發(fā)明技術(shù)解決方案如下:虛擬試驗(yàn)對象一體化構(gòu)建系統(tǒng)主要分為VDL文本編輯器、UML可視化描述、虛擬試驗(yàn)對象開發(fā)、虛擬試驗(yàn)對象測試四個(gè)模塊。各模塊以Eclipse核心框架為基礎(chǔ),以插件的形式開發(fā)。VDL文本編輯器生成VDL文本文件,UML可視化描述模塊生成UML格式文件,VDL文本編輯器與UML可視化建模模塊集成到同一個(gè)多頁編輯器中,切換不同的編輯頁,完成VDL文件與UML文件之間實(shí)時(shí)轉(zhuǎn)換。虛擬試驗(yàn)系統(tǒng)建模人員通過VDL文本編輯器及UML可視化描述模塊根據(jù)體系結(jié)構(gòu)描述文件描述虛擬試驗(yàn)對象接口,形成VDL文件。虛擬試驗(yàn)對象開發(fā)模塊以VDL文件為輸入,生成虛擬試驗(yàn)對象框架代碼,虛擬試驗(yàn)對象開發(fā)人員在框架代碼基礎(chǔ)上編寫虛擬試驗(yàn)對象邏輯,生成二進(jìn)制形式的虛擬試驗(yàn)對象組件。虛擬試驗(yàn)對象測試模塊生成測試代碼,及日志代碼,同時(shí)可以查看虛擬試驗(yàn)對象的接口,便于虛擬試驗(yàn)對象開發(fā)人員編寫測試邏輯,對生成的虛擬試驗(yàn)對象組件進(jìn)行測試,保證虛擬試驗(yàn)對象的正確性及可靠性。
[0007]VDL文本編輯模器,負(fù)責(zé)對VDL文件進(jìn)行編輯,包括VDL文件的IO操作,語法高亮、實(shí)時(shí)語法檢測、自動(dòng)提示與補(bǔ)充和內(nèi)容格式化等功能模塊。VDL文件的IO操作功能通過Eclipse框架的編輯類實(shí)現(xiàn)。語法高亮模塊對VDL文件進(jìn)行詞法語法掃描,對單詞進(jìn)行分割,得到Token,根據(jù)Token對象的屬性按不同顯示不同顏色。實(shí)時(shí)語法檢測模塊在開發(fā)人員編輯VDL文件時(shí),進(jìn)行語法檢測,如果發(fā)現(xiàn)錯(cuò)誤,在錯(cuò)誤的位置進(jìn)行標(biāo)識(shí),顯示出警告或者錯(cuò)誤標(biāo)記。自動(dòng)提示與補(bǔ)充模塊,根據(jù)開發(fā)人員已輸入的部分信息,獲取最后鍵入的Token,在預(yù)存的關(guān)鍵字列表中進(jìn)行字符串匹配,彈出匹配的字符串列表框供用戶選擇,完成關(guān)鍵詞與導(dǎo)入文件的自動(dòng)補(bǔ)充。內(nèi)容格式化模塊,按照特定的規(guī)則對VDL文檔重新排版,使其可讀性更佳、顯示更美觀。
[0008]可視化描述模塊,支持UML圖像化方式描述,能以拖拽的方式完成虛擬試驗(yàn)對象的描述,生成UML類圖及VDL文件兩種格式,并能支持兩種格式的實(shí)時(shí)同步。該模塊通過集成MagicDraw插件實(shí)現(xiàn),分為圖元定義和UML建模兩個(gè)子模塊。圖元定義子模塊將VDL中定義的元素添加到UML圖元中,圖元的添加通過修改MagicDraw的配置文件實(shí)現(xiàn),將VDL中的元素與UML內(nèi)部類型(Meta Class)進(jìn)行對應(yīng),并添加新的元素。UML建模子模塊,通過將MagicDraw的繪圖區(qū)域集成至VDL編輯器的類圖編輯頁中實(shí)現(xiàn)。UML類圖與VDL文件的相互轉(zhuǎn)換通過MagicDraw的方法與VDL掃描器實(shí)現(xiàn)。
[0009]虛擬試驗(yàn)對象開發(fā)模塊,以VDL文件作為輸入,調(diào)用VDL編譯器對VDL進(jìn)行編譯,生成虛擬試驗(yàn)對象框架代碼,虛擬試驗(yàn)對象開發(fā)人員在框架代碼的基礎(chǔ)上添加虛擬試驗(yàn)對象的實(shí)現(xiàn)邏輯,最終生成二進(jìn)制虛擬試驗(yàn)對象組件,該模塊分為虛擬試驗(yàn)對象框架代碼生成子模塊,錯(cuò)誤定位子模塊和虛擬試驗(yàn)對象組件生成子模塊。虛擬試驗(yàn)對象框架代碼生成子模塊,負(fù)責(zé)調(diào)用VDL編譯器對VDL進(jìn)行編譯,生成虛擬試驗(yàn)對象框架代碼,采用Eclipse的CDT插件對生成的代碼進(jìn)行管理,并將輸出信息重定向至Java標(biāo)準(zhǔn)輸出流。錯(cuò)誤定位子模塊,負(fù)責(zé)處理編譯過程中出現(xiàn)的錯(cuò)誤,并精確定位到VDL文件的錯(cuò)誤處。虛擬試驗(yàn)對象組件生成子模塊,負(fù)責(zé)將編輯好的虛擬試驗(yàn)對象實(shí)現(xiàn)代碼,調(diào)用C++編譯器編譯成二進(jìn)制的虛擬試驗(yàn)對象組件。
[0010]虛擬試驗(yàn)對象測試模塊,主要完成對生成的虛擬試驗(yàn)對象組件進(jìn)行測試驗(yàn)證,分為測試代碼自動(dòng)生成、日志代碼生成、虛擬試驗(yàn)對象組件接口查看等子模塊,保證虛擬試驗(yàn)對象的正確性和可靠性。測試代碼自動(dòng)生成子模塊,自動(dòng)生成虛擬試驗(yàn)對象框架的測試代碼,測試虛擬試驗(yàn)對象功能是否正確有效。日志代碼生成子模塊在虛擬試驗(yàn)對象框架代碼中加入自動(dòng)生成的日志代碼,記錄虛擬試驗(yàn)對象的運(yùn)行狀態(tài)。測試完成的虛擬試驗(yàn)對象組件供虛擬試驗(yàn)應(yīng)用系統(tǒng)使用。
[0011 ] 虛擬試驗(yàn)應(yīng)用系統(tǒng)設(shè)計(jì)人員使用本系統(tǒng)的VDL文本編輯器或UML可視化建模模塊進(jìn)行虛擬試驗(yàn)對象描述,生成VDL文件,虛擬試驗(yàn)對象框架代碼生成模塊對VDL文本文件進(jìn)行編譯,生成虛擬試驗(yàn)對象框架代碼;虛擬試驗(yàn)對象開發(fā)人員在虛擬試驗(yàn)對象框架代碼的基礎(chǔ)上,編寫虛擬試驗(yàn)對象邏輯代碼,對虛擬試驗(yàn)對象進(jìn)行實(shí)現(xiàn),虛擬試驗(yàn)對象組件生成模塊對虛擬試驗(yàn)對象實(shí)現(xiàn)代碼進(jìn)行編譯,生成二進(jìn)制的虛擬試驗(yàn)對象組件,虛擬試驗(yàn)對象開發(fā)人員使用虛擬試驗(yàn)對象測試模塊對虛擬試驗(yàn)對象組件進(jìn)行測試,供虛擬試驗(yàn)應(yīng)用系統(tǒng)使用。[0012]本發(fā)明與現(xiàn)有技術(shù)相比的有益效果:
[0013](I)本發(fā)明形成了一套完整的虛擬試驗(yàn)構(gòu)建系統(tǒng)及方法,集虛擬試驗(yàn)對象描述、代碼自動(dòng)生成、虛擬試驗(yàn)對象測試、虛擬試驗(yàn)對象組件生成于一體,為虛擬試驗(yàn)對象提供一體化構(gòu)建環(huán)境,實(shí)現(xiàn)虛擬試驗(yàn)對象的可復(fù)用,提高虛擬試驗(yàn)應(yīng)用系統(tǒng)搭建效率。
[0014](2)本發(fā)明自動(dòng)生成虛擬試驗(yàn)對象的框架代碼及虛擬試驗(yàn)對象測試代碼,減少了人工代碼開發(fā)量,縮短虛擬試驗(yàn)應(yīng)用系統(tǒng)的開發(fā)周期。
[0015]( 3 )本發(fā)明的虛擬試驗(yàn)對象文本編輯器支持實(shí)時(shí)語法檢測,提前發(fā)現(xiàn)錯(cuò)誤,提高虛擬試驗(yàn)對象的可靠性。
[0016](4)本發(fā)明基于開源、開放式Eclipse平臺(tái)設(shè)計(jì),功能模塊都采用插件式開發(fā),系統(tǒng)具有良好的可擴(kuò)展性。
【專利附圖】
【附圖說明】
[0017]圖1為本發(fā)明的系統(tǒng)組成結(jié)構(gòu)框圖;
[0018]圖2為本發(fā)明的語法高亮實(shí)現(xiàn)流程圖;
[0019]圖3為本發(fā)明的自動(dòng)提示與補(bǔ)充實(shí)現(xiàn)流程圖;
[0020]圖4為本發(fā)明的錯(cuò)誤定位流程圖;
[0021]圖5為本發(fā)明的虛擬試驗(yàn)對象組件接口查看流程圖;
[0022]圖6為本發(fā)明的使用流程圖。
【具體實(shí)施方式】
[0023]在敘述本發(fā)明【具體實(shí)施方式】之前,對本發(fā)明用到的技術(shù)術(shù)語進(jìn)行說明:
[0024]VDL (Virtual test Definition Language,虛擬試驗(yàn)對象定義語言)定義了虛擬試驗(yàn)對象的元素及其之間的關(guān)系。MagicDraw是基于Java開發(fā)的UML建模和面向?qū)ο笙到y(tǒng)設(shè)計(jì)分析工具。JavaCC是基于Java開發(fā)的詞法語法生成器,利用JavaCC可以快速構(gòu)建新語言的編譯器。⑶T是一款eclipse插件,用于在eclipse中開發(fā)C/C++程序,用戶可以在⑶T中編譯、開發(fā)、調(diào)試、發(fā)布C/C++程序,在本發(fā)明中,選用⑶T插件管理C++工程。c1.exe,微軟提供的C/C++編譯器,據(jù)不同的編譯選項(xiàng)可將C++程序編譯成不同的文件,如可執(zhí)行文件、動(dòng)態(tài)鏈接庫DLL文件等。
[0025]如圖1所示,本系統(tǒng)主要分為VDL文本編輯器、UML可視化描述、虛擬試驗(yàn)對象開發(fā)、虛擬試驗(yàn)對象測試四個(gè)模塊。各模塊以Eclipse核心框架為基礎(chǔ),以插件的形式開發(fā)。VDL文本編輯器生成VDL文本文件,UML可視化建模生成UML格式文件,VDL文本編輯器與UML可視化建模模塊集成到同一個(gè)多頁編輯器中,切換不同的編輯頁,完成VDL文件與UML文件之間實(shí)時(shí)轉(zhuǎn)換。虛擬試驗(yàn)對象開發(fā)模塊以VDL文件為輸入,生成虛擬試驗(yàn)對象框架代碼,虛擬試驗(yàn)對象開發(fā)人員在框架代碼基礎(chǔ)上編寫虛擬試驗(yàn)對象邏輯,生成二進(jìn)制形式的虛擬試驗(yàn)對象組件。虛擬試驗(yàn)對象測試模塊生成測試代碼,及日志代碼,同時(shí)可以查看虛擬試驗(yàn)對象的接口,便于虛擬試驗(yàn)對象開發(fā)人員編寫測試邏輯,對生成的虛擬試驗(yàn)對象組件進(jìn)行測試,保證虛擬試驗(yàn)對象的正確性及可靠性。
[0026]VDL文本編輯模器,負(fù)責(zé)對VDL文件進(jìn)行編輯,包括VDL文件的IO操作,語法高亮、實(shí)時(shí)語法檢測、自動(dòng)提示與補(bǔ)充和內(nèi)容格式化等功能模塊。VDL文件的IO操作功能通過Eclipse 框架的 org.eclipse, xtext.u1.editor 包中的 XtextEditor 類實(shí)現(xiàn)。
[0027]語法高亮實(shí)現(xiàn)過程如圖2所示,當(dāng)打開VDL文檔時(shí),VDL編輯器會(huì)按照定義的VDL掃描器對VDL文本進(jìn)行詞法語法掃描,VDL掃描器應(yīng)用JavaCC實(shí)現(xiàn),然后進(jìn)行分割,處理得到各種不同內(nèi)容類型的互不重疊的文本塊,并存儲(chǔ)在IDocument類中。VDL掃描器中定義了多個(gè)掃描規(guī)則,掃描規(guī)則根據(jù)VDL語法規(guī)則生成。在顯示VDL文檔時(shí),編輯器調(diào)用掃描器的evaluate方法,返回IToken對象,然后根據(jù)該IToken對象的屬性按不同的顏色顯示其內(nèi)容,如關(guān)鍵字設(shè)置其顯示顏色為藍(lán)色,字符串顯示為綠色,標(biāo)識(shí)符顯示為黑色。
[0028]實(shí)時(shí)語法檢測模塊根據(jù)語法規(guī)則對VDL文檔進(jìn)行驗(yàn)證,顯示出警告和錯(cuò)誤小標(biāo)記來提示虛擬試驗(yàn)對象開發(fā)人員。在編輯VDL文件時(shí),VDL掃描器根據(jù)語言規(guī)則對VDL文件進(jìn)行分割,如果發(fā)現(xiàn)有語法錯(cuò)誤,調(diào)用錯(cuò)誤處理方法在錯(cuò)誤的位置進(jìn)行標(biāo)識(shí),顯示出警告或者錯(cuò)誤標(biāo)記。
[0029]自動(dòng)提示與補(bǔ)充模塊,根據(jù)已輸入的部分信息自動(dòng)完成接下來的輸入內(nèi)容,主要完成兩種內(nèi)容的提示:一種是關(guān)鍵字的快捷提示與自動(dòng)補(bǔ)充,一種是VDL導(dǎo)入文件的選擇。其實(shí)現(xiàn)過程如圖3所示,該模塊通過內(nèi)容輔助類監(jiān)聽VDL文本的變化,當(dāng)監(jiān)聽到VDL文本內(nèi)容發(fā)生變化時(shí),內(nèi)容輔助類首先獲取最后鍵入的Token,在預(yù)存的關(guān)鍵字列表中進(jìn)行字符串匹配,彈出匹配的字符串列表框供用戶選擇,用戶選擇需要的關(guān)鍵字,內(nèi)容輔助類補(bǔ)全該關(guān)鍵字,當(dāng)檢測到匹配的字符串為“import”時(shí),讀取VDL庫(目錄)文件列表,將庫中所有的VDL文件列出,用戶選擇要導(dǎo)入的VDL文件,補(bǔ)全import導(dǎo)入。
[0030]內(nèi)容格式化模塊,按照特定的規(guī)則對VDL文檔重新排版,使其可讀性更佳、顯示更美觀。該模塊定義了各種格式化策略,縮進(jìn)策略有制表符(Tab)策略和空格(Space)策略,默認(rèn)使用制表符策略,換行策略默認(rèn)使用緊湊格式的換行策略,即定義類時(shí),花括號總是緊跟類名,不做換行處理,這些策略將在系統(tǒng)選項(xiàng)中進(jìn)行設(shè)置。該模塊遍歷語法分析得到的語法樹,將每一個(gè)元素保存到字符串中,每一行的縮進(jìn)以及空格根據(jù)已有的格式化策略對文件進(jìn)行排列,最后將該字符串重新輸出到編輯器中,實(shí)現(xiàn)內(nèi)容的格式化。
[0031]可視化建模模塊,支持UML圖像化方式建模,能以拖拽的方式完成虛擬試驗(yàn)對象的描述,生成UML類圖及VDL文件兩種格式,并能支持兩種格式的實(shí)時(shí)同步。該模塊通過集成MagicDraw插件實(shí)現(xiàn),分為圖元定義和UML建模兩個(gè)子模塊。MagicDraw工具本身只支持常見的Java、C++、C#等語言,并不支持虛擬試驗(yàn)對象定義語言VDL。圖元定義子模塊將VDL中定義的class、local class、message、exception等兀素添加到UML圖兀中。新圖兀的添加通過修改MagicDraw的profile配置文件實(shí)現(xiàn),將VDL中的元素與UML內(nèi)部類型(MetaClass)進(jìn)行對應(yīng),并添加新的元素。UML建模子模塊,通過將MagicDraw的繪圖區(qū)域集成至VDL編輯器的類圖編輯頁中實(shí)現(xiàn),將MagicDraw的Containment窗口將作為一個(gè)視圖集成到Eclipse中,拖拽相應(yīng)的圖元圖標(biāo)至MagicDraw的編輯區(qū)域,實(shí)現(xiàn)類圖的繪制。切換不同的編輯頁,UML類圖修改時(shí),VDL文本編輯器中的文本文件實(shí)時(shí)改變;VDL文件變化時(shí),UML類圖隨之實(shí)時(shí)改變。UML類圖向VDL文件的轉(zhuǎn)換:首先調(diào)用MagicDraw中Project.getModel ()方法獲得UML類圖的模型結(jié)構(gòu),然后遍歷該樹型結(jié)構(gòu),最后根據(jù)節(jié)點(diǎn)對應(yīng)的圖元類型,輸出相應(yīng)的VDL代碼。例如對于UML類圖中的類Sample,則輸出“class Sample{};”。VDL文件向UML類圖的轉(zhuǎn)換:首先應(yīng)用掃描器對VDL代碼進(jìn)行詞法語法掃描,得到代碼中的所有元素,然后再使用MagicDraw中的OpenAPI畫圖組件進(jìn)行UML類圖的繪制。[0032]虛擬試驗(yàn)對象開發(fā)模塊,以VDL文件作為輸入,調(diào)用VDL編譯器對VDL進(jìn)行編譯,生成虛擬試驗(yàn)對象框架代碼,虛擬試驗(yàn)對象開發(fā)人員在框架代碼的基礎(chǔ)上添加虛擬試驗(yàn)對象的實(shí)現(xiàn)邏輯,最終生成二進(jìn)制虛擬試驗(yàn)對象組件,該模塊分為虛擬試驗(yàn)對象框架代碼生成子模塊,錯(cuò)誤定位子模塊和虛擬試驗(yàn)對象組件生成子模塊。
[0033]虛擬試驗(yàn)對象框架代碼生成子模塊,負(fù)責(zé)調(diào)研VDL編譯器對VDL進(jìn)行編譯,生成虛擬試驗(yàn)對象框架代碼,并將輸出信息重定向至Java標(biāo)準(zhǔn)輸出流,VDL編譯器的原理及虛擬試驗(yàn)對象框架代碼的生成方法詳見專利CN201210429079.0。本發(fā)明采用Eclipse的CDT插件對生成的虛擬試驗(yàn)對象框架C++代碼進(jìn)行管理,虛擬試驗(yàn)對象開發(fā)人員在虛擬試驗(yàn)對象框架代碼的基礎(chǔ)上加入虛擬試驗(yàn)對象的邏輯代碼。
[0034]錯(cuò)誤定位子模塊,負(fù)責(zé)處理編譯過程中出現(xiàn)的錯(cuò)誤,并精確定位到VDL文件的錯(cuò)誤處。編譯過程中產(chǎn)生的錯(cuò)誤信息包括文件名、行號、錯(cuò)誤類型、日期等。圖4顯示了錯(cuò)誤定位的流程:控制臺(tái)中顯示錯(cuò)誤信息;用戶選擇錯(cuò)誤信息,雙擊信息,觸發(fā)程序提取錯(cuò)誤信息,然后解析錯(cuò)誤信息,提取信息中的文件名、行號,再打開文件,定位到行,將光標(biāo)聚焦至編輯器中相應(yīng)的代碼位置就完成了錯(cuò)誤信息定位。
[0035]虛擬試驗(yàn)對象組件生成子模塊,負(fù)責(zé)將編輯好的虛擬試驗(yàn)對象實(shí)現(xiàn)代碼,調(diào)用C++編譯器編譯成二進(jìn)制的虛擬試驗(yàn)對象組件。本發(fā)明將生成的虛擬試驗(yàn)對象框架代碼組織成VC項(xiàng)目工程,并調(diào)用MSBuild工具進(jìn)行編譯。MSBuild是微軟基于Dot Net平臺(tái)的工程構(gòu)建工具,該工具可以根據(jù)Visual Studio生成的解決方案文件和項(xiàng)目文件(如C++工程,C#工程等)來調(diào)用相應(yīng)的編譯器完成編譯工作。MSBuild將進(jìn)一步調(diào)用微軟的編譯器cl.exe來完成C++工程的編譯,生成動(dòng)態(tài)鏈接庫DLL文件,生成的虛擬試驗(yàn)對象組件DLL文件封裝了虛擬試驗(yàn)對象的算法,具有很好的復(fù)用性,供虛擬試驗(yàn)應(yīng)用人員使用。
[0036]虛擬試驗(yàn)對象測試模塊,主要完成對生成的對象虛擬試驗(yàn)對象組件進(jìn)行測試驗(yàn)證,分為測試代碼自動(dòng)生成、日志代碼生成、虛擬試驗(yàn)對象組件接口查看等子模塊,保證虛擬試驗(yàn)對象的正確性和可靠性。
[0037]測試代碼自動(dòng)生成子模塊,主要針對對象虛擬試驗(yàn)對象框架生成測試代碼,測試虛擬試驗(yàn)對象業(yè)務(wù)處理流程,該子模塊生成一對測試程序,分別扮演訂閱者和發(fā)布者的角色,通過運(yùn)行兩個(gè)程序及程序之間的相互交互,來測試虛擬試驗(yàn)對象功能是否正確有效。生成的測試代碼主要對虛擬試驗(yàn)對象虛擬試驗(yàn)對象組件中的Class、Local Class、Message等對象中的方法和屬性進(jìn)行測試,測試主要分為三個(gè)方面:1)針對本地方法的測試,在當(dāng)前進(jìn)程內(nèi)測試即可,通過調(diào)用本地方法,然后檢查方法結(jié)果是否與預(yù)期相同即能達(dá)到測試的目的;2)遠(yuǎn)程方法的調(diào)用,兩個(gè)應(yīng)用協(xié)作判斷,一個(gè)測試進(jìn)程負(fù)責(zé)調(diào)用另一個(gè)測試進(jìn)程中的遠(yuǎn)程方法,然后再檢查遠(yuǎn)程方法的執(zhí)行結(jié)果是否與預(yù)期相同即能夠達(dá)到測試的目的;3)回調(diào)機(jī)制的測試,針對Class和Message,其中Class需要對發(fā)現(xiàn)回調(diào)、狀態(tài)改變回調(diào)、銷毀回調(diào)分別做測試,而Message只有一個(gè)回調(diào)。應(yīng)用兩個(gè)測試進(jìn)程配合,一個(gè)進(jìn)程中觸發(fā)另一個(gè)進(jìn)程的回調(diào)機(jī)制,然后檢查回調(diào)的執(zhí)行結(jié)果是否與預(yù)期相同即能夠達(dá)到測試的目的。
[0038]日志代碼生成子模塊在虛擬試驗(yàn)對象框架代碼中加入自動(dòng)生成的日志代碼,記錄虛擬試驗(yàn)對象的運(yùn)行狀態(tài)。該模塊在方法的進(jìn)入及離開點(diǎn)記錄下時(shí)間戳。這里的方法主要是指Class、Local Class、Message中定義的方法,以及Class和Message中的回調(diào)方法。本發(fā)明采用ACE中日志模塊來實(shí)現(xiàn)。不同的方法輸出不同的內(nèi)容,包括時(shí)間戳、虛擬試驗(yàn)對象的名稱,執(zhí)行到的方法的名稱或者虛擬試驗(yàn)對象的回調(diào)方法名稱或者類別。
[0039]虛擬試驗(yàn)對象組件接口查看子模塊,負(fù)責(zé)查看已生成的虛擬試驗(yàn)對象組件DLL文件。該模塊的實(shí)現(xiàn)流程如圖5所示,導(dǎo)入虛擬試驗(yàn)對象dll及對應(yīng)的頭文件,分析對象組件中的具體的試驗(yàn)對象,并用內(nèi)部數(shù)據(jù)結(jié)構(gòu)存儲(chǔ),然后顯示對象的名稱(即類名)、試驗(yàn)對象的方法及其可見性(即類的成員函數(shù)的函數(shù)原型及其可見性),試驗(yàn)對象的屬性及其可見性(即類的成員變量的名稱、類型及其可見性)。
[0040]如圖6所示,虛擬試驗(yàn)對象構(gòu)建流程如下:
[0041]( I)試驗(yàn)系統(tǒng)建模人員根據(jù)虛擬試驗(yàn)應(yīng)用系統(tǒng)體系結(jié)構(gòu)描述文件使用VDL文本編輯器或UML可視化描述模塊進(jìn)行虛擬試驗(yàn)對象描述,生成VDL文件,VDL文本描述與UML可視化描述的視圖可以相互切換;
[0042](2)虛擬試驗(yàn)對象開發(fā)模塊對VDL文本文件進(jìn)行編譯,生成虛擬試驗(yàn)對象框架代碼,如果發(fā)現(xiàn)錯(cuò)誤,錯(cuò)誤定位模塊將進(jìn)行定位,并提示虛擬試驗(yàn)對象開發(fā)人員;
[0043](3)虛擬試驗(yàn)對象開發(fā)人員在虛擬試驗(yàn)對象框架代碼的基礎(chǔ)上,編寫虛擬試驗(yàn)對象邏輯代碼,對虛擬試驗(yàn)對象進(jìn)行實(shí)現(xiàn);
[0044](4)虛擬試驗(yàn)對象組件生成模塊對模型實(shí)現(xiàn)代碼進(jìn)行編譯,生成二進(jìn)制的虛擬試驗(yàn)對象組件;
[0045](5)虛擬試驗(yàn)對象測試模塊自動(dòng)生成測試代碼,同時(shí)日志代碼生成模塊生成日志代碼記錄測試過程,并加載試驗(yàn)對象組件進(jìn)行測試;
[0046](6)如果測試發(fā)現(xiàn)問題,可以查看日志及通過虛擬試驗(yàn)對象組件查看模塊定位問題,轉(zhuǎn)至第(3)步對試驗(yàn)對象的實(shí)現(xiàn)進(jìn)行修改,如此迭代,直至虛擬試驗(yàn)對象開發(fā)正確,完成虛擬試驗(yàn)對象組件開發(fā),供虛擬試驗(yàn)應(yīng)用系統(tǒng)使用。
[0047]本發(fā)明說明書中未作詳細(xì)描述的內(nèi)容屬本領(lǐng)域技術(shù)人員的公知技術(shù)。
【權(quán)利要求】
1.虛擬試驗(yàn)對象一體化構(gòu)建系統(tǒng),其特征在于包括:VDL文本編輯器、UML可視化描述模塊、虛擬試驗(yàn)對象開發(fā)模塊和虛擬試驗(yàn)對象測試模塊,各模塊以Eclipse核心框架為基礎(chǔ),以插件的形式開發(fā);其中: VDL文本編輯器,負(fù)責(zé)對VDL文件進(jìn)行編輯生成VDL文本文件;UML可視化描述模塊生成UML格式文件,支持UML圖像化方式描述,能以拖拽的方式完成虛擬試驗(yàn)對象的描述,生成UML類圖及VDL文件兩種格式,并能支持兩種格式的實(shí)時(shí)同步;VDL文本編輯器與UML可視化建模模塊集成到同一個(gè)多頁編輯器中,切換不同的編輯頁,完成VDL文件與UML文件之間實(shí)時(shí)轉(zhuǎn)換;虛擬試驗(yàn)系統(tǒng)建模人員通過VDL文本編輯器及UML可視化描述模塊根據(jù)體系結(jié)構(gòu)描述文件描述虛擬試驗(yàn)對象接口,形成VDL文件送至虛擬試驗(yàn)對象開發(fā)模塊; 虛擬試驗(yàn)對象開發(fā)模塊,以VDL文件為輸入,調(diào)用VDL文本編譯器對VDL進(jìn)行編譯,生成虛擬試驗(yàn)對象框架代碼,虛擬試驗(yàn)對象開發(fā)人員在框架代碼的基礎(chǔ)上添加虛擬試驗(yàn)對象的實(shí)現(xiàn)邏輯,最終生成二進(jìn)制虛擬試驗(yàn)對象組件,送至虛擬試驗(yàn)對象測試模塊; 虛擬試驗(yàn)對象測試模塊,完成對生成的虛擬試驗(yàn)對象組件進(jìn)行測試驗(yàn)證,生成測試代碼,及日志代碼,同時(shí)查看虛擬試驗(yàn)對象的接口,便于虛擬試驗(yàn)對象開發(fā)人員編寫測試邏輯,對虛擬試驗(yàn)對象測試模塊生成的虛擬試驗(yàn)對象組件進(jìn)行測試,保證虛擬試驗(yàn)對象的正確性及可靠性。
2.根據(jù)權(quán)利要求1所述的虛擬試驗(yàn)對象一體化構(gòu)建系統(tǒng),其特征在于:所述VDL文本編輯器包括VDL文件的IO操作模塊,語法高亮模塊、實(shí)時(shí)語法檢測模塊、自動(dòng)提示與補(bǔ)充模塊、內(nèi)容格式化模塊;VDL文件的IO操作模塊通過Eclipse框架的編輯類實(shí)現(xiàn);語法高亮模塊對VDL文件進(jìn)行詞法語法掃描,對單詞進(jìn)行分割,得到Token,根據(jù)Token對象的屬性按不同顯示不同顏色;實(shí)時(shí)語法檢測模塊在開發(fā)人員編輯VDL文件時(shí),進(jìn)行語法檢測,如果發(fā)現(xiàn)錯(cuò)誤,在錯(cuò)誤的位置進(jìn)行標(biāo)識(shí),顯示出警告或者錯(cuò)誤標(biāo)記;自動(dòng)提示與補(bǔ)充模塊,根據(jù)開發(fā)人員已輸入的部分信息,獲取最后鍵入的Token,在預(yù)存的關(guān)鍵字列表中進(jìn)行字符串匹配,彈出匹配的字符串列 表框供用戶選擇,完成關(guān)鍵詞與導(dǎo)入文件的自動(dòng)補(bǔ)充;內(nèi)容格式化模塊,按照特定的規(guī)則對VDL文檔重新排版,使其可讀性更佳、顯示更美觀。
3.根據(jù)權(quán)利要求1所述的虛擬試驗(yàn)對象一體化構(gòu)建系統(tǒng),其特征在于:所述UML可視化描述模塊通過集成MagicDraw插件實(shí)現(xiàn),分為圖元定義和UML建模兩個(gè)子模塊;圖元定義子模塊將VDL中定義的元素添加到UML圖元中,圖元的添加通過修改MagicDraw的配置文件實(shí)現(xiàn),將VDL中的元素與UML內(nèi)部類型(Meta Class)進(jìn)行對應(yīng),并添加新的元素;UML建模子模塊,通過將MagicDraw的繪圖區(qū)域集成至VDL編輯器的類圖編輯頁中實(shí)現(xiàn);UML類圖與VDL文件的相互轉(zhuǎn)換通過MagicDraw的方法與VDL掃描器實(shí)現(xiàn)。
4.根據(jù)權(quán)利要求1所述的虛擬試驗(yàn)對象一體化構(gòu)建系統(tǒng),其特征在于:所述虛擬試驗(yàn)對象開發(fā)模塊分為虛擬試驗(yàn)對象框架代碼生成子模塊,錯(cuò)誤定位子模塊和虛擬試驗(yàn)對象組件生成子模塊。虛擬試驗(yàn)對象框架代碼生成子模塊,負(fù)責(zé)調(diào)用VDL編譯器對VDL進(jìn)行編譯,生成虛擬試驗(yàn)對象框架代碼,采用Eclipse的CDT插件對生成的代碼進(jìn)行管理,并將輸出信息重定向至Java標(biāo)準(zhǔn)輸出流;錯(cuò)誤定位子模塊,負(fù)責(zé)處理編譯過程中出現(xiàn)的錯(cuò)誤,并精確定位到VDL文件的錯(cuò)誤處;虛擬試驗(yàn)對象組件生成子模塊,負(fù)責(zé)將編輯好的虛擬試驗(yàn)對象實(shí)現(xiàn)代碼,調(diào)用C++編譯器編譯成二進(jìn)制的虛擬試驗(yàn)對象組件。
5.根據(jù)權(quán)利要求1所述的虛擬試驗(yàn)對象一體化構(gòu)建系統(tǒng),其特征在于:所述虛擬試驗(yàn)對象測試模塊分為測試代碼自動(dòng)生成子模塊、日志代碼生成子模塊、虛擬試驗(yàn)對象組件接口查看子模塊;測試代碼自動(dòng)生成子模塊自動(dòng)生成虛擬試驗(yàn)對象框架的測試代碼,測試虛擬試驗(yàn)對象功能是否正確有效;日志代碼生成子模塊在虛擬試驗(yàn)對象框架代碼中加入自動(dòng)生成的日志代碼,記錄虛擬試驗(yàn)對象的運(yùn)行狀態(tài),測試完成的虛擬試驗(yàn)對象組件供虛擬試驗(yàn)應(yīng)用系統(tǒng)使用;虛擬試驗(yàn)對象組件接口查看子模塊,保證虛擬試驗(yàn)對象的正確性和可靠性。
6.一種虛擬試驗(yàn)對象一體化構(gòu)建方法,其特征在于實(shí)現(xiàn)步驟如下: (1)試驗(yàn)系統(tǒng)建模人員根據(jù)虛擬試驗(yàn)應(yīng)用系統(tǒng)體系結(jié)構(gòu)描述文件使用VDL文本編輯器或UML可視化描述模塊進(jìn)行虛擬試驗(yàn)對象描述,生成VDL文件,VDL文本描述與UML可視化描述的視圖可以相互切換; (2)虛擬試驗(yàn)對象開發(fā)模塊對VDL文本文件進(jìn)行編譯,生成虛擬試驗(yàn)對象框架代碼,如果發(fā)現(xiàn)錯(cuò)誤,錯(cuò)誤定位模塊將進(jìn)行定位,并提示虛擬試驗(yàn)對象開發(fā)人員; (3)虛擬試驗(yàn)對象開發(fā)人員在虛擬試驗(yàn)對象框架代碼的基礎(chǔ)上,編寫虛擬試驗(yàn)對象邏輯代碼,對虛擬試驗(yàn)對象進(jìn)行實(shí)現(xiàn); (4)虛擬試驗(yàn)對象組件生成模塊對模型實(shí)現(xiàn)代碼進(jìn)行編譯,生成二進(jìn)制的虛擬試驗(yàn)對象組件; (5)虛擬試驗(yàn)對象測試模塊自動(dòng)生成測試代碼,同時(shí)日志代碼生成模塊生成日志代碼記錄測試過程,并加載試驗(yàn)對象組件進(jìn)行測試; (6)如果測試發(fā)現(xiàn)問題,可以查看日志及通過虛擬試驗(yàn)對象組件查看模塊定位問題,轉(zhuǎn)至第(3)步對試驗(yàn)對象的實(shí)現(xiàn)進(jìn)行修改,如此迭代,直至虛擬試驗(yàn)對象開發(fā)正確,完成虛擬試驗(yàn)對象組件開發(fā),供虛擬試驗(yàn)應(yīng)用系統(tǒng)使用。
【文檔編號】G06F9/44GK103605556SQ201310503663
【公開日】2014年2月26日 申請日期:2013年10月23日 優(yōu)先權(quán)日:2013年10月23日
【發(fā)明者】廖建, 賈長偉, 蔡斐華, 李鑫, 鄭小鵬, 郭晶, 許昶, 趙雯 申請人:中國運(yùn)載火箭技術(shù)研究院