一种基于模型驱动生成代码的方法及系统的制作方法

文档序号:9489276阅读:233来源:国知局
一种基于模型驱动生成代码的方法及系统的制作方法
【技术领域】
[0001]本发明涉及生成代码的方法及系统,具体地说是一种基于模型驱动生成代码的方法及系统。
【背景技术】
[0002]在我们开发程序的过程中,特别是开发一些业务系统的过程中,一些重复的代码总是不可避免的,比如资料的增删改查界面的代码、数据库语句等,这些工作如果要开发人员去手动完成话,不仅会降低开发效率,而且会带来很多潜在缺陷,从而提高了项目的人力资源成本、增大了项目的风险。采用代码生成技术能大幅提高软件开发的质量和生产率,降低软件开发的风险,代码生成是一个专注于解放编码生产力,用程序来编程的研究方向。它是MDA思想的一个重要的技术基础。MDA的基本思想是在软件开发中以模型为驱动,由模型来生成或编译成程序代码,实现软件需求。只有在代码生成技术获得充分发展的基础上,模型驱动架构的思想才能得以实现。
[0003]目前,大多数代码生成器都是单一的通过数据库和相关的参数设计来实现,因此灵活性欠佳,不能完全满足软件开发的实际需要,难以在软件开发项目中得到充分的应用。因此在大一些的开发团队中都在使用着各种或公开或自主开发的代码生成工具。

【发明内容】

