CN105205000A - 定位软件开发中代码受影响范围的方法及系统 - Google Patents
定位软件开发中代码受影响范围的方法及系统 Download PDFInfo
- Publication number
- CN105205000A CN105205000A CN201510673640.3A CN201510673640A CN105205000A CN 105205000 A CN105205000 A CN 105205000A CN 201510673640 A CN201510673640 A CN 201510673640A CN 105205000 A CN105205000 A CN 105205000A
- Authority
- CN
- China
- Prior art keywords
- code
- class
- key word
- software
- entry
- 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
Links
Landscapes
- Stored Programmes (AREA)
Abstract
本发明提供了一种定位软件开发中代码受影响范围的方法和一种定位软件开发中代码受影响范围的系统,其中,所述定位软件开发中代码受影响范围的方法包括:接收输入的功能关键字;根据所述功能关键字确定入口代码类,并建立所述功能关键字与所述入口代码类的映射实体;根据所述入口代码类在软件系统代码集中抽取所述入口代码类的调用链路,以根据所述映射实体和所述调用链路定位与所述功能关键字匹配的代码受影响范围。通过本发明的技术方案,在需求发生变更或软件测试出现问题时,不依赖于软件开发文档即可快速准确地定位所有受影响的代码范围,从而提高软件开发效率。
Description
技术领域
本发明涉及计算机技术领域,具体而言,涉及一种定位软件开发中代码受影响范围的方法和一种定位软件开发中代码受影响范围的系统。
背景技术
目前,在软件开发过程中,开发团队都是由各种不同职位的人员组成,由不同角色协作完成开发任务。一般来说,有需求、设计、开发和测试,其中,需求和设计人员需要制定需求文档和设计文档,开发人员编写代码实现需求,测试人员进行功能测试,最终完成一个系统的开发任务。当需求发生变更或者在测试中出现问题的时候,开发人员需要能够快速的定位此需求变更或者问题所影响的代码范围,或者是准确定位导致问题出现的代码位置。
而现有的解决上述问题的方案为通建立文档间的关联关系以及文档和代码之间的关联关系,来进行定位。但是,一般实现的只是通过分析文档中的关键字和代码文件的文件名进行匹配,如果一致则建立关联关系,而该方案存在高度依赖于代码文件的文件名是否规范的缺陷,即:代码文件的划分是否很细粒度,一旦出现代码文件的文件名不规范或者代码进行重构等情况,则将无法找到关联关系,进而无法找到受影响的代码范围。而且如果代码文件划分的比较粗,比如只是按功能节点划分,则只能找到对应的节点,而不能更准确的定位到按钮动作;还有,一般代码文件的文件名只是有意义的单词或者是单词缩写,并不能完全做到跟关键字完全匹配。综上,该方案只能定位到需求或测试问题关键字对应的直接代码文件,并不能找到所有间接关联的相关代码。
有鉴于此,本发明通过分析代码内容,找到代码间的所有调用关系。然后根据需求或者问题描述的功能关键字,找到对应的入口代码,然后通过代码间的调用拓扑关系,找到所有影响范围。功能关键字找到对应入口代码的原理是,不管是功能节点还是功能按钮,都是在代码里会设置名称,或者是通过注册的方式把名称和代码建立关系,这样通过界面上显示出来的功能关键字,就可以找到对应的入口代码,这样比从文档中的关键字找代码文件名更加准确。
基于以上场景,一个能够快速,准确定位到需求影响范围或者问题对应的代码范围的工具,将会极大的提高开发效率,提高软件产品质量。
因此,如何在需求发生变更或软件测试出现问题时,不依赖于软件开发文档即可快速准确地定位所有受影响的代码范围,从而提高软件开发效率成为亟待解决的技术问题。
发明内容
本发明正是基于上述技术问题,在需求发生变更或软件测试出现问题时,不依赖于软件开发文档即可快速准确地定位所有受影响的代码范围,从而提高软件开发效率。
有鉴于此,本发明的第一方面,提出了一种定位软件开发中代码受影响范围的方法,包括:接收输入的功能关键字;根据所述功能关键字确定入口代码类,并建立所述功能关键字与所述入口代码类的映射实体;根据所述入口代码类在软件系统代码集中抽取所述入口代码类的调用链路,以根据所述映射实体和所述调用链路定位与所述功能关键字匹配的代码受影响范围。
在该技术方案中,当在软件系统显示界面接收到用户(比如,软件开发人员)输入的功能关键字时,可以根据该功能关键字确定用于定位代码受影响范围的入口代码类,并建立该入口代码类与该功能关键字的映射实体,然后根据入口代码类在软件系统代码集中抽取该入口代码类的完整的调用链路,进而根据上述映射实体与调用链路确定与该功能关键字匹配的所有的受影响的代码范围,如此,通过功能关键字而无需依赖任何软件开发文档找到对应的入口代码类进而通过分析代码内容,找到代码间的所有调用关系,即可快速准确地定位所有受影响的代码范围,从而提高软件开发效率,同时有效地避免了因软件开发文档与最终代码不同步而导致代码受影响范围定位不准确的问题。
在上述技术方案中,优选地,所述根据所述入口代码类在软件系统代码集中抽取所述入口代码类的调用链路,以根据所述映射实体和所述调用链路定位与所述功能关键字匹配的代码受影响范围具体包括:通过ASM框架在所述软件系统代码集中进行扫描分析,以获取所述软件系统代码集中的所有代码类之间的调用关系;根据所述软件系统代码集中的所述所有代码类之间的调用关系建立所述软件系统代码集的代码引用拓扑关系资源库;根据所述入口代码类在所述代码引用拓扑关系资源库中抽取所述调用链路。
在该技术方案中,首先通过ASM框架(一个Java(一种可以撰写跨平台应用软件的面向对象的程序设计语言)字节码操纵框架)对软件系统代码集进行代码内容的扫描分析,以分析出软件系统代码集中的一个代码类引用了哪些其他代码类、在哪个方法中调用的以及该其他代码类又调用了哪些代码类(即间接调用了哪些代码类),进而获取该软件系统代码集中的所有代码类之间的调用关系,以形成代码引用拓扑关系资源库,然后即可根据由功能关键字确定的入口代码类在形成的代码引用拓扑关系资源库中抽取其调用链路,以最终确定与功能关键字匹配的所有的受影响的代码范围,即全面而精准的对受到影响的代码进行定位,避免有遗漏而影响软件产品的质量。
在上述任一技术方案中,优选地,所述根据所述入口代码类在所述代码引用拓扑关系资源库中抽取所述调用链路具体包括:根据所述入口代码类在所述代码引用拓扑关系资源库中查找获取所述入口代码类的直接引用代码类;遍历所述代码引用拓扑关系资源库,根据所述直接引用代码类递归查找所述入口代码类的所有间接引用代码类,以抽取所述调用链路。
在该技术方案中,首先根据入口代码类在建立的软件系统代码集的代码引用拓扑关系资源库中查找出其直接引用代码类,进一步遍历该代码引用拓扑关系资源块,以根据该直接引用代码类递归查找出该入口代码类的所有间接引用代码类,以有效地确保抽取出的入口代码类的调用链路的全面完整性。
在上述任一技术方案中,优选地,所述根据所述功能关键字确定入口代码类,以建立所述功能关键字与所述入口代码类的映射实体具体包括:根据所述功能关键字通过扫描代码配置文件、查找数据库注册表和/或分析软件系统源代码的方式确定所述入口代码类;建立所述功能关键字的关键字类型、所述功能关键字和所述入口代码类之间的所述映射实体。
在该技术方案中,通过在软件系统显示界面输入的功能关键字确定入口代码类的方式至少包括以下之一或其组合:通过扫描代码配置文件、查找数据库注册表和分析软件系统源代码的方式,所依据的原理为:功能节点和/或功能按钮(即界面元素)都会在对应的代码内容里通过配置文件或数据库注册进去,或者直接在代码内容里设置功能节点和/或功能按钮,即建立了功能与代码的映射关系;然后根据即可建立功能关键字及其关键字类型和入口代码类的映射实体,以进一步在抽取入口代码类的调用链路完成对与功能关键字相匹配的所有受影响的代码范围,以供软件开发人员根据该定位完善软件系统,以提升软件开发效率。
在上述任一技术方案中,优选地,所述功能关键字的关键字类型包括:功能节点和/或功能按钮;以及所述功能关键字包括:软件需求变更和/或软件测试问题描述的所述功能节点的标题和/或所述功能按钮的名称。
在该技术方案中,功能关键字的关键字类型包括但不限于:功能节点和功能按钮或其组合,当然还可以包括事件,而功能关键字则至少应该包括:软件需求变更描述的功能节点的标题和/或功能按钮的名称、和/或软件测试问题描述的功能节点的标题和/或功能按钮的名称,当然也可以包括其他能够用于定位到入口代码类的功能关键字,以确保方案实施的可行性。
根据本发明的第二方面,提出了一种定位软件开发中代码受影响范围的系统,包括:接收模块,用于接收输入的功能关键字;处理模块,用于根据所述功能关键字确定入口代码类,并建立所述功能关键字与所述入口代码类的映射实体;定位模块,用于根据所述入口代码类在软件系统代码集中抽取所述入口代码类的调用链路,以根据所述映射实体和所述调用链路定位与所述功能关键字匹配的代码受影响范围。
在该技术方案中,当在软件系统显示界面接收到用户(比如,软件开发人员)输入的功能关键字时,可以根据该功能关键字确定用于定位代码受影响范围的入口代码类,并建立该入口代码类与该功能关键字的映射实体,然后根据入口代码类在软件系统代码集中抽取该入口代码类的完整的调用链路,进而根据上述映射实体与调用链路确定与该功能关键字匹配的所有的受影响的代码范围,如此,通过功能关键字而无需依赖任何软件开发文档找到对应的入口代码类进而通过分析代码内容,找到代码间的所有调用关系,即可快速准确地定位所有受影响的代码范围,从而提高软件开发效率,同时有效地避免了因软件开发文档与最终代码不同步而导致代码受影响范围定位不准确的问题。
在上述技术方案中,优选地,所述定位模块具体包括:分析模块,用于通过ASM框架在所述软件系统代码集中进行扫描分析,以获取所述软件系统代码集中的所有代码类之间的调用关系;创建模块,用于根据所述软件系统代码集中的所述所有代码类之间的调用关系建立所述软件系统代码集的代码引用拓扑关系资源库;抽取模块,用于根据所述入口代码类在所述代码引用拓扑关系资源库中抽取所述调用链路。
在该技术方案中,首先通过ASM框架(一个Java(一种可以撰写跨平台应用软件的面向对象的程序设计语言)字节码操纵框架)对软件系统代码集进行代码内容的扫描分析,以分析出软件系统代码集中的一个代码类引用了哪些其他代码类、在哪个方法中调用的以及该其他代码类又调用了哪些代码类(即间接调用了哪些代码类),进而获取该软件系统代码集中的所有代码类之间的调用关系,以形成代码引用拓扑关系资源库,然后即可根据由功能关键字确定的入口代码类在形成的代码引用拓扑关系资源库中抽取其调用链路,以最终确定与功能关键字匹配的所有的受影响的代码范围,即全面而精准的对受到影响的代码进行定位,避免有遗漏而影响软件产品的质量。
在上述任一技术方案中,优选地,所述抽取模块具体包括:查找模块,用于根据所述入口代码类在所述代码引用拓扑关系资源库中查找获取所述入口代码类的直接引用代码类;遍历模块,用于遍历所述代码引用拓扑关系资源库,根据所述直接引用代码类递归查找所述入口代码类的所有间接引用代码类,以抽取所述调用链路。
在该技术方案中,首先根据入口代码类在建立的软件系统代码集的代码引用拓扑关系资源库中查找出其直接引用代码类,进一步遍历该代码引用拓扑关系资源块,以根据该直接引用代码类递归查找出该入口代码类的所有间接引用代码类,以有效地确保抽取出的入口代码类的调用链路的全面完整性。
在上述任一技术方案中,优选地,所述处理模块具体包括:确定模块,用于根据所述功能关键字通过扫描代码配置文件、查找数据库注册表和/或分析软件系统源代码的方式确定所述入口代码类;映射模块,用于建立所述功能关键字的关键字类型、所述功能关键字和所述入口代码类之间的所述映射实体。
在该技术方案中,通过在软件系统显示界面输入的功能关键字确定入口代码类的方式至少包括以下之一或其组合:通过扫描代码配置文件、查找数据库注册表和分析软件系统源代码的方式,所依据的原理为:功能节点和/或功能按钮(即界面元素)都会在对应的代码内容里通过配置文件或数据库注册进去,或者直接在代码内容里设置功能节点和/或功能按钮,即建立了功能与代码的映射关系;然后根据即可建立功能关键字及其关键字类型和入口代码类的映射实体,以进一步在抽取入口代码类的调用链路完成对与功能关键字相匹配的所有受影响的代码范围,以供软件开发人员根据该定位完善软件系统,以提升软件开发效率。
在上述任一技术方案中,优选地,所述功能关键字的关键字类型包括:功能节点和/或功能按钮;以及所述功能关键字包括:软件需求变更和/或软件测试问题描述的所述功能节点的标题和/或所述功能按钮的名称。
在该技术方案中,功能关键字的关键字类型包括但不限于:功能节点和功能按钮或其组合,当然还可以包括事件,而功能关键字则至少应该包括:软件需求变更描述的功能节点的标题和/或功能按钮的名称、和/或软件测试问题描述的功能节点的标题和/或功能按钮的名称,当然也可以包括其他能够用于定位到入口代码类的功能关键字,以确保方案实施的可行性。
通过以上技术方案,在需求发生变更或软件测试出现问题时,不依赖于软件开发文档即可快速准确地定位所有受影响的代码范围,从而提高软件开发效率。
附图说明
图1示出了根据本发明的一个实施例的定位软件开发中代码受影响范围的方法的流程示意图;
图2示出了根据本发明的一个实施例的定位软件开发中代码受影响范围的系统的框图;
图3示出了根据本发明的一个实施例的根据功能关键字查找入口代码类的原理示意图;
图4示出了根据本发明的一个实施例的创建界面元素与入口代码类映射关系的分析过程示意图;
图5示出了根据本发明的一个实施例的在代码引用拓扑关系资源库中抓取代码调用链路的分析过程示意图;
图6示出了根据本发明的一个实施例的创建代码引用拓扑关系资源库的过程示意图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。
图1示出了根据本发明的一个实施例的定位软件开发中代码受影响范围的方法的流程示意图。
如图1所示,根据本发明的一个实施例的定位软件开发中代码受影响范围的方法,包括:步骤102,接收输入的功能关键字;步骤104,根据所述功能关键字确定入口代码类,并建立所述功能关键字与所述入口代码类的映射实体;步骤106,根据所述入口代码类在软件系统代码集中抽取所述入口代码类的调用链路,以根据所述映射实体和所述调用链路定位与所述功能关键字匹配的代码受影响范围。
在该技术方案中,当在软件系统显示界面接收到用户(比如,软件开发人员)输入的功能关键字时,可以根据该功能关键字确定用于定位代码受影响范围的入口代码类,并建立该入口代码类与该功能关键字的映射实体,然后根据入口代码类在软件系统代码集中抽取该入口代码类的完整的调用链路,进而根据上述映射实体与调用链路确定与该功能关键字匹配的所有的受影响的代码范围,如此,通过功能关键字而无需依赖任何软件开发文档找到对应的入口代码类进而通过分析代码内容,找到代码间的所有调用关系,即可快速准确地定位所有受影响的代码范围,从而提高软件开发效率,同时有效地避免了因软件开发文档与最终代码不同步而导致代码受影响范围定位不准确的问题。
在上述技术方案中,优选地,所述步骤106具体包括:通过ASM框架在所述软件系统代码集中进行扫描分析,以获取所述软件系统代码集中的所有代码类之间的调用关系;根据所述软件系统代码集中的所述所有代码类之间的调用关系建立所述软件系统代码集的代码引用拓扑关系资源库;根据所述入口代码类在所述代码引用拓扑关系资源库中抽取所述调用链路。
在该技术方案中,首先通过ASM框架(一个Java(一种可以撰写跨平台应用软件的面向对象的程序设计语言)字节码操纵框架)对软件系统代码集进行代码内容的扫描分析,以分析出软件系统代码集中的一个代码类引用了哪些其他代码类、在哪个方法中调用的以及该其他代码类又调用了哪些代码类(即间接调用了哪些代码类),进而获取该软件系统代码集中的所有代码类之间的调用关系,以形成代码引用拓扑关系资源库,然后即可根据由功能关键字确定的入口代码类在形成的代码引用拓扑关系资源库中抽取其调用链路,以最终确定与功能关键字匹配的所有的受影响的代码范围,即全面而精准的对受到影响的代码进行定位,避免有遗漏而影响软件产品的质量。
在上述任一技术方案中,优选地,所述根据所述入口代码类在所述代码引用拓扑关系资源库中抽取所述调用链路具体包括:根据所述入口代码类在所述代码引用拓扑关系资源库中查找获取所述入口代码类的直接引用代码类;遍历所述代码引用拓扑关系资源库,根据所述直接引用代码类递归查找所述入口代码类的所有间接引用代码类,以抽取所述调用链路。
在该技术方案中,首先根据入口代码类在建立的软件系统代码集的代码引用拓扑关系资源库中查找出其直接引用代码类,进一步遍历该代码引用拓扑关系资源块,以根据该直接引用代码类递归查找出该入口代码类的所有间接引用代码类,以有效地确保抽取出的入口代码类的调用链路的全面完整性。
在上述任一技术方案中,优选地,所述步骤104具体包括:根据所述功能关键字通过扫描代码配置文件、查找数据库注册表和/或分析软件系统源代码的方式确定所述入口代码类;建立所述功能关键字的关键字类型、所述功能关键字和所述入口代码类之间的所述映射实体。
在该技术方案中,通过在软件系统显示界面输入的功能关键字确定入口代码类的方式至少包括以下之一或其组合:通过扫描代码配置文件、查找数据库注册表和分析软件系统源代码的方式,所依据的原理为:功能节点和/或功能按钮(即界面元素)都会在对应的代码内容里通过配置文件或数据库注册进去,或者直接在代码内容里设置功能节点和/或功能按钮,即建立了功能与代码的映射关系;然后根据即可建立功能关键字及其关键字类型和入口代码类的映射实体,以进一步在抽取入口代码类的调用链路完成对与功能关键字相匹配的所有受影响的代码范围,以供软件开发人员根据该定位完善软件系统,以提升软件开发效率。
在上述任一技术方案中,优选地,所述功能关键字的关键字类型包括:功能节点和/或功能按钮;以及所述功能关键字包括:软件需求变更和/或软件测试问题描述的所述功能节点的标题和/或所述功能按钮的名称。
在该技术方案中,功能关键字的关键字类型包括但不限于:功能节点和功能按钮或其组合,当然还可以包括事件,而功能关键字则至少应该包括:软件需求变更描述的功能节点的标题和/或功能按钮的名称、和/或软件测试问题描述的功能节点的标题和/或功能按钮的名称,当然也可以包括其他能够用于定位到入口代码类的功能关键字,以确保方案实施的可行性。
图2示出了根据本发明的一个实施例的定位软件开发中代码受影响范围的系统的框图。
如图2所示,根据本发明的一个实施例的定位软件开发中代码受影响范围的系统200,包括:接收模块202、处理模块204和定位模块206。
其中,接收模块202,用于接收输入的功能关键字;处理模块204,用于根据所述功能关键字确定入口代码类,并建立所述功能关键字与所述入口代码类的映射实体;定位模块206,用于根据所述入口代码类在软件系统代码集中抽取所述入口代码类的调用链路,以根据所述映射实体和所述调用链路定位与所述功能关键字匹配的代码受影响范围。
在该技术方案中,当在软件系统显示界面接收到用户(比如,软件开发人员)输入的功能关键字时,可以根据该功能关键字确定用于定位代码受影响范围的入口代码类,并建立该入口代码类与该功能关键字的映射实体,然后根据入口代码类在软件系统代码集中抽取该入口代码类的完整的调用链路,进而根据上述映射实体与调用链路确定与该功能关键字匹配的所有的受影响的代码范围,如此,通过功能关键字而无需依赖任何软件开发文档找到对应的入口代码类进而通过分析代码内容,找到代码间的所有调用关系,即可快速准确地定位所有受影响的代码范围,从而提高软件开发效率,同时有效地避免了因软件开发文档与最终代码不同步而导致代码受影响范围定位不准确的问题。
在上述技术方案中,优选地,所述定位模块206具体包括:分析模块2062、创建模块2064和抽取模块2066。
其中,分析模块2062,用于通过ASM框架在所述软件系统代码集中进行扫描分析,以获取所述软件系统代码集中的所有代码类之间的调用关系;创建模块2064,用于根据所述软件系统代码集中的所述所有代码类之间的调用关系建立所述软件系统代码集的代码引用拓扑关系资源库;抽取模块2066,用于根据所述入口代码类在所述代码引用拓扑关系资源库中抽取所述调用链路。
在该技术方案中,首先通过ASM框架(一个Java(一种可以撰写跨平台应用软件的面向对象的程序设计语言)字节码操纵框架)对软件系统代码集进行代码内容的扫描分析,以分析出软件系统代码集中的一个代码类引用了哪些其他代码类、在哪个方法中调用的以及该其他代码类又调用了哪些代码类(即间接调用了哪些代码类),进而获取该软件系统代码集中的所有代码类之间的调用关系,以形成代码引用拓扑关系资源库,然后即可根据由功能关键字确定的入口代码类在形成的代码引用拓扑关系资源库中抽取其调用链路,以最终确定与功能关键字匹配的所有的受影响的代码范围,即全面而精准的对受到影响的代码进行定位,避免有遗漏而影响软件产品的质量。
在上述任一技术方案中,优选地,所述抽取模块2066具体包括:查找模块20662和遍历模块20664。
其中,查找模块20662,用于根据所述入口代码类在所述代码引用拓扑关系资源库中查找获取所述入口代码类的直接引用代码类;遍历模块20664,用于遍历所述代码引用拓扑关系资源库,根据所述直接引用代码类递归查找所述入口代码类的所有间接引用代码类,以抽取所述调用链路。
在该技术方案中,首先根据入口代码类在建立的软件系统代码集的代码引用拓扑关系资源库中查找出其直接引用代码类,进一步遍历该代码引用拓扑关系资源块,以根据该直接引用代码类递归查找出该入口代码类的所有间接引用代码类,以有效地确保抽取出的入口代码类的调用链路的全面完整性。
在上述任一技术方案中,优选地,所述处理模204具体包括:确定模块2042和映射模块2044。
其中,确定模块2042,用于根据所述功能关键字通过扫描代码配置文件、查找数据库注册表和/或分析软件系统源代码的方式确定所述入口代码类;映射模块2044,用于建立所述功能关键字的关键字类型、所述功能关键字和所述入口代码类之间的所述映射实体。
在该技术方案中,通过在软件系统显示界面输入的功能关键字确定入口代码类的方式至少包括以下之一或其组合:通过扫描代码配置文件、查找数据库注册表和分析软件系统源代码的方式,所依据的原理为:功能节点和/或功能按钮(即界面元素)都会在对应的代码内容里通过配置文件或数据库注册进去,或者直接在代码内容里设置功能节点和/或功能按钮,即建立了功能与代码的映射关系;然后根据即可建立功能关键字及其关键字类型和入口代码类的映射实体,以进一步在抽取入口代码类的调用链路完成对与功能关键字相匹配的所有受影响的代码范围,以供软件开发人员根据该定位完善软件系统,以提升软件开发效率。
在上述任一技术方案中,优选地,所述功能关键字的关键字类型包括:功能节点和/或功能按钮;以及所述功能关键字包括:软件需求变更和/或软件测试问题描述的所述功能节点的标题和/或所述功能按钮的名称。
在该技术方案中,功能关键字的关键字类型包括但不限于:功能节点和功能按钮或其组合,当然还可以包括事件,而功能关键字则至少应该包括:软件需求变更描述的功能节点的标题和/或功能按钮的名称、和/或软件测试问题描述的功能节点的标题和/或功能按钮的名称,当然也可以包括其他能够用于定位到入口代码类的功能关键字,以确保方案实施的可行性。
下面结合图3至图6对本发明的技术方案进行详细说明。
图3示出了根据本发明的一个实施例的根据功能关键字查找入口代码类的原理示意图。
图4示出了根据本发明的一个实施例的创建界面元素与入口代码类映射关系的分析过程示意图。
图5示出了根据本发明的一个实施例的在代码引用拓扑关系资源库中抓取代码调用链路的分析过程示意图。
图6示出了根据本发明的一个实施例的创建代码引用拓扑关系资源库的过程示意图。
如图3所示,根据本发明的一个实施例的根据功能关键字查找入口代码类的原理:不管是功能节点还是功能按钮,都会在代码内容里设置名称,或者是通过注册的方式把名称和代码建立关系,这样通过界面上显示出来的功能关键字,就可以找到对应的入口代码,这样比从文档中的关键字找代码文件名更加准确。具体地,首先输入软件系统界面相关的功能关键字,例如功能节点的标题、功能按钮的名字等。通过分析界面元素和代码的关系,找到界面显示的功能关键字与入口代码类的映射关系(即建立映射实体),界面元素与入口代码类的映射关系的实体如下表1所示,具体可以通过以下方式找到该映射关系:如有的软件系统是把界面元素对应的代码通过配置文件或者数据库注册进去的,如功能按钮对应的处理器代码,则可以通过分析配置文件或者数据库信息,找到映射关系,或者有的软件系统是直接在代码里设置界面(显示)元素,如传统的GUI(GraphicalUserInterface,图形用户界面)系统,在代码里设置功能按钮的名字,则可以通过分析源代码找到功能关键字对应的入口代码类;然后根据入口代码类,在通过分析整个软件集合(软件系统代码)而生成的所有代码的代码引用拓扑关系资源库中,抓取入口代码类的整个代码调用链路,进而获取到所有相关的代码范围(即与功能关键字匹配的代码受影响范围),具体流程见图4。
表1界面元素与入口代码类的映射关系的实体
关键字类型 | 关键字 | 类名 |
而在代码引用拓扑关系资源库中抓取代码调用链路的分析过程,如图5所示,但是,首先应创建代码引用拓扑关系资源库,具体流程如图6所示,即通过ASM框架对代码集(软件系统代码集)进行代码(内容)扫描分析,其中,ASM框架是一个Java字节码操控框架,ASM框架从(代码)类文件中读入信息后,能够解析类中的所有元素:类名称、(调用)方法、属性以及Java字节码(指令)等,如此,即可通过ASM框架分析出类引用了哪些其他的类(直接引用代码类)、在哪个方法中调用的以及又调用了对方的哪个类(间接引用代码类),以抽取类与引用类的关系,其类引用关系实体如下表2所示,最终根据抽取的类与引用类的关系创建代码引用拓扑关系资源库。
表2类引用关系实体
类 | 引用类 | 类方法 | 引用类方法 |
进一步地,构建类(入口代码类)的调用链条,即通过递归查找整个类引用关系的拓扑结构(代码引用拓扑关系资源库),由入口代码类查找其引用的类,进而通过引用的类遍历引用类集合(即遍历整个引用关系的拓扑结构),递归查找引用类的引用类,最终构造出所有相关的代码影响范围。
如前所述,通过对所有代码内容的分析,找到代码间的所有错综复杂的调用关系,然后根据需求变更或者测试问题描述的功能关键字,找到对应的入口代码,然后通过代码间的调用拓扑关系,找到所有影响范围。这样就实现了从功能关键字到影响代码范围的精准定位,且不在依赖于软件文档,有效地避免了因软件文档与最终代码实现的不同步而导致定位结果不准确不可靠,而只有通过真正运行的代码,才能更准确分析出需求变更或者测试问题的代码影响范围,从而提高软件开发效率。
以上结合附图详细说明了本发明的技术方案,在需求发生变更或软件测试出现问题时,不依赖于软件开发文档即可快速准确地定位所有受影响的代码范围,从而提高软件开发效率。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种定位软件开发中代码受影响范围的方法,其特征在于,包括:
接收输入的功能关键字;
根据所述功能关键字确定入口代码类,并建立所述功能关键字与所述入口代码类的映射实体;
根据所述入口代码类在软件系统代码集中抽取所述入口代码类的调用链路,以根据所述映射实体和所述调用链路定位与所述功能关键字匹配的代码受影响范围。
2.根据权利要求1所述的定位软件开发中代码受影响范围的方法,其特征在于,所述根据所述入口代码类在软件系统代码集中抽取所述入口代码类的调用链路,以根据所述映射实体和所述调用链路定位与所述功能关键字匹配的代码受影响范围具体包括:
通过ASM框架在所述软件系统代码集中进行扫描分析,以获取所述软件系统代码集中的所有代码类之间的调用关系;
根据所述软件系统代码集中的所述所有代码类之间的调用关系建立所述软件系统代码集的代码引用拓扑关系资源库;
根据所述入口代码类在所述代码引用拓扑关系资源库中抽取所述调用链路。
3.根据权利要求2所述的定位软件开发中代码受影响范围的方法,其特征在于,所述根据所述入口代码类在所述代码引用拓扑关系资源库中抽取所述调用链路具体包括:
根据所述入口代码类在所述代码引用拓扑关系资源库中查找获取所述入口代码类的直接引用代码类;
遍历所述代码引用拓扑关系资源库,根据所述直接引用代码类递归查找所述入口代码类的所有间接引用代码类,以抽取所述调用链路。
4.根据权利要求1至3中任一项所述的定位软件开发中代码受影响范围的方法,其特征在于,所述根据所述功能关键字确定入口代码类,以建立所述功能关键字与所述入口代码类的映射实体具体包括:
根据所述功能关键字通过扫描代码配置文件、查找数据库注册表和/或分析软件系统源代码的方式确定所述入口代码类;
建立所述功能关键字的关键字类型、所述功能关键字和所述入口代码类之间的所述映射实体。
5.根据权利要求4所述的定位软件开发中代码受影响范围的方法,其特征在于,
所述功能关键字的关键字类型包括:功能节点和/或功能按钮;以及
所述功能关键字包括:软件需求变更和/或软件测试问题描述的所述功能节点的标题和/或所述功能按钮的名称。
6.一种定位软件开发中代码受影响范围的系统,其特征在于,包括:
接收模块,用于接收输入的功能关键字;
处理模块,用于根据所述功能关键字确定入口代码类,并建立所述功能关键字与所述入口代码类的映射实体;
定位模块,用于根据所述入口代码类在软件系统代码集中抽取所述入口代码类的调用链路,以根据所述映射实体和所述调用链路定位与所述功能关键字匹配的代码受影响范围。
7.根据权利要求6所述的定位软件开发中代码受影响范围的系统,其特征在于,所述定位模块具体包括:
分析模块,用于通过ASM框架在所述软件系统代码集中进行扫描分析,以获取所述软件系统代码集中的所有代码类之间的调用关系;
创建模块,用于根据所述软件系统代码集中的所述所有代码类之间的调用关系建立所述软件系统代码集的代码引用拓扑关系资源库;
抽取模块,用于根据所述入口代码类在所述代码引用拓扑关系资源库中抽取所述调用链路。
8.根据权利要求7所述的定位软件开发中代码受影响范围的系统,其特征在于,所述抽取模块具体包括:
查找模块,用于根据所述入口代码类在所述代码引用拓扑关系资源库中查找获取所述入口代码类的直接引用代码类;
遍历模块,用于遍历所述代码引用拓扑关系资源库,根据所述直接引用代码类递归查找所述入口代码类的所有间接引用代码类,以抽取所述调用链路。
9.根据权利要求6至8中任一项所述的定位软件开发中代码受影响范围的系统,其特征在于,所述处理模块具体包括:
确定模块,用于根据所述功能关键字通过扫描代码配置文件、查找数据库注册表和/或分析软件系统源代码的方式确定所述入口代码类;
映射模块,用于建立所述功能关键字的关键字类型、所述功能关键字和所述入口代码类之间的所述映射实体。
10.根据权利要求9所述的定位软件开发中代码受影响范围的系统,其特征在于,
所述功能关键字的关键字类型包括:功能节点和/或功能按钮;以及
所述功能关键字包括:软件需求变更和/或软件测试问题描述的所述功能节点的标题和/或所述功能按钮的名称。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510673640.3A CN105205000B (zh) | 2015-10-12 | 2015-10-16 | 定位软件开发中代码受影响范围的方法及系统 |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510657420 | 2015-10-12 | ||
CN2015106574201 | 2015-10-12 | ||
CN201510673640.3A CN105205000B (zh) | 2015-10-12 | 2015-10-16 | 定位软件开发中代码受影响范围的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105205000A true CN105205000A (zh) | 2015-12-30 |
CN105205000B CN105205000B (zh) | 2018-01-23 |
Family
ID=54952694
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510673640.3A Active CN105205000B (zh) | 2015-10-12 | 2015-10-16 | 定位软件开发中代码受影响范围的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105205000B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107229487A (zh) * | 2016-03-25 | 2017-10-03 | 阿里巴巴集团控股有限公司 | 代码处理方法及装置 |
CN107368407A (zh) * | 2016-05-11 | 2017-11-21 | 北京京东尚科信息技术有限公司 | 信息处理方法和装置 |
CN107451050A (zh) * | 2017-06-20 | 2017-12-08 | 阿里巴巴集团控股有限公司 | 函数获取方法和装置、服务器 |
CN107483221A (zh) * | 2016-06-08 | 2017-12-15 | 阿里巴巴集团控股有限公司 | 一种跨应用问题排查方法、装置及系统 |
CN107844510A (zh) * | 2016-09-20 | 2018-03-27 | 株式会社日立制作所 | 影响波及分析方法及其装置 |
CN108829575A (zh) * | 2018-04-17 | 2018-11-16 | 平安科技(深圳)有限公司 | 测试案例推荐方法、电子装置及可读存储介质 |
CN110728584A (zh) * | 2019-10-23 | 2020-01-24 | 泰康保险集团股份有限公司 | 信息处理方法及装置、可读存储介质和电子设备 |
CN112486563A (zh) * | 2020-12-02 | 2021-03-12 | 车智互联(北京)科技有限公司 | 一种代码管理方法、系统、计算设备及可读存储介质 |
CN114398102A (zh) * | 2022-01-18 | 2022-04-26 | 杭州米络星科技(集团)有限公司 | 一种应用程序包生成方法、装置、编译服务器及计算机可读存储介质 |
CN114968817A (zh) * | 2022-06-24 | 2022-08-30 | 深圳集智数字科技有限公司 | 代码改动影响范围的评估方法、装置、设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104461572A (zh) * | 2014-12-29 | 2015-03-25 | 常熟理工学院 | 一种需求变更波及效应分析方法 |
CN104750493A (zh) * | 2015-04-01 | 2015-07-01 | 贵州电网公司信息通信分公司 | 基于混合模式跨平台应用的开发方法 |
-
2015
- 2015-10-16 CN CN201510673640.3A patent/CN105205000B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104461572A (zh) * | 2014-12-29 | 2015-03-25 | 常熟理工学院 | 一种需求变更波及效应分析方法 |
CN104750493A (zh) * | 2015-04-01 | 2015-07-01 | 贵州电网公司信息通信分公司 | 基于混合模式跨平台应用的开发方法 |
Non-Patent Citations (1)
Title |
---|
刘志宏: "一种面向对象软件变更影响分析模型的研究与设计", 《中国优秀硕士论文全文数据库》 * |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107229487B (zh) * | 2016-03-25 | 2020-09-29 | 阿里巴巴集团控股有限公司 | 代码处理方法及装置 |
CN107229487A (zh) * | 2016-03-25 | 2017-10-03 | 阿里巴巴集团控股有限公司 | 代码处理方法及装置 |
CN107368407A (zh) * | 2016-05-11 | 2017-11-21 | 北京京东尚科信息技术有限公司 | 信息处理方法和装置 |
CN107483221B (zh) * | 2016-06-08 | 2021-04-27 | 阿里巴巴集团控股有限公司 | 一种跨应用问题排查方法、装置及系统 |
CN107483221A (zh) * | 2016-06-08 | 2017-12-15 | 阿里巴巴集团控股有限公司 | 一种跨应用问题排查方法、装置及系统 |
CN107844510A (zh) * | 2016-09-20 | 2018-03-27 | 株式会社日立制作所 | 影响波及分析方法及其装置 |
CN107844510B (zh) * | 2016-09-20 | 2021-04-30 | 株式会社日立制作所 | 影响波及分析方法及其装置 |
CN107451050B (zh) * | 2017-06-20 | 2020-07-03 | 阿里巴巴集团控股有限公司 | 函数获取方法和装置、服务器 |
CN107451050A (zh) * | 2017-06-20 | 2017-12-08 | 阿里巴巴集团控股有限公司 | 函数获取方法和装置、服务器 |
CN108829575A (zh) * | 2018-04-17 | 2018-11-16 | 平安科技(深圳)有限公司 | 测试案例推荐方法、电子装置及可读存储介质 |
CN108829575B (zh) * | 2018-04-17 | 2021-08-24 | 平安科技(深圳)有限公司 | 测试案例推荐方法、电子装置及可读存储介质 |
CN110728584A (zh) * | 2019-10-23 | 2020-01-24 | 泰康保险集团股份有限公司 | 信息处理方法及装置、可读存储介质和电子设备 |
CN112486563A (zh) * | 2020-12-02 | 2021-03-12 | 车智互联(北京)科技有限公司 | 一种代码管理方法、系统、计算设备及可读存储介质 |
CN114398102A (zh) * | 2022-01-18 | 2022-04-26 | 杭州米络星科技(集团)有限公司 | 一种应用程序包生成方法、装置、编译服务器及计算机可读存储介质 |
CN114398102B (zh) * | 2022-01-18 | 2023-08-08 | 杭州米络星科技(集团)有限公司 | 一种应用程序包生成方法、装置、编译服务器及计算机可读存储介质 |
CN114968817A (zh) * | 2022-06-24 | 2022-08-30 | 深圳集智数字科技有限公司 | 代码改动影响范围的评估方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN105205000B (zh) | 2018-01-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105205000A (zh) | 定位软件开发中代码受影响范围的方法及系统 | |
Huang et al. | Revisiting supervised and unsupervised models for effort-aware just-in-time defect prediction | |
CN107341220B (zh) | 一种多源数据融合方法和装置 | |
US20210366055A1 (en) | Systems and methods for generating accurate transaction data and manipulation | |
CN104572072B (zh) | 一种对基于mvc模式的程序的语言转换方法与设备 | |
CN105975604A (zh) | 一种分布迭代式数据处理程序异常检测与诊断方法 | |
US8904352B2 (en) | Systems and methods for processing source code during debugging operations | |
US10572566B2 (en) | Image quality independent searching of screenshots of web content | |
Villanes et al. | What are software engineers asking about android testing on stack overflow? | |
CN105824756A (zh) | 一种基于代码依赖关系的过时需求自动检测方法及系统 | |
EP3173965A1 (en) | System and method for enablement of data masking for web documents | |
US10628140B2 (en) | Program code generation apparatus | |
CN104572946A (zh) | 黄页数据处理方法及装置 | |
CN114817968A (zh) | 无特征数据的路径追溯方法、装置、设备及存储介质 | |
CN112825068B (zh) | 数据血缘生成方法及装置 | |
CN105159885A (zh) | 一种兴趣点名称的识别方法和装置 | |
US20140244237A1 (en) | Global product-survey | |
CN105138708A (zh) | 一种兴趣点名称的识别方法和装置 | |
JP2019101889A (ja) | テスト実行装置及びプログラム | |
US11443106B2 (en) | Intelligent normalization and de-normalization of tables for multiple processing scenarios | |
CN105279249A (zh) | 一种网站中兴趣点数据的置信度的判定方法和装置 | |
JP2016057715A (ja) | 図形式プログラム解析装置 | |
JP5826148B2 (ja) | 図面管理サーバ及びこれを用いた図面管理システム | |
CN110083817B (zh) | 一种命名排歧方法、装置、计算机可读存储介质 | |
Cui et al. | One-to-One or One-to-Many? Suggesting Extract Class Refactoring Opportunities with Intra-class Dependency Hypergraph Neural Network |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |