基于XML的代码自动生成技术在软件开发中的应用
2017-06-27武建亮辛长平
武建亮,辛长平,杨 宁
(1.中国电子科技集团第五十四研究所,河北 石家庄 050081;2.河北远东通信系统工程有限公司,河北 石家庄 050081;3. 中国人民解放军63615部队,新疆 库尔勒 841001)
基于XML的代码自动生成技术在软件开发中的应用
武建亮1,辛长平2,杨 宁3
(1.中国电子科技集团第五十四研究所,河北 石家庄 050081;2.河北远东通信系统工程有限公司,河北 石家庄 050081;3. 中国人民解放军63615部队,新疆 库尔勒 841001)
针对航天测控工程监控软件的功能及开发维护过程中遇到的通用性差、接口依赖型强、代码复用率低、开发效率低等问题,提出了基于XML的数据关系描述技术和代码自动生成技术。能够自动生成针对各分机的数据结构类、数据处理类和分机界面。工程实践证明,应用该技术可以实现软件代码的快速开发,具有开发周期短、适应性强、可靠性高的特点。
航天测控;XML;代码自动生成
0 引言
目前航天测控工程中监控软件作为测控系统的监控中心,担负着整个系统设备的状态监视、参数设置、任务配置等功能,同时负责调度系统设备执行各种自检、测试、系统标校、目标捕获以及测控任务的执行等功能。监控软件通过网络、串口等多种通信方式与系统内各分机或分系统进行信息交互。随着测控系统设备的功能越来越全,设备越来越多,监控软件的开发越来越复杂,需要花费大量人力、时间去进行接口的编码、调试和测试,而且接口在发生变动时(经常发生),维护和修改也会耗费大量时间。由不同人员编写的代码质量不尽相同,导致目前航天测控工程监控软件存在开发效率低、可维护性差、通用性差、接口依赖型强、代码复用率低、功能模块耦合度高等问题。
为了解决上述问题,本着统一、高效、快速、可靠的设计思想,提出了在监控软件开发过程中使用基于XML[1-3]配置文件的代码生成技术,应用此技术能自动生成针对各分机的数据结构类、数据处理类和分机界面,从而实现监控软件的快速开发,同时提高软件的可靠性,也使监控软件代码的通用性、可维护性大大增强。
1 设计思想
为了自动生成监控软件针对各分机的数据结构类、数据处理类和分机管理界面,需要解决的主要问题包括:
① 采用可描述性语言对每个外部接口的数据帧格式、内外部接口数据元素、内外部接口数据元素格式转换方式、参数执行结果等关系进行描述;
② 利用数据和函数代码生成技术,将外部接口帧格式、外部接口命令帧、内外数据元素转换、参数执行结果比对等关系转换为数据类和函数体;
③ 利用窗体界面代码生成技术,生成设备状态监视窗体用于监视各分机设备工作参数和设备状态;
④ 利用窗体界面代码生成技术,生成设备参数设置和控制窗体用于进行分机设备控制。
采用基于XML的配置文件来对每个外部接口的数据帧格式、内外部接口数据元素、内外部接口数据元素格式转换方式、参数执行结果等关系进行描述,同时利用配置文件中描述的分机接口信息生成对应的分机数据结构类、分机设备处理类、分机人机界面中的参数设置界面,实现监控软件的高效快速开发。
2 XML配置文件设计
XML是万维网联盟(World Wide Web Consortium,W3C)发布的一种标准,是标准通用标记语言(Standard Generalized Markup Language,SGML)的一个简化子集。XML遵循严格语法规范,实现了数据存储格式结构化,具有扩展性好、数据共享与重用简单和网络传输方便等优点,已成为一种通用的数据交换标准[4-8]。
XML配置文件描述内容主要包括:
① 对分机外部接口数据元素及分机命令帧格式进行描述;
② 对分机处理类内部数据元素进行定义,并定义内部数据元素与外部接口数据元素之间的转换关系;
③ 对分机下发参数和汇报参数比对关系进行描述。
接口的规范化描述如图1所示。其中,图1(a)为数据元素的规范化描述,将分机接口中每一个数据元素包含12个属性,即序号(关键字,不能重复)、名称、数据类型、量化单位、步进、最大值、最小值、默认值、单位、格式、描述、显示选择;图1(b)为接口命令的规范描述,具体属性包括命令名称、命令标识、数据长度和命令内容(与接口数据元素对应);图1(c)为接口转换的规范化描述,属性包括:主数据元素序号、名称、子数据元素个数和子数据元素[9-10,15,16]。表1为XML配置文件列表。
(a)数据元素表
(b)命令组织关系表
表1 配置文件列表
序号配置文件名称用途11.xml发数据元素集合22.xml收数据元素集合33.xml内部数据元素集合44.xml参数比对结果数据元素集合55.xml发命令与发数据元素对应表66.xml接命令与收数据元素对应表77.xml发枚举数据元素枚举项列举88.xml收枚举数据元素枚举项列举99.xml收发数据元素对应关系1010.xml收数据元素与内部数据元素转换关系
3 代码自动生成技术
3.1 生成数据结构类
利用配置文件中描述的分机接口信息生成对应的分机数据结构类代码。生成数据结构类代码的过程由SmcuMaker_Data类完成,SmcuMaker_Data类视图如图2所示。
图2 SmcuMaker_Data类视图
SmcuMaker_Data类实现的主要功能函数包括:
① Create_DataClass:根据生成数据结构类文件;
② Create_Macro:根据生成分机地址、命令字的宏定义;
③ Create_CmdData:根据每个命令生成对应的结构,包含初始化函数。
3.2 生成分机设备处理类
利用配置文件中描述的分机接口信息生成分机设备处理类,每一个外部分机生成一个对应的设备处理类。生成分机设备处理类代码的过程由SmcuMaker_Dev类完成,SmcuMaker_Dev类视图如图3所示。
图3 SmcuMaker_Dev类视图
3.3 生成人机界面
利用配置文件中描述的分机接口信息生成分机人机界面中工作量最大的参数设置界面,每一个外部分机生成一个对应的监控界面。生成分机参数设置界面的过程由SmcuMaker_View类完成,SmcuMaker_View类视图如图4所示。
图4 SmcuMaker_View类视图
① Create_ViewClass:根据生成界面;
② Create_Attribute:界面类属性定义,包括界面控件和命令数据对象,利用设置数据元素表和下发命令与数据元素对应关系表为每个单命令中的数据元素创建名称控件(Label,用于显示数据元素名称)和输入(显示)控件,输入(显示)控件根据数据元素格式选择,目前支持浮点输入、十六进制输入、文本输入、枚举输入和十进制输入;
③ Create_CmdData:根据为每个命令生成对应的结构,包含初始化函数;
④ 分机包含多个单元时,使用页签进行区分,并且为每个单元创建设置和更改按钮。
4 仿真实验对比
为验证本文方法,统计了手动编码与代码自动生成两种方式开发一个工程监控软件中标准模式基带分机管理模块的工作量、时间、代码质量并做统计比对。从表2可知编写数据结构类的效率稍高,代码错误率稍低,但从表3和表4可知编写分机管理类和人机界面时,使用XML自动生成方式比手动编码节省大约90人时的工作量,总工作量节省大约85人时,代码错误率大幅降低。
手动编码方式在软件开发的各个阶段都可能存在错误,而且由于编码人员水平不同导致代码质量也参差不齐,而使用代码自动生成技术开发软件时仅在前期开发和调试代码生成器时投入较大工作量,一旦代码生成器调试完成,软件编码工作可转换为编写配置文件。
通过实验证明代码自动生成技术可提高软件的开发效率、可靠性和代码的可维护性[11-14]。
表2 手动与代码生成工程实验对比-数据结构类
开发方式行数工作量(人时)代码(XML)错误率/%可维护性手动编写数据结构类4552452好编写XML文件2265503好
表3 手动与代码生成工程实验对比-分机管理类
开发方式代码行数工作量(人时)代码(XML)错误率/%可维护性手动编码55355618差代码生成5561<13好
表4 手动与代码生成工程实验对比-人机界面类
开发方式代码行数工作量(人时)代码(XML)错误率/%可维护性手动编码143753613差代码生成18585<13好
5 结束语
提出通过XML配置文件的方式对监控软件与各外部分机之间的接口进行描述,并使用代码生成技术生成相应的数据结构类、设备分机处理类和人机界面。该方法较以往的接口开发流程在效率和正确率方面有显著提高,可将传统的代码验证变为生成规则验证,只要规则正确,生产的代码就完全正确,因此该方法可适用于多个领域的监控软件开发。
[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数据存储、发布和转换中的应用[D].上海:复旦大学,2004:15-17.
[3] 马俊,王晓磊.XML技术在数据集成与共享中的应用[M].武汉:武汉华中科技大学出版社,2009.
[4] 张琼,黄翩.基于XML的代码自动生成工具[J].电子科技,2015,28(2):95-97.
[5] 赵军. 基于模板的代码生成器的研究与实现[J]. 长春师范学院学报,2011(12):28-34.
[6] 苗维杰,李天辉.基于XML代码生成技术的应用研究[J]. 电子元器件应用,2009(10):75-78 .
[7] 杨皓,杨忠,吴愚.基于XML脚本的代码生成技术及其应用[J].电脑知识与技术,2009(07):1712-1713.
[8] 范秋生.XML的代码生成器的设计与实现[J].长江大学报(自然科学版)理工卷,2008(01):211-212.
[9] 王明,刘立新,张核铭,等.基于.NET平台的生产管理系统设计与实现[J].无线电工程,2008,38(5):10-12.
[10]孙婧,刘莹,孟景涛,等.基于XML的软件通用程序框架[J].无线电工程,2015,45(6):25-27.
[11]狄彩云,张英,狄卫国,等.航天测控通信中指定源组播的技术研究[J].无线电工程,2014,44(9):5-7.
[12]孙伟杰,张晓欣,毕嘉鸿,等.C程序代码结构审查算法的研究与实现[J].无线电工程,2013,39(3):89-92.
[13]张晶,黄小峰.基于业务模型和界面模型的代码生成工具[J].电脑与信息技术,2016,24(5):2-15.
[14]孙伟杰,张晓欣,毕嘉鸿,等.C程序代码结构审查算法的研究与实现[J].无线电工程,2013,39(3):89-92.
[15]接卉,兰雨晴,骆 沛.一种关键字驱动的自动化测试框架[J]. 计算机应用研究,2009,26(3):927-929.
[16]戴建国,郭 理,曹传东.JUnit框架剖析[J]. 计算机与数字工程,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的代码自动生成技术在软件开发中的应用[J].无线电通信技术,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
国家高技术研究发展计划(863计划)项目(2013AA122904)
武建亮(1984—),男,工程师,主要研究方向:航天测控。辛长平(1983—),女,工程师,主要研究方向:信息系统开发。
TP311
A
1003-3114(2017)04-101-4