CN118276933A - 软件兼容性问题的处理方法、装置、设备和介质 - Google Patents

软件兼容性问题的处理方法、装置、设备和介质 Download PDF

Info

Publication number
CN118276933A
CN118276933A CN202410703632.8A CN202410703632A CN118276933A CN 118276933 A CN118276933 A CN 118276933A CN 202410703632 A CN202410703632 A CN 202410703632A CN 118276933 A CN118276933 A CN 118276933A
Authority
CN
China
Prior art keywords
current
software
compatibility
historical
compatibility problem
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
Application number
CN202410703632.8A
Other languages
English (en)
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.)
Hangzhou New China And Big Polytron Technologies Inc
Original Assignee
Hangzhou New China And Big Polytron Technologies Inc
Filing date
Publication date
Application filed by Hangzhou New China And Big Polytron Technologies Inc filed Critical Hangzhou New China And Big Polytron Technologies Inc
Publication of CN118276933A publication Critical patent/CN118276933A/zh
Pending legal-status Critical Current

Links

Abstract

本发明公开了一种软件兼容性问题的处理方法、装置、设备和介质,涉及计算机技术领域,包括:获取目标软件在当前软件版本对应的当前软件源代码,以及在历史软件版本对应的历史软件源代码;根据当前软件源代码和历史软件源代码,确定当前软件版本相对于历史软件版本的源代码变更信息;根据源代码变更信息,确定当前软件版本相对于历史软件版本存在的至少一个当前兼容性问题;根据当前兼容性问题生成针对当前兼容性问题的当前问题修复策略。本发明使得用户及时感知兼容性问题的存在,并参考问题修复策略进行兼容性问题修复,一方面降低用户使用软件过程中业务中断的风险,另一方面无需针对兼容性问题再付出额外的维护成本,减少软件维护的总成本。

Description

