CN102929681B - 一种虚拟试验分布式对象模型框架代码自动生成方法 - Google Patents
一种虚拟试验分布式对象模型框架代码自动生成方法 Download PDFInfo
- Publication number
- CN102929681B CN102929681B CN201210429079.0A CN201210429079A CN102929681B CN 102929681 B CN102929681 B CN 102929681B CN 201210429079 A CN201210429079 A CN 201210429079A CN 102929681 B CN102929681 B CN 102929681B
- Authority
- CN
- China
- Prior art keywords
- virtual test
- object model
- language
- distributed object
- test distributed
- 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.)
- Active
Links
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
一种虚拟试验分布式对象模型框架代码自动生成方法,完成对象模型从描述语言文本到标准C++语法格式的框架代码的转变,步骤为:定义一种虚拟试验分布式对象模型描述语言;对使用所述语言描述的虚拟试验分布式对象模型的文本文件进行词法分析和语法分析;建立所述描述语言与IDL语言的映射关系,调用IDL编译器生成对应的虚拟试验分布式对象模型框架代码;构建分布式对象模型模板,通过标签替换生成虚拟试验分布式对象模型框架代码。本发明给出的虚拟试验分布式对象描述语言,实现了虚拟试验分布式对象的标准化描述,有助于试验资源的重用和组合;虚拟试验分布式对象模型框架代码自动生成方法减少了开发人员的工作量,提高了应用开发的可靠性和效率。
Description
技术领域
本发明涉及一种虚拟试验分布式对象模型框架代码自动生成方法,属于虚拟试验技术领域。
背景技术
当前,由于虚拟试验具有多模型、多节点、广分布、异构性等特点,在各试验节点间多采用分布式架构。如何高效、可靠的构建分布式对象模型,并实现模型的可重用和可组合成为虚拟试验领域的一大研究方向。
然而,现有的分布式虚拟试验体系架构,如HLA(highlevelarchitecture)、DIS(DistributedInteractiveSimulation)等,只规定了试验仿真规则、对象模型模板和试验仿真成员接口规范,缺乏对对象模型框架代码自动生成技术的研究。因此分布式虚拟试验的对象模型需要应用开发人员手工编写代码,应用效率和可靠性不高,并且由于模型缺乏统一的描述,对试验资源的共享和重用带来困难。
发明内容
本发明的技术解决问题是:克服现有技术的不足,提出一种虚拟试验分布式对象模型框架代码自动生成方法,提高虚拟试验应用构建效率,促进对象模型资源的重用。
本发明的技术解决方案是:一种虚拟试验分布式对象模型框架代码自动生成方法,步骤如下:
(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)、本地对象(LocalClass)、向量(Vector)、接口(Interface)、枚举(Enumeration)、状态分布对象指针(ClassPointer)、基本类型(FundamentalType),以及它们之间的继承、组合、聚合关系。
状态分布对象是复杂数据类型,描述虚拟试验的对象模型,具有状态发布和远程方法调用功能。状态分布对象包含成员及方法。其中,状态分布对象的成员具有状态发布的功能,可以是其他状态分布对象、基本类型、指向自身或者指向其他状态分布对象的指针、向量、枚举、本地对象;状态分布对象的方法是远程方法,可被虚拟试验中的其他分布式对象远程调用。状态分布对象可以实现接口。状态分布对象可以继承状态分布对象,支持多重继承,不支持多继承。
消息对象是复杂数据类型,描述虚拟试验的突发事件,具有消息发布的功能。消息对象包含成员及方法。其中,消息对象的成员具有状态发布的功能,可以是其他消息对象、基本类型、状态分布对象指针、向量、枚举、本地对象;消息对象的方法是本地方法,只能在本地调用。消息对象可以继承消息对象,支持多重继承,不支持多继承。
本地对象是复杂数据类型,描述虚拟试验对象模型中的结构体。本地对象包含成员及方法。其中,本地对象的成员不具有状态发布的功能,可以是其他本地对象、基本类型、状态分布对象指针、向量、枚举;本地对象的方法是本地方法。本地对象可以继承本地对象,支持多重继承,不支持多继承。本地对象可以作为方法的参数和/或返回值的类型。
向量是一个可以在运行时动态调整大小的线性表,其所有成员是同一种类型。向量只包含成员,成员可以是基本类型、状态分布对象指针、枚举、本地对象。向量可以作为方法的参数和/或返回值的类型。
接口主要作用是封装方法,并可以由状态分布对象实现。接口只包含方法,且至少包含一个方法。接口可以继承接口,支持多继承和多重继承。
枚举类型用于定义有名符号的集合,提高模型的可读性,本质上是一种取值范围受限的整数类型。枚举可以作为方法的参数和/或返回值的类型。
状态分布对象指针指向状态分布对象,便于描述状态分布对象的聚合关系。状态分布对象指针可以作为方法的参数和/或返回值的类型。
基础类型用于定义虚拟试验分布式对象的基本属性。基础类型包含short、unsignedshort、long、unsignedlong、longlong、usignedlonglong、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(YetAnotherCompilerCompiler)。
(4)根据词法分析的结果,使用所述语法分析器对所述文本文件进行语法分析,并将得到的语法分析结果存放到中间表示数据结构中。
本发明采用的中间表示数据结构与所述元模型相对应。中间表示数据结构有一个主表(顶层列表),它记录了所述元模型中的状态分布对象、消息对象、本地对象。主表的每一项所要表示的数据结构是不同的,它们的共性部分有名字和类型。而相异部分用一个联合数据结构来表示。该联合数据结构可以表示的是记录状态分布对象的数据结构、记录消息对象的数据结构、记录本地对象定义的结构。以记录状态分布对象的数据结构为例,它包含4个方面的主要信息:该状态分布对象所实现的接口、该状态分布对象所继承的VIO(可以是0个或1个)、该状态分布对象所包含的所有方法成员的结构、该状态分布对象所包含的所有数据成员的结构。
(5)建立所述描述语言与IDL语言(接口定义语言,InterfaceDescriptionLanguage)的映射关系,所述IDL语言为CORBA(公共对象请求代理体系结构,CommonOjectRequestBrokerArchitecture)接口定义语言,提供了一套通用的数据类型,用来描述产生对象调用请求的客户对象和服务对象之间的接口的语言。将步骤(4)中间表示数据结构中存放的语法分析结果中的数据类型转化为IDL语言的数据类型,如本地方法的映射规则为:
规则1:虚拟试验分布式对象描述语言中localclass数据类型映射为IDL的valuetype类型。
规则2:localclass类型的属性成员映射到valuetype的属性成员。
规则3:localclass类型中的保留字private、readonly,映射为valuetype中的public保留字。
规则4:localclass类型中定义的方法不进行映射,在步骤6中通过模板生成。
将所述描述语言数据类型转化为IDL语言的数据类型后,利用已有的成熟技术CORBA实现虚拟试验分布式对象模型间的底层数据通讯,即调用IDL编译器生成数据类型所对应的虚拟试验分布式对象模型框架代码。
(6)构建虚拟试验分布式对象模型的分布式架构功能模板,所述模板描述了虚拟试验分布式对象模型之间的交互功能,为应用层提供发布/订阅、远程方法调用等基础服务,是一系列C++头文件及源文件的集合。本发明中,设计了如状态更新回调功能、对象销毁回调功能、远程方法调用功能等模板。之后利用所述文本文件中对虚拟试验分布式对象模型进行的描述替换所述分布式对象模型模板中相应的标签,从而直接转化为虚拟试验分布式对象模型框架代码。应用开发人员在开发虚拟试验分布式对象模型时,不需要关心虚拟试验分布式对象模型之间交互功能的具体实现机制,只需要在相关功能模板中填写虚拟试验分布式对象模型的逻辑代码即可。
本发明说明书中未作详细描述的内容属于本领域专业技术人员的公知技术。
Claims (1)
1.一种虚拟试验分布式对象模型框架代码自动生成方法,其特征在于步骤如下:
(1)定义一种虚拟试验分布式对象模型的描述语言;
所述虚拟试验分布式对象的描述语言包括状态分布对象、消息对象、本地对象、向量、接口、枚举、状态分布对象指针、基本类型,以及它们之间的继承、组合、聚合关系;
所述状态分布对象是复杂数据类型,描述虚拟试验的对象模型,包含成员及方法;
所述消息对象是复杂数据类型,描述虚拟试验的突发事件,包含成员及方法;
所述本地对象是复杂数据类型,描述虚拟试验对象模型中的结构体,包含成员及方法;
(2)对使用步骤(1)中所述语言描述的虚拟试验分布式对象模型而生成的文本文件进行词法分析;
(3)根据所述描述语言的元模型,利用语法分析器生成工具生成语法分析器;
(4)根据词法分析的结果,使用所述语法分析器对所述文本文件进行语法分析,并将得到的语法分析结果存放到中间表示数据结构中;
所述中间表示数据结构与所述元模型相对应,有一个主表,记录了所述元模型中的状态分布对象、消息对象、本地对象,主表的共性部分有名字和类型,相异部分用一个联合数据结构来表示;
(5)建立所述描述语言与IDL语言的映射关系,将步骤(4)中间表示数据结构中存放的语法分析结果中的数据类型转化为IDL语言中的数据类型,并调用IDL编译器生成数据类型所对应的虚拟试验分布式对象模型框架代码,所述IDL语言为CORBA接口定义语言;
(6)构建分布式对象模型模板,之后利用所述文本文件中对虚拟试验分布式对象模型进行的描述替换所述分布式对象模型模板中相应的标签,从而直接转化为虚拟试验分布式对象模型框架代码,虚拟试验分布式对象模型模板描述了虚拟试验分布式对象模型之间的交互功能,提供对象模型发布/订阅和远程方法调用;
所述语法分析器生成工具为YACC;
步骤(2)中所述进行词法分析具体为:
以字符为单位扫描所述文本文件,跳过空白符号,若扫描到的单词为所述描述语言的保留字,则返回该保留字所对应的属性编码,否则返回该单词的字符串,直到该文本文件扫描完毕,即完成了对该文本文件的词法分析。
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 CN102929681A (zh) | 2013-02-13 |
CN102929681B true 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) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103605556A (zh) * | 2013-10-23 | 2014-02-26 | 中国运载火箭技术研究院 | 虚拟试验对象一体化构建系统及方法 |
CN104714807B (zh) * | 2015-04-02 | 2018-06-26 | 四川航天系统工程研究所 | 实现信息工程标准实物化的方法及系统 |
CA2984106C (en) * | 2015-05-08 | 2021-12-21 | Ciambella Ltd. | Method and apparatus for automatic software development for a group of controller-based devices |
CN107273116B (zh) * | 2017-05-22 | 2020-09-25 | 互联天下科技发展(深圳)有限公司 | 采用基于框架的代码生成工具生产代码的方法 |
CN108595171B (zh) * | 2018-04-27 | 2021-08-10 | 广州视源电子科技股份有限公司 | 对象的模型生成方法、装置、设备及存储介质 |
CN111596901B (zh) * | 2020-05-19 | 2022-12-02 | 西安电子科技大学 | 基于模块定义图的无人机飞行控制系统的c++代码生成方法 |
CN113821164B (zh) * | 2021-08-20 | 2024-02-13 | 济南浪潮数据技术有限公司 | 一种分布式存储系统的对象聚合方法和装置 |
CN114115828A (zh) * | 2021-11-23 | 2022-03-01 | 西北工业大学 | 一种嵌入式构件实体生成方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1992715A (zh) * | 2005-12-31 | 2007-07-04 | 中兴通讯股份有限公司 | 基于asn.1定义的pdu编解码代码自动生成的实现方法 |
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 | 浙江鸿程计算机系统有限公司 | 一种程序代码自动生成方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006043012A1 (en) * | 2004-10-22 | 2006-04-27 | New Technology/Enterprise Limited | Data processing system and method |
-
2012
- 2012-10-31 CN CN201210429079.0A patent/CN102929681B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 | 浙江鸿程计算机系统有限公司 | 一种程序代码自动生成方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102929681A (zh) | 2013-02-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102929681B (zh) | 一种虚拟试验分布式对象模型框架代码自动生成方法 | |
CN104156313A (zh) | 一种Web服务测试用例自动生成方法 | |
CN111400389B (zh) | 基于ifc扩展的运维5d-bim数据集成共享系统 | |
CN107451103B (zh) | 模板显示和修改方法及设备 | |
CN103118125A (zh) | 一种跨平台的云计算资源管理系统设计方法 | |
Schönherr et al. | First steps towards a general SysML model for discrete processes in production systems | |
CN104361457A (zh) | 配电网生产检修管理的信息建模方法、交互系统及方法 | |
CN103761388A (zh) | 一种基于hla通用化的异构仿真系统互联方法 | |
CN106897120B (zh) | 双层动态分布式仿真平台 | |
CN103092982A (zh) | 基于多视图业务模型的信息服务系统 | |
Möller et al. | Mixing service oriented and high level architectures in support of the GIG | |
CN112150042A (zh) | 一种基于“微应用微服务”架构的规划评审管理方法和系统 | |
Wu et al. | Overview of CIM-oriented database design and data exchanging in power system applications | |
US20050132326A1 (en) | Software development tool for ensuring links between uml models and the implementation thereof in a cobra environment | |
US20120143954A1 (en) | Method for adapting data in a data transmission system, and associated system | |
CN101393554A (zh) | 一种idl信息到owl信息的转换方法及装置 | |
Lu et al. | Research on heterogeneous data integration for smart grid | |
CN101216769A (zh) | 层次化系统描述语言SmartC到C代码的自动转换方法 | |
Chmielewski et al. | Semantic battlespace data mapping using tactical symbology | |
CN105488147A (zh) | 一种基于sql模板的持久化方法 | |
CN104462463A (zh) | JavaScript基于SQL模板的数据访问方法 | |
CN204347838U (zh) | 一种配电网自动化系统中数据展示装置 | |
Xiao et al. | Modeling and simulation framework for cyber physical systems | |
CN103593416A (zh) | 一种分布式试验运行中间件异构网关的自动生成方法 | |
Guangli | Design and implementation of teaching management systems integrated of vocational college based on SOA |
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 |