基于领域模型的代码生成方法、装置、设备、介质及产品制造方法及图纸

技术编号:38428803 阅读:10 留言:0更新日期:2023-08-07 11:25
本申请公开了一种基于领域模型的代码生成方法、装置、设备、介质及产品,属于软件开发技术领域。该方法包括:对领域模型进行数据解析,得到所述领域模型对应的结构化描述信息,所述领域模型是指包括领域内的至少两个类以及所述至少两个类之间的关联关系,所述结构化描述信息包括以实例形式描述所述领域模型的格式化语句;基于预训练深度学习模型对所述结构化描述信息进行数据配置,得到DSL;基于所述DSL进行代码生成,得到所述领域模型对应的第一代码。通过上述方法,利用预训练深度学习模型对领域模型对应的结构化描述信息进行数据配置,避免了人力对结构化描述信息进行优化调整,极大地提高了代码生成效率。极大地提高了代码生成效率。极大地提高了代码生成效率。

【技术实现步骤摘要】
基于领域模型的代码生成方法、装置、设备、介质及产品


[0001]本申请实施例涉及软件开发
,特别涉及一种基于领域模型的代码生成方法、装置、设备、介质及产品。

技术介绍

[0002]在项目开发过程中,需要编程人员编写大量的代码以实现项目中的业务运行逻辑。
[0003]为了提高代码编写工作的效率,相关技术中,采用代码生成工具协助项目开发,从而解决代码编写效率低的问题。目前代码生成工具生成代码的步骤主要是获取领域模型对应的结构化描述信息,将结构化描述信息写入至代码生成工具中的代码模板中直接生成代码。
[0004]但代码生成工具中的代码模板都已预定义,且基于领域模型解析得到的结构化描述信息生成的代码可能不符合团队规范,或在生成代码后依然需要大量的人力去进行优化调整,因此,如何在保证生成代码质量的前提下提高代码生成效率,是亟待解决的重要问题。

技术实现思路

