武建亮,辛長平,楊 寧
(1.中國電子科技集團第五十四研究所,河北 石家莊 050081;2.河北遠東通信系統(tǒng)工程有限公司,河北 石家莊 050081;3. 中國人民解放軍63615部隊,新疆 庫爾勒 841001)
基于XML的代碼自動生成技術(shù)在軟件開發(fā)中的應用
武建亮1,辛長平2,楊 寧3
(1.中國電子科技集團第五十四研究所,河北 石家莊 050081;2.河北遠東通信系統(tǒng)工程有限公司,河北 石家莊 050081;3. 中國人民解放軍63615部隊,新疆 庫爾勒 841001)
針對航天測控工程監(jiān)控軟件的功能及開發(fā)維護過程中遇到的通用性差、接口依賴型強、代碼復用率低、開發(fā)效率低等問題,提出了基于XML的數(shù)據(jù)關(guān)系描述技術(shù)和代碼自動生成技術(shù)。能夠自動生成針對各分機的數(shù)據(jù)結(jié)構(gòu)類、數(shù)據(jù)處理類和分機界面。工程實踐證明,應用該技術(shù)可以實現(xiàn)軟件代碼的快速開發(fā),具有開發(fā)周期短、適應性強、可靠性高的特點。
航天測控;XML;代碼自動生成
目前航天測控工程中監(jiān)控軟件作為測控系統(tǒng)的監(jiān)控中心,擔負著整個系統(tǒng)設備的狀態(tài)監(jiān)視、參數(shù)設置、任務配置等功能,同時負責調(diào)度系統(tǒng)設備執(zhí)行各種自檢、測試、系統(tǒng)標校、目標捕獲以及測控任務的執(zhí)行等功能。監(jiān)控軟件通過網(wǎng)絡、串口等多種通信方式與系統(tǒng)內(nèi)各分機或分系統(tǒng)進行信息交互。隨著測控系統(tǒng)設備的功能越來越全,設備越來越多,監(jiān)控軟件的開發(fā)越來越復雜,需要花費大量人力、時間去進行接口的編碼、調(diào)試和測試,而且接口在發(fā)生變動時(經(jīng)常發(fā)生),維護和修改也會耗費大量時間。由不同人員編寫的代碼質(zhì)量不盡相同,導致目前航天測控工程監(jiān)控軟件存在開發(fā)效率低、可維護性差、通用性差、接口依賴型強、代碼復用率低、功能模塊耦合度高等問題。
為了解決上述問題,本著統(tǒng)一、高效、快速、可靠的設計思想,提出了在監(jiān)控軟件開發(fā)過程中使用基于XML[1-3]配置文件的代碼生成技術(shù),應用此技術(shù)能自動生成針對各分機的數(shù)據(jù)結(jié)構(gòu)類、數(shù)據(jù)處理類和分機界面,從而實現(xiàn)監(jiān)控軟件的快速開發(fā),同時提高軟件的可靠性,也使監(jiān)控軟件代碼的通用性、可維護性大大增強。
為了自動生成監(jiān)控軟件針對各分機的數(shù)據(jù)結(jié)構(gòu)類、數(shù)據(jù)處理類和分機管理界面,需要解決的主要問題包括:
① 采用可描述性語言對每個外部接口的數(shù)據(jù)幀格式、內(nèi)外部接口數(shù)據(jù)元素、內(nèi)外部接口數(shù)據(jù)元素格式轉(zhuǎn)換方式、參數(shù)執(zhí)行結(jié)果等關(guān)系進行描述;
② 利用數(shù)據(jù)和函數(shù)代碼生成技術(shù),將外部接口幀格式、外部接口命令幀、內(nèi)外數(shù)據(jù)元素轉(zhuǎn)換、參數(shù)執(zhí)行結(jié)果比對等關(guān)系轉(zhuǎn)換為數(shù)據(jù)類和函數(shù)體;
③ 利用窗體界面代碼生成技術(shù),生成設備狀態(tài)監(jiān)視窗體用于監(jiān)視各分機設備工作參數(shù)和設備狀態(tài);
④ 利用窗體界面代碼生成技術(shù),生成設備參數(shù)設置和控制窗體用于進行分機設備控制。
采用基于XML的配置文件來對每個外部接口的數(shù)據(jù)幀格式、內(nèi)外部接口數(shù)據(jù)元素、內(nèi)外部接口數(shù)據(jù)元素格式轉(zhuǎn)換方式、參數(shù)執(zhí)行結(jié)果等關(guān)系進行描述,同時利用配置文件中描述的分機接口信息生成對應的分機數(shù)據(jù)結(jié)構(gòu)類、分機設備處理類、分機人機界面中的參數(shù)設置界面,實現(xiàn)監(jiān)控軟件的高效快速開發(fā)。
XML是萬維網(wǎng)聯(lián)盟(World Wide Web Consortium,W3C)發(fā)布的一種標準,是標準通用標記語言(Standard Generalized Markup Language,SGML)的一個簡化子集。XML遵循嚴格語法規(guī)范,實現(xiàn)了數(shù)據(jù)存儲格式結(jié)構(gòu)化,具有擴展性好、數(shù)據(jù)共享與重用簡單和網(wǎng)絡傳輸方便等優(yōu)點,已成為一種通用的數(shù)據(jù)交換標準[4-8]。
XML配置文件描述內(nèi)容主要包括:
① 對分機外部接口數(shù)據(jù)元素及分機命令幀格式進行描述;
② 對分機處理類內(nèi)部數(shù)據(jù)元素進行定義,并定義內(nèi)部數(shù)據(jù)元素與外部接口數(shù)據(jù)元素之間的轉(zhuǎn)換關(guān)系;
③ 對分機下發(fā)參數(shù)和匯報參數(shù)比對關(guān)系進行描述。
接口的規(guī)范化描述如圖1所示。其中,圖1(a)為數(shù)據(jù)元素的規(guī)范化描述,將分機接口中每一個數(shù)據(jù)元素包含12個屬性,即序號(關(guān)鍵字,不能重復)、名稱、數(shù)據(jù)類型、量化單位、步進、最大值、最小值、默認值、單位、格式、描述、顯示選擇;圖1(b)為接口命令的規(guī)范描述,具體屬性包括命令名稱、命令標識、數(shù)據(jù)長度和命令內(nèi)容(與接口數(shù)據(jù)元素對應);圖1(c)為接口轉(zhuǎn)換的規(guī)范化描述,屬性包括:主數(shù)據(jù)元素序號、名稱、子數(shù)據(jù)元素個數(shù)和子數(shù)據(jù)元素[9-10,15,16]。表1為XML配置文件列表。
(a)數(shù)據(jù)元素表
(b)命令組織關(guān)系表
表1 配置文件列表
序號配置文件名稱用途11.xml發(fā)數(shù)據(jù)元素集合22.xml收數(shù)據(jù)元素集合33.xml內(nèi)部數(shù)據(jù)元素集合44.xml參數(shù)比對結(jié)果數(shù)據(jù)元素集合55.xml發(fā)命令與發(fā)數(shù)據(jù)元素對應表66.xml接命令與收數(shù)據(jù)元素對應表77.xml發(fā)枚舉數(shù)據(jù)元素枚舉項列舉88.xml收枚舉數(shù)據(jù)元素枚舉項列舉99.xml收發(fā)數(shù)據(jù)元素對應關(guān)系1010.xml收數(shù)據(jù)元素與內(nèi)部數(shù)據(jù)元素轉(zhuǎn)換關(guān)系
3.1 生成數(shù)據(jù)結(jié)構(gòu)類
利用配置文件中描述的分機接口信息生成對應的分機數(shù)據(jù)結(jié)構(gòu)類代碼。生成數(shù)據(jù)結(jié)構(gòu)類代碼的過程由SmcuMaker_Data類完成,SmcuMaker_Data類視圖如圖2所示。
圖2 SmcuMaker_Data類視圖
SmcuMaker_Data類實現(xiàn)的主要功能函數(shù)包括:
① Create_DataClass:根據(jù)生成數(shù)據(jù)結(jié)構(gòu)類文件;
② Create_Macro:根據(jù)生成分機地址、命令字的宏定義;
③ Create_CmdData:根據(jù)每個命令生成對應的結(jié)構(gòu),包含初始化函數(shù)。
3.2 生成分機設備處理類
利用配置文件中描述的分機接口信息生成分機設備處理類,每一個外部分機生成一個對應的設備處理類。生成分機設備處理類代碼的過程由SmcuMaker_Dev類完成,SmcuMaker_Dev類視圖如圖3所示。
圖3 SmcuMaker_Dev類視圖
3.3 生成人機界面
利用配置文件中描述的分機接口信息生成分機人機界面中工作量最大的參數(shù)設置界面,每一個外部分機生成一個對應的監(jiān)控界面。生成分機參數(shù)設置界面的過程由SmcuMaker_View類完成,SmcuMaker_View類視圖如圖4所示。
圖4 SmcuMaker_View類視圖
① Create_ViewClass:根據(jù)生成界面;
② Create_Attribute:界面類屬性定義,包括界面控件和命令數(shù)據(jù)對象,利用設置數(shù)據(jù)元素表和下發(fā)命令與數(shù)據(jù)元素對應關(guān)系表為每個單命令中的數(shù)據(jù)元素創(chuàng)建名稱控件(Label,用于顯示數(shù)據(jù)元素名稱)和輸入(顯示)控件,輸入(顯示)控件根據(jù)數(shù)據(jù)元素格式選擇,目前支持浮點輸入、十六進制輸入、文本輸入、枚舉輸入和十進制輸入;
③ Create_CmdData:根據(jù)為每個命令生成對應的結(jié)構(gòu),包含初始化函數(shù);
④ 分機包含多個單元時,使用頁簽進行區(qū)分,并且為每個單元創(chuàng)建設置和更改按鈕。
為驗證本文方法,統(tǒng)計了手動編碼與代碼自動生成兩種方式開發(fā)一個工程監(jiān)控軟件中標準模式基帶分機管理模塊的工作量、時間、代碼質(zhì)量并做統(tǒng)計比對。從表2可知編寫數(shù)據(jù)結(jié)構(gòu)類的效率稍高,代碼錯誤率稍低,但從表3和表4可知編寫分機管理類和人機界面時,使用XML自動生成方式比手動編碼節(jié)省大約90人時的工作量,總工作量節(jié)省大約85人時,代碼錯誤率大幅降低。
手動編碼方式在軟件開發(fā)的各個階段都可能存在錯誤,而且由于編碼人員水平不同導致代碼質(zhì)量也參差不齊,而使用代碼自動生成技術(shù)開發(fā)軟件時僅在前期開發(fā)和調(diào)試代碼生成器時投入較大工作量,一旦代碼生成器調(diào)試完成,軟件編碼工作可轉(zhuǎn)換為編寫配置文件。
通過實驗證明代碼自動生成技術(shù)可提高軟件的開發(fā)效率、可靠性和代碼的可維護性[11-14]。
表2 手動與代碼生成工程實驗對比-數(shù)據(jù)結(jié)構(gòu)類
開發(fā)方式行數(shù)工作量(人時)代碼(XML)錯誤率/%可維護性手動編寫數(shù)據(jù)結(jié)構(gòu)類4552452好編寫XML文件2265503好
表3 手動與代碼生成工程實驗對比-分機管理類
開發(fā)方式代碼行數(shù)工作量(人時)代碼(XML)錯誤率/%可維護性手動編碼55355618差代碼生成5561<13好
表4 手動與代碼生成工程實驗對比-人機界面類
開發(fā)方式代碼行數(shù)工作量(人時)代碼(XML)錯誤率/%可維護性手動編碼143753613差代碼生成18585<13好
提出通過XML配置文件的方式對監(jiān)控軟件與各外部分機之間的接口進行描述,并使用代碼生成技術(shù)生成相應的數(shù)據(jù)結(jié)構(gòu)類、設備分機處理類和人機界面。該方法較以往的接口開發(fā)流程在效率和正確率方面有顯著提高,可將傳統(tǒng)的代碼驗證變?yōu)樯梢?guī)則驗證,只要規(guī)則正確,生產(chǎn)的代碼就完全正確,因此該方法可適用于多個領域的監(jiān)控軟件開發(fā)。
[1] Meixner G,Seissler M,Breiner K.Model-Drieven Useware Engineering [J].Model-Driven Development of Advanced User Interface,2011,340:1-26.
[2] 王慶.XML約束在XML數(shù)據(jù)存儲、發(fā)布和轉(zhuǎn)換中的應用[D].上海:復旦大學,2004:15-17.
[3] 馬俊,王曉磊.XML技術(shù)在數(shù)據(jù)集成與共享中的應用[M].武漢:武漢華中科技大學出版社,2009.
[4] 張瓊,黃翩.基于XML的代碼自動生成工具[J].電子科技,2015,28(2):95-97.
[5] 趙軍. 基于模板的代碼生成器的研究與實現(xiàn)[J]. 長春師范學院學報,2011(12):28-34.
[6] 苗維杰,李天輝.基于XML代碼生成技術(shù)的應用研究[J]. 電子元器件應用,2009(10):75-78 .
[7] 楊皓,楊忠,吳愚.基于XML腳本的代碼生成技術(shù)及其應用[J].電腦知識與技術(shù),2009(07):1712-1713.
[8] 范秋生.XML的代碼生成器的設計與實現(xiàn)[J].長江大學報(自然科學版)理工卷,2008(01):211-212.
[9] 王明,劉立新,張核銘,等.基于.NET平臺的生產(chǎn)管理系統(tǒng)設計與實現(xiàn)[J].無線電工程,2008,38(5):10-12.
[10]孫婧,劉瑩,孟景濤,等.基于XML的軟件通用程序框架[J].無線電工程,2015,45(6):25-27.
[11]狄彩云,張英,狄衛(wèi)國,等.航天測控通信中指定源組播的技術(shù)研究[J].無線電工程,2014,44(9):5-7.
[12]孫偉杰,張曉欣,畢嘉鴻,等.C程序代碼結(jié)構(gòu)審查算法的研究與實現(xiàn)[J].無線電工程,2013,39(3):89-92.
[13]張晶,黃小峰.基于業(yè)務模型和界面模型的代碼生成工具[J].電腦與信息技術(shù),2016,24(5):2-15.
[14]孫偉杰,張曉欣,畢嘉鴻,等.C程序代碼結(jié)構(gòu)審查算法的研究與實現(xiàn)[J].無線電工程,2013,39(3):89-92.
[15]接卉,蘭雨晴,駱 沛.一種關(guān)鍵字驅(qū)動的自動化測試框架[J]. 計算機應用研究,2009,26(3):927-929.
[16]戴建國,郭 理,曹傳東.JUnit框架剖析[J]. 計算機與數(shù)字工程,2008(08):43-45.
Application of XML-based Code Auto-generation Technique in Aerospace TT&C Software Development
WU Jian-liang1,XIN Chang-ping2,YANG Ning3
(1. The 54th Research Institute of CETC,Shijiazhuang Hebei 050081,China;2. Hebei Far-East Communication System Engineering Co.,Ltd,Shijiazhuang Hebei 050081,China;3. Unit 63615,PLA,Kuerle Xinjiang 841001,China)
In order to solve the problems such as the low generality,high dependence on interface,low code sharing rate and low development efficiency during the software development of aerospace TT&C system,this paper proposes a solution based on the technique of data relation description based on XML and code auto-generation. Through this solution,the classes of data structure,data processing and interface of sub-system for each sub-system can be automatically generated. The engineering practice has proven that by using the proposed technique,fast development of software code can be implemented,and advantages such as short development circle,good adaptability and high reliability can be achieved.
aerospace TT&C;XML;code auto-generation
10. 3969/j.issn. 1003-3114. 2017.04.24
武建亮,辛長平,楊寧.基于XML的代碼自動生成技術(shù)在軟件開發(fā)中的應用[J].無線電通信技術(shù),2017,43(4):101-104.
[WU Jianliang,XIN Changping,YANG Ning. Application of XML-based Code Auto-generation Technique in Aerospace TT&C Software Development [J]. Radio Communications Technology,2017,43(4):101-104. ]
2017-03-20
國家高技術(shù)研究發(fā)展計劃(863計劃)項目(2013AA122904)
武建亮(1984—),男,工程師,主要研究方向:航天測控。辛長平(1983—),女,工程師,主要研究方向:信息系統(tǒng)開發(fā)。
TP311
A
1003-3114(2017)04-101-4