本发明专利技术涉及一种AADL到C语言的代码自动生成方法,其包括以下步骤:1)根据AADL元模型的语义、目标运行环境的语义和C语言语法语义定义AADL元模型到C语言的转换规则;2)根据AADL模型能够获取的所使用的元模型及其语义、AADL元模型到C语言的转换规则制定代码自动生成模板;3)根据代码自动生成模板编写模板转换引擎;4)输入AADL模型后,自动对输入的AADL模型解析,提取AADL元模型信息,按照代码自动生成模板,通过模板转换引擎将AADL元模型信息生成C语言代码。本发明专利技术具有以下有益效果:1定义了AADL模型到C语言的转换规则,有效解决AADL与C语言语义映射;2通过模板引擎提高代码转换效率。
【技术实现步骤摘要】
本专利技术涉及软件开发工具,特别涉及一种AADL到C语言的代码自动生成方法。
技术介绍
基于模型的软件开发是继面向对象技术后,又一次软件设计理念和方法的跨越。 基于模型的软件开发思想是:将"模型"作为软件设计和开发的核心要素,通过模型清晰地 刻画软件系统的功能、性能和安全性等关键特征,准确描述系统的解决方案;通过形式化方 法对系统模型加以验证,以确保软件设计的正确性;通过模型驱动方法生成代码,以保证软 件设计与实现的一致性。 2004年,美国汽车工程师协会SAE (society of automotive engineers)基于15 年的研宄和工业实践,提出嵌入式实时系统体系结构分析与设计语言AADL(architecture analysis&design language),提供了一种标准而又足够精确的方式设计与分析嵌入式实 时系统的软、硬件体系结构及功能与非功能性质。但是基于AADL进行嵌入式系统代码自动 生成非常具有挑战性,因为生成的代码要运行在不同的目标平台,满足各平台有不同的特 征,如软硬件体系结构、编程接口等。模型较为抽象地表达了在特定平台上各要素的组织方 式和特征,易于理解和验证,但与实现之间有语义鸿沟,给代码生成增加了负担,而且建模 语言的抽象语义不一定能够与目标平台匹配。 AADL模型到代码的自动生成,能够有助于提高嵌入式实时系统的软件开发的自动 化水平,缩短软件开发周期,减少人工写代码的工作量和编码过程中出错的可能性。目前欧 美模型驱动软件开发环境的代码自动生成主要支持Ada语言、Java语言的代码生成,面向 符合ANRINC 653规范的P0K操作系统、汽车行业标准的0SEK操作系统,各领域在使用AADL 进行代码生成时,需根据自身平台的运行时环境进行代码生成工具开发。我国航天领域广 泛采用SZ0S等嵌入式实时操作系统,但是尚未出现AADL到SZ0S等特定运行时环境的C语 言的代码自动生成方法。
技术实现思路
专利技术目的:本专利技术针对上述现有技术存在的问题做出改进,即本专利技术公开了一种 AADL到C语言的代码自动生成方法,使用该方法可以面向特定运行时环境实现AADL到C语 言的代码自动生成。 技术方案:一种AADL到C语言的代码自动生成方法,包括以下步骤: 1)根据AADL元模型的语义、目标运行环境的语义和C语言语法语义定义AADL元 模型到C语言的转换规则; 2)根据AADL模型能够获取的所使用的元模型及其语义、步骤1)得到的AADL元模 型到C语言的转换规则制定代码自动生成模板; 3)根据步骤2)得到的代码自动生成模板编写模板转换引擎; 4)输入AADL模型后,自动对输入的AADL模型解析,提取AADL元模型信息,按照步 骤2)中的代码自动生成模板,通过步骤3)得到的模板转换引擎将AADL元模型信息生成C语言代码。 进一步地,步骤1)中AADL元模型到C语言的转换规则包括: 11)4401数据类型8&%_17口6生成(:语言程序中的*.11头文件; 12)系统构件不对应具体的可执行代码,仅将系统构件的功能接口转换为函数的 输入参数和输出参数,且将所定义的数据构件转换为C语言程序中的变量定义,系统构件 的名称作命名空间使用; 13)线程构件、线程组构件以及子程序构件对应具体的可执行代码,线程构件、线 程组构件以及子程序构件均转换为C语言程序中的函数定义;线程构件的功能接口转换为 函数的输入参数和输出参数,线程组构件的功能接口转换为函数的输入参数和输出参数, 子程序构件的功能接口转换为函数的输入参数和输出参数,子程序构件定义中的数据构件 转换为局部变量定义; 14)处理器构件中定义调度算法,调度算法转换为C语言程序中的函数定义; 15)进程构件转换为C语言程序中的主函数,进程构件所包含的子构件之间的连 接关系转换为源端函数和目标端函数,并将进程构件所包含的子构件之间的连接名称转换 为变量定义,用于源端函数和目标端函数之间的数据传递; 16)对于系统调用,需在AADL模型中进行定义。 有益效果:本专利技术公开的一种AADL到C语言的代码自动生成方法具有以下有益效 果: 1、详细描述了代码自动生成的实施步骤,为特定运行时环境实现AADL到C语言代 码自动生成提供解决方案; 2、定义了AADL模型到C语言的转换规则,有效解决AADL与C语言语义映射; 3、使用Xtend语言定义模板,并通过封装等方式提供灵活的模板操作; 4、通过模板引擎提高代码转换效率。【附图说明】 图1为本专利技术公开的一种AADL到C语言的代码自动生成方法的流程图。【具体实施方式】: 下面对本专利技术的【具体实施方式】详细说明。 如图1所示,一种AADL到C语言的代码自动生成方法,包括以下步骤: 1)根据AADL元模型的语义、目标运行环境的语义和C语言语法语义定义AADL元 模型到C语言的转换规则; 2)根据AADL模型能够获取的所使用的元模型及其语义、步骤1)得到的AADL元模 型到C语言的转换规则制定代码自动生成模板; 3)根据步骤2)得到的代码自动生成模板编写模板转换引擎; 4)输入AADL模型后,自动对输入的AADL模型解析,提取AADL元模型信息,按照步 骤2)中的代码自动生成模板,通过步骤3)得到的模板转换引擎将AADL元模型信息生成C 语言代码。 下面对AADL元模型到C语言的转换规则、AADL元模型到C语言的转换规则制定 代码自动生成模板、模板转换引擎、模板解析分别进行说明: 关于步骤1)中AADL元模型到C语言的转换规则的说明: 生成运行于特定运行环境的C语言应用程序代码时,软件体系结构模型生成应用 软件代码框架,运行时模型则主要考虑调度算法,并生成相应的调度程序。 AADL语言通过自顶向下的方式对系统进行建模,一般可以分为四个层次:最高层 为系统构件,对应一个系统或子系统;一个系统构件包括多个进程构件及连接(用于表达 任务执行的虚拟地址空间)、处理器构件(用于表达调度)以及其它硬件构件(如外设构 件、存储构件、总线构件等);一个进程构件代表任务的虚拟地址空间,可以执行多个线程 构件或线程组构件及连接(用于表达任务及任务之间的通信),一个线程可以访问子程序 构件,多个线程可以共享访问一个数据构件;线程构件、子程序构件的内部行为可以用行为 附件来表达,用户也可以直接给出源代码。 AADL元模型到C语言的转换规则如下: 步骤1)中AADL元模型到C语言的转换规则包括: 11)AADL数据类型Base_Type生成C语言程序中的h头文件; 12)系统构件不对应具体的可执行代码,仅将系统构件的功能接口转换为函数的 输入参数和输出参数,且将所定义的数据构件转换为C语言程序中的变量定义,系统构件 的名称作命名空间使用; 13)线程构件、线程组构件以及子程序构件对应具体的可执行代码,线程构件、线 程组构当前第1页1 2 本文档来自技高网...
【技术保护点】
一种AADL到C语言的代码自动生成方法,其特征在于,包括以下步骤:1)根据AADL元模型的语义、目标运行环境的语义和C语言语法语义定义AADL元模型到C语言的转换规则;2)根据AADL模型能够获取的所使用的元模型及其语义、步骤1)得到的AADL元模型到C语言的转换规则制定代码自动生成模板;3)根据步骤2)得到的代码自动生成模板编写模板转换引擎;4)输入AADL模型后,自动对输入的AADL模型解析,提取AADL元模型信息,按照步骤2)中的代码自动生成模板,通过步骤3)得到的模板转换引擎将AADL元模型信息生成C语言代码。
【技术特征摘要】
【专利技术属性】
技术研发人员:刘姝,王晓晗,
申请(专利权)人:北京神舟航天软件技术有限公司,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。