System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种AADL模型到Java代码的自动生成系统技术方案_技高网

一种AADL模型到Java代码的自动生成系统技术方案

技术编号:40210319 阅读:9 留言:0更新日期:2024-02-02 22:20
本发明专利技术涉及一种AADL模型到Java代码的自动生成系统,属于模型仿真技术领域,解决了现有不适用于大规模集成的AADL模型和缺少将AADL模型实例文件转换为Java代码的问题。Java代码模板用于定义AADL模型实例文件中各种类型的组件信息与Java代码的映射关系;顶层系统识别器用于解析实例文件,识别出顶层系统,获取系统实现和系统组件列表;状态机生成器用于获取内部定义和外部定义的状态信息和事件信息;代码生成器用于获取每个系统组件信息、系统组件实现信息、进程组件信息、进程实现信息、线程组件信息和线程实现信息;将上述信息和特征组信息,以及顶层系统和系统实现信息,分别替换对应的Java代码模板中的动态变量,生成Java代码。实现了Java代码的自动化生成。

【技术实现步骤摘要】

本专利技术涉及模型仿真,尤其涉及一种aadl模型到java代码的自动生成系统。


技术介绍

1、广泛应用于工业控制、消费电子、通信设备、汽车电子、航空航天等众多领域有大量的安全关键软件,对国民经济和国防领域具有重要影响。近年来,随着硬件设备计算能力的提高,性能关键实时系统的规模和复杂度急剧增加,导致其对开发成本和非功能属性的要求也越来越高,这些问题对性能关键实时系统开发中的设计合理性,验证完备性以及开发效率等方面都带来了巨大的挑战。

2、aadl(architecture analysis and design language,体系结构分析设计语言)应用于嵌入式系统领域,支持航空、航天、汽车等领域复杂实时的安全关键系统的设计与分析。aadl具有语法简单、功能强大、可扩展等优点,能够对嵌入式软件的功能和非功能属性进行建模与描述。为了能对系统进行实时分析与验证,将aadl模型与其它软件集成,将aadl模型生成代码的需求也越来越多。

3、java语言是一种面向对象的程序设计语言,它具有方便的语言级并发控制、移植性好、丰富的类库、安全性高等优点。现有存在将aadl模型转换为c代码、ada代码,但是只适用于单系统对象,而且是直接对aadl模型进行映射,当存在多系统和多对象集成,只有aadl的实例文件时,缺少准确的java代码的转换规则和直接的代码生成方法。


技术实现思路

1、鉴于上述的分析,本专利技术实施例旨在提供一种aadl模型到java代码的自动生成系统,用以解决现有不适用于大规模集成的aadl模型和缺少将aadl模型实例文件转换为java代码的问题。

2、本专利技术实施例提供了一种aadl模型到java代码的自动生成系统,包括:

3、java代码模板,用于定义aadl模型.aaxl2实例文件中各种类型的组件信息与java代码的映射关系,包括实体父对象模板、实体子对象模板、进程子对象模板、线程父对象模板、线程子对象模板和主函数模板;

4、顶层系统识别器,用于解析.aaxl2实例文件,根据实例文件中的节点类型和节点关系,识别出顶层系统,获取系统实现;依次根据每个系统实现获取系统组件,得到系统组件列表;

5、状态机生成器,用于根据任一类型的组件名称,获取内部定义和外部定义的状态信息和事件信息;

6、代码生成器,用于基于实例文件,根据系统组件列表依次获取每个系统组件信息、系统组件实现信息、进程组件信息、进程实现信息、线程组件信息和线程实现信息;将上述信息和特征组信息,以及,顶层系统和系统实现信息,分别替换对应的java代码模板中的动态变量,生成java代码;代码生成器包括:实体对象生成器、进程对象生成器、线程对象生成器、简单类生成器和主函数生成器。

7、基于上述系统的进一步改进,顶层系统识别器根据实例文件中的节点类型和节点关系,识别出顶层系统节点,包括:

8、获取节点类型为系统的节点名称,放入第一系统列表中;

9、获取节点类型为子系统组件的节点名称,放入子系统列表中;

10、依次获取子系统列表中每个子系统所属的父节点名称,放入第二系统列表中;

11、取第一系统列表中不存在于第二系统列表中的节点,作为顶层系统。

12、基于上述系统的进一步改进,状态机生成器用于根据任一类型的组件名称,获取内部定义和外部定义的状态信息和事件信息,包括:

13、获取任一类型的组件名称所在节点中的错误附件节点;

14、获取错误附件节点下的states节点的信息作为内部定义的状态列表,获取错误附件节点下的events节点的信息作为内部定义的事件列表;

15、当错误附件节点中的usebehavior属性值非空且包含“.aadl”时,获取.aadl文件对应的实例文件作为待提取文件,如果无法获取,则取错误附件节点中usetypes属性值中对应的.aadl文件作为待提取文件,从待提取文件中获取states节点的信息作为外部定义的状态列表,获取events节点的信息作为外部定义的事件列表;

16、将组件名称中的“.”替换为“_”,并分别加上后缀“_states”和“_events”,作为状态枚举类型和事件枚举类型;

17、状态枚举类型和状态列表作为状态信息,事件枚举类型和事件列表作为事件信息。

18、基于上述系统的进一步改进,实体对象生成器用于根据系统组件名称获取系统组件信息,替换实体父对象模板中的动态变量,生成系统组件的java代码,包括:

19、将系统组件信息中的系统组件类型替换实体父对象模板中的类名变量;

20、将系统组件信息中的路由端口信息替换实体父对象模板中的属性变量,及其对应的get和set方法变量;

21、当系统组件信息中的状态信息或事件信息不为空时:

22、将系统组件信息中的状态枚举类型替换实体父对象模板中枚举类型的属性变量,将状态列表中的状态名称作为枚举值;