软件兼容性问题的处理方法、装置、设备和介质
技术领域
本发明涉及计算机技术领域,尤其涉及一种软件兼容性问题的处理方法、装置、设备和介质。
背景技术
新版本软件相对于旧版本软件的兼容性又称为向后兼容性,用于描述新版本软件能够与旧版本软件兼容的能力。随着软件的持续迭代与更新,如何确保新版本与旧版本之间的向后兼容性成为一项关键挑战。
现有技术缺乏一套有效方案对软件的向后兼容性问题进行自动识别并给出相应的修复策略,这无疑加剧了用户使用软件过程中业务中断的风险,并且为了保证软件的正常运行,用户无疑需要付出额外的维护成本。
发明内容
本发明提供了一种软件兼容性问题的处理方法、装置、设备和介质,以解决由于目前业内存在对软件向后兼容性问题的自动识别及给出修复策略这一技术空缺,导致业务中断的风险较高,且待来额外的维护成本的问题。
根据本发明的一方面,提供了一种软件兼容性问题的处理方法,包括:
获取目标软件在当前软件版本对应的当前软件源代码,以及在历史软件版本对应的历史软件源代码;
根据所述当前软件源代码和所述历史软件源代码,确定所述当前软件版本相对于所述历史软件版本的源代码变更信息;
根据所述源代码变更信息,确定所述当前软件版本相对于所述历史软件版本存在的至少一个当前兼容性问题;
根据所述当前兼容性问题生成针对所述当前兼容性问题的当前问题修复策略。
根据本发明的另一方面,提供了一种软件兼容性问题的处理装置,包括:
软件源代码获取模块,用于获取目标软件在当前软件版本对应的当前软件源代码,以及在历史软件版本对应的历史软件源代码;
源代码变更信息确定模块,用于根据所述当前软件源代码和所述历史软件源代码,确定所述当前软件版本相对于所述历史软件版本的源代码变更信息;
兼容性问题确定模块,用于根据所述源代码变更信息,确定所述当前软件版本相对于所述历史软件版本存在的至少一个当前兼容性问题;
问题修复策略生成模块,用于根据所述当前兼容性问题生成针对所述当前兼容性问题的当前问题修复策略。
根据本发明的另一方面,提供了一种电子设备,所述电子设备包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明任一项所述的软件兼容性问题的处理方法。
根据本发明的另一方面,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行时实现本发明任一项所述的软件兼容性问题的处理方法。
本发明通过获取目标软件在当前软件版本对应的当前软件源代码,以及在历史软件版本对应的历史软件源代码;根据当前软件源代码和历史软件源代码,确定当前软件版本相对于历史软件版本的源代码变更信息;根据源代码变更信息,确定当前软件版本相对于历史软件版本存在的至少一个当前兼容性问题;根据当前兼容性问题生成针对当前兼容性问题的当前问题修复策略,实现了自动识别当前软件版本相对于历史软件版本存在的兼容性问题,且自动生成相应的问题修复策略的效果,使得用户能够及时感知到兼容性问题的存在,并参考相应的问题修复策略进行兼容性问题修复,一方面能够降低用户使用软件过程中业务中断的风险,另一方面无需用户针对兼容性问题再付出额外的维护成本,减少了软件维护的总成本。
应当理解,本部分所描述的内容并非旨在标识本发明的实施例的关键或重要特征,也不用于限制本发明的范围。本发明的其它特征将通过以下的说明书而变得容易理解。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例一提供的一种软件兼容性问题的处理方法的流程图;
图2为本发明实施例二提供的一种软件兼容性问题的处理方法的流程图;
图3为本发明实施例三提供的一种软件兼容性问题的处理方法的流程图;
图4为本发明实施例四提供的一种软件兼容性问题的处理装置的结构示意图;
图5是实现本发明实施例的软件兼容性问题的处理方法的电子设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语 “当前”、“历史”、“标准”、“样本”、“候选”、“辅助”、“目标”、“交互”、“风险”、“第一类”、“第二类”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”及其任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例一
图1为本发明实施例一提供的一种软件兼容性问题的处理方法的流程图,本实施例可适用于对软件存在的向后兼容性问题进行自动识别且自动生成相应的问题修复策略的情况,该方法可以由软件兼容性问题的处理装置来执行,该软件兼容性问题的处理装置可以采用硬件和/或软件的形式实现,如采用安装有目标软件的计算机中的处理器来实现。如图1所示,该方法包括:
S101、获取目标软件在当前软件版本对应的当前软件源代码,以及在历史软件版本对应的历史软件源代码。
其中,目标软件指的是安装于任意电子设备中的应用软件,例如可以是安装于包括智能手机、智能手表、平板电脑或者计算机等电子设备中的应用软件,目标软件的类型包括但不限于办公软件、图形图像软件、音视频软件、安全防护软件、工程软件、游戏软件等等,本实施例并不对目标软件的具体软件类型进行限定。
由于目标软件在生命周期中会不断地进行迭代与更新,因此每当目标软件进行一次迭代或更新后,会生成一个全新的软件版本。如,假设目标软件的初始软件版本为0.0.1,当目标软件进行一次迭代或更新后,生成全新的软件版本0.0.2;当目标软件再进行一次迭代或更新后,生成全新的软件版本0.0.3,依次类推。可以理解的是,当前软件版本指的是目标软件在最后一次(也即最新一次)迭代或更新后,生成的软件版本,而历史软件版本指的是在当前软件版本之前,目标软件进行迭代或更新所生成的软件版本。其中,历史软件版本既可以是某个单一的历史软件版本,也可以是多个历史软件版本的集合表示。示例性的,假设目标软件共包括软件版本1、软件版本2、软件版本3和软件版本4,其中,软件版本4是目标软件在最后一次迭代或更新后生成的软件版本,作为当前软件版本。软件版本1可以单独作为历史软件版本、软件版本2也可以单独作为历史软件版本、软件版本3还可以单独作为历史软件版本;并且,软件版本1、软件版本2和软件版本3还可以共同作为历史软件版本。
目标软件进行迭代或更新本质上是对目标软件的软件源代码进行调整,因此目标软件在不同软件版本时对应有不同的软件源代码,软件源代码指的是指软件制作中使用的原始程序的集合,它描述了软件本质的行为,软件源代码包含编写软件所使用的所有语言,它是由形式语言组合而成的指令系列,多半采用高级语言编写而成。相应的,当前软件源代码指的是目标软件在当前软件版本时对应的软件源代码,历史软件源代码指的是目标软件在历史软件版本时对应的软件源代码。
在一种实施方式中,若具有目标软件的著作权,则在用于存储目标软件的软件源代码的代码库中进行源代码提取,从而获取目标软件在当前软件版本对应的当前软件源代码,以及在历史软件版本对应的历史软件源代码。
在另一种实施方式中,若不具有目标软件的著作权,则在目标软件的著作权所有人授权的前提下,采用代码爬取工具对目标软件在当前软件版本时对应的软件源代码进行爬取,获取当前软件源代码。并且,采用代码爬取工具对目标软件在历史软件版本时对应的软件源代码进行爬取,获取历史软件源代码。
在另一种实施方式中,在目标软件已经开源的前提下,目标软件在各个软件版本时对应的软件源代码均会进行公开,根据已公开的软件源代码获取目标软件在当前软件版本对应的当前软件源代码,以及在历史软件版本对应的历史软件源代码。
S102、根据当前软件源代码和历史软件源代码,确定当前软件版本相对于历史软件版本的源代码变更信息。
其中,源代码变更信息指的是由于目标软件的迭代或更新造成的,目标软件在当前软件版本相对于历史软件版本时,软件源代码之间存在的变更信息。也即,源代码变更信息是一系列与目标软件的软件源代码更改相关的数据。
在一种实施方式中,将当前软件源代码和历史软件源代码进行比对及分析,用于确定目标软件在当前软件版本相对于历史软件版本的源代码变更信息。
可选的,使用抽象语法树差异比对技术,结合目标开源库,如diffy或gumtree等开源库,对当前软件源代码和历史软件源代码进行代码结构变化的分析,用于确定当前软件版本相对于历史软件版本的源代码变更信息。
可选的,采用动态程序分析技术和/或静态程序分析技术,对当前软件源代码和历史软件源代码进行比对分析。其中,动态程序分析技术可采用目标单元测试框架,如TestNG,结合自定义的断言库来对当前软件源代码和历史软件源代码进行比对分析,用于确定当前软件版本相对于历史软件版本的源代码变更信息。静态程序分析技术可采用目标源代码检测工具,如SonarQube,配合自定义规则集对当前软件源代码和历史软件源代码进行比对分析,用于确定当前软件版本相对于历史软件版本的源代码变更信息。
可选的,对于当前软件源代码和历史软件源代码之间,配置文件和数据格式的变更检测,可采用如Apache Commons Configuration和Jackson等库来实现。
通过根据当前软件源代码和历史软件源代码,确定当前软件版本相对于历史软件版本的源代码变更信息,为后续确定当前兼容性问题奠定了数据基础,且提供了软件源代码变化的全面识图。
S103、根据源代码变更信息,确定当前软件版本相对于历史软件版本存在的至少一个当前兼容性问题。
其中,当前软件版本相对于历史软件版本存在的当前兼容性问题,相当于当前软件版本存在的向后兼容性问题。当前兼容性问题包括但不限于语法不兼容、语义不兼容、数据格式不兼容、配置文件不兼容、依赖关系不兼容、性能退化或者安全问题等等。
在一种实施方式中,根据预先建立的源代码变更样本与兼容性问题样本之间的关联关系,预测在当前软件版本相对于历史软件版本存在源代码变更信息时,当前软件版本相对于历史软件版本存在的至少一个当前兼容性问题。
可选的,预先采集源代码变更样本,其中,源代码变更样本可以通过对不同历史软件版本的历史软件源代码进行比对及分析而得到。具体的,获取任意不同的两个历史软件版本的软件源代码,分别作为第一软件源代码样本以及第二软件源代码样本,采用包括但不限于抽象语法树差异比对技术、动态程序分析技术、静态程序分析技术中的一种或多种技术,对第一软件源代码样本和第二软件源代码样本进行比对及分析,用于确定该两个历史软件版本之间的源代码变更信息,作为源代码变更样本。基于上述流程对所有历史软件版本的历史软件源代码进行处理,从而可以获取具有不同样本内容的大量源代码变更样本。
在采集完成源代码变更样本后,对各源代码变更样本添加标注信息,其中,标注信息由技术人员根据经验对不同历史软件版本之间存在的至少一个兼容性问题来确定。例如,假设技术人员根据经验确定历史软件版本1和历史软件版本2之间存在的兼容性问题为“语法不兼容”,而历史软件版本1和历史软件版本2对应的源代码变更样本为源代码变更样本1,则对源代码变更样本1添加标注信息“语法不兼容”。
在对各源代码变更样本添加完成标注信息后,将各源代码变更样本作为待训练模型的输入特征,且将各源代码变更样本的标注信息作为待训练模型的输出特征,对待训练模型进行模型训练,得到问题预测模型。其中,问题预测模型可选的为机器学习模型。
可以理解的是,通过训练问题预测模型来学习源代码变更样本(源代码变更信息)与标注信息(兼容性问题)之间的关联关系,则可以利用训练完成的问题预测模型来准确预测,在当前软件版本相对于历史软件版本存在源代码变更信息时,当前软件版本相对于历史软件版本存在的至少一个当前兼容性问题。也即,将当前软件版本相对于历史软件版本存在源代码变更信息输入至问题预测模型,问题预测模型输出当前软件版本相对于历史软件版本存在的至少一个当前兼容性问题。
S104、根据当前兼容性问题生成针对当前兼容性问题的当前问题修复策略。
其中,当前问题修复策略指的是能够供用户进行参考,用于修复或缓解当前兼容性问题的修复策略。
在一种实施方式中,针对不同的兼容性问题,预先定义了相对应的问题修复策略,并且这些问题修复策略与不同的兼容性问题之间存在映射关系。当自动检测到任一种兼容性问题后,则会根据这种映射关系自动生成针对该种兼容性问题的问题修复策略。这种映射关系可以是一个规则库或者决策树,其中每个节点代表一个检测到的兼容性问题,而每个节点的子节点或者关联信息则是对应该兼容性问题的问题修复策略。例如,假设检测到的当前兼容性问题为“数据格式不兼容”,则根据预设的映射关系确定与该当前兼容性问题相对应的问题修复策略,作为当前问题修复策略,比如可以是“提供数据迁移工具或支持旧格式”。其中,兼容性问题与问题修复策略之间的映射关系会根据实际情况不断更新和优化,以适应目标软件的不断迭代或更新。
在另一种实施方式中,当检测到任一种当前兼容性问题后,将该种当前兼容性问题作为检索词,在历史案例库中进行相似性检索用于确定与该种当前兼容性问题最相似的历史案例,并将该历史案例对应的解决方案作为针对当前兼容性问题的当前问题修复策略。其中,历史案例库会根据实际情况不断更新和优化,以适应目标软件的不断迭代或更新。
在另一种实施方式中,当检测到任一种当前兼容性问题后,将该种当前兼容性问题输入至修复策略预测模型中,通过修复策略预测模型输出针对当前兼容性问题的当前问题修复策略。其中,修复策略预测模型可选的为机器学习模型,修复策略预测模型是根据各种兼容性问题样本,以及,各种兼容性问题样本的标注信息进行模型训练得到的,各种兼容性问题样本的标注信息由技术人员根据经验对不同兼容性问题理应采用的问题修复策略来确定。
本发明通过获取目标软件在当前软件版本对应的当前软件源代码,以及在历史软件版本对应的历史软件源代码;根据当前软件源代码和历史软件源代码,确定当前软件版本相对于历史软件版本的源代码变更信息;根据源代码变更信息,确定当前软件版本相对于历史软件版本存在的至少一个当前兼容性问题;根据当前兼容性问题生成针对当前兼容性问题的当前问题修复策略,实现了自动识别当前软件版本相对于历史软件版本存在的兼容性问题,且自动生成相应的问题修复策略的效果,使得用户能够及时感知到兼容性问题的存在,并参考相应的问题修复策略进行兼容性问题修复,一方面能够降低用户使用软件过程中业务中断的风险,另一方面无需用户针对兼容性问题再付出额外的维护成本,减少了软件维护的总成本。
可选的,源代码变更信息包括源代码变更行数、源代码变更类型、源代码变更位置、依赖项变更内容、配置文件变更内容以及数据格式变更内容中的至少一种。
其中,源代码变更行数指的是产生源代码变更的代码总行数。源代码变更类型指的是源代码变更对应的具体变更类型,包括但不限于添加、删除、修改、函数签名更改、API(Application Programming Interface,应用程序编程接口)调用更改等。源代码变更位置指的是产生源代码变更的源代码位置,如可以是软件源代码的核心模块,或者,边缘模块等等。依赖项变更内容指的是软件源代码中有关依赖项的具体变更内容。配置文件变更内容指的是软件源代码中有关配置文件的具体变更内容,包括但不限于系统参数变更内容、网络设置变更内容、安全配置变更内容等。数据格式变更内容指的是软件源代码中有关数据格式的具体变更内容,包括但不限于数据库结构变更内容、数据交换格式变更内容或数据验证规则变更内容等。
通过设置源代码变更信息包括源代码变更行数、源代码变更类型、源代码变更位置、依赖项变更内容、配置文件变更内容以及数据格式变更内容中的至少一种,保证了源代码变更信息的信息丰富程度,间接提高了当前兼容性问题确定的准确性,且还间接提高了最终确定当前问题修复策略的适配性。
实施例二
图2为本发明实施例二提供的一种软件兼容性问题的处理方法的流程图,本实施例对上述实施例进行进一步优化与扩展,并可以与上述各个可选实施方式进行结合。如图2所示,该方法包括:
S201、获取目标软件在当前软件版本对应的当前软件源代码,以及在历史软件版本对应的历史软件源代码。
S202、根据当前软件源代码和历史软件源代码,确定当前软件版本相对于历史软件版本的源代码变更信息。
S203、确定当前软件源代码的代码复杂度信息,以及获取目标软件存在的历史兼容性问题。
其中,代码复杂度信息指的是用于体现软件源代码复杂程度的量化指标,代码复杂度信息包括但不限于循环复杂度和条件复杂度等。历史兼容性问题指的是目标软件在各历史软件版本中已经被检测且被记录的向后兼容性问题。
在一种实施方式中,采用代码复杂度分析算法对当前软件源代码进行代码复杂度分析,确定当前软件源代码的代码复杂度信息。历史兼容性问题通过包括但不限于如下至少一种来源进行获取:
1)问题跟踪系统
使用问题跟踪系统来记录和管理目标软件中出现过的问题和缺陷。通过查询导入这些系统数据,可以找到过去与兼容性相关的问题,作为历史兼容性问题。
2)版本控制系统
版本控制系统(如Git)中保存了软件源代码变更的历史记录。通过分析这些变更记录和相关的提交信息,可以识别出哪些变更导致了兼容性问题,并提取出这些信息作为历史兼容性问题。
3)测试报告和日志文件
在软件开发过程中,通常会有测试团队进行测试并记录测试结果。测试报告和测试日志中包含与兼容性问题相关的信息,在测试报告和日志文件中进行信息提取,用于获取历史兼容性问题。
4)开发者交流和讨论
开发者之间的交流信息、邮件信息、论坛讨论信息等也可能包含有关兼容性问题的讨论和解决方案。在开发者之间的交流信息、邮件信息、论坛讨论信息中进行信息提取,用于获取历史兼容性问题。
5)用户反馈
用户在使用目标软件时可能会遇到兼容性问题,并通过各种渠道(如用户论坛、客服支持、技术支持等)向技术团队提供反馈信息。在用户反馈信息中进行信息提取,用于获取历史兼容性问题。
可选的,根据上述来源获取历史兼容性之前,还会对各来源的信息进行数据清洗,以去除冗余信息和无关信息。
通过确定当前软件源代码的代码复杂度信息,以及获取目标软件存在的历史兼容性问题,丰富了预测兼容性问题所依赖数据的数据维度,使得后续确定当前兼容性问题不仅仅依赖于源代码变更信息这单一数据维度,而是依赖代码复杂度信息、历史兼容性问题以及源代码变更信息三种数据维度,共同进行兼容性问题预测,保证了当前兼容性问题确定的准确性以及可靠性。
S204、根据代码复杂度信息、历史兼容性问题以及源代码变更信息,预测当前软件版本相对于历史软件版本存在兼容性问题的风险概率值。
其中,风险概率值体现了当前软件版本相对于历史软件版本存在兼容性问题的风险程度。可以理解的是,风险概率值越大,则当前软件版本相对于历史软件版本存在兼容性问题的风险程度越高;相应的,风险概率值越小,则当前软件版本相对于历史软件版本存在兼容性问题的风险程度越低。
在一种实施方式中,将代码复杂度信息、历史兼容性问题以及源代码变更信息,输入至风险概率值预测模型中,通过风险概率值预测模型输出当前软件版本相对于历史软件版本存在兼容性问题的风险概率值。其中,风险概率值预测模型可选的为机器学习模型,风险概率值预测模型是根据各种训练样本,包括样本代码复杂度信息、样本历史兼容性问题、样本源代码变更信息,以及,各种训练样本的标注信息进行模型训练得到的,各种训练样本的标注信息由技术人员根据经验对不同训练样本可能导致软件版本之间存在兼容性问题的风险程度来确定。
可选的,对风险概率值预测模型的原始输出值进行标准化处理,用于将原始输出值缩放至(0,1)区间内,作为风险概率值,以保证风险概率值的可读性和可比性。
S205、在风险概率值大于预设阈值的情况下,根据代码复杂度信息、历史兼容性问题以及源代码变更信息,确定当前软件版本相对于历史软件版本存在的至少一个当前兼容性问题。
其中,预设阈值根据实际经验进行设定,例如可以基于模型训练时的性能,或者业务上可接受风险程度水平来确定。预设阈值用于判定当前软件版本相对于历史软件版本存在兼容性问题的风险程度是否为高风险程度。即,在风险概率值大于预设阈值的情况下,当前软件版本相对于历史软件版本存在兼容性问题的风险程度为高风险程度;在风险概率值小于或等于预设阈值的情况下,当前软件版本相对于历史软件版本存在兼容性问题的风险程度为低风险程度。
在一种实施方式中,将风险概率值与预设阈值进行数值比对,在风险概率值小于或等于预设阈值的情况下,表示当前软件版本相对于历史软件版本存在兼容性问题的风险程度为低风险程度,因此无需进行兼容性问题的预测;在风险概率值大于预设阈值的情况下,表示当前软件版本相对于历史软件版本存在兼容性问题的风险程度为高风险程度,因此需要进行兼容性问题的预测,进而根据代码复杂度信息、历史兼容性问题以及源代码变更信息,确定当前软件版本相对于历史软件版本存在的至少一个当前兼容性问题。
通过根据代码复杂度信息、历史兼容性问题以及源代码变更信息,预测当前软件版本相对于历史软件版本存在兼容性问题的风险概率值;在风险概率值大于预设阈值的情况下,根据代码复杂度信息、历史兼容性问题以及源代码变更信息,确定当前软件版本相对于历史软件版本存在的至少一个当前兼容性问题,从而仅在风险概率值大于预设阈值的情况下(高风险程度),才会触发预测当前兼容性问题的操作,一方面在高风险程度的情况下,能够及时预测当前兼容性问题,使得用户能够及早发现并修复当前兼容性问题,从而降低当前软件版本发布后可能出现的风险;另一方面在低风险程度的情况下,可以避免无意义的兼容性问题预测操作,降低了数据处理所需的数据处理量,且提高了整个方法的执行效率。
可选的,根据代码复杂度信息、历史兼容性问题以及源代码变更信息,确定当前软件版本相对于历史软件版本存在的至少一个当前兼容性问题,包括:
将代码复杂度信息、历史兼容性问题以及源代码变更信息,输入至问题预测模型中,并根据问题预测模型的输出结果确定当前软件版本相对于历史软件版本存在的至少一个当前兼容性问题。
其中,问题预测模型是根据训练样本以及训练样本的标注信息进行模型训练得到的,训练样本包括样本代码复杂度信息、样本历史兼容性问题以及样本源代码变更信息,标注信息为根据训练样本进行标签标注而得到的标准兼容性问题。
样本源代码变更信息可以通过对不同历史软件版本的历史软件源代码进行比对及分析而得到;样本代码复杂度信息可以在样本源代码变更信息的基础上,采用代码复杂度分析算法得到;样本历史兼容性问题可以从获取的历史兼容性问题中抽取得到。标准兼容性问题由技术人员根据经验对不同训练样本可能导致软件版本之间存在的兼容性问题来确定。
问题预测模型可采用包括但不限于可采用scikit-learn或TensorFlow等机器学习框架以及分类算法(如决策树、随机森林或梯度提升机等)进行模型训练和预测。
通过将代码复杂度信息、历史兼容性问题以及源代码变更信息,输入至问题预测模型中,并根据问题预测模型的输出结果确定当前软件版本相对于历史软件版本存在的至少一个当前兼容性问题,得力于机器学习模型先天的优势,能够更快速的预测出存在的当前兼容性问题,且还能够保证当前兼容性问题预测的可信度,保证了最终当前问题修复策略生成的及时性及准确性,及早降低当前软件版本发布后可能出现的风险。
S206、根据当前兼容性问题生成针对当前兼容性问题的当前问题修复策略。
可选的,根据当前兼容性问题生成针对当前兼容性问题的当前问题修复策略,包括:
A1、从候选兼容性问题中将与当前兼容性问题相匹配的候选兼容性问题,作为辅助兼容性问题。
其中,技术人员根据实际经验及对历史案例的分析总结结果,设置了不同的候选兼容性问题以及候选问题修复策略,针对不同的候选兼容性问题,预先定义了相对应的候选问题修复策略,并且建立候选兼容性问题与候选问题修复策略之间的映射关系。
在一种实施方式中,将当前兼容性问题与各候选兼容性问题进行匹配,从各候选兼容性问题中将与当前兼容性问题相匹配的候选兼容性问题,作为辅助兼容性问题。例如,假设当前兼容性问题为“语义不兼容”,则将各候选兼容性问题中同样为“语义不兼容”的候选兼容性问题,作为辅助兼容性问题。
B1、根据候选兼容性问题与候选问题修复策略之间的映射关系,将与辅助兼容性问题关联的候选问题修复策略,作为针对当前兼容性问题的当前问题修复策略。
在一种实施方式中,根据预先建立的候选兼容性问题与候选问题修复策略之间的映射关系,直接找到与辅助兼容性问题具有映射关系的候选问题修复策略,作为针对当前兼容性问题的当前问题修复策略。
可选的,将各候选兼容性问题作为决策树中的一级节点,且根据预先建立的候选兼容性问题与候选问题修复策略之间的映射关系,在决策树中建立二级节点视作候选问题修复策略,且建立各一级节点与各二级节点之间的映射关系。当确定辅助兼容性问题后,确定辅助兼容性问题所对应的一级节点,且确定决策树中与该一级节点具有映射关系的二级节点,并将该二级节点对应的候选问题修复策略,作为针对当前兼容性问题的当前问题修复策略。
可选的,候选兼容性问题与候选问题修复策略之间的映射关系包括但不限于如下至少一种:
语法不兼容:提供语法转换工具。
语义不兼容:提供兼容层或更新文档。
数据格式不兼容:提供数据迁移工具或支持旧格式。
配置不兼容:提供配置转换脚本和说明。
依赖关系不兼容:明确新依赖要求并提供升级指南。
性能退化:分析优化相关代码并提供性能监控工具。
安全问题:发布安全补丁、提供安全配置指南和加强用户教育。
通过从候选兼容性问题中将与当前兼容性问题相匹配的候选兼容性问题,作为辅助兼容性问题;根据候选兼容性问题与候选问题修复策略之间的映射关系,将与辅助兼容性问题关联的候选问题修复策略,作为针对当前兼容性问题的当前问题修复策略,这种基于预先建立的“映射关系”进行问题预测的处理方式,能够快速、准确、且低成本的输出当前问题修复策略,从而提高目标软件向后兼容性的维护效率和质量。
可选的,根据当前兼容性问题生成针对当前兼容性问题的当前问题修复策略,包括:
A2、获取针对目标软件存在的至少一个历史兼容性问题分别采取的问题修复策略,作为历史问题修复策略,且获取各历史兼容性问题分别对应的问题描述信息,作为历史问题描述信息。
其中,维护一个历史修复案例库,在历史修复案例库中存储有各历史兼容性问题对应的问题描述信息、问题修复策略以及问题修复效果等等。问题描述信息指的是对相应历史兼容性问题的问题属性进行描述的信息。问题修复策略是指的技术人员为解决相应历史兼容性问题所采用的修复策略。
在一种实施方式中,在历史修复案例库中进行数据提取,获取针对目标软件存在的至少一个历史兼容性问题分别采取的问题修复策略,作为历史问题修复策略,且获取各历史兼容性问题分别对应的问题描述信息,作为历史问题描述信息。
B2、将当前兼容性问题与各历史问题描述信息进行相似度匹配,并根据相似度匹配结果从各历史兼容性问题中确定目标兼容性问题。
在一种实施方式中,采用相似度匹配算法,如余弦相似度匹配、Jaccard相似度匹配等,将当前兼容性问题与各历史问题描述信息进行相似度匹配,将与当前兼容性问题相似度最高的历史问题描述信息,作为目标问题描述信息,进而将目标问题描述信息对应的历史兼容性问题作为目标兼容性问题。
C2、将目标兼容性问题对应的历史问题修复策略,作为针对当前兼容性问题的当前问题修复策略。
在一种实施方式中,根据历史修复案例库中记载的目标兼容性问题对应的历史问题修复策略,输出为针对当前兼容性问题的当前问题修复策略。
通过获取针对目标软件存在的至少一个历史兼容性问题分别采取的问题修复策略,作为历史问题修复策略,且获取各历史兼容性问题分别对应的问题描述信息,作为历史问题描述信息;将当前兼容性问题与各历史问题描述信息进行相似度匹配,并根据相似度匹配结果从各历史兼容性问题中确定目标兼容性问题;将目标兼容性问题对应的历史问题修复策略,作为针对当前兼容性问题的当前问题修复策略,从而利用过去的经验和知识来快速预测针对当前兼容性问题的当前问题修复策略,能够提供非常具体和实用的当前问题修复策略,提高目标软件向后兼容性的维护效率和质量。
可选的,根据当前兼容性问题生成针对当前兼容性问题的当前问题修复策略,包括:
将当前兼容性问题输入至修复策略预测模型中,并根据修复策略预测模型的输出结果确定针对当前兼容性问题的当前问题修复策略。
其中,修复策略预测模型是根据历史问题修复策略和历史问题描述信息训练得到的,历史问题修复策略为针对目标软件存在的至少一个历史兼容性问题分别采取的问题修复策略,历史问题描述信息为各历史兼容性问题分别对应的问题描述信息。历史问题修复策略和历史问题描述信息在历史修复案例库中进行数据提取得到。
具体的,将历史问题描述信息作为待训练模型的输入特征,且将历史问题修复策略作为待训练模型的输出特征,采用模型训练方法对待训练模型进行模型训练生成修复策略预测模型。将当前兼容性问题输入至训练完成的修复策略预测模型中,通过修复策略预测模型输出针对当前兼容性问题的当前问题修复策略。风险概率值预测模型可选的为机器学习模型。
通过将当前兼容性问题输入至修复策略预测模型中,并根据修复策略预测模型的输出结果确定针对当前兼容性问题的当前问题修复策略,得力于机器学习模型先天的优势,能够更快速的生成当前问题修复策略,且还能够保证当前问题修复策略的适配性,保证了及早降低当前软件版本发布后可能出现的风险。
实施例三
图3为本发明实施例三提供的一种软件兼容性问题的处理方法的流程图,本实施例对上述实施例进行进一步优化与扩展,并可以与上述各个可选实施方式进行结合。如图3所示,该方法包括:
S301、获取目标软件在当前软件版本对应的当前软件源代码,以及在历史软件版本对应的历史软件源代码;根据当前软件源代码和历史软件源代码,确定当前软件版本相对于历史软件版本的源代码变更信息。
S302、根据源代码变更信息,确定当前软件版本相对于历史软件版本存在的至少一个当前兼容性问题,以及确定目标软件中分别受各当前兼容性问题影响的至少一个风险软件模块。
其中,风险软件模块指的是目标软件中受到各当前兼容性问题影响的软件模块,风险软件模块包括风险软件接口和/或风险软件组件。可以理解的是,一个当前兼容性问题可能会影响到一个软件模块也可能会影响到多个软件模块;相应的,一个软件模块可能受一个当前兼容性问题的影响也可能会受多个当前兼容性问题的影响。
在一种实施方式中,对各源代码变更样本添加标注信息,其中,标注信息由技术人员根据经验对不同历史软件版本之间存在的至少一个兼容性问题,以及,各兼容性问题对目标软件产生影响的软件模块,来共同确定。例如,假设技术人员根据经验确定历史软件版本1和历史软件版本2之间存在的兼容性问题为“语法不兼容”,对目标软件产生影响的软件模块为软件组件1,而历史软件版本1和历史软件版本2对应的源代码变更样本为源代码变更样本1,则对源代码变更样本1添加标注信息“语法不兼容”以及“软件组件1”。
在对各源代码变更样本添加完成标注信息后,将各源代码变更样本作为待训练模型的输入特征,且将各源代码变更样本的标注信息作为待训练模型的输出特征,对待训练模型进行模型训练,得到问题预测模型。
可以理解的是,通过训练问题预测模型来学习源代码变更样本(源代码变更信息)与标注信息(兼容性问题、产生影响的软件模块)之间的关联关系,则可以利用训练完成的问题预测模型来准确预测。也即,将当前软件版本相对于历史软件版本存在源代码变更信息输入至问题预测模型,问题预测模型输出当前软件版本相对于历史软件版本存在的至少一个当前兼容性问题,以及,目标软件中分别受各当前兼容性问题影响的至少一个风险软件模块。
通过确定目标软件中分别受各当前兼容性问题影响的至少一个风险软件模块,为后续评估受各当前兼容性问题影响的待预警用户,奠定了数据基础。
S303、将使用当前软件版本的目标软件的用户,以及使用历史软件版本的目标软件的用户,共同作为第一类风险用户。
在一种实施方式中,收集所有用户当前使用的软件版本信息,通过包括软件内的版本检测机制、客户反馈、或者定期的客户调查来实现。根据各用户当前使用的软件版本信息,将使用当前软件版本的目标软件的用户,以及使用历史软件版本的目标软件的用户,共同作为第一类风险用户。可以理解的是,由于当前软件版本相对于历史软件版本存在当前兼容性问题,那么无论是使用当前软件版本的目标软件的用户,还是使用历史软件版本的目标软件的用户,均可能会受到当前兼容性问题的影响,即均属于风险用户需要进行预警。
S304、分别从各第一类风险用户使用的目标软件中确定交互软件模块,并将与风险软件模块相匹配的交互软件模块,作为辅助软件模块。
其中,交互软件模块表示各第一类风险用户使用的目标软件中,与目标软件以外的至少一个外部系统存在数据交互的软件模块。换言之,交互软件模块可以看作集成点,是目标软件与外部系统的连接处。
示例性的,假设交互软件模块包括软件模块1、软件模块2、软件模块3、软件模块4、软件模块5和软件模块6。风险软件模块包括软件模块2、软件模块7和软件模块10,那么辅助软件模块则为“软件模块2”。
可以理解的是,辅助软件模块受到当前兼容性问题影响的情况下,还与至少一个外部系统存在数据交互,也即此时当前兼容性问题的影响范围可能会蔓延到目标软件之外的外部系统,亟需进一步确定外部系统的使用者来补全风险用户。
S305、分别确定与各辅助软件模块存在数据交互的外部系统,作为风险外部系统,并将使用风险外部系统的用户作为第二类风险用户。
在一种实施方式中,根据预先建立的交互软件模块与外部系统之间的依赖关系,来确定与各辅助软件模块存在数据交互的外部系统,作为风险外部系统。例如,假设软件模块1为辅助软件模块,而软件模块1与外部系统1和外部系统2之间存在依赖关系,那么将外部系统1和外部系统2作为风险外部系统。可以理解的是,辅助软件模块会受到当前兼容性问题影响,那么与辅助软件模块存在数据交互的外部系统,同样有可能受到当前兼容性问题影响,顾将其视为风险外部系统。
进一步地,确定使用风险外部系统的用户作为第二类风险用户,需要进行预警。
S306、根据第一类风险用户和第二类风险用户确定待预警用户。
其中,第一类风险用户和第二类风险用户均可能会受到当前兼容性问题的影响,共同作为待预警用户需要向其输出预警信息。
通过将使用当前软件版本的目标软件的用户,以及使用历史软件版本的目标软件的用户,共同作为第一类风险用户;分别从各第一类风险用户使用的目标软件中确定交互软件模块,并将与风险软件模块相匹配的交互软件模块,作为辅助软件模块;分别确定与各辅助软件模块存在数据交互的外部系统,作为风险外部系统,并将使用风险外部系统的用户作为第二类风险用户;根据第一类风险用户和第二类风险用户确定待预警用户,从而将使用当前软件版本和历史软件版本的用户作为待预警用户外,还会将使用风险外部系统的用户作为待预警用户,保证了待预警用户确定的全面性和完整性,进一步保证预警信息定向传输的精准性及合理性,最大程度的降低当前兼容性问题所带来的负面影响。
S307、确定各当前兼容性问题分别对应的待预警用户,分别根据各当前兼容性问题以及针对各当前兼容性问题的当前问题修复策略生成各当前兼容性问题对应的预警信息,并将各预警信息分别发送给各当前兼容性问题分别对应的待预警用户。
示例性的,假设任一当前兼容性问题对应的待预警用户包括用户1、用户2和用户3,针对该当前兼容性问题的当前问题修复策略为问题修复策略1,则根据该当前兼容性问题以及问题修复策略1生成预警信息,并将该预警信息分别发送给用户1、用户2和用户3,供用户1、用户2和用户3感知到该当前兼容性问题的存在,并参考问题修复策略1对该当前兼容性问题进行修复。
通过确定各当前兼容性问题分别对应的待预警用户;分别根据各当前兼容性问题以及针对各当前兼容性问题的当前问题修复策略生成各当前兼容性问题对应的预警信息,并将各预警信息分别发送给各当前兼容性问题分别对应的待预警用户,实现了预警信息定向传输的效果,在保证预警信息准确且适配的传输给相关预警用户的前提下,使得预警用户能够及早感知并修复当前兼容性问题。
可选的,所述分别根据各所述当前兼容性问题以及针对各所述当前兼容性问题的当前问题修复策略生成各所述当前兼容性问题对应的预警信息,包括:
A3、确定各当前兼容性问题分别对应的待预警用户的用户数量,并根据用户数量确定各当前兼容性问题的影响范围量化值。
其中,影响范围量化值体现了当前兼容性问题产生影响的广泛程度。影响范围量化值越大,代表当前兼容性问题产生影响的广泛程度越大;影响范围量化值越小,代表当前兼容性问题产生影响的广泛程度越小。
在一种实施方式中,统计各当前兼容性问题分别对应的待预警用户的用户数量,将用户数量与各影响范围评级对应的数量区间进行匹配,用于确定各当前兼容性问题对应的影响范围评级,影响范围评级包括但不限于“局部”、“部分”和“广泛”等。示例性的,假设任一当前兼容性问题对应的待预警用户的用户数量为10,而影响范围评级“部分”对应的数量区间为(5,15),则确定该当前兼容性问题对应的影响范围评级为“部分”。
根据预先为各影响范围评级赋予的分数,确定各当前兼容性问题的影响范围量化值。如假设任一当前兼容性问题对应的影响范围评级为“部分”,而预先为影响范围评级“部分”赋予的分数为30,则为确定该当前兼容性问题的影响范围量化值为30。
B3、确定各当前兼容性问题在至少一个目标评估维度所产生的影响力量化值,并根据影响力量化值确定各当前兼容性问题的严重程度量化值。
其中,目标评估维度包括客户满意度、业务连续性和支持成本。严重程度量化值体现了各当前兼容性问题产生影响或破坏的严重程度,一个严重程度高的当前兼容性问题,可能导致系统崩溃、数据丢失或重大业务中断,因此应优先修复。
在一种实施方式中,确定各当前兼容性问题分别在“客户满意度”、“业务连续性”和“支持成本”三种目标评估维度所产生的影响力量化值,进而根据分别确定的影响力量化值进一步确定各当前兼容性问题的严重程度量化值。
可选的,各当前兼容性问题在“客户满意度”目标评估维度的影响力量化值,可通过如下方式确定:
调研与数据分析:收集和分析历史客户反馈数据,特别是与兼容性问题相关的反馈,了解过去类似兼容性问题对客户满意度的影响力量化值。
客户画像分析:根据用户的不同类型和使用习惯,分析兼容性问题可能对不同用户群体产生的影响,以得到客户满意度的影响力量化值。例如,某些大型央企、高级别用户可能对兼容性有更高的要求。
模拟测试:在受控环境中模拟兼容性问题,观察用户的反应和满意度变化,以得到客户满意度的影响力量化值。
可选的,各当前兼容性问题在“业务连续性”目标评估维度的影响力量化值,可通过如下方式确定:
业务流程分析:详细分析业务流程,确定哪些环节可能受到兼容性问题的影响,以及这种影响可能导致的业务中断程度,以得到业务连续性的影响力量化值。
风险评估:评估兼容性问题对关键业务功能的影响,包括合同服务、结算、决算服务、工作流服务等,以得到业务连续性的影响力量化值。这有助于预测业务连续性的潜在风险。
历史案例分析:参考过去类似兼容性问题对业务连续性的影响,以及恢复所需的时间和成本,以得到业务连续性的影响力量化值。
可选的,各当前兼容性问题在“支持成本”目标评估维度的影响力量化值,可通过如下方式确定:
成本模型分析:建立一个成本模型,包括人力资源、技术支持、硬件和软件升级等方面的费用,用于预测解决兼容性问题所需的成本,以得到支持成本的影响力量化值。
服务级别协议分析:审查与客户签订的服务级别协议,了解在出现兼容性问题时可能需要支付的违约费用或补偿,以得到支持成本的影响力量化值。
历史数据对比:参考过去解决类似问题的成本数据,预测当前兼容性问题可能带来的支持成本增加,以得到支持成本的影响力量化值。
可选的,根据影响力量化值确定各当前兼容性问题的严重程度量化值,包括:
获取各目标评估维度对应的影响力权重;根据各当前兼容性问题在各目标评估维度所产生的影响力量化值,以及各目标评估维度对应的影响力权重,进行加权求和;根据加权求和结果确定各当前兼容性问题的严重程度量化值。
示例性的,假设任一当前兼容性问题在“客户满意度”目标评估维度的影响力量化值为X1,“业务连续性”目标评估维度的影响力量化值为X2,“支持成本”目标评估维度的影响力量化值为X3。假设,“客户满意度”目标评估维度的影响力权重为a1,“业务连续性”目标评估维度的影响力权重为b1,“支持成本”目标评估维度的影响力权重为k1,则该当前兼容性问题的严重程度量化值为a1*X1+b1*X2+k1*X3。
通过获取各目标评估维度对应的影响力权重;根据各当前兼容性问题在各目标评估维度所产生的影响力量化值,以及各目标评估维度对应的影响力权重,进行加权求和;根据加权求和结果确定各当前兼容性问题的严重程度量化值,使得严重程度量化值确定更加合理及准确。
C3、根据影响范围量化值和严重程度量化值,确定各当前兼容性问题的修复优先级。
其中,修复优先级体现了各当前兼容性问题的修复紧急程度,任一当前兼容性问题的修复优先级越高,则表示该当前兼容性问题修复紧急程度越大,需要优先进行修复。
在一种实施方式中,根据各当前兼容性问题的影响范围量化值和严重程度量化值进行量化值排序,并根据量化值排序结果确定各当前兼容性问题的修复优先级。
可选的,根据影响范围量化值和严重程度量化值,确定各当前兼容性问题的修复优先级,包括:
对各当前兼容性问题的影响范围量化值和严重程度量化值进行加权求和,并根据加权求和结果确定各当前兼容性问题的优先级评分;根据对优先级评分的排序结果确定各当前兼容性问题的修复优先级。
在一种实施方式中,根据各当前兼容性问题的影响范围量化值和严重程度量化值,以及预设的第一权重值和第二权重值,进行加权求和确定各当前兼容性问题的优先级评分。其中,第一权重值表示预设的影响范围量化值对应的权重值;第二权重值表示预设的严重程度量化值对应的权重值,第一权重值和第二权重值的大小可以根据实际业务需求进行设置和调整。例如,假设任一当前兼容性问题的影响范围量化值为M,严重程度量化值为N,第一权重值为a,第一权重值为b,则该当前兼容性问题的优先级评分为aM+bN。
根据各当前兼容性问题的优先级评分进行降序排序,并根据降序排序结果确定各当前兼容性问题的修复优先级,即优先级评分越大,则排序越靠前,即修复优先级越高;优先级评分越小,则排序越靠后,即修复优先级越低。
通过对各当前兼容性问题的影响范围量化值和严重程度量化值进行加权求和,并根据加权求和结果确定各当前兼容性问题的优先级评分;根据对优先级评分的排序结果确定各当前兼容性问题的修复优先级,使得修复优先级同时参考“影响范围量化值”和“严重程度量化值”两种维度来确定,保证了修复优先级确定的准确性和合理性。
D3、分别根据各当前兼容性问题、针对各当前兼容性问题的当前问题修复策略、以及各当前兼容性问题的修复优先级,生成各当前兼容性问题对应的预警信息。
在一种实施方式中,针对各当前兼容性问题,根据各当前兼容性问题、针对各当前兼容性问题的当前问题修复策略、以及各当前兼容性问题的修复优先级,生成预警信息。
通过确定各当前兼容性问题分别对应的待预警用户的用户数量,并根据用户数量确定各当前兼容性问题的影响范围量化值;确定各当前兼容性问题在至少一个目标评估维度所产生的影响力量化值,并根据影响力量化值确定各当前兼容性问题的严重程度量化值;其中,目标评估维度包括客户满意度、业务连续性和支持成本;根据影响范围量化值和严重程度量化值,确定各当前兼容性问题的修复优先级;分别根据各当前兼容性问题、针对各当前兼容性问题的当前问题修复策略、以及各当前兼容性问题的修复优先级,生成各当前兼容性问题对应的预警信息,使得用户可以参考不同当前兼容性问题的修复优先级,优先采用高优先级的当前兼容性问题的当前问题修复策略,对高优先级的当前兼容性问题进行修复,从而合理分配资源,优先解决关键问题。
可选的,本实施例还提供了如下功能实现方式:
自动化的代码审查工具:使用如SonarQube或Checkstyle这样的自动化工具进行软件源代码审查,有助于在软件源代码提交之前就识别出可能违反兼容性规则的部分。这些工具可以设置为在软件源代码提交时自动运行,对软件源代码进行静态分析,检查代码的规范性和潜在的错误。通过这种方式,我们可以在刚获取到软件源代码时,就预防或修正那些可能破坏兼容性的问题。
语义版本控制:这是一种版本命名规则,它确保每次API的更改都能够得到明确的标识。通过这种方式,用户可以清楚地知道哪个软件版本是稳定的,哪个软件版本可能包含兼容破坏性的更改。这有助于维护者和用户更好地管理他们的依赖关系,减少因软件版本更新而导致的兼容性问题。
详细的API文档:维护详细的API文档是为了让开发者和用户都能够清晰地了解API的功能、输入、输出以及可能出现的错误。当API发生更改时,文档也会相应地更新,确保所有相关人员都能够得到最新、最准确的信息。同时,提供迁移指南和版本对照表可以帮助用户在新旧软件版本之间平滑过渡,减少因软件版本升级而带来的困扰。
实施例四
图4为本发明实施例四提供的一种软件兼容性问题的处理装置的结构示意图。如图4所示,该装置包括:
软件源代码获取模块41,用于获取目标软件在当前软件版本对应的当前软件源代码,以及在历史软件版本对应的历史软件源代码;
源代码变更信息确定模块42,用于根据当前软件源代码和历史软件源代码,确定当前软件版本相对于历史软件版本的源代码变更信息;
兼容性问题确定模块43,用于根据源代码变更信息,确定当前软件版本相对于历史软件版本存在的至少一个当前兼容性问题;
问题修复策略生成模块44,用于根据当前兼容性问题生成针对当前兼容性问题的当前问题修复策略。
可选的,兼容性问题确定模块43,具体用于:
确定当前软件源代码的代码复杂度信息,以及获取目标软件存在的历史兼容性问题;
根据代码复杂度信息、历史兼容性问题以及源代码变更信息,确定当前软件版本相对于历史软件版本存在的至少一个当前兼容性问题。
可选的,兼容性问题确定模块43,具体还用于:
根据代码复杂度信息、历史兼容性问题以及源代码变更信息,预测当前软件版本相对于历史软件版本存在兼容性问题的风险概率值;
在风险概率值大于预设阈值的情况下,根据代码复杂度信息、历史兼容性问题以及源代码变更信息,确定当前软件版本相对于历史软件版本存在的至少一个当前兼容性问题。
可选的,兼容性问题确定模块43,具体还用于:
将代码复杂度信息、历史兼容性问题以及源代码变更信息,输入至问题预测模型中,并根据问题预测模型的输出结果确定当前软件版本相对于历史软件版本存在的至少一个当前兼容性问题;
其中,问题预测模型是根据训练样本以及训练样本的标注信息进行模型训练得到的,训练样本包括样本代码复杂度信息、样本历史兼容性问题以及样本源代码变更信息,标注信息为根据训练样本进行标签标注而得到的标准兼容性问题。
可选的,问题修复策略生成模块44,具体用于:
从候选兼容性问题中将与当前兼容性问题相匹配的候选兼容性问题,作为辅助兼容性问题;
根据候选兼容性问题与候选问题修复策略之间的映射关系,将与辅助兼容性问题关联的候选问题修复策略,作为针对当前兼容性问题的当前问题修复策略。
可选的,问题修复策略生成模块44,具体用于:
获取针对目标软件存在的至少一个历史兼容性问题分别采取的问题修复策略,作为历史问题修复策略,且获取各历史兼容性问题分别对应的问题描述信息,作为历史问题描述信息;
将当前兼容性问题与各历史问题描述信息进行相似度匹配,并根据相似度匹配结果从各历史兼容性问题中确定目标兼容性问题;
将目标兼容性问题对应的历史问题修复策略,作为针对当前兼容性问题的当前问题修复策略。
可选的,问题修复策略生成模块44,具体用于:
将当前兼容性问题输入至修复策略预测模型中,并根据修复策略预测模型的输出结果确定针对当前兼容性问题的当前问题修复策略;
其中,修复策略预测模型是根据历史问题修复策略和历史问题描述信息训练得到的,历史问题修复策略为针对目标软件存在的至少一个历史兼容性问题分别采取的问题修复策略,历史问题描述信息为各历史兼容性问题分别对应的问题描述信息。
可选的,兼容性问题确定模块43,具体还用于:
确定目标软件中分别受各当前兼容性问题影响的至少一个风险软件模块;其中,风险软件模块包括风险软件接口和/或风险软件组件;
装置还包括待预警用户确定模块,具体用于:
将使用当前软件版本的目标软件的用户,以及使用历史软件版本的目标软件的用户,共同作为第一类风险用户;
分别从各第一类风险用户使用的目标软件中确定交互软件模块,并将与风险软件模块相匹配的交互软件模块,作为辅助软件模块;其中,交互软件模块表示各第一类风险用户使用的目标软件中,与目标软件以外的至少一个外部系统存在数据交互的软件模块;
分别确定与各辅助软件模块存在数据交互的外部系统,作为风险外部系统,并将使用风险外部系统的用户作为第二类风险用户;
根据第一类风险用户和第二类风险用户确定待预警用户;
装置还包括预警信息发送模块,具体用于:
确定各当前兼容性问题分别对应的待预警用户;
分别根据各当前兼容性问题以及针对各当前兼容性问题的当前问题修复策略生成各当前兼容性问题对应的预警信息,并将各预警信息分别发送给各当前兼容性问题分别对应的待预警用户。
可选的,预警信息发送模块,具体还用于:
确定各当前兼容性问题分别对应的待预警用户的用户数量,并根据用户数量确定各当前兼容性问题的影响范围量化值;
确定各当前兼容性问题在至少一个目标评估维度所产生的影响力量化值,并根据影响力量化值确定各当前兼容性问题的严重程度量化值;其中,目标评估维度包括客户满意度、业务连续性和支持成本;
根据影响范围量化值和严重程度量化值,确定各当前兼容性问题的修复优先级;
分别根据各当前兼容性问题、针对各当前兼容性问题的当前问题修复策略、以及各当前兼容性问题的修复优先级,生成各当前兼容性问题对应的预警信息。
可选的,预警信息发送模块,具体还用于:
获取各目标评估维度对应的影响力权重;
根据各当前兼容性问题在各目标评估维度所产生的影响力量化值,以及各目标评估维度对应的影响力权重,进行加权求和;
根据加权求和结果确定各当前兼容性问题的严重程度量化值。
可选的,预警信息发送模块,具体还用于:
对各当前兼容性问题的影响范围量化值和严重程度量化值进行加权求和,并根据加权求和结果确定各当前兼容性问题的优先级评分;
根据对优先级评分的排序结果确定各当前兼容性问题的修复优先级。
可选的,源代码变更信息包括源代码变更行数、源代码变更类型、源代码变更位置、依赖项变更内容、配置文件变更内容以及数据格式变更内容中的至少一种。
本发明实施例所提供的软件兼容性问题的处理装置可执行本发明任意实施例所提供的软件兼容性问题的处理方法,具备执行方法相应的功能模块和有益效果。
实施例五
图5示出了可以用来实施本发明的实施例的电子设备50的结构示意图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备(如头盔、眼镜、手表等)和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本发明的实现。
如图5所示,电子设备50包括至少一个处理器51,以及与至少一个处理器51通信连接的存储器,如只读存储器(ROM)52、随机访问存储器(RAM)53等,其中,存储器存储有可被至少一个处理器执行的计算机程序,处理器51可以根据存储在只读存储器(ROM)52中的计算机程序或者从存储单元58加载到随机访问存储器(RAM)53中的计算机程序,来执行各种适当的动作和处理。在RAM 53中,还可存储电子设备50操作所需的各种程序和数据。处理器51、ROM 52以及RAM 53通过总线54彼此相连。输入/输出(I/O)接口55也连接至总线54。
电子设备50中的多个部件连接至I/O接口55,包括:输入单元56,例如键盘、鼠标等;输出单元57,例如各种类型的显示器、扬声器等;存储单元58,例如磁盘、光盘等;以及通信单元59,例如网卡、调制解调器、无线通信收发机等。通信单元59允许电子设备50通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
处理器51可以是各种具有处理和计算能力的通用和/或专用处理组件。处理器51的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的处理器、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。处理器51执行上文所描述的各个方法和处理,例如软件兼容性问题的处理方法。
在一些实施例中,软件兼容性问题的处理方法可被实现为计算机程序,其被有形地包含于计算机可读存储介质,例如存储单元58。在一些实施例中,计算机程序的部分或者全部可以经由ROM 52和/或通信单元59而被载入和/或安装到电子设备50上。当计算机程序加载到RAM 53并由处理器51执行时,可以执行上文描述的软件兼容性问题的处理方法的一个或多个步骤。备选地,在其他实施例中,处理器51可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行软件兼容性问题的处理方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、复杂可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本发明的方法的计算机程序可以采用一个或多个编程语言的任何组合来编写。这些计算机程序可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,使得计算机程序当由处理器执行时使流程图和/或框图中所规定的功能/操作被实施。计算机程序可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本发明的上下文中,计算机可读存储介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的计算机程序。计算机可读存储介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。备选地,计算机可读存储介质可以是机器可读信号介质。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在电子设备上实施此处描述的系统和技术,该电子设备具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给电子设备。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)、区块链网络和互联网。
计算系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务中,存在的管理难度大,业务扩展性弱的缺陷。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发明中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本发明的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

Claims (15)

1.一种软件兼容性问题的处理方法,其特征在于,包括:
获取目标软件在当前软件版本对应的当前软件源代码,以及在历史软件版本对应的历史软件源代码;
根据所述当前软件源代码和所述历史软件源代码,确定所述当前软件版本相对于所述历史软件版本的源代码变更信息;
根据所述源代码变更信息,确定所述当前软件版本相对于所述历史软件版本存在的至少一个当前兼容性问题;
根据所述当前兼容性问题生成针对所述当前兼容性问题的当前问题修复策略。
2.根据权利要求1所述的方法,其特征在于,所述根据所述源代码变更信息,确定所述当前软件版本相对于所述历史软件版本存在的至少一个当前兼容性问题,包括:
确定所述当前软件源代码的代码复杂度信息,以及获取所述目标软件存在的历史兼容性问题;
根据所述代码复杂度信息、所述历史兼容性问题以及所述源代码变更信息,确定所述当前软件版本相对于所述历史软件版本存在的至少一个当前兼容性问题。
3.根据权利要求2所述的方法,其特征在于,所述根据所述代码复杂度信息、所述历史兼容性问题以及所述源代码变更信息,确定所述当前软件版本相对于所述历史软件版本存在的至少一个当前兼容性问题,包括:
根据所述代码复杂度信息、所述历史兼容性问题以及所述源代码变更信息,预测所述当前软件版本相对于所述历史软件版本存在兼容性问题的风险概率值;
在所述风险概率值大于预设阈值的情况下,根据所述代码复杂度信息、所述历史兼容性问题以及所述源代码变更信息,确定所述当前软件版本相对于所述历史软件版本存在的至少一个当前兼容性问题。
4.根据权利要求3所述的方法,其特征在于,所述根据所述代码复杂度信息、所述历史兼容性问题以及所述源代码变更信息,确定所述当前软件版本相对于所述历史软件版本存在的至少一个当前兼容性问题,包括:
将所述代码复杂度信息、所述历史兼容性问题以及所述源代码变更信息,输入至问题预测模型中,并根据所述问题预测模型的输出结果确定所述当前软件版本相对于所述历史软件版本存在的至少一个当前兼容性问题;
其中,所述问题预测模型是根据训练样本以及所述训练样本的标注信息进行模型训练得到的,所述训练样本包括样本代码复杂度信息、样本历史兼容性问题以及样本源代码变更信息,所述标注信息为根据所述训练样本进行标签标注而得到的标准兼容性问题。
5.根据权利要求1所述的方法,其特征在于,所述根据所述当前兼容性问题生成针对所述当前兼容性问题的当前问题修复策略,包括:
从候选兼容性问题中将与所述当前兼容性问题相匹配的候选兼容性问题,作为辅助兼容性问题;
根据候选兼容性问题与候选问题修复策略之间的映射关系,将与所述辅助兼容性问题关联的候选问题修复策略,作为针对所述当前兼容性问题的当前问题修复策略。
6.根据权利要求1所述的方法,其特征在于,所述根据所述当前兼容性问题生成针对所述当前兼容性问题的当前问题修复策略,包括:
获取针对所述目标软件存在的至少一个历史兼容性问题分别采取的问题修复策略,作为历史问题修复策略,且获取各所述历史兼容性问题分别对应的问题描述信息,作为历史问题描述信息;
将所述当前兼容性问题与各所述历史问题描述信息进行相似度匹配,并根据相似度匹配结果从各所述历史兼容性问题中确定目标兼容性问题;
将所述目标兼容性问题对应的所述历史问题修复策略,作为针对所述当前兼容性问题的当前问题修复策略。
7.根据权利要求1所述的方法,其特征在于,所述根据所述当前兼容性问题生成针对所述当前兼容性问题的当前问题修复策略,包括:
将所述当前兼容性问题输入至修复策略预测模型中,并根据所述修复策略预测模型的输出结果确定针对所述当前兼容性问题的当前问题修复策略;
其中,所述修复策略预测模型是根据历史问题修复策略和历史问题描述信息训练得到的,所述历史问题修复策略为针对所述目标软件存在的至少一个历史兼容性问题分别采取的问题修复策略,所述历史问题描述信息为各所述历史兼容性问题分别对应的问题描述信息。
8.根据权利要求1所述的方法,其特征在于,所述根据所述源代码变更信息,确定所述当前软件版本相对于所述历史软件版本存在的至少一个当前兼容性问题的同时,还包括:
确定所述目标软件中分别受各所述当前兼容性问题影响的至少一个风险软件模块;其中,所述风险软件模块包括风险软件接口和/或风险软件组件;
所述根据所述源代码变更信息,确定所述当前软件版本相对于所述历史软件版本存在的至少一个当前兼容性问题之后,还包括:
将使用所述当前软件版本的所述目标软件的用户,以及使用所述历史软件版本的所述目标软件的用户,共同作为第一类风险用户;
分别从各所述第一类风险用户使用的所述目标软件中确定交互软件模块,并将与所述风险软件模块相匹配的所述交互软件模块,作为辅助软件模块;其中,所述交互软件模块表示各所述第一类风险用户使用的所述目标软件中,与所述目标软件以外的至少一个外部系统存在数据交互的软件模块;
分别确定与各所述辅助软件模块存在数据交互的所述外部系统,作为风险外部系统,并将使用所述风险外部系统的用户作为第二类风险用户;
根据所述第一类风险用户和所述第二类风险用户确定待预警用户;
所述根据所述当前兼容性问题生成针对所述当前兼容性问题的当前问题修复策略之后,还包括:
确定各所述当前兼容性问题分别对应的所述待预警用户;
分别根据各所述当前兼容性问题以及针对各所述当前兼容性问题的当前问题修复策略生成各所述当前兼容性问题对应的预警信息,并将各所述预警信息分别发送给各所述当前兼容性问题分别对应的所述待预警用户。
9.根据权利要求8所述的方法,其特征在于,所述分别根据各所述当前兼容性问题以及针对各所述当前兼容性问题的当前问题修复策略生成各所述当前兼容性问题对应的预警信息,包括:
确定各所述当前兼容性问题分别对应的所述待预警用户的用户数量,并根据所述用户数量确定各所述当前兼容性问题的影响范围量化值;
确定各所述当前兼容性问题在至少一个目标评估维度所产生的影响力量化值,并根据所述影响力量化值确定各所述当前兼容性问题的严重程度量化值;其中,所述目标评估维度包括客户满意度、业务连续性和支持成本;
根据所述影响范围量化值和所述严重程度量化值,确定各所述当前兼容性问题的修复优先级;
分别根据各所述当前兼容性问题、针对各所述当前兼容性问题的当前问题修复策略、以及各所述当前兼容性问题的修复优先级,生成各所述当前兼容性问题对应的预警信息。
10.根据权利要求9所述的方法,其特征在于,所述根据所述影响力量化值确定各所述当前兼容性问题的严重程度量化值,包括:
获取各所述目标评估维度对应的影响力权重;
根据各所述当前兼容性问题在各所述目标评估维度所产生的影响力量化值,以及各所述目标评估维度对应的所述影响力权重,进行加权求和;
根据加权求和结果确定各所述当前兼容性问题的严重程度量化值。
11.根据权利要求9所述的方法,其特征在于,所述根据所述影响范围量化值和所述严重程度量化值,确定各所述当前兼容性问题的修复优先级,包括:
对各所述当前兼容性问题的所述影响范围量化值和所述严重程度量化值进行加权求和,并根据加权求和结果确定各所述当前兼容性问题的优先级评分;
根据对所述优先级评分的排序结果确定各所述当前兼容性问题的修复优先级。
12.根据权利要求1-11中任一项所述的方法,其特征在于,所述源代码变更信息包括源代码变更行数、源代码变更类型、源代码变更位置、依赖项变更内容、配置文件变更内容以及数据格式变更内容中的至少一种。
13.一种软件兼容性问题的处理装置,其特征在于,包括:
软件源代码获取模块,用于获取目标软件在当前软件版本对应的当前软件源代码,以及在历史软件版本对应的历史软件源代码;
源代码变更信息确定模块,用于根据所述当前软件源代码和所述历史软件源代码,确定所述当前软件版本相对于所述历史软件版本的源代码变更信息;
兼容性问题确定模块,用于根据所述源代码变更信息,确定所述当前软件版本相对于所述历史软件版本存在的至少一个当前兼容性问题;
问题修复策略生成模块,用于根据所述当前兼容性问题生成针对所述当前兼容性问题的当前问题修复策略。
14.一种电子设备,其特征在于,所述电子设备包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-12中任一项所述的软件兼容性问题的处理方法。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使处理器执行权利要求1-12中任一项所述的软件兼容性问题的处理方法。
CN202410703632.8A 2024-06-03 软件兼容性问题的处理方法、装置、设备和介质 Pending CN118276933A (zh)

