一种机载IMA架构下的框架代码自动生成方法及装置制造方法及图纸

技术编号:21891077 阅读:31 留言:0更新日期:2019-08-17 14:11
本发明专利技术一种机载IMA架构下的框架代码自动生成方法及装置。该方法包括:解析IMA软件架构模型,生成软件运行时构件类对象实例;调用软件运行时构件类对象实例的模块级元素生成主体框架代码;调用软件运行时构件类对象实例的分区级元素生成应用分区初始化代码;调用软件运行时构件类对象实例的分区级元素生成分区中进程相关代码。本发明专利技术解决了IMA架构下重复性编码、编码质量问题。

A Framework Code Automatic Generation Method and Device Based on Airborne IMA Architecture

【技术实现步骤摘要】
一种机载IMA架构下的框架代码自动生成方法及装置
本专利技术属于软件领域,涉及一种综合模块化体系架构(IntegratedModularArchitecture,IMA)架构下的框架代码自动生成方法及装置。
技术介绍
航空电子系统作为安全关键系统的典型代表,其系统架构在从传统的联邦式体系结构到IMA演变过程中,之前由机械或硬件实现的功能逐渐由软件实现,由此导致了软件复杂度规模大幅增长。例如波音787的飞控系统大约650万行代码。开发如此庞大和复杂的软件,除了要求软件功能正确,还要具有良好的质量保证。代码作为机载软件重要的产品要素之一,对软件质量具有无可替代的影响。目前大多数机载软件开发人员在仍然采用手工编码的方式进行代码编写,这种方式在一定程度上虽然能够灵活控制开发流程,但也存在其固有的弊端。例如,进行大规模机载软件开发时,大量的编码活动使软件开发人员局限于重复性编码工作中,除了会很容易引起代码质量的问题、增加软件开发成本,同时也很难使开发人员聚焦于在软件架构设计层面对软件整体功能和性能进行设计、分析和验证。
技术实现思路
专利技术目的:提供了一种机载IMA架构下的框架代码自动生成方法及装置,解决了IMA架构下重复性编码、编码质量问题。第一方面,提供一种机载IMA架构下的框架代码自动生成方法,在机载IMA架构下,所述方法包括:解析IMA软件架构模型,生成软件运行时构件类对象实例;调用软件运行时构件类对象实例的模块级元素生成主体框架代码;调用软件运行时构件类对象实例的分区级元素生成应用分区初始化代码;调用软件运行时构件类对象实例的分区级元素生成分区中进程相关代码。进一步的,所述解析IMA软件架构模型,生成软件运行时构件类对象实例,包括:将IMA软件架构模型自顶向下分为模块、分区、任务三级;分别定义模块、分区、任务的XML模式;将模块、分区、任务的相关资源及通信关系通过XML建模,形成XML架构模型;解析XML架构模型,建立软件运行时构件类对象实例,软件运行时构件类对象实例的元素包括:软件运行时构件类对应的模块、分区、任务、端口、缓冲区、黑板、信号量、事件、分区间通信及分区内通信对象和实例。进一步的,所述根据软件运行时构件类元素库的元素生成主体框架代码,包括:主体框架代码以软件架构运行时构件类对象实例为输入,遍历模块中的每个分区对象,为每个分区新建以分区名为文件名的C文件;依次生成头文件引用、进程函数定义、进程属性表定义和分区初始化函数定义,将生成的代码以字符流的形式写入C文件中;其中,C文件用于存储主体框架代码。进一步的,所述调用软件运行时构件类对象实例的分区级元素生成应用分区初始化代码,包括:遍历软件运行时构件类对象实例中分区的端口,生成创建每个端口的代码;遍历软件运行时构件类对象实例中分区内通信对象,根据分区内通信对象的通信机制,生成创建缓冲区、黑板、信号量、事件的代码;遍历软件运行时构件类对象实例中分区内的进程对象,生成创建进程和启动进程的代码,将上述生成的代码以字符流的形式写入C文件中。进一步的,所述调用软件运行时构件类对象实例的分区级元素生成分区中进程相关代码,包括:以软件运行时构件类对象实例为输入,遍历分区中的每个任务对象,为每个任务生成它的功能函数;若功能函数是周期性函数,则功能函数内的代码按周期循环执行;遍历软件运行时构件类对象实例中任务的输入对象;若输入对象关联分区间通信,则生成从队列端口或采样端口读取消息的代码;若输入对象关联分区内通信,则生成从缓冲区或黑板读取消息,或,获取信号量或事件的代码;遍历进程对象的输出对象;若输出对象关联分区间通信,则生成从端口发送消息的代码;若输出对象关联分区内通信,则生成向缓冲区或黑板写入消息,或释放信号量或事件的代码;将上述生成的代码以字符流的形式写入C文件中。第二方面,提供一种机载IMA架构下的框架代码自动生成装置,在机载IMA架构下,所述装置包括:解析模块,用于解析IMA软件架构模型,生成软件运行时构件类对象实例;第一生成模块,用于调用软件运行时构件类对象实例的模块级元素生成主体框架代码;第二生成模块,用于调用软件运行时构件类对象实例的分区级元素生成应用分区初始化代码;第三生成模块,用于调用软件运行时构件类对象实例的分区级元素生成分区中进程相关代码。进一步的,所述解析模块包括:划分单元,用于将IMA软件架构模型自顶向下分为模块、分区、任务三级;定义单元,用于分别定义模块、分区、任务的XML模式;建模单元,用于将模块、分区、任务的相关资源及通信关系通过XML建模,形成XML架构模型;解析单元,用于解析XML架构模型,建立软件运行时构件类对象实例,软件运行时构件类对象实例的元素包括:软件运行时构件类对应的模块、分区、任务、端口、缓冲区、黑板、信号量、事件、分区间通信及分区内通信对象和实例。进一步的,所述第一生成模块包括:第一遍历单元,用于主体框架代码以软件架构运行时构件类对象实例为输入,遍历模块中的每个分区对象,为每个分区新建以分区名为文件名的C文件;生成单元,用于依次生成头文件引用、进程函数定义、进程属性表定义和分区初始化函数定义,将生成的代码以字符流的形式写入C文件中;其中,C文件用于存储主体框架代码。进一步的,所述第二生成模块包括:第二遍历单元,用于遍历软件运行时构件类对象实例中分区的端口,生成创建每个端口的代码;第三遍历单元,用于遍历软件运行时构件类对象实例中分区内通信对象,根据分区内通信对象的通信机制,生成创建缓冲区、黑板、信号量、事件的代码;第四遍历单元,用于遍历软件运行时构件类对象实例中分区内的进程对象,生成创建进程和启动进程的代码,写入单元,用于将上述生成的代码以字符流的形式写入C文件中。进一步的,所述第三生成模块包括:第五遍历单元,用于以软件运行时构件类对象实例为输入,遍历分区中的每个任务对象,为每个任务生成它的功能函数;执行单元,用于若功能函数是周期性函数,则功能函数内的代码按周期循环执行;第六遍历单元,用于遍历软件运行时构件类对象实例中任务的输入对象;第一代码生成单元,用于若输入对象关联分区间通信,则生成从队列端口或采样端口读取消息的代码;第一消息生成单元,用于若输入对象关联分区内通信,则生成从缓冲区或黑板读取消息;第一获取信息单元,用于若输入对象关联分区内通信,获取信号量或事件的代码;第七遍历单元,用于遍历进程对象的输出对象;第二代码生成单元,用于若输出对象关联分区间通信,则生成从端口发送消息的代码;第二消息生成单元,用于若输出对象关联分区内通信,则生成向缓冲区或黑板写入消息;第二获取信息单元,用于释放信号量或事件的代码;代码写入单元,用于将上述生成的代码以字符流的形式写入C文件中。有益效果:本专利技术可实现对基于IMA软件架构的应用程序框架代码的生成,有助于提高大规模机载软件代码质量,降低机载软件开发人员手写代码的工作量和软件开发成本。附图说明图1是本专利技术实施例提供的框架代码生成总体方案的示意图;图2是本专利技术实施例提供的软件运行时构件类的示意图;图3是本专利技术实施例提供的框架代码组成的示意图;图4是本专利技术实施例提供的分区主体框架代码生成算法的流程图;图5是本专利技术实施例提供的资源变量代码生成算法的流程图;图6是本专利技术实施例提供的分本文档来自技高网...

【技术保护点】
1.一种机载IMA架构下的框架代码自动生成方法,其特征在于,在机载IMA架构下,所述方法包括:解析IMA软件架构模型,生成软件运行时构件类对象实例;调用软件运行时构件类对象实例的模块级元素生成主体框架代码;调用软件运行时构件类对象实例的分区级元素生成应用分区初始化代码;调用软件运行时构件类对象实例的分区级元素生成分区中进程相关代码。

【技术特征摘要】
1.一种机载IMA架构下的框架代码自动生成方法,其特征在于,在机载IMA架构下,所述方法包括:解析IMA软件架构模型,生成软件运行时构件类对象实例;调用软件运行时构件类对象实例的模块级元素生成主体框架代码;调用软件运行时构件类对象实例的分区级元素生成应用分区初始化代码;调用软件运行时构件类对象实例的分区级元素生成分区中进程相关代码。2.根据权利要求1所述的方法,其特征在于,所述解析IMA软件架构模型,生成软件运行时构件类对象实例,包括:将IMA软件架构模型自顶向下分为模块、分区、任务三级;分别定义模块、分区、任务的XML模式;将模块、分区、任务的相关资源及通信关系通过XML建模,形成XML架构模型;解析XML架构模型,建立软件运行时构件类对象实例,软件运行时构件类对象实例的元素包括:软件运行时构件类对应的模块、分区、任务、端口、缓冲区、黑板、信号量、事件、分区间通信及分区内通信对象和实例。3.根据权利要求2所述的方法,其特征在于,所述根据软件运行时构件类元素库的元素生成主体框架代码,包括:主体框架代码以软件架构运行时构件类对象实例为输入,遍历模块中的每个分区对象,为每个分区新建以分区名为文件名的C文件;依次生成头文件引用、进程函数定义、进程属性表定义和分区初始化函数定义,将生成的代码以字符流的形式写入C文件中;其中,C文件用于存储主体框架代码。4.根据权利要求3所述的方法,其特征在于,所述调用软件运行时构件类对象实例的分区级元素生成应用分区初始化代码,包括:遍历软件运行时构件类对象实例中分区的端口,生成创建每个端口的代码;遍历软件运行时构件类对象实例中分区内通信对象,根据分区内通信对象的通信机制,生成创建缓冲区、黑板、信号量、事件的代码;遍历软件运行时构件类对象实例中分区内的进程对象,生成创建进程和启动进程的代码,将上述生成的代码以字符流的形式写入C文件中。5.根据权利要求4所述的方法,其特征在于,所述调用软件运行时构件类对象实例的分区级元素生成分区中进程相关代码,包括:以软件运行时构件类对象实例为输入,遍历分区中的每个任务对象,为每个任务生成它的功能函数;若功能函数是周期性函数,则功能函数内的代码按周期循环执行;遍历软件运行时构件类对象实例中任务的输入对象;若输入对象关联分区间通信,则生成从队列端口或采样端口读取消息的代码;若输入对象关联分区内通信,则生成从缓冲区或黑板读取消息,或,获取信号量或事件的代码;遍历进程对象的输出对象;若输出对象关联分区间通信,则生成从端口发送消息的代码;若输出对象关联分区内通信,则生成向缓冲区或黑板写入消息,或释放信号量或事件的代码;将上述生成的代码以字符流的形式写入C文件中。6.一种机载IMA架构下的框架代码自动生成装置,其特征在于,在机载IMA架构下,所述装置包括:解析模块,用于解析IMA软件架构模型,生成软...

【专利技术属性】
技术研发人员:邢亮牟明路帅陈宁吴楠
申请(专利权)人:中国航空工业集团公司西安航空计算技术研究所
类型:发明
国别省市:陕西,61

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

1