[0005]本申请提供了一种基于领域模型的代码生成方法、装置、设备、介质及产品,所述技术方案如下。
[0006]根据本申请的一方面,提供了一种基于领域模型的代码生成方法,所述方法包括以下步骤。
[0007]对领域模型进行数据解析,得到所述领域模型对应的结构化描述信息,所述领域模型是指包括领域内的至少两个类以及所述至少两个类之间的关联关系,所述结构化描述信息包括以实例形式描述所述领域模型的格式化语句。
[0008]基于预训练深度学习模型对所述结构化描述信息进行数据配置,得到领域特定语言DSL,所述DSL包括对所述结构化描述信息进行数据配置后得到的受限于所述领域的语言。
[0009]基于所述DSL进行代码生成,得到所述领域模型对应的第一代码。
[0010]根据本申请的一方面,提供了一种基于领域模型的代码生成装置,所述装置包括以下模块。
[0011]数据解析模块,用于对领域模型进行数据解析,得到所述领域模型对应的结构化描述信息,所述领域模型用于表示领域内的至少两个类以及所述至少两个类之间的关联关系,所述结构化描述信息包括以实例形式描述所述领域模型的格式化语句。
[0012]数据配置模块,用于基于预训练深度学习模型对所述结构化描述信息进行数据配置,得到领域特定语言DSL,所述DSL包括对所述结构化描述信息进行数据配置后得到的受限于所述领域的语言。
[0013]代码生成模块,用于基于所述DSL进行代码生成,得到所述领域模型对应的第一代码。
[0014]在一些实施例中,所述数据配置模块,还用于基于所述预训练深度学习模型对所述结构化描述信息进行所述数据配置,得到所述结构化描述信息对应的配置信息,所述配置信息是指对所述结构化描述信息进行补充的信息。
[0015]在一些实施例中,所述数据配置模块,还用于将所述配置信息嵌入至所述结构化描述信息中,得到所述DSL。
[0016]在一些实施例中,所述结构化描述信息包括实体类信息,所述配置信息包括类配置信息;所述数据配置模块,还用于基于所述预训练深度学习模型对所述实体类信息中的变量进行所述数据配置,得到所述实体类信息对应的所述类配置信息。
[0017]在一些实施例中,所述实体类信息中的变量包括实体类变量名称,所述类配置信息包括实体类变量翻译名称;所述数据配置模块,还用于基于所述预训练深度学习模型对所述实体类变量名称进行翻译,得到所述实体类变量名称对应的所述实体类变量翻译名称。
[0018]在一些实施例中,所述数据配置模块,还用于将所述实体类变量翻译名称替换所述结构化描述信息中的所述实体类变量名称,得到所述DSL。
[0019]在一些实施例中,所述实体类信息中的变量包括实体类变量类型,所述类配置信息包括实体类变量配置类型;所述数据配置模块,还用于基于所述预训练深度学习模型对所述实体类变量类型进行补充或修改,得到所述实体类变量类型对应的所述实体类变量配置类型。
[0020]其中,所述实体类变量类型是指实体类变量对应的数据类型;所述实体类变量配置类型是指所述实体类在所述预训练深度学习模型补充或修改后对应的数据类型。
[0021]在一些实施例中,所述数据配置模块,还用于将所述实体类变量配置类型补充或替换所述结构化描述信息中的所述实体类变量类型,得到所述DSL。
[0022]在一些实施例中,所述结构化描述信息包括函数信息,所述配置信息包括函数配置信息;所述数据配置模块,还用于基于所述预训练深度学习模型对所述函数信息中的变量进行所述数据配置,得到所述函数信息对应的所述函数配置信息。
[0023]在一些实施例中,所述函数信息中的变量包括函数名称,所述函数配置信息包括函数翻译名称;所述数据配置模块,还用于基于所述预训练深度学习模型对所述函数名称进行翻译,得到所述函数名称对应的所述函数翻译名称。
[0024]在一些实施例中,所述数据配置模块,还用于将所述函数翻译名称替换所述结构化描述信息中的所述函数名称,得到所述DSL。
[0025]在一些实施例中,所述函数信息中的变量包括函数返回类型,所述函数配置信息包括函数返回配置类型;所述数据配置模块,还用于基于所述预训练深度学习模型对所述函数返回类型进行补充或修改,得到所述函数返回类型对应的所述函数返回配置类型。
[0026]其中,所述函数返回类型是指函数返回的数据的数据类型。
[0027]在一些实施例中,所述数据配置模块,还用于将所述函数返回配置类型补充或替换所述结构化描述信息中的所述函数返回类型,得到所述DSL。
[0028]在一些实施例中,所述函数信息中的变量包括函数参数类型,所述函数配置信息
包括函数参数配置类型;所述数据配置模块,还用于基于所述预训练深度学习模型对所述函数参数类型进行选择,得到所述函数参数类型对应的所述函数参数配置类型。
[0029]其中,所述函数参数类型是指函数调用的参数的种类。
[0030]在一些实施例中,所述数据配置模块,还用于将所述函数参数配置类型补充至所述结构化描述信息中的所述函数参数类型,得到所述DSL。
[0031]在一些实施例中,所述代码生成模块,还用于基于所述预训练深度学习模型对所述第一代码进行更新,得到第二代码。
[0032]其中,所述第二代码是指对所述第一代码进行更新后得到的代码。
[0033]在一些实施例中,所述代码生成模块,还用于响应于所述预训练深度学习模型基于所述结构化描述信息和全局变量对所述第一代码中的待更新代码进行补充,得到所述第二代码。
[0034]其中,所述全局变量是指所述第一代码中的固定配置参数。
[0035]根据本申请的另一方面,提供了一种计算机设备,该计算机设备包括:处理器和存储器,存储器中存储有至少一条计算机程序,至少一条计算机程序由处理器加载并执行以实现如上方面所述的基于领域模型的代码生成方法。
[0036]根据本申请的另一方面,提供了一种计算机存储介质,计算机可读存储介质中存储有至少一条计算机程序本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于领域模型的代码生成方法,其特征在于,所述方法包括:对领域模型进行数据解析,得到所述领域模型对应的结构化描述信息,所述领域模型用于表示领域内的至少两个类以及所述至少两个类之间的关联关系,所述结构化描述信息包括以实例形式描述所述领域模型的格式化语句;基于预训练深度学习模型对所述结构化描述信息进行数据配置,得到领域特定语言DSL,所述DSL包括对所述结构化描述信息进行数据配置后得到的受限于所述领域的语言;基于所述DSL进行代码生成,得到所述领域模型对应的第一代码。2.根据权利要求1所述的方法,其特征在于,所述基于预训练深度学习模型对所述结构化描述信息进行数据配置,得到领域特定语言DSL,包括:基于所述预训练深度学习模型对所述结构化描述信息进行所述数据配置,得到所述结构化描述信息对应的配置信息,所述配置信息是指对所述结构化描述信息进行补充的信息;将所述配置信息嵌入至所述结构化描述信息中,得到所述DSL。3.根据权利要求2所述的方法,其特征在于,所述结构化描述信息包括实体类信息,所述配置信息包括类配置信息;所述基于所述预训练深度学习模型对所述结构化描述信息进行所述数据配置,得到所述结构化描述对应的配置信息,包括:基于所述预训练深度学习模型对所述实体类信息中的变量进行所述数据配置,得到所述实体类信息对应的所述类配置信息。4.根据权利要求3所述的方法,其特征在于,所述实体类信息中的变量包括实体类变量名称,所述类配置信息包括实体类变量翻译名称;所述基于所述预训练深度学习模型对所述实体类信息中的变量进行所述数据配置,得到所述实体类信息对应的所述类配置信息,包括:基于所述预训练深度学习模型对所述实体类变量名称进行翻译,得到所述实体类变量名称对应的所述实体类变量翻译名称。5.根据权利要求4所述的方法,其特征在于,所述将所述配置信息嵌入至所述结构化描述信息中,得到所述DSL,包括:将所述实体类变量翻译名称替换所述结构化描述信息中的所述实体类变量名称,得到所述DSL。6.根据权利要求3所述的方法,其特征在于,所述实体类信息中的变量包括实体类变量类型,所述类配置信息包括实体类变量配置类型;所述基于所述预训练深度学习模型对所述实体类信息中的变量进行所述数据配置,得到所述实体类信息对应的所述类配置信息,包括:基于所述预训练深度学习模型对所述实体类变量类型进行补充或修改,得到所述实体类变量类型对应的所述实体类变量配置类型;其中,所述实体类变量类型是指实体类变量对应的数据类型;所述实体类变量配置类型是指所述实体类在所述预训练深度学习模型补充或修改后对应的数据类型。7.根据权利要求6所述的方法,其特征在于,所述将所述配置信息嵌入至所述结构化描述信息中,得到所述DSL,包括:
将所述实体类变量配置类型补充或替换所述结构化描述信息中的所述实体类变量类型,得到所述DSL。8.根据权利要求2所述的方法,其特征在于,所述结构化描述信息包括函数信息,所述配置信息包括函数配置信息;所述基于所述预训练深度学习模型对所述结构化描述信息进行所述数据配置,得到所述结构化描述对应的配置信息,包括:基于所述预训练深度学习模型对所述函数信息中的变量进行所述数据配置,得到所述函数信息对应的所述函数配置信息。9.根据权利要求8所述的方法,其特征在于,所述函数信息中的变量包括函数名称,所述函数配置信息包括函数翻译名称;所述基于所述预训练深度学习模型对所述函数信息中的变量进行所述数据配置,得到所述函数信息对应的所述函...

【专利技术属性】
技术研发人员:邬俊杰张晋铭王少鸣郭润增
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:

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

1