CN104572072B - 一种对基于mvc模式的程序的语言转换方法与设备 - Google Patents
一种对基于mvc模式的程序的语言转换方法与设备 Download PDFInfo
- Publication number
- CN104572072B CN104572072B CN201410720735.1A CN201410720735A CN104572072B CN 104572072 B CN104572072 B CN 104572072B CN 201410720735 A CN201410720735 A CN 201410720735A CN 104572072 B CN104572072 B CN 104572072B
- Authority
- CN
- China
- Prior art keywords
- language
- program
- initial
- target
- conversion
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Abstract
本发明的目的是提供一种对基于MVC模式的程序的语言转换方法与设备。转换设备确定待转换的初始程序所采用的初始编程语言后,根据MVC模式,对所述初始程序的编码结构进行解析,以确定所述编码中的转换内容与非转换内容,并根据目标编程语言,结合所述转换内容,对所述转换内容执行语言转换,以生成一个或多个目标编码文件,最后将所述非转换内容以及所述目标编码文件进行框架转换,以生成与所述初始程序相对应的目标程序。与现有技术相比,本发明实现了一种对基于MVC模式的程序的语言自动转换的方法与设备,能够支持多种语言之间的转换,并支持不断新增语言及框架版本,具有较好的扩展性,提高了程序转换的效率,降低了开发时间与资源消耗。
Description
技术领域
本发明涉及互联网技术领域,尤其涉及一种对基于MVC模式的程序的语言转换的技术。
背景技术
随着互联网的不断发展以及互联网公司的成长,基于web的项目(如公司网站系统等)数不胜数。然而由于各类原因,例如开发项目时的需求不同、开发项目时的条件不同等,各个项目的开发方式不统一,导致业务的重用或合并困难,重新开发消耗过多的人力资源与时间资源。
现有技术中对编程语言转换的方式仅支持单种编程语言新旧版本之间或是单种编程工具新旧版本之间的转化,或者是直接人工对业务逻辑进行拆分从零开始重新开发,这种转换方式存在多种问题:
(1)局限性:仅限于单种语言新旧版本转换或者单种编程工具的项目结构新旧版本转换;
(2)片面性:仅限于单纯编程语言转换,针对编码逻辑及业务场景未做出相应的转换;
(3)非自动性:这种跨语言项目转换通常依赖架构师的设计知识,针对业务场景进行人工拆分重组,耗费大量的人力资源与时间资源;
(4)时效性差:现有方法往往无法及时响应当前业务场景,因此可能造成正在进行的重构项目延后或中断。
因此,如何实现编程语言的自动转换,成为了本领域技术人员亟待解决的问题。
发明内容
本发明的目的是提供一种对基于MVC模式的程序的语言转换方法与设备。
根据本发明的一个方面,提供了一种对基于MVC模式的程序的语言转换的方法,其中,该方法包括:
a确定待转换的初始程序所采用的初始编程语言,其中,所述初始编程语言包括初始语言类别与初始编程框架;
b根据MVC模式,对所述初始程序的编码结构进行解析,以确定所述编码中的转换内容与非转换内容;
c根据目标编程语言,结合所述转换内容,对所述转换内容执行语言转换,以生成一个或多个目标编码文件;
d将所述非转换内容以及所述目标编码文件进行框架转换,以生成与所述初始程序相对应的目标程序。
根据本发明的另一方面,还提供了一种对基于MVC模式的程序的语言转换的转换设备,其中,该设备包括:
用于确定待转换的初始程序所采用的初始编程语言的装置,其中,所述初始编程语言包括初始语言类别与初始编程框架;
用于根据MVC模式,对所述初始程序的编码结构进行解析,以确定所述编码中的转换内容与非转换内容的装置;
用于根据目标编程语言,结合所述转换内容,对所述转换内容执行语言转换,以生成一个或多个目标编码文件的装置;
用于将所述非转换内容以及所述目标编码文件进行框架转换,以生成与所述初始程序相对应的目标程序的装置。
与现有技术相比,本发明通过确定待转换的初始程序所采用的初始编程语言后,根据MVC模式,对所述初始程序的编码结构进行解析,以确定所述编码中的转换内容与非转换内容,并根据目标编程语言,结合所述转换内容,对所述转换内容执行语言转换,以生成一个或多个目标编码文件,最后将所述非转换内容以及所述目标编码文件进行框架转换,以生成与所述初始程序相对应的目标程序;从而实现了一种对基于MVC模式的程序的语言自动转换的方法与设备,能够支持多种语言之间的转换,并支持不断新增语言及框架版本,具有较好的扩展性,提高了程序转换的效率,降低了开发时间与资源消耗。
而且,本发明还可以根据测试用例,对所述初始程序以及目标程序进行测试,以对所述目标程序进行验证;进一步地,还可以通过生成初始逻辑执行树与目标逻辑执行树来对所述目标程序进行验证;从而本发明能够保证转换后的目标程序的可用性,并通过逻辑执行树提供了业务逻辑分析模块,以用于判断项目转换正确性,还可以实现项目设计及管理可视化展示需求。
而且,本发明还可以通过对待转换的初始程序的分析,确定所述初始程序所采用的初始编程语言,从而提供了一种基于语言和实现框架来判断初始编程语言的方法,自动识别初始程序的初始编程语言,进一步提高了语言自动转换的效率与灵活性。
而且,本发明还可以根据目标应用所对应的应用相关信息,确定目标编程语言,从而提供了一种自动确定目标编程语言的方法,使得所转换的目标程序能够自动与应用相关信息相匹配,从而更符合用户、系统等的需求,进一步提高了语言自动转换的效率。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1示出根据本发明一个方面的一种对基于MVC模式的程序的语言转换的转换设备示意图;
图2示出根据本发明一个优选实施例的一种对基于MVC模式的程序的语言转换的转换设备示意图;
图3示出根据本发明另一个方面的一种对基于MVC模式的程序的语言转换的方法流程图;
图4示出根据本发明一个优选实施例的一种对基于MVC模式的程序的语言转换的方法流程图;
图5示出根据本发明的一个优选实施例的一种逻辑执行树的示意图。
附图中相同或相似的附图标记代表相同或相似的部件。
具体实施方式
下面结合附图对本发明作进一步详细描述。
图1示出根据本发明一个方面的一种对基于MVC模式的程序的语言转换的转换设备示意图;其中,所述转换设备包括用于确定待转换的初始程序所采用的初始编程语言的装置(以下简称“初始语言确定装置1”),其中,所述初始编程语言包括初始语言类别与初始编程框架;用于根据MVC模式,对所述初始程序的编码结构进行解析,以确定所述编码中的转换内容与非转换内容的装置(以下简称“内容确定装置2”);用于根据目标编程语言,结合所述转换内容,对所述转换内容执行语言转换,以生成一个或多个目标编码文件的装置(以下简称“语言转换装置3”);用于将所述非转换内容以及所述目标编码文件进行框架转换,以生成与所述初始程序相对应的目标程序的装置(以下简称“框架转换装置4”)。
在此,所述转换设备包括但不限于网络设备、用户设备、或网络设备与用户设备通过网络相集成所构成的设备。其中,所述网络设备包括一种能够按照事先设定或存储的指令,自动进行数值计算和信息处理的电子设备,其硬件包括但不限于微处理器、专用集成电路(ASIC)、可编程门阵列(FPGA)、数字处理器(DSP)、嵌入式设备等。所述网络设备其包括但不限于计算机、网络主机、单个网络服务器、多个网络服务器集或多个服务器构成的云;在此,云由基于云计算(Cloud Computing)的大量计算机或网络服务器构成,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个虚拟超级计算机。所述用户设备其包括但不限于任何一种可与用户通过键盘、触摸板、或声控设备进行人机交互的电子产品。所述网络包括但不限于互联网、广域网、城域网、局域网、VPN网络、无线自组织网络(Ad Hoc网络)等。本领域技术人员应能理解,其他的转换设备同样适用于本发明,也应包含在本发明保护范围以内,并在此以引用方式包含于此。
上述各装置之间是持续不断工作的,在此,本领域技术人员应理解“持续”是指上述各装置分别实时地或者按照设定的或实时调整的工作模式要求,进行一种或多种初始编程语言的确定、转换内容与非转换内容的确定、一个或多个目标编码文件的生成、目标程序的生成等,直至所述转换设备停止获取一个或多个待转换的初始程序。
在此,本发明可对基于MVC模式所开发的程序的任何语言之间进行转换。例如,若一个程序是基于MVC模式、以Java、PHP、Python、Ruby、C#等任意语言之一所编写的程序,则利用本发明,可将其编程语言其转换为其它编程语言,如将Python转换为PHP、将Java转换为C#等。所述MVC模式即为“模型(model)-视图(view)-控制器(controller)”。在此,所述语言以及转换的对应关系均为示例,并非是对本发明的限制,利用其它语言基于MVC模式所开发的程序,或者其它语言之间的转换关系,同样适用于本发明,并包含在本发明的保护范围内。
此外,本领域技术人员应该能理解,基于MVC模式、利用上述语言所编写程序,可以是web程序,也可以是其他能够适用于该方法进行语言转换的程序。
所述初始语言确定装置1确定待转换的初始程序所采用的初始编程语言,其中,所述初始编程语言包括初始语言类别与初始编程框架。
具体地,所述初始语言确定装置1获取用户或系统提交的待转换的初始程序,或者自动检测是否具有待转换的初始程序。
然后,当所述初始语言确定装置1获取到所述初始程序时,该装置可基于在获取所述初始程序时所获取的相关信息,确定所述初始程序所采用的初始编程语言,例如,从该初始程序的说明文档中提取所述初始程序所采用的编程语言、编程框架、框架版本等信息,或者,根据用户或系统的输入信息,直接获取所述初始程序所采用的初始编程语言。
或者,当所述初始语言确定装置1获取到所述初始程序时,该装置可直接获取所述初始程序的代码,或对所述初始程序进行反编译,以获取所述初始程序的代码;然后,通过对所述初始程序代码进行分析,如根据所述初始程序代码中的关键编码字段、头文件等,以确定所述初始程序所采用的初始编程语言。
其中,所述初始编程语言包括初始语言类别与初始编程框架;进一步地,还可以包括框架版本等信息。所述语言类别包括但不限于Java、PHP、Python、Ruby、C#等;所述框架版本信息与所述语言类别信息相对应,例如与PHP对应的编程框架包括但不限于yii、zend、laravel等,与Python对应的编程框架包括但不限于django、tornado、web.py等,与Java对应的编程框架包括但不限于SSH等。
优选地,所述初始语言确定装置1可以根据待转换的初始程序中的一个或多个初始关键词,确定所述初始程序的所采用的初始语言类别;根据所述初始语言类别,结合所述初始程序中的一个或多个优选关键词和/或所述初始程序所对应的组件信息,确定所述初始程序所采用的初始编程框架,从而确定所述初始程序所采用的初始编程语言。
具体地,所述初始语言确定装置1可以基于预先设定的关键词词库、数据库(所述关键词词库、数据库等之中,包含关键词与语言类别的对应关系,进一步地,还包括关键词语言特征与语言类别的对应关系),或者通过机器学习的方式,获取不同语言类别对应的一个或多个关键词和/或获取不同语言类别与关键词的语言特征的对应关系;然后所述初始语言确定装置1通过对待转换的初始程序进行搜索、扫描或提取,获取所述初始语言确定装置1中的一个或多个初始关键词。所述初始语言确定装置1将所获取的初始关键词在所述关键词词库、数据库或经由机器学习所获取的语言类别与关键词的对应关系中进行匹配;进一步地,对所述初始关键词的语言特征进行提取,将所述初始关键词以及其语言特征一起与所述关键词词库、数据库或对应关系中进行匹配,根据匹配结果,确定所述初始程序的所采用的初始语言类别。
在此,所述初始语言类别包括但不限于Java、PHP、Python、Ruby、C#等。所述关键词为编程语言中具有特定含义的字符,如class、abastract等。所述关键词语言特征为可唯一定义或识别语言的特性,例如:Java中的get/set方法可不成对出现,C#则要求get/set必须成对出现,PHP代码必须以<?php开头,python代码的函数必须使用def定义。因此,若所述初始语言确定装置1获取到关键词“<?php”,则可直接确认该初始语言类别为PHP;若所述初始语言确定装置1获取到关键词“get”“set”,且“get/set”成对出现,则确认该初始语言类别为“C#”,若所述初始语言确定装置1获取到关键词“get”“set”,且“get/set”未成对出现,则确认该初始语言类别为“Java”。
然后,所述初始语言确定装置1根据所述初始语言类别,基于与确定所述初始关键词相同或相似的方式,在所述初始程序中提取与该初始语言类别所对应的优选关键词和/或该初始程序所对应的组件信息;然后,基于上述信息,确定所述初始程序所采用的初始编程框架。从而,所述初始语言确定装置1确定了初始语言类别与初始编程框架,即确定了所述初始程序所采用的初始编程语言。
在此,提取组件信息的方法可以例如:从所述初始程序中提取该程序所依赖的一个或多个第三方包或库,直接将所述包或库作为所述组件信息,若其中存在一个或多个与特定的编程框架相对应的包或库,则可直接确定所述初始编程框架;进一步地,还可以进一步基于所述初始程序中一个或多个组件的调用关系等,提取该程序所依赖的组件树,从而基于不同形态的组件树确定不同的框架版本等。
更优选地,所述转换设备还包括用于根据所述初始语言类别,确定与所述初始语言类别所对应的一个或多个优选关键词的装置(以下简称“优选确定装置”,未示出)。
具体地,所述优选确定装置可预先获取与该初始语言类别相对应的预先设定的优选关键词词库、数据库(所述优选关键词词库、数据库等之中,包含该初始语言类别的一个或多个优选关键词),或者通过机器学习的方式,基于所述初始语言类别的特定属性、函数实现,从底层代码或非底层代码中抽离得到与获取的该初始语言类别对应的一个或多个优选关键词集合。
所述内容确定装置2根据MVC模式,对所述初始程序的编码结构进行解析,以确定所述编码中的转换内容与非转换内容。
具体地,由于所述初始程序是基于MVC模式开发的程序,因此,所述内容确定装置2根据所述MVC模式,对所述初始程序的编码结构进行解析,将用于展示的前端静态代码部分作为不需要转换的内容,并将其他内容(即其他后端代码)作为所述编码中的转换内容。以web程序为例,利用MVC模式所编写的程序,前端静态代码依赖于浏览器解析执行,对后端编程语言无依赖性,并通过ajax技术完成json格式数据通信,因此,前后端交互简单,可将前端静态代码部分忽略转换直接使用。而对于其他内容,则需进行转换。
优选地,所述内容确定装置2根据MVC模式,识别所述编码结构中的表现层,以确定所述项目编码中的非转换内容;将所述编码结构中的模型层与控制层作为所述项目编码中的转换内容。
具体地,所述内容确定装置2根据所述MVC模式,基于预定的MVC模式开发标准或特定的字段、文件等属性,识别所述编码结构中的表现层(也称视图(view)),并将所述表现层作为所述项目编码中的非转换内容。
然后,所述内容确定装置2将MVC中的另外两层:模型层(model)以及控制层(controller)作为所述项目编码中的转换内容。在此,优选地,所述内容确定装置2先将所述模型层抽离,作为底层数据属性容器,通常情况下,对于该层内容,仅需进行语言转换,不需进行逻辑转换;最后,所述内容确定装置2将作为业务逻辑层的控制层抽离,进行语言转换与逻辑转换。
所述语言转换装置3根据目标编程语言,结合所述转换内容,对所述转换内容执行语言转换,以生成一个或多个目标编码文件。
具体地,所述语言转换装置3直接根据缺省设置、用户或系统的制定设置等方式,确定所述目标编程语言。
或者,优选地,所述转换设备还包括根据目标应用所对应的应用相关信息,确定目标编程语言的装置(以下简称“目标语言确定装置”)。其中,所述应用相关信息包括但不限于所述目标应用所对应的系统相关信息、目标应用的应用环境等;在此,所述系统相关信息如该目标应用所要加入的平台系统的编程语言、该平台系统的基本操作系统以及该操作系统的相关信息、该平台系统对各个子应用的编程语言要求,所述目标应用的应用环境如所述目标应用即将预装的操作系统的相关信息(如该操作系统对哪种编程语言所开发的程序的支持更佳)等。从而,所述目标语言确定装置通过对所述应用相关信息的综合分析,确定该目标应用采用何种编程语言会更符合平台系统和/或操作系统的需求,然后,选择一种或多种编程语言作为所述目标编程语言。在此,所述目标编程语言包括目标语言类别与目标编程框架。
例如,若初始程序是用JAVA开发的,而由于平台系统是采用C#开发的,考虑到需要将该初始程序合并至该平台系统中,因此,确定所述目标编程语言为C#。
然后,所述语言转换装置3根据目标编程语言与初始编程语言在语法上的对应关系,将所述转换内容进行语言转换。在此,所述转换可以是以每个待转换的文件为单位,依次对每个文件、以及每个文件的每一行进行逐词逐行转换,以生成一个或多个目标编码文件。
例如,所述初始程序采用JAVA语言,该初始程序包含一段代码如下:
该段代码是对一个类的定义,内部有个入口函数,并在屏幕上打印“hehe”。
上述待转换的内容需要通过语言转换,被转换为C#,则目标程序如下:
在上述转换,每一行的转换方法为:
a)对类定义“public class A”转换:由于java和c#对public的定义方法完全相同,因此不需要转换,在此,本领域技术人员应能理解,java和c#中还包括其他定义相同的内容,如对public/protect/private的定义,因此,在这两种语言间,public/protect/private则不需转换;而若定义不同,则需要进行语言转换;
b)对类中函数转换,传入参数格式及传入参数名需要一致;
c)对类中函数实现转换,在此,仅涉及单纯的语言转换。这个例子仅有一个打印的步骤,java的system.out.print与c#的Console.WriteLine相同意义的函数,转换后需要对传递的参数也进行转化。
或者,优选地,所述语言转换装置3通过直接获取第三方设备相交互,或者过对所述目标编程语言进行解析,获取与所述目标编程语言相对应的语言基本组成,其中,所述语言基本组成包括但不限于变量声明、控制语句、函数定义、函数调用等多个方面。然后,所述语言转换装置3根据所述语言基本组成,对所述转换内容进行相应的解析,并基于所述语言基本组成的层次关系,对所述转换内容进行逐步逐层转换,以生成一个或多个目标编码文件。
所述框架转换装置4将所述非转换内容以及所述目标编码文件进行框架转换,以生成与所述初始程序相对应的目标程序。
具体地,所述框架转换装置4根据目标编程语言的目标编程框架,以及所述目标编程框架与所述初始编程框架的对应关系,对所述目标编码文件以及所述非转换内容进行框架转换,以生成与所述初始程序相对应的目标程序;在此,所述框架包括但不限于程序的结构以及用于进行程序内文件调用的各个文件夹,每个文件夹都有固定的用处,从而,当所述框架转换装置4进行框架转换时,按照所述目标编程框架与所述初始编程框架的对应关系,将所述非转换内容以及所述目标编码文件分模块放入目标编程框架的对应文件夹中,最终生成与所述初始程序相对应的目标程序。
例如,在初始编程框架中,利用初始语言类别所编写的文件1、文件2被放进文件夹1中,不需要进行转换的文件3以及需要转换的文件4被放进文件夹2中;在目标编程框架中,与文件夹1的功能相对应的文件夹为1’,与文件夹2的功能相对应的文件夹为2’,当所述语言转换装置3将文件1、2、4转换为目标语言类别后,所述框架转换装置4将转换后的文件1、2放进文件夹1’中,并将文件3以及转换后的文件4放进文件夹2’中。
图2示出根据本发明一个优选实施例的一种对基于MVC模式的程序的语言转换的转换设备示意图;其中,所述转换设备包括用于确定待转换的初始程序所采用的初始编程语言的装置(以下简称“初始语言确定装置1’”),其中,所述初始编程语言包括初始语言类别与初始编程框架;用于根据MVC模式,对所述初始程序的编码结构进行解析,以确定所述编码中的转换内容与非转换内容的装置(以下简称“内容确定装置2’”);用于根据目标编程语言,结合所述转换内容,对所述转换内容执行语言转换,以生成一个或多个目标编码文件的装置(以下简称“语言转换装置3’”);用于将所述非转换内容以及所述目标编码文件进行框架转换,以生成与所述初始程序相对应的目标程序的装置(以下简称“框架转换装置4’”);用于根据测试用例,对所述初始程序以及目标程序进行测试,以对所述目标程序进行验证的装置(以下简称“测试装置5’”)。
其中,所述初始语言确定装置1’、内容确定装置2’、呈语言转换装置3’、框架转换装置4’与图1所示对应装置相同或基本相同,故此处不再赘述,并通过引用的方式包含于此。
上述各装置之间是持续不断工作的,在此,本领域技术人员应理解“持续”是指上述各装置分别实时地或者按照设定的或实时调整的工作模式要求,进行一种或多种初始编程语言的确定、转换内容与非转换内容的确定、一个或多个目标编码文件的生成、目标程序的生成、目标程序的验证等,直至所述转换设备停止获取一个或多个待转换的初始程序。
所述测试装置5’根据测试用例,对所述初始程序以及目标程序进行测试,以对所述目标程序进行验证。
具体地,所述测试装置5’实时生成用于对所述初始程序和/或所述目标程序的测试用例,或者直接获取用于验证所述初始程序的历史测试用例等,从而取得一个或多个测试用例。其中,所述测试用例中包括一个或多个输入请求,进一步地,还可以包括与所述输入请求相对应的预计输入响应。优选地,所述输入请求覆盖所述初始程序和/或所述目标程序的业务逻辑全部路径。
然后,所述测试装置5’分别向所述初始程序与目标程序中,输入测试用例中的一个或多个输入请求,然后根据相同输入请求所对应的输入响应,验证所述目标程序是否与所述初始程序一致。
或者,所述测试装置5’根据所述输入请求,对请求处理流程进行跟踪分析,利用分析业务逻辑产生的代码执行树,进入函数模块进行执行,验证对所述输入请求的输入响应是否正确。
在此,本领域技术人员应能理解,若所述输入响应不一致,则表示验证失败,可通过人工分析或机器学习等方式,判断处理的哪个节点或步骤存在问题,并进行调整。
优选地,所述内容确定装置2’还包括根据所述转换内容,生成与所述初始程序相对应的初始逻辑执行树的单元(以下简称“初始逻辑单元”,未示出),所述测试装置5’根据所述目标程序,生成与所述目标程序相对应的目标逻辑执行树;根据测试用例,结合所述初始逻辑执行树与所述目标逻辑执行树,对所述初始程序以及目标程序进行测试,以对所述目标程序进行验证。
具体地,所述内容确定装置2’对所述初始程序的转换内容中的业务逻辑代码进行抽离,所述初始逻辑单元对业务逻辑代码进行进一步分析,基于彼此的调用关系、代码执行步骤等,确定业务逻辑依赖关系以及执行顺序,并生成初始逻辑执行树。其中,所述初始逻辑执行树中包括输入请求与调用线程的对应关系、初始程序中的类/模块等之间的调用关系、以及类/模块对线程的调用关系等,如图5所示。
类似地,所述测试装置5’根据所述目标程序,生成与所述目标程序相对应的目标逻辑执行树;在此,所述目标逻辑执行树的生成方式与所述初始逻辑执行树的生成方式相同或相似,区别在于所述目标逻辑执行树是针对所生成的目标程序分析后得到的。
然后,当所述测试装置5’执行所述测试用例时,所述测试装置5’根据所输入的输入请求,比较该输入请求所经过的业务逻辑路径是否一致,在各模块执行后的输出响应是否一致,若一致,则完成语言转换的过程。
优选地,所述测试装置5’可先对所述初始逻辑执行树与所述目标逻辑执行树进行简单比较,匹配两个逻辑执行树的分支是否正确;若通过上述测试,才继续根据测试用例进行比较。
在此,本领域技术人员应能理解,所述逻辑执行树是可见的,即生成一个如图5所示的树状结构,并展现出来;所述逻辑执行树也可以是不可见的,即对所述初始程序与目标程序进行分析后,仅提供后台的比较或匹配过程;所述逻辑执行树可以是抽象的方式显示,如图5所示,也可以是根据测试用例,通过逐步展现测试用例的每一步输入与输出,从而具体地显示所述逻辑执行树。
图3示出根据本发明另一个方面的一种对基于MVC模式的程序的语言转换的方法流程图;其中,在步骤S1中,所述转换设备确定待转换的初始程序所采用的初始编程语言,其中,所述初始编程语言包括初始语言类别与初始编程框架;在步骤S2中,所述转换设备根据MVC模式,对所述初始程序的编码结构进行解析,以确定所述编码中的转换内容与非转换内容;在步骤S3中,所述转换设备根据目标编程语言,结合所述转换内容,对所述转换内容执行语言转换,以生成一个或多个目标编码文件;在步骤S4中,所述转换设备将所述非转换内容以及所述目标编码文件进行框架转换,以生成与所述初始程序相对应的目标程序。
上述各步骤之间是持续不断工作的,在此,本领域技术人员应理解“持续”是指上述各步骤分别实时地或者按照设定的或实时调整的工作模式要求,进行一种或多种初始编程语言的确定、转换内容与非转换内容的确定、一个或多个目标编码文件的生成、目标程序的生成等,直至所述转换设备停止获取一个或多个待转换的初始程序。
在步骤S1中,所述转换设备确定待转换的初始程序所采用的初始编程语言,其中,所述初始编程语言包括初始语言类别与初始编程框架。
具体地,在步骤S1中,所述转换设备获取用户或系统提交的待转换的初始程序,或者自动检测是否具有待转换的初始程序。
然后,当所述转换设备获取到所述初始程序时,该设备可基于在获取所述初始程序时所获取的相关信息,确定所述初始程序所采用的初始编程语言,例如,从该初始程序的说明文档中提取所述初始程序所采用的编程语言、编程框架、框架版本等信息,或者,根据用户或系统的输入信息,直接获取所述初始程序所采用的初始编程语言。
或者,当所述转换设备获取到所述初始程序时,该设备可直接获取所述初始程序的代码,或对所述初始程序进行反编译,以获取所述初始程序的代码;然后,通过对所述初始程序代码进行分析,如根据所述初始程序代码中的关键编码字段、头文件等,以确定所述初始程序所采用的初始编程语言。
其中,所述初始编程语言包括初始语言类别与初始编程框架;进一步地,还可以包括框架版本等信息。所述语言类别包括但不限于Java、PHP、Python、Ruby、C#等;所述框架版本信息与所述语言类别信息相对应,例如与PHP对应的编程框架包括但不限于yii、zend、laravel等,与Python对应的编程框架包括但不限于django、tornado、web.py等,与Java对应的编程框架包括但不限于SSH等。
优选地,在步骤S1中,所述转换设备可以根据待转换的初始程序中的一个或多个初始关键词,确定所述初始程序的所采用的初始语言类别;根据所述初始语言类别,结合所述初始程序中的一个或多个优选关键词和/或所述初始程序所对应的组件信息,确定所述初始程序所采用的初始编程框架,从而确定所述初始程序所采用的初始编程语言。
具体地,在步骤S1中,所述转换设备可以基于预先设定的关键词词库、数据库(所述关键词词库、数据库等之中,包含关键词与语言类别的对应关系,进一步地,还包括关键词语言特征与语言类别的对应关系),或者通过机器学习的方式,获取不同语言类别对应的一个或多个关键词和/或获取不同语言类别与关键词的语言特征的对应关系;然后所述转换设备通过对待转换的初始程序进行搜索、扫描或提取,获取所述转换设备中的一个或多个初始关键词。所述转换设备将所获取的初始关键词在所述关键词词库、数据库或经由机器学习所获取的语言类别与关键词的对应关系中进行匹配;进一步地,对所述初始关键词的语言特征进行提取,将所述初始关键词以及其语言特征一起与所述关键词词库、数据库或对应关系中进行匹配,根据匹配结果,确定所述初始程序的所采用的初始语言类别。
在此,所述初始语言类别包括但不限于Java、PHP、Python、Ruby、C#等。所述关键词为编程语言中具有特定含义的字符,如class、abastract等。所述关键词语言特征为可唯一定义或识别语言的特性,例如:Java中的get/set方法可不成对出现,C#则要求get/set必须成对出现,PHP代码必须以<?php开头,python代码的函数必须使用def定义。因此,若所述转换设备获取到关键词“<?php”,则可直接确认该初始语言类别为PHP;若所述转换设备获取到关键词“get”“set”,且“get/set”成对出现,则确认该初始语言类别为“C#”,若所述转换设备获取到关键词“get”“set”,且“get/set”未成对出现,则确认该初始语言类别为“Java”。
然后,在步骤S1中,所述转换设备根据所述初始语言类别,基于与确定所述初始关键词相同或相似的方式,在所述初始程序中提取与该初始语言类别所对应的优选关键词和/或该初始程序所对应的组件信息;然后,基于上述信息,确定所述初始程序所采用的初始编程框架。从而,所述转换设备确定了初始语言类别与初始编程框架,即确定了所述初始程序所采用的初始编程语言。
在此,提取组件信息的方法可以例如:从所述初始程序中提取该程序所依赖的一个或多个第三方包或库,直接将所述包或库作为所述组件信息,若其中存在一个或多个与特定的编程框架相对应的包或库,则可直接确定所述初始编程框架;进一步地,还可以进一步基于所述初始程序中一个或多个组件的调用关系等,提取该程序所依赖的组件树,从而基于不同形态的组件树确定不同的框架版本等。
更优选地,所述方法还包括步骤S6;在步骤6中,所述转换设备用于根据所述初始语言类别,确定与所述初始语言类别所对应的一个或多个优选关键词。
具体地,在步骤S6中,所述转换设备可预先获取与该初始语言类别相对应的预先设定的优选关键词词库、数据库(所述优选关键词词库、数据库等之中,包含该初始语言类别的一个或多个优选关键词),或者通过机器学习的方式,基于所述初始语言类别的特定属性、函数实现,从底层代码或非底层代码中抽离得到与获取的该初始语言类别对应的一个或多个优选关键词集合。
在步骤S2中,所述转换设备根据MVC模式,对所述初始程序的编码结构进行解析,以确定所述编码中的转换内容与非转换内容。
具体地,由于所述初始程序是基于MVC模式开发的程序,因此,在步骤S2中,所述转换设备根据所述MVC模式,对所述初始程序的编码结构进行解析,将用于展示的前端静态代码部分作为不需要转换的内容,并将其他内容(即其他后端代码)作为所述编码中的转换内容。以web程序为例,利用MVC模式所编写的程序,前端静态代码依赖于浏览器解析执行,对后端编程语言无依赖性,并通过ajax技术完成json格式数据通信,因此,前后端交互简单,可将前端静态代码部分忽略转换直接使用。而对于其他内容,则需进行转换。
优选地,在步骤S2中,所述转换设备根据MVC模式,识别所述编码结构中的表现层,以确定所述项目编码中的非转换内容;将所述编码结构中的模型层与控制层作为所述项目编码中的转换内容。
具体地,在步骤S2中,所述转换设备根据所述MVC模式,基于预定的MVC模式开发标准或特定的字段、文件等属性,识别所述编码结构中的表现层(也称视图(view)),并将所述表现层作为所述项目编码中的非转换内容。
然后,所述转换设备将MVC中的另外两层:模型层(model)以及控制层(controller)作为所述项目编码中的转换内容。在此,优选地,所述内容确定装置2先将所述模型层抽离,作为底层数据属性容器,通常情况下,对于该层内容,仅需进行语言转换,不需进行逻辑转换;最后,所述内容确定装置2将作为业务逻辑层的控制层抽离,进行语言转换与逻辑转换。
在步骤S3中,所述转换设备根据目标编程语言,结合所述转换内容,对所述转换内容执行语言转换,以生成一个或多个目标编码文件。
具体地,在步骤S3中,所述转换设备直接根据缺省设置、用户或系统的制定设置等方式,确定所述目标编程语言。
或者,优选地,所述方法还包括步骤S7;在步骤S7中,所述转换设备根据目标应用所对应的应用相关信息,确定目标编程语言。其中,所述应用相关信息包括但不限于所述目标应用所对应的系统相关信息、目标应用的应用环境等;在此,所述系统相关信息如该目标应用所要加入的平台系统的编程语言、该平台系统的基本操作系统以及该操作系统的相关信息、该平台系统对各个子应用的编程语言要求,所述目标应用的应用环境如所述目标应用即将预装的操作系统的相关信息(如该操作系统对哪种编程语言所开发的程序的支持更佳)等。从而,在步骤S7中,所述转换设备通过对所述应用相关信息的综合分析,确定该目标应用采用何种编程语言会更符合平台系统和/或操作系统的需求,然后,选择一种或多种编程语言作为所述目标编程语言。在此,所述目标编程语言包括目标语言类别与目标编程框架。
例如,若初始程序是用JAVA开发的,而由于平台系统是采用C#开发的,考虑到需要将该初始程序合并至该平台系统中,因此,确定所述目标编程语言为C#。
然后,在步骤S3中,所述转换设备根据目标编程语言与初始编程语言在语法上的对应关系,将所述转换内容进行语言转换。在此,所述转换可以是以每个待转换的文件为单位,依次对每个文件、以及每个文件的每一行进行逐词逐行转换,以生成一个或多个目标编码文件。
例如,所述初始程序采用JAVA语言,该初始程序包含一段代码如下:
该段代码是对一个类的定义,内部有个入口函数,并在屏幕上打印“hehe”。
上述待转换的内容需要通过语言转换,被转换为C#,则目标程序如下:
在上述转换,每一行的转换方法为:
a)对类定义“public class A”转换:由于java和c#对public的定义方法完全相同,因此不需要转换,在此,本领域技术人员应能理解,java和c#中还包括其他定义相同的内容,如对public/protect/private的定义,因此,在这两种语言间,public/protect/private则不需转换;而若定义不同,则需要进行语言转换;
b)对类中函数转换,传入参数格式及传入参数名需要一致;
c)对类中函数实现转换,在此,仅涉及单纯的语言转换。这个例子仅有一个打印的步骤,java的system.out.print与c#的Console.WriteLine相同意义的函数,转换后需要对传递的参数也进行转化。
或者,优选地在步骤S3中,所述转换设备通过直接获取第三方设备相交互,或者过对所述目标编程语言进行解析,获取与所述目标编程语言相对应的语言基本组成,其中,所述语言基本组成包括但不限于变量声明、控制语句、函数定义、函数调用等多个方面。然后,所述转换设备根据所述语言基本组成,对所述转换内容进行相应的解析,并基于所述语言基本组成的层次关系,对所述转换内容进行逐步逐层转换,以生成一个或多个目标编码文件。
在步骤S4中,所述转换设备将所述非转换内容以及所述目标编码文件进行框架转换,以生成与所述初始程序相对应的目标程序。
具体地,在步骤S4中,所述转换设备根据目标编程语言的目标编程框架,以及所述目标编程框架与所述初始编程框架的对应关系,对所述目标编码文件以及所述非转换内容进行框架转换,以生成与所述初始程序相对应的目标程序;在此,所述框架包括但不限于程序的结构以及用于进行程序内文件调用的各个文件夹,每个文件夹都有固定的用处,从而,当所述转换设备进行框架转换时,按照所述目标编程框架与所述初始编程框架的对应关系,将所述非转换内容以及所述目标编码文件分模块放入目标编程框架的对应文件夹中,最终生成与所述初始程序相对应的目标程序。
例如,在初始编程框架中,利用初始语言类别所编写的文件1、文件2被放进文件夹1中,不需要进行转换的文件3以及需要转换的文件4被放进文件夹2中;在目标编程框架中,与文件夹1的功能相对应的文件夹为1’,与文件夹2的功能相对应的文件夹为2’,当在步骤S3中,所述转换设备将文件1、2、4转换为目标语言类别后,在步骤S4中,所述转换设备将转换后的文件1、2放进文件夹1’中,并将文件3以及转换后的文件4放进文件夹2’中。
图4示出根据本发明一个优选实施例的一种对基于MVC模式的程序的语言转换的方法流程图;其中,在步骤S1’中,所述转换设备确定待转换的初始程序所采用的初始编程语言,其中,所述初始编程语言包括初始语言类别与初始编程框架;在步骤S2’中,所述转换设备根据MVC模式,对所述初始程序的编码结构进行解析,以确定所述编码中的转换内容与非转换内容;在步骤S3’中,所述转换设备根据目标编程语言,结合所述转换内容,对所述转换内容执行语言转换,以生成一个或多个目标编码文件;在步骤S4’中,所述转换设备将所述非转换内容以及所述目标编码文件进行框架转换,以生成与所述初始程序相对应的目标程序;在步骤S5’中,所述转换设备根据测试用例,对所述初始程序以及目标程序进行测试,以对所述目标程序进行验证。
其中,所述步骤S1’、步骤S2’、步骤S3’、步骤S4’与图3所示对应步骤相同或基本相同,故此处不再赘述,并通过引用的方式包含于此。
上述各步骤之间是持续不断工作的,在此,本领域技术人员应理解“持续”是指上述各步骤分别实时地或者按照设定的或实时调整的工作模式要求,进行一种或多种初始编程语言的确定、转换内容与非转换内容的确定、一个或多个目标编码文件的生成、目标程序的生成、目标程序的验证等,直至所述转换设备停止获取一个或多个待转换的初始程序。
在步骤S5’中,所述转换设备根据测试用例,对所述初始程序以及目标程序进行测试,以对所述目标程序进行验证。
具体地,在步骤S5’中,所述转换设备实时生成用于对所述初始程序和/或所述目标程序的测试用例,或者直接获取用于验证所述初始程序的历史测试用例等,从而取得一个或多个测试用例。其中,所述测试用例中包括一个或多个输入请求,进一步地,还可以包括与所述输入请求相对应的预计输入响应。优选地,所述输入请求覆盖所述初始程序和/或所述目标程序的业务逻辑全部路径。
然后,所述转换设备分别向所述初始程序与目标程序中,输入测试用例中的一个或多个输入请求,然后根据相同输入请求所对应的输入响应,验证所述目标程序是否与所述初始程序一致。
或者,所述转换设备根据所述输入请求,对请求处理流程进行跟踪分析,利用分析业务逻辑产生的代码执行树,进入函数模块进行执行,验证对所述输入请求的输入响应是否正确。
在此,本领域技术人员应能理解,若所述输入响应不一致,则表示验证失败,可通过人工分析或机器学习等方式,判断处理的哪个节点或步骤存在问题,并进行调整。
优选地,所述步骤S2’还包括步骤S21’;在步骤S21’中,所述转换设备根据所述转换内容,生成与所述初始程序相对应的初始逻辑执行树;在步骤S5’中,所述转换设备根据所述目标程序,生成与所述目标程序相对应的目标逻辑执行树;根据测试用例,结合所述初始逻辑执行树与所述目标逻辑执行树,对所述初始程序以及目标程序进行测试,以对所述目标程序进行验证。
具体地,所述转换设备对所述初始程序的转换内容中的业务逻辑代码进行抽离,在步骤S21’中,所述转换设备对业务逻辑代码进行进一步分析,基于彼此的调用关系、代码执行步骤等,确定业务逻辑依赖关系以及执行顺序,并生成初始逻辑执行树。其中,所述初始逻辑执行树中包括输入请求与调用线程的对应关系、初始程序中的类/模块等之间的调用关系、以及类/模块对线程的调用关系等,如图5所示。
类似地,在步骤S5’中,所述转换设备根据所述目标程序,生成与所述目标程序相对应的目标逻辑执行树;在此,所述目标逻辑执行树的生成方式与所述初始逻辑执行树的生成方式相同或相似,区别在于所述目标逻辑执行树是针对所生成的目标程序分析后得到的。
然后,当所述转换设备执行所述测试用例时,在步骤S5’中,所述转换设备根据所输入的输入请求,比较该输入请求所经过的业务逻辑路径是否一致,在各模块执行后的输出响应是否一致,若一致,则完成语言转换的过程。
优选地,在步骤S5’中,所述转换设备可先对所述初始逻辑执行树与所述目标逻辑执行树进行简单比较,匹配两个逻辑执行树的分支是否正确;若通过上述测试,才继续根据测试用例进行比较。
在此,本领域技术人员应能理解,所述逻辑执行树是可见的,即生成一个如图5所示的树状结构,并展现出来;所述逻辑执行树也可以是不可见的,即对所述初始程序与目标程序进行分析后,仅提供后台的比较或匹配过程;所述逻辑执行树可以是抽象的方式显示,如图5所示,也可以是根据测试用例,通过逐步展现测试用例的每一步输入与输出,从而具体地显示所述逻辑执行树。
需要注意的是,本发明可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本发明的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本发明的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁或光驱动器或软磁盘及类似设备。另外,本发明的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。
另外,本发明的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本发明的方法和/或技术方案。而调用本发明的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本发明的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本发明的多个实施例的方法和/或技术方案。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
Claims (14)
1.一种对基于MVC模式的程序的语言转换的方法,其中,该方法包括以下步骤:
a确定待转换的初始程序所采用的初始编程语言,其中,所述初始编程语言包括初始语言类别与初始编程框架;
b根据MVC模式,识别所述初始程序的编码结构中的表现层,以确定项目编码中的非转换内容,将所述编码结构中的模型层与控制层作为所述项目编码中的转换内容;
c根据目标编程语言,结合所述转换内容,对所述转换内容执行语言转换,以生成一个或多个目标编码文件;
d将所述非转换内容以及所述目标编码文件进行框架转换,以生成与所述初始程序相对应的目标程序。
2.根据权利要求1所述的方法,其中,该方法还包括以下步骤:
x根据测试用例,对所述初始程序以及目标程序进行测试,以对所述目标程序进行验证。
3.根据权利要求2所述的方法,其中,所述步骤b还包括:
-根据所述转换内容,生成与所述初始程序相对应的初始逻辑执行树;
其中,所述步骤x包括:
-根据所述目标程序,生成与所述目标程序相对应的目标逻辑执行树;
-根据测试用例,结合所述初始逻辑执行树与所述目标逻辑执行树,对所述初始程序以及目标程序进行测试,以对所述目标程序进行验证。
4.根据权利要求1至3中任一项所述的方法,其中,所述步骤a包括:
-根据待转换的初始程序中的一个或多个初始关键词,确定所述初始程序的所采用的初始语言类别;
-根据所述初始语言类别,结合所述初始程序中的一个或多个优选关键词和/或所述初始程序所对应的组件信息,确定所述初始程序所采用的初始编程框架,从而确定所述初始程序所采用的初始编程语言。
5.根据权利要求4所述的方法,其中,该方法还包括:
-根据所述初始语言类别,确定与所述初始语言类别所对应的一个或多个优选关键词。
6.根据权利要求1至3中任一项所述的方法,其中,所述步骤c包括:
-解析目标编程语言,以确定与所述目标编程语言相对应的语言基本组成;
-根据所述目标编程语言所对应的语言基本组成,结合所述转换内容,对所述转换内容执行语言转换,以生成一个或多个目标编码文件。
7.根据权利要求1至3中任一项所述的方法,其中,该方法还包括:
-根据目标应用所对应的应用相关信息,确定目标编程语言;
其中,所述步骤c包括:
-根据所述目标编程语言,结合所述转换内容,对所述转换内容执行语言转换,以生成一个或多个目标编码文件。
8.一种对基于MVC模式的程序的语言转换的转换设备,其中,该设备包括:
用于确定待转换的初始程序所采用的初始编程语言的装置,其中,所述初始编程语言包括初始语言类别与初始编程框架;
用于根据MVC模式,识别所述初始程序的编码结构中的表现层,以确定项目编码中的非转换内容,并将所述编码结构中的模型层与控制层作为所述项目编码中的转换内容的装置;
用于根据目标编程语言,结合所述转换内容,对所述转换内容执行语言转换,以生成一个或多个目标编码文件的装置;
用于将所述非转换内容以及所述目标编码文件进行框架转换,以生成与所述初始程序相对应的目标程序的装置。
9.根据权利要求8所述的转换设备,其中,该设备还包括:
用于根据测试用例,对所述初始程序以及目标程序进行测试,以对所述目标程序进行验证的装置。
10.根据权利要求9所述的转换设备,其中,用于确定所述编码中的转换内容与非转换内容的装置还包括:
用于根据所述转换内容,生成与所述初始程序相对应的初始逻辑执行树的单元;
其中,用于对所述目标程序进行验证的装置用于:
-根据所述目标程序,生成与所述目标程序相对应的目标逻辑执行树;
-根据测试用例,结合所述初始逻辑执行树与所述目标逻辑执行树,对所述初始程序以及目标程序进行测试,以对所述目标程序进行验证。
11.根据权利要求8至10中任一项所述的转换设备,其中,用于确定待转换的初始程序所采用的初始编程语言的装置用于:
-根据待转换的初始程序中的一个或多个初始关键词,确定所述初始程序的所采用的初始语言类别;
-根据所述初始语言类别,结合所述初始程序中的一个或多个优选关键词和/或所述初始程序所对应的组件信息,确定所述初始程序所采用的初始编程框架,从而确定所述初始程序所采用的初始编程语言。
12.根据权利要求11所述的转换设备,其中,该设备还包括:
用于根据所述初始语言类别,确定与所述初始语言类别所对应的一个或多个优选关键词的装置。
13.根据权利要求8至10中任一项所述的转换设备,其中,用于生成一个或多个目标编码文件的装置用于:
-解析目标编程语言,以确定与所述目标编程语言相对应的语言基本组成;
-根据所述目标编程语言所对应的语言基本组成,结合所述转换内容,对所述转换内容执行语言转换,以生成一个或多个目标编码文件。
14.根据权利要求8至10中任一项所述的转换设备,其中,该设备还包括:
用于根据目标应用所对应的应用相关信息,确定目标编程语言的装置;
其中,用于生成一个或多个目标编码文件的装置用于:
-根据所述目标编程语言,结合所述转换内容,对所述转换内容执行语言转换,以生成一个或多个目标编码文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410720735.1A CN104572072B (zh) | 2014-12-01 | 2014-12-01 | 一种对基于mvc模式的程序的语言转换方法与设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410720735.1A CN104572072B (zh) | 2014-12-01 | 2014-12-01 | 一种对基于mvc模式的程序的语言转换方法与设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104572072A CN104572072A (zh) | 2015-04-29 |
CN104572072B true CN104572072B (zh) | 2017-09-29 |
Family
ID=53088238
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410720735.1A Active CN104572072B (zh) | 2014-12-01 | 2014-12-01 | 一种对基于mvc模式的程序的语言转换方法与设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104572072B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106484489A (zh) * | 2015-09-01 | 2017-03-08 | 阿里巴巴集团控股有限公司 | 一种扩展编程语言特性的方法及装置 |
CN105183476B (zh) * | 2015-09-09 | 2018-08-28 | 中国银行股份有限公司 | 一种跨平台应用程序的构建方法和装置 |
CN105336026B (zh) * | 2015-10-28 | 2018-04-17 | 广州穗通金融服务有限公司 | 一种支持多品牌电子密码锁的方法及系统 |
CN105912379B (zh) * | 2016-04-01 | 2019-07-23 | 青岛海信电器股份有限公司 | 一种编译任务管理方法及编译任务管理装置 |
CN106022483B (zh) * | 2016-05-11 | 2019-06-14 | 星环信息科技(上海)有限公司 | 机器学习模型之间进行转换的方法与设备 |
CN106126411B (zh) * | 2016-06-13 | 2019-01-01 | 广州酷狗计算机科技有限公司 | 一种对被测程序代码进行测试的方法和装置 |
CN106919434B (zh) * | 2017-03-22 | 2021-02-12 | 恒生电子股份有限公司 | 一种代码生成方法及装置 |
CN107506201A (zh) * | 2017-09-22 | 2017-12-22 | 厦门集微科技有限公司 | 一种python框架生成方法和系统 |
CN110399384B (zh) * | 2018-04-23 | 2023-12-15 | 阿里巴巴集团控股有限公司 | Udf适配方法、数据处理方法、设备及存储介质 |
CN109117362B (zh) * | 2018-06-26 | 2020-08-25 | 华东师范大学 | 一种基于中间语言的plc程序验证系统 |
CN110569063B (zh) * | 2019-08-30 | 2023-05-02 | 五八有限公司 | 一种子应用程序app生成方法和生成装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101216769A (zh) * | 2008-01-14 | 2008-07-09 | 浙江大学 | 层次化系统描述语言SmartC到C代码的自动转换方法 |
CN101261579A (zh) * | 2007-03-08 | 2008-09-10 | 青牛(北京)技术有限公司 | 一种实现VBScript语言跨平台应用的方法 |
CN103150200A (zh) * | 2013-04-08 | 2013-06-12 | 西安电子科技大学 | 一种计算机语言转换系统及c语言到msvl语言的转换方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6983456B2 (en) * | 2002-10-31 | 2006-01-03 | Src Computers, Inc. | Process for converting programs in high-level programming languages to a unified executable for hybrid computing platforms |
JP4712512B2 (ja) * | 2005-10-14 | 2011-06-29 | 富士通株式会社 | プログラム変換プログラム、プログラム変換装置、プログラム変換方法 |
-
2014
- 2014-12-01 CN CN201410720735.1A patent/CN104572072B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101261579A (zh) * | 2007-03-08 | 2008-09-10 | 青牛(北京)技术有限公司 | 一种实现VBScript语言跨平台应用的方法 |
CN101216769A (zh) * | 2008-01-14 | 2008-07-09 | 浙江大学 | 层次化系统描述语言SmartC到C代码的自动转换方法 |
CN103150200A (zh) * | 2013-04-08 | 2013-06-12 | 西安电子科技大学 | 一种计算机语言转换系统及c语言到msvl语言的转换方法 |
Non-Patent Citations (1)
Title |
---|
多程序设计语言转换系统的研究与设计;黄捷 等;《计算机科学》;20101231;第37卷(第12A期);第73-76页 * |
Also Published As
Publication number | Publication date |
---|---|
CN104572072A (zh) | 2015-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104572072B (zh) | 一种对基于mvc模式的程序的语言转换方法与设备 | |
Estefan | Survey of model-based systems engineering (MBSE) methodologies | |
CN106155686B (zh) | 界面生成方法、装置和系统 | |
CN103443786B (zh) | 识别网络浏览器中的并行布局的独立任务的机器学习方法 | |
US7721252B2 (en) | Apparatus and method for product-line architecture description and verification | |
JP2009509271A (ja) | 抽出、変換、及び読み込みタスクの構成に基づくデータプロファイルのための装置及び方法 | |
CN106233252A (zh) | 用于定制软件的动态更新安装器 | |
CN105550206B (zh) | 结构化查询语句的版本控制方法及装置 | |
AU2019204444B2 (en) | System and method for enrichment of ocr-extracted data | |
Schwartz et al. | Semantically enriched BIM life cycle assessment to enhance buildings’ environmental performance | |
CN109934227A (zh) | 图像文字识别系统和方法 | |
CN103955429B (zh) | 确定回归测试范围的方法及装置 | |
CN107704235A (zh) | 图形化建模中数据流程图的解析方法、系统及存储介质 | |
KR101877828B1 (ko) | 인공지능 기반의 사용자 인터페이스 통합 플랫폼 시스템 | |
Heyn et al. | A compositional approach to creating architecture frameworks with an application to distributed AI systems | |
CN103473243B (zh) | 生成语义网络服务文档的方法和设备 | |
CN114385150A (zh) | 基于智能引擎的低代码开发方法 | |
CN109120708A (zh) | 基于微服务组件的业务模块的构建方法、调用方法及装置 | |
CN112036843A (zh) | 基于rpa及ai的流程元素定位方法、装置、设备和介质 | |
CN107766033A (zh) | 一种基于问题框架的敏捷需求拆分方法 | |
CN104615438B (zh) | 一种软件产品线的特征切片模型检测方法 | |
Mickeviciute et al. | Transforming BPMN 2.0 business process model into SBVR business vocabulary and rules | |
CN106339381A (zh) | 一种信息处理方法及装置 | |
CN112667202B (zh) | Mda与bpmn相结合的软件设计方法和装置 | |
CN107168627A (zh) | 用于触摸屏的文本编辑方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |