定位软件开发中代码受影响范围的方法及系统的制作方法

文档序号:9453001阅读:413来源:国知局
定位软件开发中代码受影响范围的方法及系统的制作方法
【技术领域】
[0001] 本发明涉及计算机技术领域,具体而言,涉及一种定位软件开发中代码受影响范 围的方法和一种定位软件开发中代码受影响范围的系统。
【背景技术】
[0002] 目前,在软件开发过程中,开发团队都是由各种不同职位的人员组成,由不同角色 协作完成开发任务。一般来说,有需求、设计、开发和测试,其中,需求和设计人员需要制定 需求文档和设计文档,开发人员编写代码实现需求,测试人员进行功能测试,最终完成一个 系统的开发任务。当需求发生变更或者在测试中出现问题的时候,开发人员需要能够快 速的定位此需求变更或者问题所影响的代码范围,或者是准确定位导致问题出现的代码位 置。
[0003] 而现有的解决上述问题的方案为通建立文档间的关联关系以及文档和代码之间 的关联关系,来进行定位。但是,一般实现的只是通过分析文档中的关键字和代码文件的文 件名进行匹配,如果一致则建立关联关系,而该方案存在高度依赖于代码文件的文件名是 否规范的缺陷,即:代码文件的划分是否很细粒度,一旦出现代码文件的文件名不规范或者 代码进行重构等情况,则将无法找到关联关系,进而无法找到受影响的代码范围。而且如果 代码文件划分的比较粗,比如只是按功能节点划分,则只能找到对应的节点,而不能更准确 的定位到按钮动作;还有,一般代码文件的文件名只是有意义的单词或者是单词缩写,并不 能完全做到跟关键字完全匹配。综上,该方案只能定位到需求或测试问题关键字对应的直 接代码文件,并不能找到所有间接关联的相关代码。
[0004] 有鉴于此,本发明通过分析代码内容,找到代码间的所有调用关系。然后根据需求 或者问题描述的功能关键字,找到对应的入口代码,然后通过代码间的调用拓扑关系,找到 所有影响范围。功能关键字找到对应入口代码的原理是,不管是功能节点还是功能按钮,都 是在代码里会设置名称,或者是通过注册的方式把名称和代码建立关系,这样通过界面上 显示出来的功能关键字,就可以找到对应的入口代码,这样比从文档中的关键字找代码文 件名更加准确。
[0005] 基于以上场景,一个能够快速,准确定位到需求影响范围或者问题对应的代码范 围的工具,将会极大的提高开发效率,提高软件产品质量。
[0006] 因此,如何在需求发生变更或软件测试出现问题时,不依赖于软件开发文档即可 快速准确地定位所有受影响的代码范围,从而提高软件开发效率成为亟待解决的技术问 题。

【发明内容】

