CN113535151A - 代码生成方法和装置 - Google Patents

代码生成方法和装置 Download PDF

Info

Publication number
CN113535151A
CN113535151A CN202010290687.2A CN202010290687A CN113535151A CN 113535151 A CN113535151 A CN 113535151A CN 202010290687 A CN202010290687 A CN 202010290687A CN 113535151 A CN113535151 A CN 113535151A
Authority
CN
China
Prior art keywords
image
unit
code
service
attribute information
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.)
Granted
Application number
CN202010290687.2A
Other languages
English (en)
Other versions
CN113535151B (zh
Inventor
偶玉彬
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Jingdong Zhenshi Information Technology Co Ltd
Original Assignee
Beijing Jingdong Zhenshi Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Jingdong Zhenshi Information Technology Co Ltd filed Critical Beijing Jingdong Zhenshi Information Technology Co Ltd
Priority to CN202010290687.2A priority Critical patent/CN113535151B/zh
Publication of CN113535151A publication Critical patent/CN113535151A/zh
Application granted granted Critical
Publication of CN113535151B publication Critical patent/CN113535151B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Processing Or Creating Images (AREA)

Abstract

本发明公开了一种代码生成方法和装置,涉及计算机技术领域。该方法的一具体实施方式包括:对预先绘制的、符合预设规则的图像进行识别以确定所述图像中的服务单元和引用单元;根据所述服务单元和所述引用单元对应的结构代码生成代码框架;获取所述服务单元和所述引用单元的属性信息,将所述属性信息与所述代码框架结合生成目标代码。该实施方式能够通过识别以各种方式绘制的简单逻辑图像来自动生成代码,对非技术人员非常友好,有助于实现技术人员与非技术人员的良好沟通。

Description

代码生成方法和装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种代码生成方法和装置。
背景技术
在当前的软件开发过程中,大多应用程序采用编写代码文本的方式完成构建,在编写代码文本时需要输入大量字符进行逻辑处理,这种开发方式缺少对意的表述,非代码编写人员在阅读代码文本时存在极大障碍,从而影响了代码文本所描述的思想的有效交流与传播,更难以在此思想基础上升华,因此需要一种更为具象的软件开发方式。现有技术中,存在UML(Unified Modeling Language,统一建模语言)等图形化开发方式。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
现有的UML等图形化开发方式需要花费很多精力去学习其繁琐的规范,例如使用UML之前需要学习用例图、时序图、状态机图、活动图等复杂图形与规范,另外还需要学会使用特定的专业开发工具,这对新人以及非技术人员很不友好。
发明内容
有鉴于此,本发明实施例提供一种代码生成方法和装置,可通过识别以各种方式绘制的简单逻辑图像来自动生成代码,对非技术人员非常友好,有助于实现技术人员(例如代码编写人员)与非技术人员(例如业务人员)的良好沟通。
为实现上述目的,根据本发明的一个方面,提供了一种代码生成方法。
本发明实施例的代码生成方法包括:对预先绘制的、符合预设规则的图像进行识别以确定所述图像中的服务单元和引用单元;根据所述服务单元和所述引用单元对应的结构代码生成代码框架;获取所述服务单元和所述引用单元的属性信息,将所述属性信息与所述代码框架结合生成目标代码。
可选地,所述图像中进一步包括主体单元;所述方法进一步包括:对所述图像进行识别以确定所述图像中的主体单元;根据所述服务单元和所述引用单元对应的结构代码生成代码框架,包括:按照预设的代码格式,将所述服务单元、所述引用单元和所述主体单元对应的结构代码以及预设的固定代码结合为代码框架。
可选地,所述服务单元、所述引用单元和所述主体单元都具有所述规则定义的形状;对所述图像进行识别,包括:使用图像采集设备采集所述图像;对采集到的图像进行边缘提取以检测图像中具有所述形状的部分;获取各部分的几何特征;将几何特征符合预设的服务单元识别条件的部分确定为服务单元;将几何特征符合预设的引用单元识别条件的部分确定为引用单元;将几何特征符合预设的主体单元识别条件的部分确定为主体单元。
可选地,所述方法进一步包括:在获取所述服务单元和所述引用单元的属性信息之前,解析所述代码框架以获得展示在预设编辑坏境的标准化图形;其中,所述标准化图形具有对应于所述服务单元和所述引用单元的部分,每一部分在所述编辑环境对应于用于输入所述属性信息的可视化界面。
可选地,所述方法进一步包括:在对所述图像进行边缘提取之前,对所述图像进行锐化处理。
可选地,所述图像为手工绘制或借助电子设备绘制;所述服务单元的属性信息包括服务程序提供的接口的标识以及该接口的实现类标识;所述引用单元的属性信息包括引用程序提供的接口的标识以及该接口的实现类标识;通过同一图像关联的服务程序与引用程序之间具有依赖关系。
为实现上述目的,根据本发明的另一方面,提供了一种代码生成装置。
本发明实施例的代码生成装置可包括:图像识别模块,用于对预先绘制的、符合预设规则的图像进行识别以确定所述图像中的服务单元和引用单元;框架建立模块,用于根据所述服务单元和所述引用单元对应的结构代码生成代码框架;代码生成模块,用于获取所述服务单元和所述引用单元的属性信息,将所述属性信息与所述代码框架结合生成目标代码。
可选地,所述图像中可进一步主体单元;图像识别模块可进一步用于:对所述图像进行识别以确定所述图像中的主体单元;框架建立模块可进一步用于:按照预设的代码格式,将所述服务单元、所述引用单元和所述主体单元对应的结构代码以及预设的固定代码结合为代码框架;所述装置可进一步包括框架解析模块,用于:在代码生成模块获取所述服务单元和所述引用单元的属性信息之前,解析所述代码框架以获得展示在预设编辑坏境的标准化图形;其中,所述标准化图形具有对应于所述服务单元和所述引用单元的部分,每一部分在所述编辑环境对应于用于输入所述属性信息的可视化界面。
为实现上述目的,根据本发明的又一方面,提供了一种电子设备。
本发明的一种电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明所提供的代码生成方法。
为实现上述目的,根据本发明的再一方面,提供了一种计算机可读存储介质。
本发明的一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明所提供的代码生成方法。
根据本发明的技术方案,上述发明中的一个实施例具有如下优点或有益效果:在本发明实施例中,可以对通过各种方式绘制的图像进行识别并根据识别结果自动生成代码。具体地,首先使用图像采集设备采集图像并检测图像中的服务单元、引用单元和主体单元,接着根据服务单元、引用单元和主体单元对应的结构代码生成代码框架,之后解析代码框架得到具有可视化属性编辑界面的标准化图形,待外部在该界面输入属性信息之后,即可将属性信息与代码框架结合为目标代码。这样,能够实现基于非技术人员绘制的简单逻辑图像自动生成代码,不需要非技术人员学习特定的繁琐规则,有利于非技术人员与技术人员实现良好交流;同时,目标代码所描述的思想可以借助上述逻辑图像或者标准化图形在各背景人群中无障碍传播,有效克服了基于代码文本的传统开发方式的内在缺陷。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是本发明实施例中代码生成方法的主要步骤示意图;
图2是本发明实施例中图像识别过程的示意图;
图3是本发明实施例的编辑环境示意图;
图4是本发明实施例中代码生成方法的具体执行步骤示意图;
图5是本发明实施例中代码生成装置的组成部分示意图;
图6是根据本发明实施例可以应用于其中的示例性系统架构图;
图7是用来实现本发明实施例中代码生成方法的电子设备结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
需要指出的是,在不冲突的情况下,本发明的实施例以及实施例中的技术特征可以相互结合。
图1是根据本发明实施例中代码生成方法的主要步骤示意图。
如图1所示,本发明实施例的代码生成方法可具体按照如下步骤执行:
步骤S101:对预先绘制的、符合预设规则的图像进行识别以确定图像中的服务单元和引用单元。
在本发明实施例中,上述图像可以是逻辑图,用于通过图像中各部分之间的相互位置或者连接线等方式表示各部分之间的逻辑关系,基于各部分图形以及该逻辑关系,上述图像能够在整体上展示一个应用程序或一种应用场景的编程思想。以下以图像整体上对应于一个应用程序为例进行说明,并将该应用程序称为目标程序。示例性地,上述逻辑关系可以包括依赖关系、包含关系等。依赖关系、包含关系的含义如下例所示,若程序A的运行需要程序B的运行结果,则认为程序A依赖于程序B,二者即具有依赖关系;若某Java(Java是一种编程语言)程序中的类C中含有方法D,则认为二者具有包含关系。以下将主要以图像中各部分存在依赖关系的情形为例进行说明。
在本步骤中,预先绘制的图像需要符合预先制定的规则,否则后续无法对图像进行有效识别。上述规则可以对图像的整体展示以及图像中的各部分作出限制。例如,上述规则可以限制图像为线条图,每一部分为封闭图形,每一部分的形状为矩形;这样,如果某预先绘制的图像中含有未封闭图形、圆形等,则认为不符合上述规则或者不达标,即无法执行后续的图像识别步骤。可以理解,上述规则可以由开发人员根据实际需求灵活制定,例如可以制定规则来限制图形为经过填充的实体图像,图像中的每一部分为圆形或者线段,本发明并不对上述规则中的任何内容进行限制。为便于说明,以下将主要以上例中的具体规则为例(即图像为线条图,每一部分为封闭图形且形状为矩形)进行介绍。图2是本发明实施例中图像识别过程的示意图,符合上述规则的图像如图2中的第一幅图(按照从上到下的顺序)所示。
上述图像可以通过任何方式进行绘制,例如可以使用纸、笔手工绘制,可以借助电子设置如个人电脑、移动终端、平板电脑等电子设备在显示屏幕上绘制。可以看到,由于上述图像为逻辑简图,其组成部分为简单图形,绘制方式自由随意,因此任何背景的人包括技术人员、业务人员(即了解运营逻辑但是不了解软件技术的人员),任何专业的人均可进行绘制,从而避免了现有的UML等图形编程方法中入门难度较高的缺陷。
在本步骤中,可以对预先绘制的图像进行识别,如果该图像符合预设规则,则可以通过识别过程确定出其中的服务单元和引用单元。其中,服务单元和引用单元都是图像中符合上述规则的部分,例如,服务单元和引用单元都是图像中的矩形。服务单元可以与预先编写完成或者尚未编写完成的服务程序对应,服务程序中包含图像整体对应的目标程序的主要执行逻辑。引用单元可以与预先编写完成或者尚未编写完成的引用程序对应,引用程序是服务程序在运行过程中需要依赖的程序,其中包含服务程序运行需要调用的接口、方法等,在一幅图像中,引用单元可以有一个或多个。显然,通过同一图像关联的服务程序与引用程序之间具有依赖关系。为便于说明,以下将以服务程序和引用程序均已经编写完成的情况为例进行介绍。
作为一个优选方案,图像中还可以包括主体单元,主体单元用于描述图像的整体功能,即目标程序期望实现的功能。可以认为服务单元、引用单元和主体单元组成对应于目标程序的一个组件。具体应用中,可以预先设置服务单元、引用单元和主体单元的识别条件。例如,主体单元的识别条件可以是:长度、宽度均最大的矩形;服务单元的识别条件可以是:定位点(定位点可以定位为矩形的左下角顶点)的横坐标小于主体单元、纵坐标大于主体单元;引用单元的识别条件可以是:定位点的横坐标大于主体单元、纵坐标大于主体单元。显然,以上的长度、宽度、横坐标、纵坐标等均为相应单元的几何特征,横坐标、纵坐标是基于预先建立的平面直角坐标系确定的。
具体场景中,业务人员(或技术人员)绘制图像的情形可以如下例所示。如果目标程序为订单审核程序,业务人员判断其需要依赖库存查询程序,则可以按照预设规则绘制图2第一幅图所示的图像,其中左侧矩形为服务单元,表示订单审核程序的主要执行逻辑;中间的矩形为主体单元,用于对整体业务进行描述;右侧矩形为引用单元,代表库存查询程序。可以理解,如果订单审核程序进一步依赖其它的一个或多个外部程序,可以按照预设规则在当前的引用单元上方或下方绘制一个或多个矩形表示另外的一个或多个引用单元。
图像绘制完成之后,可以根据以下步骤对其进行识别,其中涉及到的图像处理技术可以使用现有的计算机视觉工具OpenCv、OpenMv实现。首先,使用摄像头、相机等图像采集设备采集图像,采集完毕的图像如图2第一幅图所示。接着,对图像进行锐化处理以突出其边缘(如图2第二幅图所示)。此时如果图像存在倾斜或者变形,可以进行倾斜校正或变形校正,校正之后的图像如图2第三幅图所示。之后,对图像进行边缘提取进而确定图像中的矩形,确定各矩形之后,可以获取每一矩形的几何特征,包括长度、宽度、定位点横纵坐标等。实际应用中,对图像进行边缘提取之后,可以首先确定每一矩形的四个顶点的坐标,之后计算其上述几何特征。在图2的第三幅图中,每一矩形的四个顶点被圆形标记。
获取各矩形的几何特征之后,即可根据识别条件确定每一矩形对应的单元。即,将几何特征符合服务单元识别条件的部分确定为服务单元,将几何特征符合引用单元识别条件的部分确定为引用单元,将几何特征符合主体单元识别条件的部分确定为主体单元。实际应用中,可以首先依次将各矩形的几何特征与主体单元识别条件比对从而确定主体单元,之后将根据服务单元和引用单元的识别条件分别确定服务单元和引用单元。
步骤S102:根据服务单元和引用单元对应的结构代码生成代码框架。
在本步骤中,结构代码指的是用于形成目标代码(即最终需要生成的代码)结构或框架的代码。例如,如果按照预设的代码格式要求,目标代码为XML(eXtensible MarkupLanguage,可扩展标记语言)文件,则结构代码可以包括根元素标签以及根元素下的至少一个后裔元素(包括子元素、孙元素等)标签而不包括标签中的文本信息,也可以包括某一元素的id(标识)等属性信息;如果目标代码为JSON(JavaScript Object Notation,JS对象标记,JS是一种脚本语言)文件,则结构代码可以是多个字段中仅含有键信息的键值对数据。
上述预设的代码格式可以用来限制代码框架以及目标代码的结构,例如,如果目标代码为XML文件,则预设的代码格式可以通过XML Schema(一种用于定义XML文档的合法构建模块的方式)确定,XML Schema具有以下至少一种功能:定义出现在目标代码中的元素、出现在目标代码中的元素属性、定义哪个元素是子元素、定义子元素的次序、定义子元素的数目、定义元素是否为空或者是否可包含文本、定义元素和属性的数据类型、定义元素和属性的默认值以及固定值。需要说明的是,通过本发明方法能够生成各种格式的目标代码,包括XML代码、JSON代码、Java代码、C代码、C++(C、C++均为编程语言)代码等,为便于说明,以下以目标代码是XML代码为例进行介绍。
具体应用中,可以预先建立服务单元、引用单元以及主体单元与相应的结构代码之间的映射关系,各结构代码可以根据需要具体设置。下为上述映射关系的一个示例。
Figure BDA0002450278070000091
在上表中,body元素为主体单元的结构代码,service元素及其子元素service-definition为服务单元的结构代码,reference元素为引用单元的结构代码,body元素同时是service元素和reference元素的父元素。由于引用单元可以是多个,因此可以在reference元素的开始标签中使用id属性来区分多个reference元素。可以理解,在目标代码的后续使用过程中,可以利用结构代码确定相应单元,进而确定各单元对应的程序。例如,可以通过目标代码中service元素的后裔元素中的文本信息以及属性信息确定服务程序的相关信息,可以通过目标代码中reference元素的后裔元素中的文本信息以及属性信息确定引用程序的相关信息。显然,从图像中各单元到结构代码的上述过程为从具体对象到抽象代码的序列化过程。
此后,可以按照预设的代码格式,将服务单元、引用单元和主体单元对应的结构代码以及预设的固定代码结合为代码框架。其中,固定代码是目标代码中的固有部分,其可以设置在预先建立的代码模板中。将结构代码与固定代码结合可以通过将结构代码输入上述代码模板来实现。在目标代码为XML文件时,固定代码可以是XML声明以及根元素中与命名空间相关的属性。对应于图2并以上述方式生成的XML代码框架可以如下所示。
<?xml version="1.0"encoding="UTF-8"?>
<beans xmlns:xsi=""xmlns=""xsi:schemaLocation="">
<body>
<service>
<service-definition>
</service-definition>
</service>
<reference id=reference1>
</reference>
</body>
</beans>
上述代码框架中的固定代码为第一行代码以及beans元素及其属性。第一行代码为XML声明,定义了XML版本和使用的编码。beans元素为根元素,其开始标签中设置的属性xmlns:xsi、xmlns、xsi:schemaLocation均为与命名空间相关的属性,具体属性值未填写。beans元素的子元素为body元素,body元素的子元素为service元素和reference元素,service元素和reference元素为兄弟元素。具体应用中,如果存在多个reference元素,可以同样作为body元素的子元素,但是需要设置不同的id属性值进行区分。
步骤S103:获取服务单元和引用单元的属性信息,将属性信息与代码框架结合生成目标代码。
在获得代码框架之后,还需要将代码实体数据作为代码框架各元素的文本信息或属性信息进行填充,从而得到目标代码。一般地,代码实体数据可以包括服务单元和引用单元的属性信息,这些属性可以根据需要灵活设置,例如,在一些实施例中,服务单元的属性信息可以包括服务程序提供的接口的标识以及该接口的实现类标识,引用单元的属性信息包括引用程序提供的接口的标识以及该接口的实现类标识。其中,接口的标识可以是接口名、接口的完全限定名(即根路径与接口名的组合)等,类的标识可以是类名称、类的别名等。可以理解,以上属性信息的类型可以根据需要设置,例如还可以包括实现类下的执行方法名称等,本发明并不对此进行限制。
服务单元和引用单元的属性信息可以由技术人员手动输入,因此有必要提供相应的信息输入方式。在本发明实施例中,可以解析代码框架以获得展示在预设编辑坏境的标准化图形,该编辑环境可以由IDE(Integrated Development Environment,集成开发环境)编辑器提供,其中具有用于输入服务单元和引用单元的属性信息的可视化界面。图3是本发明实施例中对应于图2的编辑环境示意图,如图3所示,编辑环境分为标准化图形展示区域和属性编辑区域,前者用于展示解析代码框架生成的标准化图形,后者用于当技术人员点击标准化图形的某部分时显示该部分对应的属性信息。可以理解,上述解析过程为从抽象代码到具体对象的反序列化过程。
从图3中可见,标准化图形与步骤S101说明的预先绘制的图像类似,具有对应于上述图像中服务单元、引用单元和主体单元的部分,但是与上述图像相比,标准化图形的外形更为标准,不受绘制图像需遵守的预设规则的限制,各部分能够采用更为专业的形状。在图3所示的标准化图形中,居中的矩形部分对应于主体单元,左侧箭头形部分对应于服务单元,右侧箭头形部分对应于引用单元。当技术人员点击左侧箭头形部分时,该部分即被选中,属性编辑区域便会向技术人员展示用于输入服务程序的接口标识、实现类标识的文本输入框、下拉选择框等;当技术人员点击右侧箭头形部分时,该部分即被选中,属性编辑区域便会向技术人员展示用于输入引用程序的接口标识、实现类标识的文本输入框、下拉选择框等。
接收到技术人员输入的服务单元和引用单元的属性信息之后,即可将属性信息与代码框架结合生成最终的目标代码,在目标代码中,服务单元和引用单元的属性信息可以作为代码框架中相应元素的子元素或者该元素的属性信息。例如,如果输入的服务程序的接口标识为a,实现类标识为b,引用程序的接口标识为c,实现类标识为d(a、b、c、d均表示字符串),则生成的目标代码可以是:
<?xml version="1.0"encoding="UTF-8"?>
<beans xmlns:xsi=""xmlns=""xsi:schemaLocation="">
<body>
<service>
<service-definition>
<interface id=a>
<class>b</class>
</interface>
</service-definition>
</service>
<reference id=reference1>
<interface id=c>
<class>d</class>
</interface>
</reference>
</body>
</beans>
可以理解,如果输入的服务程序或引用程序的接口标识为多个,或者每一接口的实现类标识为多个,也可以按照上述方式生成XML文件。此后,可以将该文件加载到服务程序的相关容器或者程序开发框架(例如Spring)中的容器,进而通过该文件中的结构代码(如service元素、reference元素)确定服务程序、引用程序之间的依赖关系以及各接口、类之间的依赖关系。
通过上述设置,可以基于预先绘制图像生成符合预设格式的目标代码,这种方式仅需绘制简单的逻辑图像并在编辑环境进行属性填充,代码开发效率远高于传统方式。并且,由于这种方式大量使用预先编写的规范的固定代码和结构代码,因此生成的目标代码较为规范,结构清晰,出错率极低。同时,目标代码随时可以用预先绘制图像或标准化图形实现其编程思想的具象化展示,从而易于编程思想在各种背景人群中传播。另外,本发明实施例提供的开发方式还能够实现技术人员和业务人员的良好沟通。实际应用中,由于业务人员熟知业务逻辑,其与技术人员探讨涉及涉及业务场景的目标程序时,可以根据实际业务情况绘制图2第一幅图所示的简单逻辑图像,此后技术人员可以确定服务单元和引用单元对应的应用程序以及接口、方法等并进行独立开发。在需要生成表示各应用程序依赖关系的配置文件时,即可利用本发明实施例方法自动生成,最后将配置文件加载到相应容器即可完成开发。在开发过程或后续优化过程中,业务人员和技术人员可基于上述图像或者标准化图形进行良好沟通,有效解决了目前这两类人员沟通不畅的问题。
图4是本发明实施例中代码生成方法的具体执行步骤示意图,如图4所示,步骤S401,使用图像采集设置对绘制的简单逻辑图像进行采集;步骤S402,对图像进行锐化处理;步骤S403,判断图像是否达标:若是,进入下一步骤;否则回到步骤S401;步骤S404,对图像进行边缘提取;步骤S405,确定每一部分的几何特征;步骤S406,根据每一部分的几何特征执行各单元的识别条件比对;步骤S407,判断是否比对成功:如果比对成功(即至少确定一个服务单元和一个引用单元),执行下一步骤;否则回到步骤S401;步骤S408,对每一比对成功的部分执行序列化,利用相应的结构代码生成代码框架;步骤S409,解析代码框架生成标准化图形;步骤S410,接收外部输入的服务单元和引用单元的属性信息;步骤S411,将属性信息与代码框架结合,生成目标代码。
在本发明实施例的技术方案中,可以对通过各种方式绘制的图像进行识别并根据识别结果自动生成代码。具体地,首先使用图像采集设备采集图像并检测图像中的服务单元、引用单元和主体单元,接着根据服务单元、引用单元和主体单元对应的结构代码生成代码框架,之后解析代码框架得到具有可视化属性编辑界面的标准化图形,待外部在该界面输入属性信息之后,即可将属性信息与代码框架结合为目标代码。这样,能够实现基于非技术人员绘制的简单逻辑图像自动生成代码,不需要非技术人员学习特定的繁琐规则,有利于非技术人员与技术人员实现良好交流;同时,目标代码所描述的思想可以借助上述逻辑图像或者标准化图形在各背景人群中无障碍传播,有效克服了基于代码文本的传统开发方式的内在缺陷。此外,由于图像识别过程不受工具平台制约,相关人员(技术人员或非技术人员)可随时随地利用最为基本的信息载体(例如纸、笔)绘制图像,极大提高组件构建的随意性和非专业性,从而实现组件逻辑的迅速生成和组件种类的迅速扩充。同时,由于图像对于人类来说具有较高的直观性与易读性,因此各背景人员在绘制图像时能够进行有效交流和思想碰撞,从而提升相关人员协作创新的能力。
需要说明的是,对于前述的各方法实施例,为了便于描述,将其表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,某些步骤事实上可以采用其它顺序进行或者同时进行。此外,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是实现本发明所必须的。
为便于更好的实施本发明实施例的上述方案,下面还提供用于实施上述方案的相关装置。
请参阅图5所示,本发明实施例提供的代码生成装置可以包括:图像识别模块501、框架建立模块502和代码生成模块503。
其中,图像识别模块501可用于对预先绘制的、符合预设规则的图像进行识别以确定所述图像中的服务单元和引用单元;框架建立模块502可用于根据所述服务单元和所述引用单元对应的结构代码生成代码框架;代码生成模块503可用于获取所述服务单元和所述引用单元的属性信息,将所述属性信息与所述代码框架结合生成目标代码。
在本发明实施例中,所述图像中进一步包括主体单元;图像识别模块501可进一步用于:对所述图像进行识别以确定所述图像中的主体单元;框架建立模块502可进一步用于:按照预设的代码格式,将所述服务单元、所述引用单元和所述主体单元对应的结构代码以及预设的固定代码结合为代码框架;所述装置500可进一步包括框架解析模块,其用于:在代码生成模块获取所述服务单元和所述引用单元的属性信息之前,解析所述代码框架以获得展示在预设编辑坏境的标准化图形;其中,所述标准化图形具有对应于所述服务单元和所述引用单元的部分,每一部分在所述编辑环境对应于用于输入所述属性信息的可视化界面。
作为一个优选方案,所述服务单元、所述引用单元和所述主体单元都具有所述规则定义的形状;图像识别模块501可进一步用于:使用图像采集设备采集所述图像;对采集到的图像进行边缘提取以检测图像中具有所述形状的部分;获取各部分的几何特征;将几何特征符合预设的服务单元识别条件的部分确定为服务单元;将几何特征符合预设的引用单元识别条件的部分确定为引用单元;将几何特征符合预设的主体单元识别条件的部分确定为主体单元。
较佳地,图像识别模块501可进一步用于:在对所述图像进行边缘提取之前,对所述图像进行锐化处理。
此外,在本发明实施例中,所述图像为手工绘制或借助电子设备绘制;所述服务单元的属性信息包括服务程序提供的接口的标识以及该接口的实现类标识;所述引用单元的属性信息包括引用程序提供的接口的标识以及该接口的实现类标识;通过同一图像关联的服务程序与引用程序之间具有依赖关系。
在本发明实施例的技术方案中,可以对通过各种方式绘制的图像进行识别并根据识别结果自动生成代码。具体地,首先使用图像采集设备采集图像并检测图像中的服务单元、引用单元和主体单元,接着根据服务单元、引用单元和主体单元对应的结构代码生成代码框架,之后解析代码框架得到具有可视化属性编辑界面的标准化图形,待外部在该界面输入属性信息之后,即可将属性信息与代码框架结合为目标代码。这样,能够实现基于非技术人员绘制的简单逻辑图像自动生成代码,不需要非技术人员学习特定的繁琐规则,有利于非技术人员与技术人员实现良好交流;同时,目标代码所描述的思想可以借助上述逻辑图像或者标准化图形在各背景人群中无障碍传播,有效克服了基于代码文本的传统开发方式的内在缺陷。
图6示出了可以应用本发明实施例的代码生成方法或代码生成装置的示例性系统架构600。
如图6所示,系统架构600可以包括终端设备601、602、603,网络604和服务器605(此架构仅仅是示例,具体架构中包含的组件可以根据申请具体情况调整)。网络604用以在终端设备601、602、603和服务器605之间提供通信链路的介质。网络604可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等。
用户可以使用终端设备601、602、603通过网络604与服务器605交互,以接收或发送消息等。终端设备601、602、603上可以安装有各种客户端应用,例如用于自动生成代码的应用(仅为示例)。
终端设备601、602、603可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器605可以是提供各种服务的服务器,例如对用户利用终端设备601、602、603所操作的用于自动生成代码的应用提供支持的后台服务器(仅为示例)。后台服务器可以对接收到的代码生成请求进行处理,并将处理结果(例如生成的目标代码--仅为示例)反馈给终端设备601、602、603。
需要说明的是,本发明实施例所提供的代码生成方法一般由服务器605执行,相应地,代码生成装置一般设置于服务器605中。
应该理解,图6中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
本发明还提供了一种电子设备。本发明实施例的电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明所提供的代码生成方法。
下面参考图7,其示出了适于用来实现本发明实施例的电子设备的计算机系统700的结构示意图。图7示出的电子设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图7所示,计算机系统700包括中央处理单元(CPU)701,其可以根据存储在只读存储器(ROM)702中的程序或者从存储部分708加载到随机访问存储器(RAM)703中的程序而执行各种适当的动作和处理。在RAM703中,还存储有计算机系统700操作所需的各种程序和数据。CPU701、ROM 702以及RAM 703通过总线704彼此相连。输入/输出(I/O)接口705也连接至总线704。
以下部件连接至I/O接口705:包括键盘、鼠标等的输入部分706;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分707;包括硬盘等的存储部分708;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分709。通信部分709经由诸如因特网的网络执行通信处理。驱动器710也根据需要连接至I/O接口705。可拆卸介质711,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器710上,以便从其上读出的计算机程序根据需要被安装入存储部分708。
特别地,根据本发明公开的实施例,上文的主要步骤图描述的过程可以被实现为计算机软件程序。例如,本发明实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行主要步骤图所示的方法的程序代码。在上述实施例中,该计算机程序可以通过通信部分709从网络上被下载和安装,和/或从可拆卸介质711被安装。在该计算机程序被中央处理单元701执行时,执行本发明的系统中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。在本发明中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这根据所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括图像识别模块、框架建立模块和代码生成模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,图像识别模块还可以被描述为“向框架建立模块提供服务单元和引用单元的模块”。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中的。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该设备执行时,使得该设备执行的步骤包括:对预先绘制的、符合预设规则的图像进行识别以确定所述图像中的服务单元和引用单元;根据所述服务单元和所述引用单元对应的结构代码生成代码框架;获取所述服务单元和所述引用单元的属性信息,将所述属性信息与所述代码框架结合生成目标代码。
在本发明实施例的技术方案中,可以对通过各种方式绘制的图像进行识别并根据识别结果自动生成代码。具体地,首先使用图像采集设备采集图像并检测图像中的服务单元、引用单元和主体单元,接着根据服务单元、引用单元和主体单元对应的结构代码生成代码框架,之后解析代码框架得到具有可视化属性编辑界面的标准化图形,待外部在该界面输入属性信息之后,即可将属性信息与代码框架结合为目标代码。这样,能够实现基于非技术人员绘制的简单逻辑图像自动生成代码,不需要非技术人员学习特定的繁琐规则,有利于非技术人员与技术人员实现良好交流;同时,目标代码所描述的思想可以借助上述逻辑图像或者标准化图形在各背景人群中无障碍传播,有效克服了基于代码文本的传统开发方式的内在缺陷。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

Claims (10)

1.一种代码生成方法,其特征在于,包括:
对预先绘制的、符合预设规则的图像进行识别以确定所述图像中的服务单元和引用单元;
根据所述服务单元和所述引用单元对应的结构代码生成代码框架;
获取所述服务单元和所述引用单元的属性信息,将所述属性信息与所述代码框架结合生成目标代码。
2.根据权利要求1所述的方法,其特征在于,所述图像中进一步包括主体单元;以及
所述方法进一步包括:对所述图像进行识别以确定所述图像中的主体单元;
根据所述服务单元和所述引用单元对应的结构代码生成代码框架,包括:按照预设的代码格式,将所述服务单元、所述引用单元和所述主体单元对应的结构代码以及预设的固定代码结合为代码框架。
3.根据权利要求2所述的方法,其特征在于,所述服务单元、所述引用单元和所述主体单元都具有所述规则定义的形状;对所述图像进行识别,包括:
使用图像采集设备采集所述图像;
对采集到的图像进行边缘提取以检测图像中具有所述形状的部分;
获取各部分的几何特征;以及
将几何特征符合预设的服务单元识别条件的部分确定为服务单元;
将几何特征符合预设的引用单元识别条件的部分确定为引用单元;
将几何特征符合预设的主体单元识别条件的部分确定为主体单元。
4.根据权利要求1所述的方法,其特征在于,所述方法进一步包括:
在获取所述服务单元和所述引用单元的属性信息之前,解析所述代码框架以获得展示在预设编辑坏境的标准化图形;其中,
所述标准化图形具有对应于所述服务单元和所述引用单元的部分,每一部分在所述编辑环境对应于用于输入所述属性信息的可视化界面。
5.根据权利要求3所述的方法,其特征在于,所述方法进一步包括:
在对所述图像进行边缘提取之前,对所述图像进行锐化处理。
6.根据权利要求1-5任一所述的方法,其特征在于,
所述图像为手工绘制或借助电子设备绘制;
所述服务单元的属性信息包括服务程序提供的接口的标识以及该接口的实现类标识;
所述引用单元的属性信息包括引用程序提供的接口的标识以及该接口的实现类标识;
通过同一图像关联的服务程序与引用程序之间具有依赖关系。
7.一种代码生成装置,其特征在于,包括:
图像识别模块,用于对预先绘制的、符合预设规则的图像进行识别以确定所述图像中的服务单元和引用单元;
框架建立模块,用于根据所述服务单元和所述引用单元对应的结构代码生成代码框架;
代码生成模块,用于获取所述服务单元和所述引用单元的属性信息,将所述属性信息与所述代码框架结合生成目标代码。
8.根据权利要求7所述的装置,其特征在于,所述图像中进一步主体单元;以及
图像识别模块进一步用于:对所述图像进行识别以确定所述图像中的主体单元;
框架建立模块进一步用于:按照预设的代码格式,将所述服务单元、所述引用单元和所述主体单元对应的结构代码以及预设的固定代码结合为代码框架;
所述装置进一步包括框架解析模块,用于:在代码生成模块获取所述服务单元和所述引用单元的属性信息之前,解析所述代码框架以获得展示在预设编辑坏境的标准化图形;其中,所述标准化图形具有对应于所述服务单元和所述引用单元的部分,每一部分在所述编辑环境对应于用于输入所述属性信息的可视化界面。
9.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-6中任一所述的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-6中任一所述的方法。
CN202010290687.2A 2020-04-14 2020-04-14 代码生成方法和装置 Active CN113535151B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010290687.2A CN113535151B (zh) 2020-04-14 2020-04-14 代码生成方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010290687.2A CN113535151B (zh) 2020-04-14 2020-04-14 代码生成方法和装置

Publications (2)

Publication Number Publication Date
CN113535151A true CN113535151A (zh) 2021-10-22
CN113535151B CN113535151B (zh) 2024-05-17

Family

ID=78088028

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010290687.2A Active CN113535151B (zh) 2020-04-14 2020-04-14 代码生成方法和装置

Country Status (1)

Country Link
CN (1) CN113535151B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114924727A (zh) * 2022-05-31 2022-08-19 重庆长安新能源汽车科技有限公司 一种软件代码框架自动生成系统及方法

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103793226A (zh) * 2014-01-16 2014-05-14 西北工业大学 一种普适应用代码框架快速生成方法及原型系统
US20150378691A1 (en) * 2014-06-25 2015-12-31 Oracle International Corporation Rest service source code generation
CN106020788A (zh) * 2016-04-28 2016-10-12 齐鲁工业大学 一种智能化的软件编程方法
CN106202006A (zh) * 2016-06-27 2016-12-07 北京百度网讯科技有限公司 文件生成方法和装置
CN107291476A (zh) * 2017-06-27 2017-10-24 北京微影时代科技有限公司 Canvas代码生成方法、装置、电子设备及存储介质
CN109074245A (zh) * 2016-03-24 2018-12-21 微软技术许可有限责任公司 将视觉示图转换成代码
CN109857388A (zh) * 2019-01-10 2019-06-07 北京城市网邻信息技术有限公司 代码生成方法、装置、服务器及计算机可读介质
CN110083351A (zh) * 2019-04-22 2019-08-02 北京百度网讯科技有限公司 用于生成代码的方法和装置
CN110515615A (zh) * 2019-07-08 2019-11-29 深圳壹账通智能科技有限公司 业务逻辑代码自动生成方法、装置以及服务器
CN110990014A (zh) * 2019-12-12 2020-04-10 深圳市卡牛科技有限公司 骨架屏页面代码的生成方法、装置、服务器及存储介质

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103793226A (zh) * 2014-01-16 2014-05-14 西北工业大学 一种普适应用代码框架快速生成方法及原型系统
US20150378691A1 (en) * 2014-06-25 2015-12-31 Oracle International Corporation Rest service source code generation
CN109074245A (zh) * 2016-03-24 2018-12-21 微软技术许可有限责任公司 将视觉示图转换成代码
CN106020788A (zh) * 2016-04-28 2016-10-12 齐鲁工业大学 一种智能化的软件编程方法
CN106202006A (zh) * 2016-06-27 2016-12-07 北京百度网讯科技有限公司 文件生成方法和装置
CN107291476A (zh) * 2017-06-27 2017-10-24 北京微影时代科技有限公司 Canvas代码生成方法、装置、电子设备及存储介质
CN109857388A (zh) * 2019-01-10 2019-06-07 北京城市网邻信息技术有限公司 代码生成方法、装置、服务器及计算机可读介质
CN110083351A (zh) * 2019-04-22 2019-08-02 北京百度网讯科技有限公司 用于生成代码的方法和装置
CN110515615A (zh) * 2019-07-08 2019-11-29 深圳壹账通智能科技有限公司 业务逻辑代码自动生成方法、装置以及服务器
CN110990014A (zh) * 2019-12-12 2020-04-10 深圳市卡牛科技有限公司 骨架屏页面代码的生成方法、装置、服务器及存储介质

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
SUNITHA, E., V: "Automatic Code Generation From UML State Chart Diagrams", 《IEEE ACCESS》, vol. 7, 13 February 2019 (2019-02-13) *
王金恒;王普;李亚芬;: "面向MDA的业务逻辑模型到代码的转换方法研究", 计算机技术与发展, no. 11, 10 November 2012 (2012-11-10) *
郭冬阳等: "基于模板技术的UML状态图代码框架生成", 《中国优秀硕士学位论文全文数据库(信息科技辑)》, no. 2, 15 December 2013 (2013-12-15) *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114924727A (zh) * 2022-05-31 2022-08-19 重庆长安新能源汽车科技有限公司 一种软件代码框架自动生成系统及方法
CN114924727B (zh) * 2022-05-31 2024-06-04 深蓝汽车科技有限公司 一种软件代码框架自动生成系统及方法

Also Published As

Publication number Publication date
CN113535151B (zh) 2024-05-17

Similar Documents

Publication Publication Date Title
CN109597617B (zh) 基于模板快速生成业务页面的方法和装置
CN113031946B (zh) 一种渲染页面组件的方法和装置
CN111553131B (zh) Psd文件解析方法、装置、设备及可读存储介质
CN110263279B (zh) 页面生成方法、装置、电子设备和计算机可读存储介质
CN112272109A (zh) 一种网络拓扑图生成方法、设备及系统
CN105956133B (zh) 智能终端上显示文件的方法及装置
CN113158101A (zh) 一种可视化页面渲染方法、装置、设备及存储介质
CN114077430A (zh) 界面生成方法、装置、电子设备及存储介质
CN111294395A (zh) 一种终端页面传输方法、装置、介质和电子设备
CN110780874A (zh) 用于生成信息的方法和装置
CN109545333A (zh) Dicom影像显示、处理的方法及装置
CN115935925A (zh) 表格适配方法、电子设备及计算机可读存储介质
CN113553123B (zh) 数据处理方法、装置、电子设备及存储介质
CN113535151B (zh) 代码生成方法和装置
CN112486482A (zh) 一种页面展示方法和装置
CN113449502A (zh) 基于动态数据的文档生成方法与系统
CN112926008A (zh) 生成表单页面的方法、装置、电子设备和存储介质
CN110489326B (zh) 基于ids的httpapi调试方法装置、介质和设备
CN109992698B (zh) 数据处理方法、装置、电子设备及可读存储介质
CN113220381A (zh) 一种点击数据展示方法和装置
US20230049389A1 (en) Text-based machine learning extraction of table data from a read-only document
CN114489910B (zh) 一种视频会议数据显示方法、装置、设备及介质
CN114816382A (zh) 一种处理页面的方法和装置
CN115756452A (zh) 目标页面代码的生成方法、设备、存储介质及程序产品
CN113761871A (zh) 富文本渲染方法、装置、电子设备以及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant