CN115437627A - 学件开发方法、装置、设备及存储介质 - Google Patents
学件开发方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN115437627A CN115437627A CN202110627562.9A CN202110627562A CN115437627A CN 115437627 A CN115437627 A CN 115437627A CN 202110627562 A CN202110627562 A CN 202110627562A CN 115437627 A CN115437627 A CN 115437627A
- Authority
- CN
- China
- Prior art keywords
- parameter
- chemical
- code
- piece
- component
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/36—Software reuse
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种学件开发方法、装置、设备和存储介质,该方法包括:在检测到学件开发指令时,确定待开发学件的关联推理服务,并确定所述待开发学件的学件参数;生成调用所述关联推理服务的第一关联代码,并生成所述学件参数对应参数规约的第二关联代码;基于所述第一关联代码和所述第二关联代码,确定所述待开发学件的目标代码,以完成所述待开发学件的开发。在本申请中,自动生成调用所述关联推理服务的第一关联代码,并生成所述学件参数对应参数规约的第二关联代码,并基于所述第一关联代码和所述第二关联代码,自动确定所述待开发学件的目标代码,也即,实现了学件代码的自动生产,提升了学件的开发效率。
Description
技术领域
本申请涉及应用软件技术领域,尤其涉及一种学件开发方法、装置、设备及存储介质。
背景技术
为解决软件开发过程中的重复开发工作,学件概念应用而生,学件(Learnware)=模型(Model)+规约(Specification),在学件确定后,通过规约参数的配置就能实现快速的场景复用。
目前各行各业都在逐步建设基于AI的智能化学件服务系统,但基于AI的智能化学件服务系统一般是由多个团队单独适配开发,不通用,相对封闭,导致学件构建效率低下。
发明内容
本申请的主要目的在于提供一种学件开发方法、装置、设备和存储介质,旨在解决现有技术中学件构建效率低下的技术问题。
为实现上述目的,本申请提供一种学件开发方法,所述学件开发方法包括:
在检测到学件开发指令时,确定待开发学件的关联推理服务,并确定所述待开发学件的学件参数;
生成调用所述关联推理服务的第一关联代码,并生成所述学件参数对应参数规约的第二关联代码;
基于所述第一关联代码和所述第二关联代码,确定所述待开发学件的目标代码,以完成所述待开发学件的开发。
可选地,所述生成调用所述关联推理服务的第一关联代码,并生成所述学件参数对应参数规约的第二关联代码的步骤,包括:
加载预设头部类库,基于所述预设头部类库获取预设接口的响应逻辑数据;
基于所述响应逻辑数据,生成调用所述关联推理服务的第一关联代码,并加载所述关联推理服务,得到输出参数;
基于所述响应逻辑数据,生成所述输出参数以及所述学件参数对应参数规约的第二关联代码。
可选地,所述基于所述响应逻辑数据,生成所述输出参数以及所述学件参数对应参数规约的第二关联代码的步骤,包括:
获取各所述输出参数以及各所述学件参数对应的参数值,并获取各所述输出参数以及各所述学件参数对应的参数类型;
基于所述响应逻辑数据、所述参数值和所述参数类型,生成所述输出参数以及所述学件参数对应参数规约的第二关联代码。
可选地,所述基于所述响应逻辑数据、所述参数值和所述参数类型,生成所述输出参数以及所述学件参数对应参数规约的第二关联代码的步骤,包括:
基于所述响应逻辑数据、所述参数值和所述参数类型,计算组件匹配度;
根据所述组件匹配度,确定候选组件集,以构建目标组件树;
确定所述目标组件树的程序流程图;
基于所述程序流程图,生成所述输出参数以及所述学件参数对应参数规约的第二关联代码。
可选地,所述根据所述组件匹配度,确定候选组件集,以构建目标组件树的步骤,包括:
根据所述组件匹配度,确定候选组件集;
获取所述输出参数以及各所述学件参数对应的参数输入值,根据所述参数输入值,从所述候选组件集中挑选得到第一组件输入值与所述参数输入值相同的初始组件树;
确定剩余组件集,根据所述初始组件树中所有的组件输出值,从所述剩余组件集中挑选得到第二组件输入值与所述组件输出值相同的下级组件树;
返回确定剩余组件集的步骤,直至最后一级组件树的组件输出值没有匹配的相同组件输入值时,组件树构建结束,并得到目标组件树。
可选地,所述确定所述目标组件树的程序流程图的步骤,包括:
确定预设程序流程图中的起始节点,并依次扫描所述目标组件树的每层树节点;
若扫描的树节点为预设普通节点时,将该预设普通节点作为顺序节点添加到所述预设程序流程图中;
若扫描的树节点点为分支节点时,将该分支节点添加到程序流程图中分支程序图中;
若组件树所有节点扫描完成时,流程图构建结束,得到所述目标组件树的程序流程图。
可选地,所述基于所述第一关联代码和所述第二关联代码,确定所述待开发学件的目标代码,以完成所述待开发学件的开发的步骤之后,所述方法包括:
在线调试所述目标代码;
若所述目标代码调试完成时,发布所述目标代码并完成所述目标代码的自动化部署。
本申请还提供一种学件开发装置,所述学件开发装置包括:
检测模块,用于在检测到学件开发指令时,确定待开发学件的关联推理服务,并确定所述待开发学件的学件参数;
生成模块,用于生成调用所述关联推理服务的第一关联代码,并生成所述学件参数对应参数规约的第二关联代码;
确定模块,用于基于所述第一关联代码和所述第二关联代码,确定所述待开发学件的目标代码,以完成所述待开发学件的开发。
可选地,所述生成模块包括:
加载单元,用于加载预设头部类库,基于所述预设头部类库获取预设接口的响应逻辑数据;
第一生成单元,用于基于所述响应逻辑数据,生成调用所述关联推理服务的第一关联代码,并加载所述关联推理服务,得到输出参数;
第二生成单元,用于基于所述响应逻辑数据,生成所述输出参数以及所述学件参数对应参数规约的第二关联代码。
可选地,所述第二生成单元包括:
获取子单元,用于获取各所述输出参数以及各所述学件参数对应的参数值,并获取各所述输出参数以及各所述学件参数对应的参数类型;
生成子单元,用于基于所述响应逻辑数据、所述参数值和所述参数类型,生成所述输出参数以及所述学件参数对应参数规约的第二关联代码。
可选地,所述生成子单元用于实现:
基于所述响应逻辑数据、所述参数值和所述参数类型,计算组件匹配度;
根据所述组件匹配度,确定候选组件集,以构建目标组件树;
确定所述目标组件树的程序流程图;
基于所述程序流程图,生成所述输出参数以及所述学件参数对应参数规约的第二关联代码。
可选地,所述生成子单元还用于实现:
根据所述组件匹配度,确定候选组件集;
获取所述输出参数以及各所述学件参数对应的参数输入值,根据所述参数输入值,从所述候选组件集中挑选得到第一组件输入值与所述参数输入值相同的初始组件树;
确定剩余组件集,根据所述初始组件树中所有的组件输出值,从所述剩余组件集中挑选得到第二组件输入值与所述组件输出值相同的下级组件树;
返回确定剩余组件集的步骤,直至最后一级组件树的组件输出值没有匹配的相同组件输入值时,组件树构建结束,并得到目标组件树。
可选地,所述生成子单元还用于实现:
确定预设程序流程图中的起始节点,并依次扫描所述目标组件树的每层树节点;
若扫描的树节点为预设普通节点时,将该预设普通节点作为顺序节点添加到所述预设程序流程图中;
若扫描的树节点点为分支节点时,将该分支节点添加到程序流程图中分支程序图中;
若组件树所有节点扫描完成时,流程图构建结束,得到所述目标组件树的程序流程图。
可选地,所述学件开发装置还包括:
调试模块,用于在线调试所述目标代码;
发布模块,用于若所述目标代码调试完成时,发布所述目标代码并完成所述目标代码的自动化部署。
本申请还提供一种学件开发设备,所述学件开发设备为实体节点设备,所述学件开发设备包括:存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的所述学件开发方法的程序,所述学件开发方法的程序被处理器执行时可实现如上述的学件开发方法的步骤。
本申请还提供一种存储介质,所述存储介质上存储有实现上述学件开发方法的程序,所述学件开发方法的程序被处理器执行时实现如上述的学件开发方法的步骤。
本申请还提供一种计算机程序产品、包括计算机程序,该计算机程序被处理器执行时实现上述的学件开发方法的步骤。
本申请提供一种学件开发方法、装置、设备及存储介质,与现有技术中需要多个团队单独适配开发各自的学件构建系统,致使学件构建效率低相比,在本申请中,在检测到学件开发指令时,确定待开发学件的关联推理服务,并确定所述待开发学件的学件参数;生成调用所述关联推理服务的第一关联代码,并生成所述学件参数对应参数规约的第二关联代码;基于所述第一关联代码和所述第二关联代码,确定所述待开发学件的目标代码,以完成所述待开发学件的开发。在本申请中,构建统一的学件开发平台,在该统一的学件开发平台上,只要在检测到学件开发指令时,即可以确定待开发学件的关联推理服务,并确定待开发学件的学件参数,进而自动生成调用所述关联推理服务的第一关联代码,并生成所述学件参数对应参数规约的第二关联代码,并基于所述第一关联代码和所述第二关联代码,自动确定所述待开发学件的目标代码,也即,在本实施例中,实现了学件代码的自动生产,为最终学件代码的构建减少了大量的编码工作,提升了学件的开发效率。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以基于这些附图获得其他的附图。
图1为本申请学件开发方法第一实施例的流程示意图;
图2为本申请学件开发方法中步骤S20的细化步骤流程示意图;
图3为本申请实施例方案涉及的硬件运行环境的设备结构示意图。
本申请目的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请实施例提供一种学件开发方法,在本申请学件开发方法的第一实施例中,参照图1,所述学件开发方法包括:
步骤S10,在检测到学件开发指令时,确定待开发学件的关联推理服务,并确定所述待开发学件的学件参数;
步骤S20,生成调用所述关联推理服务的第一关联代码,并生成所述学件参数对应参数规约的第二关联代码;
步骤S30,基于所述第一关联代码和所述第二关联代码,确定所述待开发学件的目标代码,以完成所述待开发学件的开发。
具体步骤如下:
步骤S10,在检测到学件开发指令时,确定待开发学件的关联推理服务,并确定所述待开发学件的学件参数;
在本实施例中,需要说明的是,学件开发方法属于学件开发系统,该学件开发系统属于学件开发设备。
学件是由南京大学周志华教授提出的概念,学件(Learnware)=模型(Model)+规约(Specification),通过学件的开发,可以解决场景服务重复开发问题,也即,一般很多场景是存在通用性的,学件开发完成后,通过规约参数的配置就能实现快速的场景复用,以避免大量重复开发工作。
在本实施例中,学件开发系统实现了学件代码的自动生成,也即,学件开发系统为学件代码的生成提供相应的流程规范或者流程框架,用户只需要设置对应的信息,进而,触发在对应的框架内填入相应的代码即可。
在本实施例中,整体地,学件开发系统上具有可视化界面,在该可视化见面上,用户可以设置信息,在设置完成后,即可通过学件开发系统输出对应的已经构建完成的学件,也即,在本实施例中,通过学件开发系统中,能够快速便捷的完成学件的构建,其中,学件开发系统为快速便捷的完成学件的构建,需要预先设置功能模块,其中,学件开发系统主要包含三大模块:推理服务关联模块、参数定义模块、学件代码生成模块。
具体地,推理服务关联模块主要用于实现学件场景等的定义以及需要基于什么AI推理服务来实现学件。
在本实施例中,需要说明的是,推理服务关联模块定义了该学件是基于什么AI能力实现场景的,即推理服务关联模块关联了对应的AI推理服务,关联了AI推理服务后就可以确定对应的推理服务接口,为学件代码的生成提供基础条件。
具体地,例如,若学件的场景是图像识别场景,则基于推理服务关联模块可以关联到图像识别场景对应的AI推理服务,并基于学件开发系统中预设的调用逻辑,可以实现自动构建调用关联推理服务的第一关联代码(通过代码生成模块确定),进而基于第一关联代码,通过该AI推理服务中的图像识别模型服务等,输出对应的图像识别结果。
在本实施例中,参数定义模块主要用于配置学件开发所需要的参数,并提供可视化配置参数的定义,以及对应的参数运算等。
在本实施例中,具体地,参数定义模块还实现了该学件中参数具体是基于哪些条件进行规约的,也即,确定参数规约,在确定参数规约后,针对参数类型和该参数规约等,可以实现自动生成学件参数对应参数规约的第二关联代码(通过代码生成模块确定)。
在本实施例中,需要说明的是,学件开发系统中内置了常用的参数列表,以便于进行参数定义,进而,有效提高生成学件代码的效率,在本实施例中,在参数定义完成后,还可以做留存处理,方便以后使用相同参数时可自动筛选。
在本实施例中,学件代码生成模块可以基于推理服务关联模块和参数定义模块中确定的信息,快速生成学件代码,在生成学件代码后,可以基于学件开发系统中的JupyterNotebook应用程序,对生成的代码进行修改和调试。
在本实施例中,需要说明的是,学件代码生成模块是学件开发系统的核心,实现了学件代码的自动生成,同时针对部分需要自定义的代码提供相应的规范,只需要在对应的框架内填入相应的代码即可。
在检测到学件开发指令时,确定待开发学件的关联推理服务,并确定所述待开发学件的学件参数。
其中,确定待开发学件的关联推理服务的方式包括:
方式一:在检测到学件开发指令时,从指令中直接提取得到待开发学件的关联推理服务;
方式二:在检测到学件开发指令时,从指令中直接提取得到待开发学件的场景信息,直接基于场景信息得到待开发学件的关联推理服务。
在本实施例中,需要说明的是,关联推理服务确定后,后续可自动生成对应调用关联推理服务的调用代码。
在本实施例中,确定所述待开发学件的学件参数,其中,确定所述待开发学件的学件参数的方式可以是:
方式一:获取用户基于可视化界面直接选择的学件参数;
方式二:基于关联推理服务得到的输出参数,确定待开发学件的学件参数。
步骤S20,生成调用所述关联推理服务的第一关联代码,并生成所述学件参数对应参数规约的第二关联代码;
在本实施例中,在得到关联推理服务后,生成调用所述关联推理服务的第一关联代码,并生成所述学件参数对应参数规约的第二关联代码。
其中,在本实施例中,要生成调用所述关联推理服务的第一关联代码,需要在学件开发系统中内置第一处理逻辑(响应逻辑数据),该第一处理逻辑用于在检测到确定待开发学件的关联推理服务后,触发生成调用所述关联推理服务的第一关联代码的步骤。
在本实施例中,在生成调用所述关联推理服务的第一关联代码后,基于调用的第一关联代码,确定输出参数。
在本实施例中,还生成所述学件参数(包括输出参数)对应参数规约的第二关联代码。
在本实施例中,要生成所述学件参数对应参数规约的第二关联代码,需要在学件开发系统中内置第二处理逻辑(响应逻辑数据),该第二处理逻辑用于在检测到第一关联代码生成完成后,触发生成所述学件参数对应参数规约的第二关联代码的步骤。
在本实施例中,参照图2,所述生成调用所述关联推理服务的第一关联代码,并生成所述学件参数对应参数规约的第二关联代码的步骤,包括:
步骤S21,加载预设头部类库,基于所述预设头部类库获取预设接口的响应逻辑数据;
在本实施例中,自动加载预设头部类库,具体地,除了自动加载预设头部类库外,可以是自动加载其他类库,也即,在学件开发的时候可以根据需要加载其他类库。
在本实施例中,预设头部类库是类的集合,具体地,是预设常用类的集合。
在本实施例中,基于所述预设头部类库获取预设接口的响应逻辑数据,其中,预设接口的响应逻辑数据可以是参数接收逻辑数据,以及响应报文转换逻辑数据等,在此不做具体的限定。
在本实施例中,需要说明的是,首先确定预设接口(OpenAPI),其中,预设接口可以是从预设接口集合中分配的,在确定预设接口后,确定预设接口的响应逻辑数据,其中,响应逻辑数据可以是用户在学件开发系统上编写的,也即,学件开发者(用户)根据自己的业务需要,编写学件OpenAPI的响应逻辑数据(报文格式和逻辑),因而,在调用学件OpenAPI后按照定义(响应逻辑数据)进行响应(包括参数的响应,报文格式的解析等)。
具体地,在本实施例中,需要说明的是,响应逻辑数据除了初始响应逻辑外,还需要学件开发者根据业务返回需要,即依据返回结果,编写进一步的响应逻辑。
步骤S22,基于所述响应逻辑数据,生成调用所述关联推理服务的第一关联代码,并加载所述关联推理服务,得到输出参数;
在本实施例中,基于所述响应逻辑数据(其中,触发加载关联推理服务也是响应逻辑的一种),生成调用所述关联推理服务的第一关联代码(自动生成调用模型推理服务的代码)。
在本实施例中,生成调用所述关联推理服务的第一关联代码后,还加载所述关联推理服务,得到输出参数,其中,在生成调用所述关联推理服务的第一关联代码后,还加载所述关联推理服务的逻辑,也是在响应逻辑数据中预设的,进而,可以得到输出参数。
在本实施例中,加载关联推理服务,获取推理服务的输出结果(输出参数),其中,加载关联推理服务主要指的是自动加载关联模型推理服务,如包括自动获取AI推理模型的Token服务,自动解析AI模型推理服务,自动调用AI模型的推理服务等。
步骤S23,基于所述响应逻辑数据,生成所述输出参数以及所述学件参数对应参数规约的第二关联代码。
在本实施例中,基于所述响应逻辑数据,生成所述输出参数以及所述学件参数对应参数规约的第二关联代码,具体地,若未存在输出参数后的其他参数,则生成该输出参数对应参数规约的第二关联代码。
在本实施例中,基于所述响应逻辑数据,确定输出参数以及所述学件参数对应参数规约,也即,在本实施例中,对应参数规约可以是用户设置的,对于参数规约而言,学件开发系统是进行对应的响应,为了进行对应的响应,需要调用对应的组件。也即,在本实施例中,在确定输出参数以及学件参数对应参数规约后,使用代码自动构建算法(该算法中需预制大量的组件),自生成学件对应的参数的处理逻辑,如计算、均值、方差等处理逻辑,同时在本实施例中,需要补充满足规约或不满足规约后需要进行业务逻辑处理,比如发送短信通知,异常情况处理等。
其中,所述基于所述响应逻辑数据,生成所述输出参数以及所述学件参数对应参数规约的第二关联代码的步骤,包括:
步骤A1,获取各所述输出参数以及各所述学件参数对应的参数值,并获取各所述输出参数以及各所述学件参数对应的参数类型;
在本实施例中,具体阐述如何生成输出参数以及学件参数对应参数规约的第二关联代码,具体地,首先获取各所述输出参数以及各所述学件参数对应的参数值,并获取各所述输出参数以及各所述学件参数对应的参数类型,获取参数值以及参数类型的目的在于:找到匹配组件,进而,自动生成第二关联代码。
步骤A2,基于所述响应逻辑数据、所述参数值和所述参数类型,生成所述输出参数以及所述学件参数对应参数规约的第二关联代码。
在本实施例中,基于所述响应逻辑数据、所述参数值和所述参数类型,生成所述输出参数以及所述学件参数对应参数规约的第二关联代码。
其中,所述基于所述响应逻辑数据、所述参数值和所述参数类型,生成所述输出参数以及所述学件参数对应参数规约的第二关联代码的步骤,包括:
步骤B1,基于所述响应逻辑数据、所述参数值和所述参数类型,计算组件匹配度;
在本实施例中,基于所述响应逻辑数据、所述参数值和所述参数类型,计算组件匹配度设定节点匹配度NM,具体地,若输入匹配度为IM,输出匹配度为OM,功能匹配度为*FM,则组件匹配度计算公式:NM=BF(IM,OM)*FM,其中,
步骤B2,根据所述组件匹配度,确定候选组件集,以构建目标组件树;
在本实施例中,根据所述组件匹配度,具体地,根据匹配度的高低,选择各个参数对应的匹配度最高的组件,进而由各个匹配度最高的组件确定候选组件集,进而构建目标组件树。
步骤B3,确定所述目标组件树的程序流程图;
在本实施例中,确定所述目标组件树的程序流程图,具体地,即将目标组件树中的树节点纳入程序执行先后步骤中,进而,得到程序流程图。
步骤B4,基于所述程序流程图,生成所述输出参数以及所述学件参数对应参数规约的第二关联代码。
在本实施例中,基于所述程序流程图,生成所述输出参数以及所述学件参数对应参数规约的第二关联代码。
步骤S30,基于所述第一关联代码和所述第二关联代码,确定所述待开发学件的目标代码,以完成所述待开发学件的开发。
在本实施例中,基于所述第一关联代码和所述第二关联代码,确定所述待开发学件的目标代码,以完成所述待开发学件的开发,也即,定义了第一关联代码和所述第二关联代码的模板,并引入组件库,根据代码自动构建算法自动匹配组件,实现了学件代码的自动生产,为最终学件代码的构建减少了大量的编码工作。
所述基于所述第一关联代码和所述第二关联代码,确定所述待开发学件的目标代码,以完成所述待开发学件的开发的步骤之后,所述方法包括:
步骤S40,在线调试所述目标代码;
步骤S50,若所述目标代码调试完成时,发布所述目标代码并完成所述目标代码的自动化部署。
在本实施例中,在待开发学件完成开发后,可以直接在学件开发系统上在线调试所述目标代码,具体地,在在学件开发系统的JupyterNotebook上在线调试目标代码,目标代码调试完成后,发布所述目标代码并完成所述目标代码的自动化部署,即可以自动将可执行的代码发布成镜像并自动化部署,以提升开发效率。
本申请提供一种学件开发方法、装置、设备及存储介质,与现有技术中需要多个团队单独适配开发各自的学件构建系统,致使学件构建效率低相比,在本申请中,在检测到学件开发指令时,确定待开发学件的关联推理服务,并确定所述待开发学件的学件参数;生成调用所述关联推理服务的第一关联代码,并生成所述学件参数对应参数规约的第二关联代码;基于所述第一关联代码和所述第二关联代码,确定所述待开发学件的目标代码,以完成所述待开发学件的开发。在本申请中,构建统一的学件开发平台,在该统一的学件开发平台上,只要在检测到学件开发指令时,即可以确定待开发学件的关联推理服务,并确定待开发学件的学件参数,进而自动生成调用所述关联推理服务的第一关联代码,并生成所述学件参数对应参数规约的第二关联代码,并基于所述第一关联代码和所述第二关联代码,自动确定所述待开发学件的目标代码,也即,在本实施例中,实现了学件代码的自动生产,为最终学件代码的构建减少了大量的编码工作,提升了学件的开发效率。
进一步地,基于本申请中第一实施例,提供本申请的另一实施例,在该实施例中,所述根据所述组件匹配度,确定候选组件集,以构建目标组件树的步骤,包括:
步骤C1,根据所述组件匹配度,确定候选组件集;
步骤C2,获取所述输出参数以及各所述学件参数对应的参数输入值,根据所述参数输入值,从所述候选组件集中挑选得到第一组件输入值与所述参数输入值相同的初始组件树;
在本实施例中,获取所述输出参数以及各所述学件参数对应的参数输入值,根据所述参数输入值,从所述候选组件集中挑选得到第一组件输入值与所述参数输入值相同的初始组件树,具体地,设定组件树为T,候选组件集合N,接口输入参数集合II,接口输出参数集合IO,场景输入参数集合SI,组件i的输入参数I(i),组件i的输出参数O(i)。
在本实施例中,从所述候选组件集中挑选得到第一组件输入值与所述参数输入值相同的初始组件树,即在参数输入值确定后,从组件集中组件确定输入相同(即参数输入值相同)的组件,这些组件构成初始组件树,其中,IT={i,j|i∈N,j∈SI,I(i)∈II,I(j)∈SI}。
步骤C3,确定剩余组件集,根据所述初始组件树中所有的组件输出值,从所述剩余组件集中挑选得到第二组件输入值与所述组件输出值相同的下级组件树;
根据初始组件树和候选组件集,确定剩余组件集(根据迭代的次数分为第一剩余组件集,第二剩余组件集等),根据初始组件树中所有的输出(组件输出值),检索与第一次剩余组件集中组件输入相同(即第一次剩余组件集中的输入与初始组件树中对应输出相同)的组件,这些组件构成下级组件树,对于下级组件树的输出,继续检索与第二次剩余组件集中组件输入相同的组件,即递归生成下级组件树。
步骤C4,返回确定剩余组件集的步骤,直至最后一级组件树的组件输出值没有匹配的相同组件输入值时,组件树构建结束,并得到目标组件树。
返回确定剩余组件集的步骤,直至最后一级组件树的组件输出值没有匹配的相同组件输入值时,组件树构建结束,并得到目标组件树,即对于下级组件树的输出,继续检索与剩余组件集中组件输入相同的组件,递归生成下级组件树,当最后一级组件树的输出没有匹配的相同输入组件集时,组件树构建结束。。T={IT∪NTi,0<i<n,n为树的层级}
在本实施例中,由于根据所述组件匹配度,确定候选组件集;获取所述输出参数以及各所述学件参数对应的参数输入值,根据所述参数输入值,从所述候选组件集中挑选得到第一组件输入值与所述参数输入值相同的初始组件树;确定剩余组件集,根据所述初始组件树中所有的组件输出值,从所述剩余组件集中挑选得到第二组件输入值与所述组件输出值相同的下级组件树;返回确定剩余组件集的步骤,直至最后一级组件树的组件输出值没有匹配的相同组件输入值时,组件树构建结束,并得到目标组件树。在本实施例中,准确得到目标组件树,为自动开发学件代码奠定基础。
进一步地,基于本申请中第一实施例和第二实施例,提供本申请的另一实施例,在该实施例中,所述确定所述目标组件树的程序流程图的步骤,包括:
步骤D1,确定预设程序流程图中的起始节点,并依次扫描所述目标组件树的每层树节点;
步骤D2,若扫描的树节点为预设普通节点时,将该预设普通节点作为顺序节点添加到所述预设程序流程图中;
步骤D3,若扫描的树节点点为分支节点时,将该分支节点添加到程序流程图中分支程序图中;
步骤D4,若组件树所有节点扫描完成时,流程图构建结束,得到所述目标组件树的程序流程图。
在本实施例中,首先目标组件树中的起始树节点,将该起始树节点作为预设程序流程图中的起始节点(当前节点),依次扫描所述目标组件树的每层树节点,若扫描的树节点为预设普通节点时,将该预设普通节点作为顺序节点添加到所述预设程序流程图中(当前节点对应下一节点中),并将该起始节点对应下一节点作为当前节点,若组件树当前节点为分支节点时,将该分支节点添加到程序流程图中分支程序图中,若组件树所有节点扫描完成时,流程图构建结束,得到所述目标组件树的程序流程图。
在本实施例中,确定预设程序流程图中的起始节点,并依次扫描所述目标组件树的每层树节点;若扫描的树节点为预设普通节点时,将该预设普通节点作为顺序节点添加到所述预设程序流程图中;若扫描的树节点点为分支节点时,将该分支节点添加到程序流程图中分支程序图中;若组件树所有节点扫描完成时,流程图构建结束,得到所述目标组件树的程序流程图。在本实施例中,自动构建程序流程图,为自动构建目标代码奠定基础。
参照图3,图3是本申请实施例方案涉及的硬件运行环境的设备结构示意图。
如图3所示,该学件开发设备可以包括:处理器1001,例如CPU,存储器1005,通信总线1002。其中,通信总线1002用于实现处理器1001和存储器1005之间的连接通信。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储设备。
可选地,该学件开发设备还可以包括矩形用户接口、网络接口、摄像头、RF(RadioFrequency,射频)电路,传感器、音频电路、WiFi模块等等。矩形用户接口可以包括显示屏(Display)、输入子模块比如键盘(Keyboard),可选矩形用户接口还可以包括标准的有线接口、无线接口。网络接口可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。
本领域技术人员可以理解,图3中示出的学件开发设备结构并不构成对学件开发设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图3所示,作为一种存储介质的存储器1005中可以包括操作系统、网络通信模块以及学件开发程序。操作系统是管理和控制学件开发设备硬件和软件资源的程序,支持学件开发程序以及其它软件和/或程序的运行。网络通信模块用于实现存储器1005内部各组件之间的通信,以及与学件开发系统中其它硬件和软件之间通信。
在图3所示的学件开发设备中,处理器1001用于执行存储器1005中存储的学件开发程序,实现上述任一项所述的学件开发方法的步骤。
本申请学件开发设备具体实施方式与上述学件开发方法各实施例基本相同,在此不再赘述。
本申请还提供一种学件开发装置,所述学件开发装置包括:
所述学件开发装置包括:
检测模块,用于在检测到学件开发指令时,确定待开发学件的关联推理服务,并确定所述待开发学件的学件参数;
生成模块,用于生成调用所述关联推理服务的第一关联代码,并生成所述学件参数对应参数规约的第二关联代码;
确定模块,用于基于所述第一关联代码和所述第二关联代码,确定所述待开发学件的目标代码,以完成所述待开发学件的开发。
可选地,所述生成模块包括:
加载单元,用于加载预设头部类库,基于所述预设头部类库获取预设接口的响应逻辑数据;
第一生成单元,用于基于所述响应逻辑数据,生成调用所述关联推理服务的第一关联代码,并加载所述关联推理服务,得到输出参数;
第二生成单元,用于基于所述响应逻辑数据,生成所述输出参数以及所述学件参数对应参数规约的第二关联代码。
可选地,所述第二生成单元包括:
获取子单元,用于获取各所述输出参数以及各所述学件参数对应的参数值,并获取各所述输出参数以及各所述学件参数对应的参数类型;
生成子单元,用于基于所述响应逻辑数据、所述参数值和所述参数类型,生成所述输出参数以及所述学件参数对应参数规约的第二关联代码。
可选地,所述生成子单元用于实现:
基于所述响应逻辑数据、所述参数值和所述参数类型,计算组件匹配度;
根据所述组件匹配度,确定候选组件集,以构建目标组件树;
确定所述目标组件树的程序流程图;
基于所述程序流程图,生成所述输出参数以及所述学件参数对应参数规约的第二关联代码。
可选地,所述生成子单元还用于实现:
根据所述组件匹配度,确定候选组件集;
获取所述输出参数以及各所述学件参数对应的参数输入值,根据所述参数输入值,从所述候选组件集中挑选得到第一组件输入值与所述参数输入值相同的初始组件树;
确定剩余组件集,根据所述初始组件树中所有的组件输出值,从所述剩余组件集中挑选得到第二组件输入值与所述组件输出值相同的下级组件树;
返回确定剩余组件集的步骤,直至最后一级组件树的组件输出值没有匹配的相同组件输入值时,组件树构建结束,并得到目标组件树。
可选地,所述生成子单元还用于实现:
确定预设程序流程图中的起始节点,并依次扫描所述目标组件树的每层树节点;
若扫描的树节点为预设普通节点时,将该预设普通节点作为顺序节点添加到所述预设程序流程图中;
若扫描的树节点点为分支节点时,将该分支节点添加到程序流程图中分支程序图中;
若组件树所有节点扫描完成时,流程图构建结束,得到所述目标组件树的程序流程图。
可选地,所述学件开发装置还包括:
调试模块,用于在线调试所述目标代码;
发布模块,用于若所述目标代码调试完成时,发布所述目标代码并完成所述目标代码的自动化部署。
本申请存储介质具体实施方式与上述学件开发方法各实施例基本相同,在此不再赘述。
本申请还提供一种计算机程序产品、包括计算机程序,该计算机程序被处理器执行时实现上述的学件开发方法的步骤。
本申请计算机程序产品的具体实施方式与上述学件开发方法各实施例基本相同,在此不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种学件开发方法,其特征在于,所述学件开发方法包括:
在检测到学件开发指令时,确定待开发学件的关联推理服务,并确定所述待开发学件的学件参数;
生成调用所述关联推理服务的第一关联代码,并生成所述学件参数对应参数规约的第二关联代码;
基于所述第一关联代码和所述第二关联代码,确定所述待开发学件的目标代码,以完成所述待开发学件的开发。
2.如权利要求1所述的学件开发方法,其特征在于,所述生成调用所述关联推理服务的第一关联代码,并生成所述学件参数对应参数规约的第二关联代码的步骤,包括:
加载预设头部类库,基于所述预设头部类库获取预设接口的响应逻辑数据;
基于所述响应逻辑数据,生成调用所述关联推理服务的第一关联代码,并加载所述关联推理服务,得到输出参数;
基于所述响应逻辑数据,生成所述输出参数以及所述学件参数对应参数规约的第二关联代码。
3.如权利要求2所述的学件开发方法,其特征在于,所述基于所述响应逻辑数据,生成所述输出参数以及所述学件参数对应参数规约的第二关联代码的步骤,包括:
获取各所述输出参数以及各所述学件参数对应的参数值,并获取各所述输出参数以及各所述学件参数对应的参数类型;
基于所述响应逻辑数据、所述参数值和所述参数类型,生成所述输出参数以及所述学件参数对应参数规约的第二关联代码。
4.如权利要求3所述的学件开发方法,其特征在于,所述基于所述响应逻辑数据、所述参数值和所述参数类型,生成所述输出参数以及所述学件参数对应参数规约的第二关联代码的步骤,包括:
基于所述响应逻辑数据、所述参数值和所述参数类型,计算组件匹配度;
根据所述组件匹配度,确定候选组件集,以构建目标组件树;
确定所述目标组件树的程序流程图;
基于所述程序流程图,生成所述输出参数以及所述学件参数对应参数规约的第二关联代码。
5.如权利要求4所述的学件开发方法,其特征在于,所述根据所述组件匹配度,确定候选组件集,以构建目标组件树的步骤,包括:
根据所述组件匹配度,确定候选组件集;
获取所述输出参数以及各所述学件参数对应的参数输入值,根据所述参数输入值,从所述候选组件集中挑选得到第一组件输入值与所述参数输入值相同的初始组件树;
确定剩余组件集,根据所述初始组件树中所有的组件输出值,从所述剩余组件集中挑选得到第二组件输入值与所述组件输出值相同的下级组件树;
返回确定剩余组件集的步骤,直至最后一级组件树的组件输出值没有匹配的相同组件输入值时,组件树构建结束,并得到目标组件树。
6.如权利要求4所述的学件开发方法,其特征在于,所述确定所述目标组件树的程序流程图的步骤,包括:
确定预设程序流程图中的起始节点,并依次扫描所述目标组件树的每层树节点;
若扫描的树节点为预设普通节点时,将该预设普通节点作为顺序节点添加到所述预设程序流程图中;
若扫描的树节点点为分支节点时,将该分支节点添加到程序流程图中分支程序图中;
若组件树所有节点扫描完成时,流程图构建结束,得到所述目标组件树的程序流程图。
7.如权利要求1所述的学件开发方法,其特征在于,所述基于所述第一关联代码和所述第二关联代码,确定所述待开发学件的目标代码,以完成所述待开发学件的开发的步骤之后,所述方法包括:
在线调试所述目标代码;
若所述目标代码调试完成时,发布所述目标代码并完成所述目标代码的自动化部署。
8.一种学件开发装置,其特征在于,所述学件开发装置包括:
检测模块,用于在检测到学件开发指令时,确定待开发学件的关联推理服务,并确定所述待开发学件的学件参数;
生成模块,用于生成调用所述关联推理服务的第一关联代码,并生成所述学件参数对应参数规约的第二关联代码;
确定模块,用于基于所述第一关联代码和所述第二关联代码,确定所述待开发学件的目标代码,以完成所述待开发学件的开发。
9.一种学件开发设备,其特征在于,所述学件开发设备包括:存储器、处理器以及存储在存储器上的用于实现所述学件开发方法的程序,
所述存储器用于存储实现学件开发方法的程序;
所述处理器用于执行实现所述学件开发方法的程序,以实现如权利要求1至7中任一项所述学件开发方法的步骤。
10.一种存储介质,其特征在于,所述存储介质上存储有实现学件开发方法的程序,所述实现学件开发方法的程序被处理器执行以实现如权利要求1至7中任一项所述学件开发方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110627562.9A CN115437627A (zh) | 2021-06-04 | 2021-06-04 | 学件开发方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110627562.9A CN115437627A (zh) | 2021-06-04 | 2021-06-04 | 学件开发方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115437627A true CN115437627A (zh) | 2022-12-06 |
Family
ID=84239798
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110627562.9A Pending CN115437627A (zh) | 2021-06-04 | 2021-06-04 | 学件开发方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115437627A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116542136A (zh) * | 2023-04-13 | 2023-08-04 | 南京大学 | 一种通用的学件查搜与复用的方法和装置 |
-
2021
- 2021-06-04 CN CN202110627562.9A patent/CN115437627A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116542136A (zh) * | 2023-04-13 | 2023-08-04 | 南京大学 | 一种通用的学件查搜与复用的方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107450899B (zh) | 终端控制脚本的生成方法和装置 | |
CN111159049A (zh) | 接口自动化测试方法及系统 | |
CN113422794A (zh) | 流量录制、回放处理方法、装置及电子设备 | |
CN109271157B (zh) | 软件开发方法、设备及计算机可读存储介质 | |
CN110990008B (zh) | 更新页面的方法、装置、存储介质以及电子设备 | |
CN111475390A (zh) | 日志采集系统部署方法、装置、设备及存储介质 | |
CN111443902A (zh) | 函数调用树生成方法、系统、计算机设备及可读存储介质 | |
CN112306471A (zh) | 一种任务的调度方法和装置 | |
CN110727524A (zh) | 一种实现远程过程调用的方法及装置 | |
CN107491298B (zh) | 一种按钮对象自动扫描方法及系统 | |
CN111369237B (zh) | 一种数据处理方法、装置及计算机存储介质 | |
CN115437627A (zh) | 学件开发方法、装置、设备及存储介质 | |
CN106095886B (zh) | 一种数据处理方法及其装置 | |
Hamza et al. | TCAIOSC: application code conversion | |
CN111309319A (zh) | 可继承的局数据动态页面配置方法和装置 | |
CN110389886B (zh) | 一种主体应用程序的附加功能测试方法、装置及存储介质 | |
CN115757135A (zh) | 测试环境部署方法、设备、存储介质及程序产品 | |
CN114756183A (zh) | 数据打印方法、装置、设备及存储介质 | |
CN111124386B (zh) | 基于Unity的动画事件处理方法、装置、设备和存储介质 | |
CN115480771A (zh) | 用于部署算法的方法及相关设备 | |
CN114416305A (zh) | 一种机器人引擎实现方法、系统及电子设备 | |
CN116360712A (zh) | 平台框架扩展方法、装置及存储介质 | |
CN113760707A (zh) | 接口测试方法、装置、设备及计算机可读存储介质 | |
CN111985188A (zh) | 一种数据转换方法、装置、终端和存储介质 | |
CN113535594B (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 |