[0004]本发明的目的是为了解决上述存在的技术问题,提供一种基于模型驱动生成代码的方法及系统。
[0005]本发明所采用的技术方案是:
[0006]—种基于模型驱动生成代码的方法及系统,系统在数据模型层由数据库模型、模型架构以及代码模板三部分构成,在代码生成的过程中,由模型分析模块从数据库模型及操作模型中获取有编程人员所指定的模型对象,通过模板引擎根据这些对象调用对应的代码模板,最后,代码生成器负责清理这些模型对象之间的关系,并根据模板引擎产生最终的基于对象的代码。
[0007]进一步的,模型架构文档Schema:采用XML来存储模型数据,作为代码生成的数据源,该数据模型XML文档中的结构和语法由XML Schema来定义,Schema定义了数据模型的规范和格式。
[0008]模型分析:主要负责读取数据模型和操作模型XML文件中的数据,并生成类似DOM的内存数模型,作为代码生成器的数据源,完成对象和控制层的数据准备工作。
[0009]模板引擎:采用目前比较流行的VeloCity、FreeMaker等模板引擎技术,用数据模型和操作模型中的数据替换模板文件中的可变部分生成最终的代码。
[0010]代码生成:根据上述生成的基础数据配合系统架构文档等信息完成代码的生成,在代码生成器中封装了模型到代码的生成规则和转换逻辑。
[0011]本发明的有益效果是,
[0012]本发明公开的一种基于模型驱动生成代码的方法及系统,
[0013]1、积极性的代码生成模式
[0014]本系统的代码生成模式属于积极的代码生成器,即在产生代码后伴随项目的进展对其自动生成的代码可以进行二次维护。用户可在生成的代码文件的标记区域里进行代码的增删改,当代码生成器产生新一轮的代码时,将只修改其原先自动生成的代码。在二次生成的过程中如果发现与手工代码相冲突的代码段,系统自动生成警告消息,并指导用户进行操作。
[0015]2、具有双向推导的代码生成机制
[0016]系统支持双向代码生成框架,能够根据已经生成代码对框架模板做反向推导,并且能够以插件的方式重构现有代码,支持模型检查,在生成可执行代码前进行相应的模型一致性检查,支持JUNIT测试验证。
[0017]3、具有插件式的代码生成架构
[0018]系统以自主开发的eclipse插件形式完成交付,能够与目前主流开发IDE完美集成,并提供完整的接口文档,方便与其他第三方系统进行集成。
[0019]4、高效率、高质量。
[0020]代码生成的工作主要是建立和维护输入模型,而这些输入模型基本上或全部都能从设计模型转化过来,工作量很少,因而软件生成率得到成倍提高。同时,代码生成技术使用代码模板来生成代码,模板越完善,生成的代码就越好。模板改善后,所有生成的代码质量都能提高,并且代码的命名和风格都能保持一致。因而采用代码生成技术能获得更高质量的代码。
[0021]下面结合附图对本发明作进一步详细描述。
【附图说明】
[0022]图1为编码阶段流程示意图;
[0023]图2为系统架构图;
[0024]图3为代码生成器执行流程图;
[0025]图4为系统工作流程图。
【具体实施方式】
[0026]为了加深对本发明的理解,下面结合附图和实施例对本发明作进一步详细的说明。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
[0027]本发明的实现原理:
[0028]基于数据库模型
[0029]基于数据库设计模型来生成各种代码,除支持通过已存在的数据库表或SQL查询语句作为模型输入外,还支持标准的XML标准模板,也可以提供与其他基于UML的CASE工具的外接接口。
[0030]基于模型架构驱动
[0031]开发人员首先编写统一的规范化的XML模型架构文件,基于相应的代码模板和数据模型完成某一类代码的生成任务。通过这种机制,只要定义合适的模板和任务,就可一次性生成项目开发中各种层次和类型的代码,并且很容易维护和重构,从而将代码生成技术完全融入到开发流程中去,实现基于模型架构驱动的开发模式。
[0032]基于代码模板技术
[0033]代码模板自定义,代码文档组织结构自定义,使用目前广泛使用的模板引擎来编写代码模板,如VeloCity'FreeMaker等快速和易于使用的模板引擎。代码模板引擎具有高效、易使用和强大的扩展性能,用户很容易创建和修改代码模板,从而能生成结构、风格、功能各异的代码。
[0034]如图2所示,系统在数据模型层由数据库模型、模型架构(又称操作模型)以及代码模板三部分构成,在代码生成的过程中,由模型分析模块从数据库模型及操作模型中获取有编程人员所指定的模型对象,通过模板引擎根据这些对象调用对应的代码模板,最后,代码生成器负责清理这些模型对象之间的关系,并根据模板引擎产生最终的基于对象的代码。
[0035]如图3所示,在代码生成器的具体设计中,采用模型驱动的思想。其中包括模型架构Schema、模型分析、模板引擎、代码等几部分功能。
[0036]模型架构文档Schema:采用XML来存储模型数据,作为代码生成的数据源。该数据模型XML文档中的结构和语法由XML Schema来定义。Schema定义了数据模型的规范和格式。
[0037]模型分析:主要负责读取数据模型和操作模型XML文件中的数据,并生成类似DOM的内存数模型,作为代码生成器的数据源,完成对象和控制层的数据准备工作。
[0038]模板引擎:采用目前比较流行的VeloCity、FreeMaker等模板引擎技术,用数据模型和操作模型中的数据替换模板文件中的可变部分生成最终的代码。
[0039]代码生成:根据上述生成的基础数据配合系统架构文档等信息完成代码的生成。在代码生成器中封装了模型到代码的生成规则和转换逻辑。
[0040]如图4所示,工作流程描述:
[0041]1、系统设计人员根据业务需求进行概念模型设计,生成相应的数据库表、外键关联等数据库对象。
[0042]2、数据库模型生成工具根据表结构生成初步的数据模型XML文档,开发人员在该文档的基础上进一步的完善,生成最终系统能够采用的数据模型文件。
[0043]3、高级系统开发人员在完全理解应用程序框架和业务实现模型的前提下手工编写代码,将其作为代码生成器的模板基础。
[0044]4、高级系统开发人员针对J2EE目标系统的特点,抽取并建立系统模板,生成代码执行的操作模型。
[0045]5、输入代表模块的数据表或SQL语句,执行代码生成系统,实现数据模型到代码模型的自动生成工作。
[0046]6、开发人员针对具有特殊性的代码,根据一定的模型修改规范,直接修改生成到的代码文件。
[0047]7、针对于业务需求变动或其他功能模块变动,修改数据库模型或页面模型后重新生成可变部分的代码,而对于手工添加的文档,系统保留,如果发生冲突,系统做预警说明。
[0048]8、经过多次迭代可发后,最后生成高质量的目标代码,经过编译测试后部署完成。
[0049]要说明的是,以上所述实施例是对本发明技术方案的说明而非限制,所属技术领域普通技术人员的等同替换或者根据现有技术而做的其他修改,只要没超出本发明技术方案的思路和范围,均应包含在本发明所要求的权利范围之内。
【主权项】
1.一种基于模型驱动生成代码的方法及系统,其特征在于:系统在数据模型层由数据库模型、模型架构以及代码模板三部分构成,在代码生成的过程中,由模型分析模块从数据库模型及操作模型中获取有编程人员所指定的模型对象,通过模板引擎根据这些对象调用对应的代码模板,最后,代码生成器负责清理这些模型对象之间的关系,并根据模板引擎产生最终的基于对象的代码。2.根据权利要求1所述的一种基于模型驱动生成代码的方法及系统,其特征在于:包括如下步骤: 模型架构文档Schema:采用XML来存储模型数据,作为代码生成的数据源,该数据模型XML文档中的结构和语法由XML Schema来定义,Schema定义了数据模型的规范和格式。 模型分析:主要负责读取数据模型和操作模型XML文件中的数据,并生成类似DOM的内存数模型,作为代码生成器的数据源,完成对象和控制层的数据准备工作。 模板引擎:采用目前比较流行的Velocity、FreeMaker等模板引擎技术,用数据模型和操作模型中的数据替换模板文件中的可变部分生成最终的代码。 代码生成:根据上述生成的基础数据配合系统架构文档等信息完成代码的生成,在代码生成器中封装了模型到代码的生成规则和转换逻辑。
【专利摘要】本发明公开了一种基于模型驱动生成代码的方法及系统,系统在数据模型层由数据库模型、模型架构以及代码模板三部分构成,在代码生成的过程中,由模型分析模块从数据库模型及操作模型中获取有编程人员所指定的模型对象,通过模板引擎根据这些对象调用对应的代码模板,最后,代码生成器负责清理这些模型对象之间的关系,并根据模板引擎产生最终的基于对象的代码。本发明一种基于模型驱动生成代码的方法及系统,积极性的代码生成模式;具有双向推导的代码生成机制;具有插件式的代码生成架构;高效率、高质量;因而采用代码生成技术能获得更高质量的代码。
【IPC分类】G06F9/44
【公开号】CN105242914
【申请号】CN201510556852
【发明人】陈勇, 胡中骥
【申请人】江苏马上游科技股份有限公司
【公开日】2016年1月13日
【申请日】2015年9月6日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1