公开/公告号CN106874014A
专利类型发明专利
公开/公告日2017-06-20
原文格式PDF
申请/专利权人 北京领航里程碑软件技术有限公司;
申请/专利号CN201710127864.3
发明设计人 张晨东;
申请日2017-03-06
分类号G06F9/44;G06F9/45;
代理机构北京凯特来知识产权代理有限公司;
代理人郑立明
地址 100097 北京市海淀区怡丽南园4号楼1单元401(住宅)
入库时间 2023-06-19 02:41:27
法律状态公告日
法律状态信息
法律状态
2020-05-22
授权
授权
2017-07-14
实质审查的生效 IPC(主分类):G06F9/44 申请日:20170306
实质审查的生效
2017-06-20
公开
公开
技术领域
本发明涉及计算机技术领域,尤其涉及一种基于模型和框架的三层代码生成方法。
背景技术
随着计算机硬件和软件技术的发展,软件生产方式正在发生重大的转变,在软件生产技术方面中有两个非常值得关注的主要特征,一是有计划的大规模软件复用技术,二是由模型驱动的软件代码自动生成技术。这两项技术的成功应用,都能显著地提高软件生产的质量和效率。当前,国内的软件企业的软件生产过程仍然主要依靠软件开发人员的人工设计和编码。具统计,一个软件开发工程师一天开发的有效代码行数为10-20行,而一个有一定规模的应用软件系统的代码量少则几万行,多则几十万行,甚至更多。这需要较多的软件开发人员和较长的工作周期,这对软件企业来说是成本负担的主要方面。因此,如何减少软件开发人员人工开发的代码量是提高软件企业生产率、降低生产成本的关键环节之一。
目前,常用的软件生产技术主要为:IBM Rational Rose工具提供的基于UML语言的模型设计技术和基于模型的软件代码生成技术,以及开源软件工具StarUML提供的基于UML语言的模型设计技术和基于模型的软件代码生成技术。
上述技术的共同特点是提供通用的模型驱动开发的前端模型设计工具,并根据模型生成各种软件设计语言的框架代码。其不足之处是,由于通用性的要求,无法与具体的领域和行业的应用特征相结合,其代码生成的能力和数量都受到很大程度的限制。具初步估计,使用这类工具生成的代码量,只占软件产品总代码量的10%或更少。
发明内容
本发明的目的是提供一种基于模型和框架的三层代码生成方法,可以实现大规模软件代码生成,提高软件生产力,节省生产成本,提升企业的综合竞争能力。
本发明的目的是通过以下技术方案实现的:
一种基于模型和框架的三层代码生成方法,包括:
确定软件建模方法和工具,以建立软件系统的模型。
根据软件的适应领域或行业确定相应的软件应用框架;
根据确定的软件应用框架,采用不同文本模板描述模型到不同的软件部件代码的映射关系,其包含三类映射关系:从模型到数据层代码的映射、从模型到通信层代码的映射,以及从模型到基本业务层代码的映射;
采用不同文本模板的动态运行控制技术实现从模型文件生成各个软件部件的软件代码,从而将模型转换成了三个层次上的应用软件代码片段;
基于特定的应用软件项目结构对所述三个层次上的应用软件代码片段进行组装;
将组装后应用软件代码基于特定的应用软件项目进行编辑及构建环境,从而完成软件应用项目的编辑、编译、运行和调试。
所述确定软件建模方法和工具,以建立软件系统的模型包括:
利用图形化的模型编辑工具,并采用类图加结构化注释为主的可视化方法进行软件系统建模,获得软件系统模型。
所述根据软件的适应领域或行业确定相应的软件应用框架包括:
当开发基于网络的数据应用程序时,选择基于Windows操作系统上用C#语言开发的Csla开源框架;当开发基于Web的网络应用,选择基于JAVA环境的Grails开源框架。
由上述本发明提供的技术方案可以看出,1)把模型驱动与软件框架相结合,实现大规模软件代码生成,提高软件生产力;2)针对特定领域或行业,实现数据、通信和基础业务等三层软件代码生成,相比同类方法,代码生成面更宽广,生成比例更高,在我们的几项应用软件开发中,自动生成的代码量达到系统代码总量的75%以上。3)基于应用项目结构的代码组装,使得从代码生成到立即可实施工程活动的软件项目之间建立了自动化通道,极大地减轻了软件开发人员进入工作状态的难度。综上所述,采用本发明提供的方法,能显著地提高企业生产特定领域或行业中应用软件产品的质量和效率,节省生产成本,提升企业的综合竞争能力。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他附图。
图1为本发明实施例提供的一种基于模型和框架的三层代码生成方法的流程图;
图2为本发明实施例提供的采用类图加结构化注释为主的可视化方法进行软件系统建模的示意图;
图3为本发明实施例提供的软件系统建模使某一个类的具体模型信息展开后的示意图;
图4为本发明实施例提供的模型属性的编辑界面示意图;
图5为本发明实施例提供的从模型到数据层代码的映射文件示例图;
图6为本发明实施例提供的从模型到通信层代码的映射文件示例图
图7为本发明实施例提供的从模型到基本业务层代码的映射文件示例图;
图8为本发明实施例提供的模型转换成功过程的信息显示界面示意图;
图9为本发明实施例提供的三个层次上的应用软件代码片段进行组装过程的运行示例图;
图10为本发明实施例提供的从模型生成的代码,并组装成应用项目后的界面示意图。
具体实施方式
下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明的保护范围。
图1为本发明实施例提供的一种基于模型和框架的三层代码生成方法的流程图;如图1所示,其主要包括如下步骤:
步骤11、确定软件建模方法和工具,以建立软件系统的模型。
具体的,利用图形化的模型编辑工具,并采用类图加结构化注释为主的可视化方法进行软件系统建模,获得软件系统模型。如图2所示,为采用类图加结构化注释为主的可视化方法进行软件系统建模的示意图,图3为图2的基中某一个类的具体模型信息展开后的示意图,图4为图3中模型属性的编辑界面示意图。
步骤12、根据软件的适应领域或行业确定相应的软件应用框架。
示例性的,当开发基于网络的数据应用程序时,选择基于Windows操作系统上用C#语言开发的Csla开源框架;当开发基于Web的网络应用,选择基于JAVA环境的Grails开源框架。
举例来说,可以应用Csla开源框架,其可适应多种相关领域和行业的网络数据应用软件系统的开发。本方案对框架的选择没有硬性约束条件,只要能够适应领域或行业应用软件的开发要求即可。
步骤13、根据确定的软件应用框架,采用不同文本模板描述模型到不同的软件部件代码的映射关系,其包含三类映射关系:从模型到数据层代码的映射、从模型到通信层代码的映射,以及从模型到基本业务层代码的映射。
从模型到数据层代码的映射文件示例如图5所示,从模型到通信层代码的映射文件示例如图6所示,从模型到基本业务层代码的映射文件示例如图7所示。
步骤14、采用不同文本模板的动态运行控制技术实现从模型文件生成各个软件部件的软件代码,从而将模型转换成了三个层次上的应用软件代码片段。
模型转换成功过程的信息显示界面示意图如图8所示。
步骤15、基于特定的应用软件项目结构对所述三个层次上的应用软件代码片段进行组装。
所述特定的应用软件可以根据实际情况来选择。示例性的,可以采用微软的Visual Studio集成开发环境的软件应用项目代码结构,组装过程的运行示例如图9所示。
步骤16、将组装后应用软件代码基于特定的应用软件项目进行编辑及构建环境,从而完成软件应用项目的编辑、编译、运行和调试。
从模型生成的代码,并组装成应用项目后的界面示意图如图10所示。
需要强调的是,上述附图2-图10仅用于示意,其中所涉及的具体结构或者文字等内容仅用于解释说明,并非构成限制。
基于本发明实施例的上述方案,已经为应用程序自动生成了三个层次上的大量代码,软件开发人员只需要在此基础上,继续开发核心业务中的少部分代码即可。在开发过程中,如果发现模型描述的内容不够充分,或想对模型进行调整,可以放心地调整模型,重新执行上面的各个过程,以增量式地生成更多的所需代码。由于在代码组装的过程中,上述方法把系统生成的代码和将来软件开发人员人工开发的代码进行了有计划的分离,因此,重新生成代码的过程不会影响软件开发人员已经通过人工开发的代码。这就保证了这个方法的实用性和安全性。
本发明的上述方案,主要具有如下优点:
1)把模型驱动与软件框架相结合,实现大规模软件代码生成,提高软件生产力。
2)针对特定领域或行业,实现数据、通信和基础业务等三层软件代码生成,相比同类方法,代码生成面更宽广,生成比例更高,在我们的几项应用软件开发中,自动生成的代码量达到系统代码总量的75%以上。
3)基于应用项目结构的代码组装,使得从代码生成到立即可实施工程活动的软件项目之间建立了自动化通道,极大地减轻了软件开发人员进入工作状态的难度。
综上所述,采用本发明提供的方法,能显著地提高企业生产特定领域或行业中应用软件产品的质量和效率,节省生产成本,提升企业的综合竞争能力。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明披露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范围为准。
机译: 基于模型的应用程序接口测试代码生成系统和方法
机译: 基于模型的开发辅助块,仿真系统和自动代码生成方法
机译: 基于模型的应用程序接口测试代码生成系统和方法