CN113448605B - 一种软件更新方法、装置、电子设备及存储介质 - Google Patents
一种软件更新方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN113448605B CN113448605B CN202110728350.XA CN202110728350A CN113448605B CN 113448605 B CN113448605 B CN 113448605B CN 202110728350 A CN202110728350 A CN 202110728350A CN 113448605 B CN113448605 B CN 113448605B
- Authority
- CN
- China
- Prior art keywords
- function
- target
- tree structure
- field
- node
- 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
- 238000000034 method Methods 0.000 title claims abstract description 49
- 230000006870 function Effects 0.000 claims description 310
- 230000004048 modification Effects 0.000 claims description 14
- 238000012986 modification Methods 0.000 claims description 14
- 230000015654 memory Effects 0.000 claims description 13
- 238000004590 computer program Methods 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 4
- 230000001172 regenerating effect Effects 0.000 description 2
- 230000000052 comparative effect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种软件更新方法、装置、电子设备及存储介质,能够解决现有技术中通过在原有代码的基础上写入新的代码来对软件进行更新时容易出现的更新失败、或者需要重新测试的问题。软件更新方法包括:当检测到针对项目文件的添加命令时,将用于实现第一目标功能的第一目标树形结构添加到项目文件中;第一目标树形结构包括至少一条执行逻辑,每一个执行逻辑用于实现一个功能点;运行项目文件,并调用解析程序对所述第一目标树形结构进行解析,以将第一目标功能添加到软件。
Description
技术领域
本申请涉及计算机技术领域,具体而言,涉及一种软件更新方法、装置、电子设备及存储介质。
背景技术
现有技术中,当需要对现有软件进行更新时,往往是在原有代码的基础上写入新的代码,但是新写入的代码可能会对原有代码造成影响,从而导致更新失败,另外,增加新代码之后,产品不可以立马上线,还需要进行多次测试验证。
发明内容
本申请实施例提供了一种软件更新方法、装置、电子设备及存储介质,能够解决现有技术中通过在原有代码的基础上写入新的代码来对软件进行更新时容易出现的更新失败的问题。
第一方面,本申请实施例提供了一种软件更新方法,应用于电子设备,所述电子设备中存储项目文件,所述项目文件中包括解析程序,所述方法包括:
当检测到针对所述项目文件的添加命令时,将用于实现第一目标功能的第一目标树形结构添加到所述项目文件中;其中,所述第一目标树形结构包括至少一条执行逻辑,每一个执行逻辑用于实现一个功能点;
运行所述项目文件,并调用所述解析程序对所述第一目标树形结构进行解析,以将所述第一目标功能添加到所述软件。
本申请实施例中,电子设备中存储有项目文件,该项目文件中包括有解析程序。当需要对软件进行更新时,只需要将用于实现第一目标功能的第一目标树形结构添加到上述项目文件中,然后运行上述项目文件,同时调用解析程序对第一目标树形结构进行解析,从而将第一目标功能添加到软件中。该方法中,用于实现目标功能的目标树形结构单独添加到项目文件,并且使用单独的解析程序对该目标树形结构进行解析,从而不会对项目文件中用于实现其他的功能的代码造成影响,减少了软件更新失败的可能性,提高了软件更新的效率。
可选的,所述项目文件还包括用于实现第二目标功能的第二目标树形结构,所述第二目标树形结构包括至少一条执行逻辑,每条执行逻辑用于实现一个功能点,所述方法还包括:
当检测到针对所述项目文件的修改命令时,将所述第二目标树形结构修改为第三目标树形结构,所述第三目标树形结构用于实现第三目标功能,所述第三目标树形结构包括至少一条执行逻辑,每条执行逻辑用于实现一个功能点,所述第三目标树形结构与所述第二目标树形结构中相同功能点的数量超过设定阈值;
运行所述项目文件,并调用所述解析程序对所述第三目标树形结构进行解析,以将所述软件中的所述第二目标功能修改为所述第三目标功能。
本申请实施例中,项目文件中存储有用于实现第二目标功能的第二目标树形结构,若需要对软件的功能进行更新时,可以直接对第二目标树形结构进行修改,获得第三目标树形结构。然后运行项目文件,同时调用解析程序对第三目标树形结构进行解析,从而将第二目标功能修改为第三目标功能。该方法中,若软件更新仅涉及对现有功能的部分功能点进行更新,那么可以直接在现有目标树形结构的基础上进行修改,而无需重新生成用于实现新功能的整个目标树形结构,从而提升了软件更新的效率。
可选的,所述项目文件还包括用于实现第二目标功能的第二目标树形结构,所述第二目标树形结构包括至少一条执行逻辑,每条执行逻辑用于实现一个功能点,所述方法还包括:
当检测到针对所述项目文件的替换命令时,将所述第二目标树形结构替换为第三目标树形结构,所述第三目标树形结构用于实现第三目标功能,所述第三目标树形结构包括至少一条执行逻辑,每条执行逻辑用于实现一个功能点,所述第三目标树形结构与所述第二目标树形结构中相同功能点的数量不超过设定阈值;
运行所述项目文件,并调用所述解析程序对所述第三目标树形结构进行解析,以将所述软件中的所述第二目标功能删除以及将所述第三目标功能添加到所述软件。
本申请实施例中,项目文件中存储有用于实现第二目标功能的第二目标树形结构,若需要对软件的功能进行更新时,可以利用用于实现第三目标功能的第三目标树形结构对上述第二目标树形结构进行替换。然后运行项目文件,同时调用解析程序对第三目标树形结构进行解析,从而将第二目标功能删除以及将第三目标功能添加到软件中。该方法中,若软件更新时涉及对现有功能的较多功能点进行改动,那么可以利用新的目标树形结构来替换现有的目标树形结构,避免因对现有目标树形结构改动较多而导致出错,从而提升了软件更新的效率。
可选的,任一目标树形结构为抽象语法树。
本申请实施例中,用于实现目标功能的目标树形结构可以为抽象语法树,从而可以较为简洁的对目标功能进行描述。
可选的,任一目标功能包括多个功能点,每个抽象语法树中定义有多个节点,功能点与节点一一对应。
本申请实施例中,任一目标功能可以分为多个功能点,那么基于抽象语法树中的一个节点来描述一项功能点,从而便于对各个功能点进行管理。
可选的,每个节点具有对应的预设属性集合,所述预设属性集合至少包括第一字段、第二字段、第三字段以及第四字段,所述第一字段用于指示当前功能点的功能编码,所述第二字段用于指示当前功能点的功能类型,所述第三字段用于指示当前功能点的功能值,所述第四字段用于指示当前功能点是否与其他功能点具有关联关系,所述关联关系用于指示当前功能点的执行过程依赖于其他功能点的执行结果。
本申请实施例中,每个节点通过自身的预设属性集合来管理一个功能点,从而便于后续对抽象语法树进行统一的解析。
可选的,所述多个节点分为根节点与叶子节点,第一目标抽象语法树中设置有预设字段,所述预设字段用于表征根节点对应功能点的功能编码,调用所述解析程序对所述第一目标树形结构进行解析包括:
基于所述预设字段从所述第一目标抽象语法树中确定出根节点;
以所述根节点为起点,对所述第一目标抽象语法树所包括的全部节点进行遍历,并根据所述根节点以及每个叶子节点所对应的预设属性集合中的第二字段创建对应类型的功能点;
从所述根节点为起点执行对应的功能点,并基于所述根节点所对应的预设属性集合中的第四字段确定与所述根节点相关联的至少一个叶子节点,以及执行所述至少一个叶子节点中每个叶子节点所对应的功能点;
若确定所述至少一个叶子节点均与其他叶子节点无关联关系,则获取所述至少一个叶子节点中每个叶子节点所对应的功能点的执行结果;
基于所述至少一个叶子节点中每个叶子节点所对应的功能点的执行结果,确定出所述根节点所对应的功能点的执行结果。
本申请实施例中,可以基于一种统一的方式对目标抽象语法树解析,而无需针对不同的目标抽象语法树单独设计不同的解析程序。
第二方面,本申请实施例提供了一种软件更新装置,所述装置中存储项目文件,所述项目文件中包括解析程序,所述装置包括:
添加单元,用于当检测到针对所述项目文件的添加命令时,将用于实现第一目标功能的第一目标树形结构添加到所述项目文件中;其中,所述第一目标树形结构包括至少一条执行逻辑,每一个执行逻辑用于实现一个功能点;
更新单元,用于运行所述项目文件,并调用所述解析程序对所述第一目标树形结构进行解析,以将所述第一目标功能添加到所述软件。
可选的,所述项目文件还包括用于实现第二目标功能的第二目标树形结构,所述第二目标树形结构包括至少一条执行逻辑,每条执行逻辑用于实现一个功能点,所述装置还包括:
修改单元,当检测到针对所述项目文件的修改命令时,将所述第二目标树形结构修改为第三目标树形结构,所述第三目标树形结构用于实现第三目标功能,所述第三目标树形结构包括至少一条执行逻辑,每条执行逻辑用于实现一个功能点,所述第三目标树形结构与所述第二目标树形结构中相同功能点的数量超过设定阈值;
所述更新单元还用于:运行所述项目文件,并调用所述解析程序对所述第三目标树形结构进行解析,以将所述软件中的所述第二目标功能修改为所述第三目标功能。
可选的,所述装置还包括:
替换单元,用于当检测到针对所述项目文件的替换命令时,将所述第二目标树形结构替换为第三目标树形结构,所述第三目标树形结构用于实现第三目标功能,所述第三目标树形结构包括至少一条执行逻辑,每条执行逻辑用于实现一个功能点,所述第三目标树形结构与所述第二目标树形结构中相同功能点的数量不去超过设定阈值;
所述更新单元,还用于运行所述项目文件,并调用所述解析程序对所述第三目标树形结构进行解析,以将所述软件中的所述第二目标功能删除以及将所述第三目标功能增加到所述软件。
可选的,任一目标树形结构为抽象语法树。
可选的,任一目标功能包括多个功能点,每个抽象语法树中定义有多个节点,功能点与节点一一对应。
可选的,每个节点具有对应的预设属性集合,所述预设属性集合至少包括第一字段、第二字段、第三字段以及第四字段,所述第一字段用于指示当前功能点的功能编码,所述第二字段用于指示当前功能点的功能类型,所述第三字段用于指示当前功能点的功能值,所述第四字段用于指示当前功能点是否与其他功能点具有关联关系,所述关联关系用于指示实现当前功能点依赖于其他功能点的执行结果。
可选的,所述多个节点分为根节点与叶子节点,第一目标抽象语法树中设置有预设字段,所述预设字段用于表征根节点对应功能点的功能编码,所述更新单元具体用于:
基于所述预设字段从所述第一目标抽象语法树中确定出根节点;
以所述根节点为起点,对所述第一目标抽象语法树所包括的全部节点进行遍历,并根据所述根节点以及每个叶子节点所对应的预设属性集合中的第二字段创建对应类型的功能点;
从所述根节点为起点执行对应的功能点,并基于所述根节点所对应的预设属性集合中的第四字段确定与所述根节点相关联的至少一个叶子节点,以及执行所述至少一个叶子节点中每个叶子节点所对应的功能点;
若确定所述至少一个叶子节点均与其他叶子节点无关联关系,则获取所述至少一个叶子节点中每个叶子节点所对应的功能点的执行结果;
基于所述至少一个叶子节点中每个叶子节点所对应的功能点的执行结果,确定出所述根节点所对应的功能点的执行结果。
第三方面,本申请实施例提供了一种电子设备,所述电子设备包括处理器和存储器,所述处理器用于执行所述存储器中存储的计算机程序时实现如第一方面任一实施例所述方法的步骤。
第四方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面任一实施例所述方法的步骤。
附图说明
图1为本申请实施例提供的一种软件更新方法的流程示意图;
图2为本申请实施例提供的一种第一目标抽象语法树的结构示意图;
图3为本申请实施例提供的一种第一目标抽象语法树的结构示意图;
图4为本申请实施例提供的一种软件更新装置的结构示意图;
图5为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。
现有技术中,当需要对已有软件进行更新时,通常会基于更新需求,开发出多个功能模块,且每个功能模块都预留有接口,然后输入代码调用各个功能模块实现需要升级的功能,即在原有代码的基础上,通过写入新的代码来实现软件更新,但是新写入的代码可能会对原有代码造成影响,从而导致软件更新失败。
鉴于此,本申请实施例中提供了一种软件更新方法,该方法中,用于实现目标功能的目标树形结构单独添加到项目文件,并且使用单独的解析程序对该目标树形结构进行解析,从而不会对项目文件中用于实现其他的功能的代码造成影响,减少了软件更新失败的可能性,提高了软件更新的效率。
下面结合附图对本申请实施例提供的技术方案进行介绍。请参见图1,本申请实施例提供了一种软件更新方法,该方法的流程描述如下:
步骤101:当检测到针对项目文件的添加命令时,将用于实现第一目标功能的第一目标树形结构添加到项目文件中;其中,第一目标树形结构包括至少一条执行逻辑,每条执行逻辑用于实现一个功能点。
考虑到对比实施例中,开发人员是在原有代码的基础上手动输入新的代码(新的代码用于实现目标功能),然后运行全部代码(原有代码以及新代码)实现对软件进行更新,那么新输入的代码可能会与原始代码有冲突,导致软件更新失败,使得软件更新效率较低,且新功能在上线之前需要再三进行测试,确保无误之后才可正式上线。
鉴于此,本申请实施例中,可以通过特定的数据结构来描述所需要新输入的代码(即通过特定数据结构来描述待添加的目标功能),当需要对软件进行更新时,便可以直接通过对描述该目标功能的数据结构进行解析,就可以完成软件更新,由于实现原始功能的代码与用于实现待添加的目标功能的数据结构是相互独立的,且针对上述数据结构的解析过程也与原有代码的执行过程无关,因此不会对原有代码造成任何影响,从而减少了软件更新失败的概率,提高了软件更新的效率,且未加入新代码,无需进行全面测试,只要保证目标树形结构的正确即可。在此之前,需要将上述用于描述待添加的目标功能的数据结构添加到软件所对应的项目文件。
作为一种可能的实施方式,电子设备中存储有项目文件,该项目文件可以认为用于实现软件的现有功能,同时该项目文件中还包括解析程序,该解析程序可以用于对树形结构进行解析,从而实现该树形结构所描述的功能。即该解析程序是为解析树形结构而设计的。当电子设备检测到针对项目文件的添加指令时,可以将实现第一目标功能的第一目标树形结构添加到上述项目文件中。应理解,第一目标树形结构可以是原本存储于电子设备中,且与项目文件独立存储的,或者第一目标树形结构也可以是新加入到电子设备中的,此处不做特别限制。
应理解,第一目标功能可能是多个功能点所对应的执行结果的集合,因此,第一目标树形结构在描述第一目标功能时应包括至少一条执行逻辑,且每条执行逻辑用于实现一个功能点。例如,第一目标树形结构可以采用抽象语法树,从而实现更为简洁的对待更新的目标功能进行描述。
下面针对如何利用抽象语法树来描述目标功能进行详细说明。
本申请实施例中,任一目标功能包括多个功能点,每个抽象语法树中可以定义多个节点,为了使抽象语法树能够更好的描述对应的目标功能,作为一种可能的实施方式,抽象语法树中的节点与目标功能所包括的功能点可以一一对应,即一个节点用于描述一个功能点。
具体的,每个节点可以具有对应的预设属性集合,该预设属性集合中至少包括第一字段、第二字段、第三字段以及第四字段,该第一字段用于指示当前功能点的编码(用于对每项目标功能所包括的多个功能点进行区分),第二字段用于指示当前功能点的功能类型,第三字段用于指示当前功能点的执行结果,第四字段用于指示当前功能点是否与其他功能点具有关联关系。应理解,这里的关联关系是指当前功能点的执行过程依赖于其他功能点的执行结果。
本申请实施例中,通过上述方式来描述一项目标功能中的任一功能点,从而形成一套规范的描述结构,便于后续解析过程的顺利执行。
考虑到上述目标树形结构表征一项目标功能,而每项目标功能具有对应的目标对象,例如,本次更新功能是为一个已有按钮添加点击后播放音乐的功能,那么这里的“按钮”即为目标对象,而“点击并播放音乐”即为该目标对象的目标功能。因此,本申请实施例中,不仅需要将用于描述目标功能的目标树形结构添加到项目文件中,同时还需要建立目标树形结构与目标对象的对应关系。
应理解,用于表征原始功能的项目文件中预先定义有多个目标对象,例如,目标对象1、目标对象2以及目标对象3,此处对项目文件中预先定义的目标对象的数量不做特别限制。同时多个目标对象可以均为同一类型的目标对象,也可以是类型互不相同的目标对象,此处对项目文件中预先定义的目标对象的类型也不做特别限制。
下面针对如何将目标树形结构与目标对象建立关联的方案进行详细说明。
第一种方式:描述目标功能的目标树形结构直接与目标对象建立关联关系。
本申请实施例中,项目文件中预先定义的各个目标对象均具有自身的身份标识,在对原始功能进行更新之前,开发人员可以知晓本次更新的具体内容,即需要为哪个目标对象添加什么目标功能。因此,目标树形结构除了描述目标功能以外,还应包括待建立关联关系的目标对象的身份标识,那么在将目标树形结构添加到项目文件后,就可以实现将目标树形结构与项目文件中预先定义的多个目标对象中特定的目标对象建立关联关系。
第二种方式:描述目标功能的目标树形结构间接与目标对象建立关联关系。
本申请实施例中,预先建立有用于描述不同目标功能的多个目标树形结构(即功能模板),且每个目标树形结构具有自身的身份标识,即通过目标树形结构自身的身份标识可以对其描述的目标功能进行区分。同时,还建立有用于描述待建立关联关系的目标对象以及调用哪个目标树形结构(即哪个功能模板)的引用树形结构,那么在将目标树形结构以及引用树形结构添加到项目文件后,便可以将特定的目标树形结构(特定的功能模板)与项目文件中预先定义的多个目标对象中特定的目标对象建立关联关系。
应理解,本申请实施例中,可以根据具体的升级内容从上述两种方式中灵活选择其中一种,例如,当本次升级内容是为一个目标对象添加一个目标功能,或者是为不同目标对象添加不同的目标功能时,可以选择第一种方式或第二种方式;当本次升级内容是为不同的目标对象添加同一目标功能时,可以选择第二种方式。此处不做特别限制。
步骤102:运行项目文件,并调用解析程序对第一目标树形结构进行解析,以将第一目标功能添加到软件。
本申请实施例中,当用于描述第一目标功能的第一目标树形结构被添加到项目文件之后,便可以运行项目文件,从而实现对现有软件进行更新。
作为一种可能的实施方式,电子设备可以运行项目文件,同时调用解析程序对第一目标树形结构进行解析,从而将第一目标功能添加到软件中,即完成软件的更新过程。
下面针对如何解析用于描述第一目标功能的第一目标抽象语法树进行详细说明。
本申请实施例中,第一目标抽象语法树中定义的多个节点可以分为根节点与叶子节点,应理解,第一目标抽象语法树中仅可以定义一个根节点,但是可以定义多个叶子节点。在解析时,通常是从根节点开始(即根节点作为解析的起点),因此为了可以在多个子节点确定出根节点,第一目标抽象语法树中设置有预设字段,该预设字段用于表征根节点对应的功能点的功能编码,从而使得在解析过程中,可以快速确定解析的起点。此处对预设字段以及根节点的编码不做特别限制。
在实际解析过程中,电子设备可以基于上述预设字段从第一目标抽象语法树中快速确定出根节点,然后以根节点为起点,对第一目标抽象语法树中所定义的全部节点进行遍历,例如,可以采用前序遍历方式,此处不做特别限制。同时还需要根据根节点以及各个叶子节点所对应的预设属性集合中的第二字段创建对应类型的功能点,例如,功能点主要分为两个类型,第一种类型为数据型功能点,该类型的功能点功能通过节点自身就可以完成,无需依赖于其他节点;第二种类型为功能型功能点,该类型的功能点通过节点自身无法完成,必须要依赖于其他节点的执行结果。
在确定各个节点的功能点之后,电子设备可以以根节点为起点,开始执行根节点所对应的功能点,同时根据根节点所对应的预设属性集合中第四字段确定与根节点相关联的至少一个叶子节点,从而执行该至少一个叶子节点中每个叶子节点所对应的功能点。在执行上述至少一个叶子节点中每个叶子节点所对应的功能点过程中,若确定上述各个叶子节点均与其他叶子节点无关联关系,那么就可以直接获取该至少一个叶子节点中每个叶子节点所对应的功能点的执行结果。然后基于该至少一个叶子节点中每个叶子节点所对应的功能点的执行结果,进一步确定根节点所对应的功能点的执行结果,从而完成解析过程。
应理解,若上述至少一个叶子节点中任一叶子节点与其他叶子节点存在关联关系,则进一步执行其他叶子节点所对应的功能点,并获取对应的执行结果,在此基础上,可以确定上述任一叶子节点所对应的功能点的执行结果,最终仍然可以确定出根节点所对应的功能点的执行结果。
例如,第一目标抽象语法树为:
请参见图2,上述第一目标抽象语法树用于描述s=2,即获取常数2,然后为变量s赋值。在实现上述功能的过程中使用了三个节点来进行描述:第一个用于描述赋值操作(即“=”),第二个节点用于描述变量s,第三个节点用于描述常量2。预设字段“root”为1,可以确定出第一个节点为根节点,然后执行第一个节点所对应的功能点。在执行第一个节点所对应的功能点的过程中,发现第一个节点的功能点并非是独立功能,它需要依赖于第二个节点以及第三个节点的执行结果。此时可以执行第二个节点以及第三个节点所对应的功能点,并且第二个节点与第三个节点均不存在关联节点,应理解,第二个节点所对应的功能点与第三个节点所对应的功能点之间是相互独立的,因此,两个功能点可以认为是并行执行的。在获得第二个节点所对应的功能点的执行结果以及第三个节点所对应的功能点的执行结果之后,可以进一步确定第一个节点的执行结果。
又例如,第一目标抽象语法树为:
/>
请参见图3,上述第一目标抽象语法树用于描述s=2+3,即获取常数2和3,然后将常数3和2执行加法操作,然后将执行加法操作后的结果赋值给变量s。在实现上述功能的过程中使用了五个节点来进行描述:第一个用于描述赋值操作(“=”),第二个节点用于描述变量s,第三个节点用于描述加法操作(“+”),第四个节点用于描述常量2,第五个节点用于描述常量3。预设字段“root”为1,可以确定出第一个节点为根节点,然后执行第一个节点所对应的功能点。在执行第一个节点所对应的功能点的过程中,发现第一个节点的功能点并非是独立功能,它需要依赖于第二个节点以及第三个节点的执行结果。此时可以执行第二个节点以及第三个节点所对应的功能点,应理解,第二个节点所对应的功能点与第三个节点所对应的功能点之间是相互独立的,因此,两个功能点可以认为是并行执行的。由于第二个节点所对应功能点的执行过程不需要依赖于其他节点的执行结果,因此可以直接获得第二个节点所对应功能点的执行结果(变量s)。但是第三个节点所对应的功能点的执行过程需要依赖于第四个节点以及第五个节点的执行结果,此时,可以先执行第四节点所对应的功能点以及第五个节点所对应的功能点,并且由于第四个节点以及第五个节点所对应的功能点的执行过程均不依赖于其他功能点的执行结果,因此可以直接获取到常量2(第四个节点所对应的功能点的执行结果)和常量3(第五个节点所对应的功能点的执行结果)。在此基础上,可以确定第三个节点所对应的功能点的执行结果(即2+3为5)。在确定第三个节点所对应的功能点的执行结果之后,就可以确定第一个节点所对应的功能点的执行结果(即将常量5赋值给变量s)。
在一些实施例中,考虑到本次软件更新并非是针对特定的目标对象添加新的目标功能,而是对同一目标对象的某一目标功能进行略微调整。例如,将某一目标对象的背景渲染颜色有红色变成蓝色,此时,本申请实施例中,以直接在现有目标树形结构的基础上进行修改,而无需重新生成用于实现新功能的整个目标树形结构,从而提升了软件更新的效率。
作为一种可能的实施方式,项目文件中还包括用于实现第二目标功能的第二目标树形结构,该第二目标树形结构包括至少一条执行逻辑,每条执行逻辑用于实现一个功能点。当电子设备检测到针对项目文件的修改指令时,可以将第二目标树形结构更改为第三目标树形结构,该第三目标树形结构用于实现第三目标功能。然后便可以运行上述项目文件,然后调用解析程序对第三目标树形结构进行解析,从而实现将软件中的第二目标功能修改为第三目标功能。具体的解析过程请参照上文,此处不再赘述。
应理解,第三目标树形结构包括至少一条执行逻辑,每条执行逻辑用于实现一个功能点,且第三目标树形结构与第二目标树形结构中相同功能点的数量超过设定阈值。同时,第二目标树形结构与第二目标树形结构均可以为抽象语法树。
在一些实施例中,考虑到本次软件更新并非是针对特定的目标对象添加新的目标功能,而是对同一目标对象的某一目标功能进行大幅度的调整。此时,本申请实施例中,可以利用新的目标树形结构来替换现有的目标树形结构,避免因对现有目标树形结构改动较多而导致出错,从而提升了软件更新的效率。
作为一种可能的实施方式,项目文件中还包括用于实现第二目标功能的第二目标树形结构,该第二目标树形结构包括至少一条执行逻辑,每条执行逻辑用于实现一个功能点。当电子设备检测到针对项目文件的替换命令时,可以将第二目标树形结构替换为第三目标树形结构,该第三目标树形结构用于实现第三目标功能。然后便可以运行上述项目文件,然后调用解析程序对第三目标树形结构进行解析,从而实现将软件中的第二目标功能进行删除以及将第三目标功能添加到软件中。具体的解析过程请参照上文,此处不再赘述。
应理解,第三目标树形结构包括至少一条执行逻辑,每条执行逻辑用于实现一个功能点,且第三目标树形结构与第二目标树形结构中相同功能点的数量不超过设定阈值。同时,第二目标树形结构与第二目标树形结构均可以为抽象语法树。
在一些实施例中,考虑到本次软件更新并非是针对特定的目标对象添加新的目标功能,而是去除某一目标对象的某一目标功能。此时,本申请实施例中,将与该目标对象相对应的特定目标树形结构进行删除,从而实现软件更新。
作为一种可能的实施方式,项目文件中还包括用于实现第二目标功能的第二目标树形结构,该第二目标树形结构包括至少一条执行逻辑,每条执行逻辑用于实现一个功能点。当电子设备检测到针对项目文件的删除命令时,可以将上述第二目标树形结构从项目文件中删除。然后便可以运行上述项目文件,从而实现将软件中的第二目标功能进行删除。应理解,第二目标树形结构可以为抽象语法树。
请参见图4,基于同一发明构思,本申请实施例还提供了一种软件更新装置,该装置中存储有项目文件,该项目文件中包括解析程序,该装置包括:添加单元201与更新单元202。
添加单元201,用于当检测到针对所述项目文件的添加命令时,将用于实现第一目标功能的第一目标树形结构添加到所述项目文件中;其中,所述第一目标树形结构包括至少一条执行逻辑,每一个执行逻辑用于实现一个功能点;
更新单元202,用于运行所述项目文件,并调用所述解析程序对所述第一目标树形结构进行解析,以将所述第一目标功能添加到所述软件。
可选的,项目文件还包括用于实现第二目标功能的第二目标树形结构,第二目标树形结构包括至少一条执行逻辑,每条执行逻辑用于实现一个功能点,该装置还包括:
修改单元,当检测到针对项目文件的修改命令时,将第二目标树形结构修改为第三目标树形结构,第三目标树形结构用于实现第三目标功能,第三目标树形结构包括至少一条执行逻辑,每条执行逻辑用于实现一个功能点,第三目标树形结构与第二目标树形结构中相同功能点的数量超过设定阈值;
更新单元202还用于:运行项目文件,并调用解析程序对第三目标树形结构进行解析,以将软件中的第二目标功能修改为第三目标功能。
可选的,该装置还包括:
替换单元,用于当检测到针对项目文件的修改指令时,将第二目标树形结构替换为第三目标树形结构,第三目标树形结构用于实现第三目标功能,第三目标树形结构包括至少一条执行逻辑,每条执行逻辑用于实现一个功能点,第三目标树形结构与第二目标树形结构中相同功能点的数量不超过设定阈值;
更新单元202,还用于运行项目文件,并调用解析程序对第三目标树形结构进行解析,以将软件中的所述第二目标功能删除以及将第三目标功能增加到软件。
可选的,任一目标树形结构为抽象语法树。
可选的,任一目标功能包括多个功能点,每个抽象语法树中定义有多个节点,功能点与节点一一对应。
可选的,每个节点具有对应的预设属性集合,所述预设属性集合至少包括第一字段、第二字段、第三字段以及第四字段,所述第一字段用于指示当前功能点的功能编码,所述第二字段用于指示当前功能点的功能类型,所述第三字段用于指示当前功能点的功能值,所述第四字段用于指示当前功能点是否与其他功能点具有关联关系,所述关联关系用于指示实现当前功能点依赖于其他功能点的执行结果。
可选的,多个节点分为根节点与叶子节点,第一目标抽象语法树中设置有预设字段,预设字段用于表征根节点对应功能点的功能编码,更新单元202具体用于:
基于所述预设字段从所述第一目标抽象语法树中确定出根节点;
以所述根节点为起点,对所述第一目标抽象语法树所包括的全部节点进行遍历,并根据所述根节点以及每个叶子节点所对应的预设属性集合中的第二字段创建对应类型的功能点;
从所述根节点为起点执行对应的功能点,并基于所述根节点所对应的预设属性集合中的第四字段确定与所述根节点相关联的至少一个叶子节点,以及执行所述至少一个叶子节点中每个叶子节点所对应的功能点;
若确定所述至少一个叶子节点均与其他叶子节点无关联关系,则获取所述至少一个叶子节点中每个叶子节点所对应的功能点的执行结果;
基于所述至少一个叶子节点中每个叶子节点所对应的功能点的执行结果,确定出所述根节点所对应的功能点的执行结果。
请参见图5,基于同一发明构思,本申请实施例还提供一种电子设备,该电子设备包括至少一个处理器301,处理器301用于执行存储器中存储的计算机程序,实现本发明实施例提供的如图1所示的软件更新方法的步骤。
可选的,处理器301具体可以是中央处理器、特定ASIC,可以是一个或多个用于控制程序执行的集成电路。
可选的,该电子设备还可以包括与至少一个处理器301连接的存储器302,存储器302可以包括ROM、RAM和磁盘存储器。存储器302用于存储处理器301运行时所需的数据,即存储有可被至少一个处理器301执行的指令,至少一个处理器301通过执行存储器302存储的指令,执行如图1所示的方法。其中,存储器302的数量为一个或多个。其中,存储器302在图5中一并示出,但需要知道的是存储器302不是必选的功能模块,因此在图5中以虚线示出。
其中,添加单元201与更新单元202所对应的实体设备均可以是前述的处理器301。该电子设备可以用于执行图1所示的实施例所提供的方法。因此关于该电子设备中各功能模块所能够实现的功能,可参考图1所示的实施例中的相应描述,不多赘述。
本发明实施例还提供一种计算机存储介质,其中,计算机存储介质存储有计算机指令,当计算机指令在计算机上运行时,使得计算机执行如图1所述的方法。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (6)
1.一种软件更新方法,其特征在于,应用于电子设备,所述电子设备中存储项目文件,所述项目文件中包括解析程序,所述方法包括:
当检测到针对所述项目文件的添加命令时,将用于实现第一目标功能的第一目标树形结构添加到所述项目文件中;其中,所述第一目标树形结构包括至少一条执行逻辑,每一个执行逻辑用于实现一个功能点;
运行所述项目文件,并调用所述解析程序对所述第一目标树形结构进行解析,以将所述第一目标功能添加到所述软件;
其中,任一目标树形结构为抽象语法树;
任一目标功能包括多个功能点,每个抽象语法树中定义有多个节点,功能点与节点一一对应;
每个节点具有对应的预设属性集合,所述预设属性集合至少包括第一字段、第二字段、第三字段以及第四字段,所述第一字段用于指示当前功能点的功能编码,所述第二字段用于指示当前功能点的功能类型,所述第三字段用于指示当前功能点的功能值,所述第四字段用于指示当前功能点是否与其他功能点具有关联关系,所述关联关系用于指示实现当前功能点依赖于其他功能点的执行结果;
所述多个节点分为根节点与叶子节点,第一目标抽象语法树中设置有预设字段,所述预设字段用于表征根节点对应功能点的功能编码,调用所述解析程序对所述第一目标树形结构进行解析包括:
基于所述预设字段从所述第一目标抽象语法树中确定出根节点;
以所述根节点为起点,对所述第一目标抽象语法树所包括的全部节点进行遍历,并根据所述根节点以及每个叶子节点所对应的预设属性集合中的第二字段创建对应类型的功能点;
从所述根节点为起点执行对应的功能点,并基于所述根节点所对应的预设属性集合中的第四字段确定与所述根节点相关联的至少一个叶子节点,以及执行所述至少一个叶子节点中每个叶子节点所对应的功能点;
若确定所述至少一个叶子节点均与其他叶子节点无关联关系,则获取所述至少一个叶子节点中每个叶子节点所对应的功能点的执行结果;
基于所述至少一个叶子节点中每个叶子节点所对应的功能点的执行结果,确定出所述根节点所对应的功能点的执行结果。
2.如权利要求1所述的方法,其特征在于,所述项目文件还包括用于实现第二目标功能的第二目标树形结构,所述第二目标树形结构包括至少一条执行逻辑,每条执行逻辑用于实现一个功能点,所述方法还包括:
当检测到针对所述项目文件的修改命令时,将所述第二目标树形结构修改为第三目标树形结构,所述第三目标树形结构用于实现第三目标功能,所述第三目标树形结构包括至少一条执行逻辑,每条执行逻辑用于实现一个功能点,所述第三目标树形结构与所述第二目标树形结构中相同功能点的数量超过设定阈值;
运行所述项目文件,并调用所述解析程序对所述第三目标树形结构进行解析,以将所述软件中的所述第二目标功能修改为所述第三目标功能。
3.如权利要求1所述的方法,其特征在于,所述项目文件还包括用于实现第二目标功能的第二目标树形结构,所述第二目标树形结构包括至少一条执行逻辑,每条执行逻辑用于实现一个功能点,所述方法还包括:
当检测到针对所述项目文件的替换命令时,将所述第二目标树形结构替换为第三目标树形结构,所述第三目标树形结构用于实现第三目标功能,所述第三目标树形结构包括至少一条执行逻辑,每条执行逻辑用于实现一个功能点,所述第三目标树形结构与所述第二目标树形结构中相同功能点的数量不超过设定阈值;
运行所述项目文件,并调用所述解析程序对所述第三目标树形结构进行解析,以将所述软件中的所述第二目标功能删除以及将所述第三目标功能添加到所述软件。
4.一种软件更新装置,其特征在于,所述装置中存储项目文件,所述项目文件中包括解析程序,所述装置包括:
添加单元,用于当检测到针对所述项目文件的添加命令时,将用于实现第一目标功能的第一目标树形结构添加到所述项目文件中;其中,所述第一目标树形结构包括至少一条执行逻辑,每一个执行逻辑用于实现一个功能点;
更新单元,用于运行所述项目文件,并调用所述解析程序对所述第一目标树形结构进行解析,以将所述第一目标功能添加到所述软件;
其中,任一目标树形结构为抽象语法树;
任一目标功能包括多个功能点,每个抽象语法树中定义有多个节点,功能点与节点一一对应;
每个节点具有对应的预设属性集合,所述预设属性集合至少包括第一字段、第二字段、第三字段以及第四字段,所述第一字段用于指示当前功能点的功能编码,所述第二字段用于指示当前功能点的功能类型,所述第三字段用于指示当前功能点的功能值,所述第四字段用于指示当前功能点是否与其他功能点具有关联关系,所述关联关系用于指示实现当前功能点依赖于其他功能点的执行结果;
所述多个节点分为根节点与叶子节点,第一目标抽象语法树中设置有预设字段,所述预设字段用于表征根节点对应功能点的功能编码,所述更新单元具体用于:
基于所述预设字段从所述第一目标抽象语法树中确定出根节点;
以所述根节点为起点,对所述第一目标抽象语法树所包括的全部节点进行遍历,并根据所述根节点以及每个叶子节点所对应的预设属性集合中的第二字段创建对应类型的功能点;
从所述根节点为起点执行对应的功能点,并基于所述根节点所对应的预设属性集合中的第四字段确定与所述根节点相关联的至少一个叶子节点,以及执行所述至少一个叶子节点中每个叶子节点所对应的功能点;
若确定所述至少一个叶子节点均与其他叶子节点无关联关系,则获取所述至少一个叶子节点中每个叶子节点所对应的功能点的执行结果;
基于所述至少一个叶子节点中每个叶子节点所对应的功能点的执行结果,确定出所述根节点所对应的功能点的执行结果。
5.一种电子设备,所述电子设备包括至少一个处理器以及与所述至少一个处理器连接的存储器,所述至少一个处理器用于执行存储器中存储的计算机程序时实现如权利要求1-3任一项所述方法的步骤。
6.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行是实现如权利要求1-3任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110728350.XA CN113448605B (zh) | 2021-06-29 | 2021-06-29 | 一种软件更新方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110728350.XA CN113448605B (zh) | 2021-06-29 | 2021-06-29 | 一种软件更新方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113448605A CN113448605A (zh) | 2021-09-28 |
CN113448605B true CN113448605B (zh) | 2024-02-09 |
Family
ID=77814045
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110728350.XA Active CN113448605B (zh) | 2021-06-29 | 2021-06-29 | 一种软件更新方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113448605B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105159715A (zh) * | 2015-09-01 | 2015-12-16 | 南京大学 | 一种基于抽象语法树节点变更抽取的Python代码变更提示方法 |
CN108089871A (zh) * | 2017-12-04 | 2018-05-29 | 广州华旻信息科技有限公司 | 软件自动更新方法、装置、设备及存储介质 |
CN108694049A (zh) * | 2017-02-23 | 2018-10-23 | 阿里巴巴集团控股有限公司 | 一种更新软件的方法和设备 |
CN111324892A (zh) * | 2020-01-19 | 2020-06-23 | 上海戎磐网络科技有限公司 | 生成脚本文件的软件基因和脚本检测的方法、装置及介质 |
WO2020140940A1 (zh) * | 2019-01-06 | 2020-07-09 | 阿里巴巴集团控股有限公司 | 代码的生成方法、装置、设备及存储介质 |
CN111666206A (zh) * | 2020-04-30 | 2020-09-15 | 北京百度网讯科技有限公司 | 变更代码的影响范围的获取方法、装置、设备及存储介质 |
CN111752571A (zh) * | 2020-06-29 | 2020-10-09 | 广州华多网络科技有限公司 | 程序升级方法、装置、设备及存储介质 |
CN111797351A (zh) * | 2020-06-29 | 2020-10-20 | 平安普惠企业管理有限公司 | 页面数据管理方法、装置、电子设备及介质 |
-
2021
- 2021-06-29 CN CN202110728350.XA patent/CN113448605B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105159715A (zh) * | 2015-09-01 | 2015-12-16 | 南京大学 | 一种基于抽象语法树节点变更抽取的Python代码变更提示方法 |
CN108694049A (zh) * | 2017-02-23 | 2018-10-23 | 阿里巴巴集团控股有限公司 | 一种更新软件的方法和设备 |
CN108089871A (zh) * | 2017-12-04 | 2018-05-29 | 广州华旻信息科技有限公司 | 软件自动更新方法、装置、设备及存储介质 |
WO2020140940A1 (zh) * | 2019-01-06 | 2020-07-09 | 阿里巴巴集团控股有限公司 | 代码的生成方法、装置、设备及存储介质 |
CN111324892A (zh) * | 2020-01-19 | 2020-06-23 | 上海戎磐网络科技有限公司 | 生成脚本文件的软件基因和脚本检测的方法、装置及介质 |
CN111666206A (zh) * | 2020-04-30 | 2020-09-15 | 北京百度网讯科技有限公司 | 变更代码的影响范围的获取方法、装置、设备及存储介质 |
CN111752571A (zh) * | 2020-06-29 | 2020-10-09 | 广州华多网络科技有限公司 | 程序升级方法、装置、设备及存储介质 |
CN111797351A (zh) * | 2020-06-29 | 2020-10-20 | 平安普惠企业管理有限公司 | 页面数据管理方法、装置、电子设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113448605A (zh) | 2021-09-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112394942B (zh) | 基于云计算的分布式软件开发编译方法及软件开发平台 | |
US20150128114A1 (en) | Parser | |
CN104484269A (zh) | 一种自动生成测试脚本的方法 | |
US12032941B2 (en) | Method and system for updating legacy software | |
CN111026404A (zh) | 参数配置代码的生成方法、装置、电子产品及存储介质 | |
CN113901083A (zh) | 基于多解析器的异构数据源操作资源解析定位方法和设备 | |
CN113296786A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN111324540B (zh) | 一种接口测试方法及装置 | |
CN110543427B (zh) | 测试用例存储方法、装置、电子设备及存储介质 | |
CN111679852A (zh) | 一种冲突依赖库的检测方法及装置 | |
CN116088846A (zh) | 一种持续集成代码格式的处理方法、相关装置及设备 | |
CN113448605B (zh) | 一种软件更新方法、装置、电子设备及存储介质 | |
CN115525534A (zh) | 基于swagger的接口测试的测试用例生成方法、生成平台 | |
US10929121B2 (en) | Method, device and related system for dynamically repairing application | |
CN109582318B (zh) | Portobuf本地化的处理方法、装置、终端及存储介质 | |
WO2021022702A1 (zh) | 日志***方法、装置、计算机装置及存储介质 | |
CN117008920A (zh) | 引擎***、请求处理方法、装置、计算机设备及存储介质 | |
CN111352610A (zh) | 接口返回值修改方法、装置、电子设备及存储介质 | |
CN111444208A (zh) | 一种数据更新方法及相关设备 | |
CN111400128A (zh) | 日志管理方法、装置、计算机设备及存储介质 | |
CN115687138A (zh) | 代码校验方法、装置及服务器 | |
US20190018663A1 (en) | Code lineage tool | |
CN114924771A (zh) | 非覆盖更新代码方法、装置、设备及介质 | |
CN107612919B (zh) | 协议配置方法及装置 | |
CN112699279A (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 |