[0007] 本发明正是基于上述技术问题,在需求发生变更或软件测试出现问题时,不依赖 于软件开发文档即可快速准确地定位所有受影响的代码范围,从而提高软件开发效率。
[0008] 有鉴于此,本发明的第一方面,提出了一种定位软件开发中代码受影响范围的方 法,包括:接收输入的功能关键字;根据所述功能关键字确定入口代码类,并建立所述功能 关键字与所述入口代码类的映射实体;根据所述入口代码类在软件系统代码集中抽取所述 入口代码类的调用链路,以根据所述映射实体和所述调用链路定位与所述功能关键字匹配 的代码受影响范围。
[0009] 在该技术方案中,当在软件系统显示界面接收到用户(比如,软件开发人员)输入 的功能关键字时,可以根据该功能关键字确定用于定位代码受影响范围的入口代码类,并 建立该入口代码类与该功能关键字的映射实体,然后根据入口代码类在软件系统代码集中 抽取该入口代码类的完整的调用链路,进而根据上述映射实体与调用链路确定与该功能关 键字匹配的所有的受影响的代码范围,如此,通过功能关键字而无需依赖任何软件开发文 档找到对应的入口代码类进而通过分析代码内容,找到代码间的所有调用关系,即可快速 准确地定位所有受影响的代码范围,从而提高软件开发效率,同时有效地避免了因软件开 发文档与最终代码不同步而导致代码受影响范围定位不准确的问题。
[0010] 在上述技术方案中,优选地,所述根据所述入口代码类在软件系统代码集中抽取 所述入口代码类的调用链路,以根据所述映射实体和所述调用链路定位与所述功能关键字 匹配的代码受影响范围具体包括:通过ASM框架在所述软件系统代码集中进行扫描分析, 以获取所述软件系统代码集中的所有代码类之间的调用关系;根据所述软件系统代码集中 的所述所有代码类之间的调用关系建立所述软件系统代码集的代码引用拓扑关系资源库; 根据所述入口代码类在所述代码引用拓扑关系资源库中抽取所述调用链路。
[0011] 在该技术方案中,首先通过ASM框架(一个Java(-种可以撰写跨平台应用软件 的面向对象的程序设计语言)字节码操纵框架)对软件系统代码集进行代码内容的扫描分 析,以分析出软件系统代码集中的一个代码类引用了哪些其他代码类、在哪个方法中调用 的以及该其他代码类又调用了哪些代码类(即间接调用了哪些代码类),进而获取该软件 系统代码集中的所有代码类之间的调用关系,以形成代码引用拓扑关系资源库,然后即可 根据由功能关键字确定的入口代码类在形成的代码引用拓扑关系资源库中抽取其调用链 路,以最终确定与功能关键字匹配的所有的受影响的代码范围,即全面而精准的对受到影 响的代码进行定位,避免有遗漏而影响软件产品的质量。
[0012] 在上述任一技术方案中,优选地,所述根据所述入口代码类在所述代码引用拓扑 关系资源库中抽取所述调用链路具体包括:根据所述入口代码类在所述代码引用拓扑关系 资源库中查找获取所述入口代码类的直接引用代码类;遍历所述代码引用拓扑关系资源 库,根据所述直接引用代码类递归查找所述入口代码类的所有间接引用代码类,以抽取所 述调用链路。
[0013] 在该技术方案中,首先根据入口代码类在建立的软件系统代码集的代码引用拓扑 关系资源库中查找出其直接引用代码类,进一步遍历该代码引用拓扑关系资源块,以根据 该直接引用代码类递归查找出该入口代码类的所有间接引用代码类,以有效地确保抽取出 的入口代码类的调用链路的全面完整性。
[0014] 在上述任一技术方案中,优选地,所述根据所述功能关键字确定入口代码类,以建 立所述功能关键字与所述入口代码类的映射实体具体包括:根据所述功能关键字通过扫 描代码配置文件、查找数据库注册表和/或分析软件系统源代码的方式确定所述入口代码 类;建立所述功能关键字的关键字类型、所述功能关键字和所述入口代码类之间的所述映 射实体。
[0015] 在该技术方案中,通过在软件系统显示界面输入的功能关键字确定入口代码类的 方式至少包括以下之一或其组合:通过扫描代码配置文件、查找数据库注册表和分析软件 系统源代码的方式,所依据的原理为:功能节点和/或功能按钮(即界面元素)都会在对应 的代码内容里通过配置文件或数据库注册进去,或者直接在代码内容里设置功能节点和/ 或功能按钮,即建立了功能与代码的映射关系;然后根据即可建立功能关键字及其关键字 类型和入口代码类的映射实体,以进一步在抽取入口代码类的调用链路完成对与功能关键 字相匹配的所有受影响的代码范围,以供软件开发人员根据该定位完善软件系统,以提升 软件开发效率。
[0016] 在上述任一技术方案中,优选地,所述功能关键字的关键字类型包括:功能节点和 /或功能按钮;以及所述功能关键字包括:软件需求变更和/或软件测试问题描述的所述功 能节点的标题和/或所述功能按钮的名称。
[0017] 在该技术方案中,功能关键字的关键字类型包括但不限于:功能节点和功能按钮 或其组合,当然还可以包括事件,而功能关键字则至少应该包括:软件需求变更描述的功能 节点的标题和/或功能按钮的名称、和/或软件测试问题描述的功能节点的标题和/或功 能按钮的名称,当然也可以包括其他能够用于定位到入口代码类的功能关键字,以确保方 案实施的可行性。
[0018] 根据本发明的第二方面,提出了一种定位软件开发中代码受影响范围的系统,包 括:接收模块,用于接收输入的功能关键字;处理模块,用于根据所述功能关键字确定入口 代码类,并建立所述功能关键字与所述入口代码类的映射实体;定位模块,用于根据所述入 口代码类在软件系统代码集中抽取所述入口代码类的调用链路,以根据所述映射实体和所 述调用链路定位与所述功能关键字匹配的代码受影响范围。
[0019] 在该技术方案中,当在软件系统显示界面接收到用户(比如,软件开发人员)输入 的功能关键字时,可以根据该功能关键字确定用于定位代码受影响范围的入口代码类,并 建立该入口代码类与该功能关键字的映射实体,然后根据入口代码类在软件
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1