Publications (1)

Publication Number Publication Date
CN118276933A true CN118276933A (zh) 2024-07-02

Family

ID=

Similar Documents

Publication Publication Date Title
US11562304B2 (en) Preventative diagnosis prediction and solution determination of future event using internet of things and artificial intelligence
US20220036244A1 (en) Systems and methods for predictive coding
US11295242B2 (en) Automated data and label creation for supervised machine learning regression testing
EP3674918A2 (en) Column lineage and metadata propagation
US20220100963A1 (en) Event extraction from documents with co-reference
CN110502445B (zh) 软件故障严重等级判定方法及装置、模型训练方法及装置
CN113627566A (zh) 一种网络诈骗的预警方法、装置和计算机设备
US20220100772A1 (en) Context-sensitive linking of entities to private databases
US20220100967A1 (en) Lifecycle management for customized natural language processing
JP6419667B2 (ja) テストdbデータ生成方法及び装置
CN114201328A (zh) 基于人工智能的故障处理方法、装置、电子设备及介质
CN111045902A (zh) 服务器的压力测试方法及装置
Herraiz et al. Impact of installation counts on perceived quality: A case study on debian
CN111210332A (zh) 贷后管理策略生成方法、装置及电子设备
CN114092230A (zh) 一种数据处理方法、装置、电子设备及计算机可读介质
CN116720197B (zh) 一种对漏洞优先级排列的方法及装置
CN118276933A (zh) 软件兼容性问题的处理方法、装置、设备和介质
CN113296836B (zh) 训练模型的方法、测试方法、装置、电子设备及存储介质
CN112784219B (zh) 基于app指数的用户风险预测方法、装置及电子设备
CN115495587A (zh) 一种基于知识图谱的告警分析方法及装置
KR102164852B1 (ko) 인공지능 학습데이터 생성을 위한 크라우드소싱 기반 프로젝트의 긴급도를 고려한 프로젝트 참여 제한 방법
KR101691083B1 (ko) 토픽 모델과 다중 특성 기반의 버그 정정 개발자 추천 및 버그 심각성 예측 시스템 및 방법
CN112712270A (zh) 信息处理方法、装置、设备及存储介质
CN111352818A (zh) 应用程序性能分析方法、装置、存储介质及电子设备
KR102395550B1 (ko) 기밀정보 분석 방법 및 장치

Legal Events

Date Code Title Description
PB01 Publication