23、将系统组件信息中的事件枚举类型替换实体父对象模板中枚举类型的属性变量,将事件列表中的事件名称作为枚举值;

24、在继承了抽象状态机的静态类中,将状态枚举类型、事件枚举类型替换静态类中预置方法的输入参数变量。

25、基于上述系统的进一步改进,实体对象生成器还用于根据系统组件实现名称获取系统组件实现信息,替换实体子对象模板中的动态变量,生成系统组件实现的java代码,包括:

26、将系统组件实现信息中的系统组件实现类型替换实体子对象模板中的类名变量和构造函数中的方法名变量,将系统组件实现对应的系统组件类型替换实体子对象模板中继承的父类类名变量;

27、当系统组件实现信息中的连接信息不为空时,将连接信息中来源组件的来源端口设置在目标组件的目标端口中,替换实体子对象模板中的设置方法变量;

28、当系统组件实现信息中的子组件信息不为空时,子组件的类型替换实体子对象模板中的静态类型变量,子组件的名称替换实体子对象模板中的静态属性变量,并在构造函数中替换静态属性变量及其实例化方法变量;

29、当系统组件实现信息中的状态信息或事件信息不为空时,按照实体父对象模板中对应的替换方式,在实体子对象模板中进行替换。

30、基于上述系统的进一步改进,进程对象生成器用于根据进程组件名称获取进程组件信息,替换实体父对象模板的动态变量,生成进程组件的java代码;进程组件信息包括进程组件类型、进程组件的路由端口信息、进程组件的状态信息和事件信息;

31、进程对象生成器还用于根据进程实现名称获取进程实现信息,替换进程子对象模板的动态变量,生成进程实现的java代码,包括:

32、将进程实现信息中的进程实现类型替换进程子对象模板中的类名变量,将进程实现对应的进程组件类型替换进程子对象模板中继承的父类类名变量;

33、当进程实现本文档来自技高网...

【技术保护点】

1.一种AADL模型到Java代码的自动生成系统,其特征在于,包括:

2.根据权利要求1所述的AADL模型到Java代码的自动生成系统,其特征在于,所述顶层系统识别器根据实例文件中的节点类型和节点关系,识别出顶层系统节点,包括:

3.根据权利要求1所述的AADL模型到Java代码的自动生成系统,其特征在于,所述状态机生成器用于根据任一类型的组件名称,获取内部定义和外部定义的状态信息和事件信息,包括:

4.根据权利要求3所述的AADL模型到Java代码的自动生成系统,其特征在于,所述实体对象生成器用于根据系统组件名称获取系统组件信息,替换实体父对象模板中的动态变量,生成系统组件的Java代码,包括:

5.根据权利要求4所述的AADL模型到Java代码的自动生成系统,其特征在于,所述实体对象生成器还用于根据系统组件实现名称获取系统组件实现信息,替换实体子对象模板中的动态变量,生成系统组件实现的Java代码,包括:

6.根据权利要求4所述的AADL模型到Java代码的自动生成系统,其特征在于,所述进程对象生成器用于根据进程组件名称获取进程组件信息,替换实体父对象模板的动态变量,生成进程组件的Java代码;所述进程组件信息包括进程组件类型、进程组件的路由端口信息、进程组件的状态信息和事件信息;

7.根据权利要求4所述的AADL模型到Java代码的自动生成系统,其特征在于,所述线程对象生成器用于根据线程组件名称获取线程组件信息,替换线程父对象模板中的动态变量,生成线程组件的Java代码,包括:

8.根据权利要求7所述的AADL模型到Java代码的自动生成系统,其特征在于,所述线程对象生成器还用于根据线程实现名称获取线程实现信息,替换线程子对象模板中的动态变量,生成线程实现的Java代码,包括:

9.根据权利要求4所述的AADL模型到Java代码的自动生成系统,其特征在于,所述简单类生成器用于获取节点为特征组的特征组信息,替换实体父对象模板中的动态变量,生成特征组的Java代码;所述特征组信息包括特征组类型、特征组的路由端口信息。

10.根据权利要求4所述的AADL模型到Java代码的自动生成系统,其特征在于,所述主函数生成器用于将顶层系统替换实体父对象模板中的类名变量,生成顶层系统的Java代码;所述主函数生成器还用于根据系统实现名称获取系统实现信息,替换主函数模板中的动态变量,生成系统入口的Java代码,包括:

...

【技术特征摘要】

1.一种aadl模型到java代码的自动生成系统,其特征在于,包括:

2.根据权利要求1所述的aadl模型到java代码的自动生成系统,其特征在于,所述顶层系统识别器根据实例文件中的节点类型和节点关系,识别出顶层系统节点,包括:

3.根据权利要求1所述的aadl模型到java代码的自动生成系统,其特征在于,所述状态机生成器用于根据任一类型的组件名称,获取内部定义和外部定义的状态信息和事件信息,包括:

4.根据权利要求3所述的aadl模型到java代码的自动生成系统,其特征在于,所述实体对象生成器用于根据系统组件名称获取系统组件信息,替换实体父对象模板中的动态变量,生成系统组件的java代码,包括:

5.根据权利要求4所述的aadl模型到java代码的自动生成系统,其特征在于,所述实体对象生成器还用于根据系统组件实现名称获取系统组件实现信息,替换实体子对象模板中的动态变量,生成系统组件实现的java代码,包括:

6.根据权利要求4所述的aadl模型到java代码的自动生成系统,其特征在于,所述进程对象生成器用于根据进程组件名称获取进程组件信息,替换实体父对象模板的动态变量,生成进程组件的java代码;...

【专利技术属性】
技术研发人员:杨波巴悦浩闫治鹏
申请(专利权)人:北京林业大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1