CN102929681A - 一种虚拟试验分布式对象模型框架代码自动生成方法 - Google Patents

一种虚拟试验分布式对象模型框架代码自动生成方法 Download PDF

Info

Publication number
CN102929681A
CN102929681A CN2012104290790A CN201210429079A CN102929681A CN 102929681 A CN102929681 A CN 102929681A CN 2012104290790 A CN2012104290790 A CN 2012104290790A CN 201210429079 A CN201210429079 A CN 201210429079A CN 102929681 A CN102929681 A CN 102929681A
Authority
CN
China
Prior art keywords
object model
virtual test
test distributed
language
distributed object
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2012104290790A
Other languages
English (en)
Other versions
CN102929681B (zh
Inventor
蔡斐华
廖建
彭健
王国庆
贾长伟
赵雯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Academy of Launch Vehicle Technology CALT
Original Assignee
China Academy of Launch Vehicle Technology CALT
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by China Academy of Launch Vehicle Technology CALT filed Critical China Academy of Launch Vehicle Technology CALT
Priority to CN201210429079.0A priority Critical patent/CN102929681B/zh
Publication of CN102929681A publication Critical patent/CN102929681A/zh
Application granted granted Critical
Publication of CN102929681B publication Critical patent/CN102929681B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

一种虚拟试验分布式对象模型框架代码自动生成方法,完成对象模型从描述语言文本到标准C++语法格式的框架代码的转变,步骤为:定义一种虚拟试验分布式对象模型描述语言;对使用所述语言描述的虚拟试验分布式对象模型的文本文件进行词法分析和语法分析;建立所述描述语言与IDL语言的映射关系,调用IDL编译器生成对应的虚拟试验分布式对象模型框架代码;构建分布式对象模型模板,通过标签替换生成虚拟试验分布式对象模型框架代码。本发明给出的虚拟试验分布式对象描述语言,实现了虚拟试验分布式对象的标准化描述,有助于试验资源的重用和组合;虚拟试验分布式对象模型框架代码自动生成方法减少了开发人员的工作量,提高了应用开发的可靠性和效率。

Description

一种虚拟试验分布式对象模型框架代码自动生成方法
技术领域
本发明涉及一种虚拟试验分布式对象模型框架代码自动生成方法,属于虚拟试验技术领域。
背景技术
当前,由于虚拟试验具有多模型、多节点、广分布、异构性等特点,在各试验节点间多采用分布式架构。如何高效、可靠的构建分布式对象模型,并实现模型的可重用和可组合成为虚拟试验领域的一大研究方向。
然而,现有的分布式虚拟试验体系架构,如HLA(high level architecture)、DIS(Distributed Interactive Simulation)等,只规定了试验仿真规则、对象模型模板和试验仿真成员接口规范,缺乏对对象模型框架代码自动生成技术的研究。因此分布式虚拟试验的对象模型需要应用开发人员手工编写代码,应用效率和可靠性不高,并且由于模型缺乏统一的描述,对试验资源的共享和重用带来困难。
发明内容
本发明的技术解决问题是:克服现有技术的不足,提出一种虚拟试验分布式对象模型框架代码自动生成方法,提高虚拟试验应用构建效率,促进对象模型资源的重用。
本发明的技术解决方案是:一种虚拟试验分布式对象模型框架代码自动生成方法,步骤如下:
(1)定义一种虚拟试验分布式对象模型的描述语言;
(2)对使用步骤(1)中所述语言描述的虚拟试验分布式对象模型而生成的文本文件进行词法分析;
(3)根据所述描述语言的元模型,利用语法分析器生成工具生成语法分析器;
(4)根据词法分析的结果,使用所述语法分析器对所述文本文件进行语法分析,并将得到的语法分析结果存放到中间表示数据结构中;
(5)建立所述描述语言与IDL语言的映射关系,将步骤(4)中间表示数据结构中存放的语法分析结果中的数据类型转化为IDL语言中的数据类型,并调用IDL编译器生成数据类型所对应的虚拟试验分布式对象模型框架代码,所述IDL语言为CORBA接口定义语言;
(6)构建分布式对象模型模板,之后利用所述文本文件中对虚拟试验分布式对象模型进行的描述替换所述分布式对象模型模板中相应的标签,从而直接转化为虚拟试验分布式对象模型框架代码,
所述模板描述了虚拟试验分布式对象模型之间的交互功能
所述语法分析器生成工具为YACC。
所述步骤(4)中的数据结构与所述元模型相对应。步骤(2)中所述进行词法分析具体为:
以字符为单位扫描所述文本文件,跳过空白符号,若扫描到的单词为所述描述语言的保留字,则返回该保留字所对应的属性编码,否则返回该单词的字符串,直到该文本文件扫描完毕,即完成了对该文本文件的词法分析;
本发明与现有技术相比的有益效果是:
(1)本发明给出的虚拟试验分布式对象描述语言元模型,描述了虚拟试验分布式对象的类和数据结构,以及它们之间的关系,实现了虚拟试验分布式对象的标准化描述,有助于虚拟试验分布式对象的重用和组合,实现试验资源的充分利用。
(2)本发明给出的虚拟试验分布式对象模型框架代码自动生成方法,支持对虚拟试验分布式对象描述语言语法进行正确性、一致性的检查,提高应用开发的可靠性。
(3)本发明给出的虚拟试验分布式对象模型框架代码自动生成方法,完成对象模型从描述语言文本到标准C++语法格式的对象模型框架的转变,减少应用开发人员的工作量,提高应用开发效率。
附图说明
图1为本发明流程图。
图2为虚拟试验分布式对象描述语言的元模型描述图
具体实施方式
下面结合附图对本发明的具体实施方式进行进一步的详细描述。
如图1所示,本发明提供了一种虚拟试验分布式对象模型框架代码自动生成方法,实施步骤如下:
(1)定义一种虚拟试验分布式对象模型的描述语言;
本发明采用如下定义方式:如图2所示为虚拟试验分布式对象描述语言的元模型描述图,描述了虚拟试验分布式对象的状态分布对象(Class)、消息对象(Message)、本地对象(Local Class)、向量(Vector)、接口(Interface)、枚举(Enumeration)、状态分布对象指针(Class Pointer)、基本类型(Fundamental Type),以及它们之间的继承、组合、聚合关系。
状态分布对象是复杂数据类型,描述虚拟试验的对象模型,具有状态发布和远程方法调用功能。状态分布对象包含成员及方法。其中,状态分布对象的成员具有状态发布的功能,可以是其他状态分布对象、基本类型、指向自身或者指向其他状态分布对象的指针、向量、枚举、本地对象;状态分布对象的方法是远程方法,可被虚拟试验中的其他分布式对象远程调用。状态分布对象可以实现接口。状态分布对象可以继承状态分布对象,支持多重继承,不支持多继承。
消息对象是复杂数据类型,描述虚拟试验的突发事件,具有消息发布的功能。消息对象包含成员及方法。其中,消息对象的成员具有状态发布的功能,可以是其他消息对象、基本类型、状态分布对象指针、向量、枚举、本地对象;消息对象的方法是本地方法,只能在本地调用。消息对象可以继承消息对象,支持多重继承,不支持多继承。
本地对象是复杂数据类型,描述虚拟试验对象模型中的结构体。本地对象包含成员及方法。其中,本地对象的成员不具有状态发布的功能,可以是其他本地对象、基本类型、状态分布对象指针、向量、枚举;本地对象的方法是本地方法。本地对象可以继承本地对象,支持多重继承,不支持多继承。本地对象可以作为方法的参数和/或返回值的类型。
向量是一个可以在运行时动态调整大小的线性表,其所有成员是同一种类型。向量只包含成员,成员可以是基本类型、状态分布对象指针、枚举、本地对象。向量可以作为方法的参数和/或返回值的类型。
接口主要作用是封装方法,并可以由状态分布对象实现。接口只包含方法,且至少包含一个方法。接口可以继承接口,支持多继承和多重继承。
枚举类型用于定义有名符号的集合,提高模型的可读性,本质上是一种取值范围受限的整数类型。枚举可以作为方法的参数和/或返回值的类型。
状态分布对象指针指向状态分布对象,便于描述状态分布对象的聚合关系。状态分布对象指针可以作为方法的参数和/或返回值的类型。
基础类型用于定义虚拟试验分布式对象的基本属性。基础类型包含short、unsigned short、long、unsigned long、long long、usigned long long、float、double、char、boolean、octet、string、void,其含义等同于C语言中的数据基础类型。基础类型可以作为方法的参数和/或返回值的类型。
本发明中的保留字包括PACKAGE、ENUM、identifier、EXCEPTION、LOCAL、CLASS、EXTENDS、IMPLEMENTS、PRIVATE、READONLY、ONEWAY、VECTOR、VOID、RAISES、IN、OUT、INOUT、MESSAGE、INTERFACE、SHORT、UNSIGNED、LONG、FLOAT、DOUBLE、CHAR、BOOLEAN、OCTET、STRING、NAME_DELIMITER。
(2)对使用步骤(1)中所述语言描述的虚拟试验分布式对象模型而生成的文本文件进行词法分析,即以字符为单位扫描所述文本文件,跳过空白符号,若扫描到的单词为所述描述语言的保留字,则返回该保留字所对应的属性编码,否则返回该单词的字符串,直到该文本文件扫描完毕,即完成了对该文本文件的词法分析。
(3)根据所述描述语言的元模型,利用语法分析器生成工具生成语法分析器;本发明中语法分析器生成工具采用YACC(Yet Another CompilerCompiler)。
(4)根据词法分析的结果,使用所述语法分析器对所述文本文件进行语法分析,并将得到的语法分析结果存放到中间表示数据结构中。
本发明采用的中间表示数据结构与所述元模型相对应。中间表示数据结构有一个主表(顶层列表),它记录了所述元模型中的状态分布对象、消息对象、本地对象。主表的每一项所要表示的数据结构是不同的,它们的共性部分有名字和类型。而相异部分用一个联合数据结构来表示。该联合数据结构可以表示的是记录状态分布对象的数据结构、记录消息对象的数据结构、记录本地对象定义的结构。以记录状态分布对象的数据结构为例,它包含4个方面的主要信息:该状态分布对象所实现的接口、该状态分布对象所继承的VIO(可以是0个或1个)、该状态分布对象所包含的所有方法成员的结构、该状态分布对象所包含的所有数据成员的结构。
(5)建立所述描述语言与I DL语言(接口定义语言,InterfaceDescription Language)的映射关系,所述IDL语言为CORBA(公共对象请求代理体系结构,Common Oject Request Broker Architecture)接口定义语言,提供了一套通用的数据类型,用来描述产生对象调用请求的客户对象和服务对象之间的接口的语言。将步骤(4)中间表示数据结构中存放的语法分析结果中的数据类型转化为IDL语言的数据类型,如本地方法的映射规则为:
规则1:虚拟试验分布式对象描述语言中localclass数据类型映射为IDL的valuetype类型。
规则2:localclass类型的属性成员映射到valuetype的属性成员。
规则3:localclass类型中的保留字private、readonly,映射为valuetype中的public保留字。
规则4:localclass类型中定义的方法不进行映射,在步骤6中通过模板生成。
将所述描述语言数据类型转化为IDL语言的数据类型后,利用已有的成熟技术CORBA实现虚拟试验分布式对象模型间的底层数据通讯,即调用IDL编译器生成数据类型所对应的虚拟试验分布式对象模型框架代码。
(6)构建虚拟试验分布式对象模型的分布式架构功能模板,所述模板描述了虚拟试验分布式对象模型之间的交互功能,为应用层提供发布/订阅、远程方法调用等基础服务,是一系列C++头文件及源文件的集合。本发明中,设计了如状态更新回调功能、对象销毁回调功能、远程方法调用功能等模板。之后利用所述文本文件中对虚拟试验分布式对象模型进行的描述替换所述分布式对象模型模板中相应的标签,从而直接转化为虚拟试验分布式对象模型框架代码。应用开发人员在开发虚拟试验分布式对象模型时,不需要关心虚拟试验分布式对象模型之间交互功能的具体实现机制,只需要在相关功能模板中填写虚拟试验分布式对象模型的逻辑代码即可。
本发明说明书中未作详细描述的内容属于本领域专业技术人员的公知技术。

Claims (4)

1.一种虚拟试验分布式对象模型框架代码自动生成方法,其特征在于步骤如下:
(1)定义一种虚拟试验分布式对象模型的描述语言;
(2)对使用步骤(1)中所述语言描述的虚拟试验分布式对象模型而生成的文本文件进行词法分析;
(3)根据所述描述语言的元模型,利用语法分析器生成工具生成语法分析器;
(4)根据词法分析的结果,使用所述语法分析器对所述文本文件进行语法分析,并将得到的语法分析结果存放到中间示数据结构中;
(5)建立所述描述语言与IDL语言的映射关系,将步骤(4)中间表示数据结构中存放的语法分析结果中的数据类型转化为IDL语言中的数据类型,并调用IDL编译器生成数据类型所对应的虚拟试验分布式对象模型框架代码,所述IDL语言为CORBA接口定义语言;
(6)构建分布式对象模型模板,之后利用所述文本文件中对虚拟试验分布式对象模型进行的描述替换所述分布式对象模型模板中相应的标签,从而直接转化为虚拟试验分布式对象模型框架代码,所述模板描述了虚拟试验分布式对象模型之间的交互功能。
2.根据权利要求1所述的一种虚拟试验分布式对象模型框架代码自动生成方法,其特征在于:所述语法分析器生成工具为YACC。
3.根据权利要求1所述的一种虚拟试验分布式对象模型框架代码自动生成方法,其特征在于:步骤(2)中所述进行词法分析具体为:
以字符为单位扫描所述文本文件,跳过空白符号,若扫描到的单词为所述描述语言的保留字,则返回该保留字所对应的属性编码,否则返回该单词的字符串,直到该文本文件扫描完毕,即完成了对该文本文件的词法分析。 
4.根据权利要求1所述的一种虚拟试验分布式对象模型框架代码自动生成方法,其特征在于:所述步骤(4)中的中间表示数据结构与所述元模型相对应。 
CN201210429079.0A 2012-10-31 2012-10-31 一种虚拟试验分布式对象模型框架代码自动生成方法 Active CN102929681B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210429079.0A CN102929681B (zh) 2012-10-31 2012-10-31 一种虚拟试验分布式对象模型框架代码自动生成方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210429079.0A CN102929681B (zh) 2012-10-31 2012-10-31 一种虚拟试验分布式对象模型框架代码自动生成方法

Publications (2)

Publication Number Publication Date
CN102929681A true CN102929681A (zh) 2013-02-13
CN102929681B CN102929681B (zh) 2016-06-01

Family

ID=47644491

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210429079.0A Active CN102929681B (zh) 2012-10-31 2012-10-31 一种虚拟试验分布式对象模型框架代码自动生成方法

Country Status (1)

Country Link
CN (1) CN102929681B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103605556A (zh) * 2013-10-23 2014-02-26 中国运载火箭技术研究院 虚拟试验对象一体化构建系统及方法
CN104714807A (zh) * 2015-04-02 2015-06-17 四川航天系统工程研究所 实现信息工程标准实物化的方法及系统
CN107273116A (zh) * 2017-05-22 2017-10-20 互联天下科技发展(深圳)有限公司 采用基于框架的代码生成工具生产代码的方法
CN107750356A (zh) * 2015-05-08 2018-03-02 西安姆贝拉有限公司 用于一组基于控制器的装置的自动软件开发的方法和设备
CN108595171A (zh) * 2018-04-27 2018-09-28 广州视源电子科技股份有限公司 对象的模型生成方法、装置、设备及存储介质
CN111596901A (zh) * 2020-05-19 2020-08-28 西安电子科技大学 基于模块定义图的无人机飞控系统的c++代码生成方法
CN113821164A (zh) * 2021-08-20 2021-12-21 济南浪潮数据技术有限公司 一种分布式存储系统的对象聚合方法和装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1992715A (zh) * 2005-12-31 2007-07-04 中兴通讯股份有限公司 基于asn.1定义的pdu编解码代码自动生成的实现方法
US20080082959A1 (en) * 2004-10-22 2008-04-03 New Technology/Enterprise Limited Data processing system and method
CN101216769A (zh) * 2008-01-14 2008-07-09 浙江大学 层次化系统描述语言SmartC到C代码的自动转换方法
CN101221424A (zh) * 2008-01-04 2008-07-16 华南理工大学 基于领域建模的数控系统代码自动生成方法
CN101841515A (zh) * 2009-03-19 2010-09-22 北京理工大学 可变目标的协议数据单元编解码代码自动生成的实现方法
CN102508669A (zh) * 2011-11-14 2012-06-20 浙江鸿程计算机系统有限公司 一种程序代码自动生成方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080082959A1 (en) * 2004-10-22 2008-04-03 New Technology/Enterprise Limited Data processing system and method
CN1992715A (zh) * 2005-12-31 2007-07-04 中兴通讯股份有限公司 基于asn.1定义的pdu编解码代码自动生成的实现方法
CN101221424A (zh) * 2008-01-04 2008-07-16 华南理工大学 基于领域建模的数控系统代码自动生成方法
CN101216769A (zh) * 2008-01-14 2008-07-09 浙江大学 层次化系统描述语言SmartC到C代码的自动转换方法
CN101841515A (zh) * 2009-03-19 2010-09-22 北京理工大学 可变目标的协议数据单元编解码代码自动生成的实现方法
CN102508669A (zh) * 2011-11-14 2012-06-20 浙江鸿程计算机系统有限公司 一种程序代码自动生成方法

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103605556A (zh) * 2013-10-23 2014-02-26 中国运载火箭技术研究院 虚拟试验对象一体化构建系统及方法
CN104714807B (zh) * 2015-04-02 2018-06-26 四川航天系统工程研究所 实现信息工程标准实物化的方法及系统
CN104714807A (zh) * 2015-04-02 2015-06-17 四川航天系统工程研究所 实现信息工程标准实物化的方法及系统
CN107750356B (zh) * 2015-05-08 2020-02-14 西安姆贝拉有限公司 用于一组基于控制器的装置的自动软件开发的方法和设备
CN107750356A (zh) * 2015-05-08 2018-03-02 西安姆贝拉有限公司 用于一组基于控制器的装置的自动软件开发的方法和设备
CN107273116A (zh) * 2017-05-22 2017-10-20 互联天下科技发展(深圳)有限公司 采用基于框架的代码生成工具生产代码的方法
CN107273116B (zh) * 2017-05-22 2020-09-25 互联天下科技发展(深圳)有限公司 采用基于框架的代码生成工具生产代码的方法
CN108595171A (zh) * 2018-04-27 2018-09-28 广州视源电子科技股份有限公司 对象的模型生成方法、装置、设备及存储介质
CN108595171B (zh) * 2018-04-27 2021-08-10 广州视源电子科技股份有限公司 对象的模型生成方法、装置、设备及存储介质
CN111596901A (zh) * 2020-05-19 2020-08-28 西安电子科技大学 基于模块定义图的无人机飞控系统的c++代码生成方法
CN111596901B (zh) * 2020-05-19 2022-12-02 西安电子科技大学 基于模块定义图的无人机飞行控制系统的c++代码生成方法
CN113821164A (zh) * 2021-08-20 2021-12-21 济南浪潮数据技术有限公司 一种分布式存储系统的对象聚合方法和装置
CN113821164B (zh) * 2021-08-20 2024-02-13 济南浪潮数据技术有限公司 一种分布式存储系统的对象聚合方法和装置

Also Published As

Publication number Publication date
CN102929681B (zh) 2016-06-01

Similar Documents

Publication Publication Date Title
CN102929681A (zh) 一种虚拟试验分布式对象模型框架代码自动生成方法
CN102594833B (zh) 一种通信协议适配方法和系统
CN102024204B (zh) 一种面向服务架构的可靠性设计分析服务体系的构建方法
CA2539474A1 (en) System and method for dynamic generation and customization of web service client applications for terminals
CN102945165A (zh) 虚拟试验支撑平台
Lee et al. Harmonizing IEC 61850 and CIM for connectivity of substation automation
CN109542450A (zh) 智能变电站过程层智能组件实现方法及装置
CN102253974B (zh) 一种地理模型网络服务的动态组合方法
CN103455643A (zh) 一种通用仿真组件的描述及建模方法
CN104881746A (zh) 管理信息系统中的平台即服务Paas平台架构
CN111144930A (zh) 一种用于地区电网用电客户结构化地址分析应用系统
CN102231132B (zh) 一种基于SystemC的AADL软构件模型仿真测试实例生成方法
Dai Design and implementation of ESB based on SOA in power system
CN104750468B (zh) 一种服务端拓扑数据转换方法和转换装置
CN103051728A (zh) 一种远程过程调用方法
Ascher et al. Towards model-driven CIM-based data exchange for DSOs
D'Ambrogio et al. A MDA-based approach for the development of DEVS/SOA simulations
CN101216769A (zh) 层次化系统描述语言SmartC到C代码的自动转换方法
CN104809664A (zh) 一种配电主站的信息集成方法
Rademacher et al. Design of a domain-specific language based on a technology-independent web service framework
Lu et al. Research on heterogeneous data integration for smart grid
CN104615815A (zh) 一种并行模型的消息传输方法及系统
CN116414436A (zh) 一种兼容的统一开发平台开发方法、装置、介质及设备
CN103176830A (zh) 基于类图和活动图相结合生成c++代码的方法
CN103023740A (zh) 一种信息交互总线系统及电力数据传输方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant