[发明专利]一种基于软件运行网络的关键包识别方法有效
申请号: | 201910033604.9 | 申请日: | 2019-01-14 |
公开(公告)号: | CN109976807B | 公开(公告)日: | 2022-11-25 |
发明(设计)人: | 潘伟丰;蒋海波;王家乐;柴春来;姜波;朱云芳 | 申请(专利权)人: | 深圳游禧科技有限公司 |
主分类号: | G06F8/75 | 分类号: | G06F8/75 |
代理公司: | 北京高航知识产权代理有限公司 11530 | 代理人: | 王庞 |
地址: | 518000 广东省深圳市南山区招商*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 软件 运行 网络 关键 识别 方法 | ||
1.一种基于软件运行网络的关键包识别方法,其特征在于,包括以下步骤:
(1)将Java语言编写的软件在运行时的方法调用过程抽象为方法调用网FCN=(N,D);其中,N为软件中的方法节点的集合;D={(fi,fj)}(fi∈N,fj∈N)是无向边的集合,表示方法间的调用关系;每条边将被赋予一个非负整数,作为方法调用关系的强度值;边上的强度值指的是方法之间的调用次数;调用次数以及方法和方法间的调用关系是根据该Java软件在Java虚拟机上实际运行过程中获取的,是一种动态分析,而非基于源代码的静态分析;
(2)基于步骤(1)完成的FCN构建类依赖网CDN=(Nc,Dc);其中,Nc为FCN中方法所在的类节点的集合;Dc={(ci,cj)},其中ci∈Nc,cj∈Nc,是一个无向边的集合,表示类之间的依赖关系;CDN中的每条边将被赋予一个非负整数,作为类之间依赖关系的强度值;
(3)基于步骤(2)完成的CDN构建包依赖网PDN=(Np,Dp);其中,Np为CDN中类所在的包节点的集合;Dp={(pi,pj)},其中pi∈Np,pj∈Np,是一个无向边的集合,表示包之间的依赖关系;PDN中的每条边将被赋予一个非负整数,作为包之间依赖关系的强度值;
(4)基于步骤(3)完成的PDN计算包节点i的g核数g(i),作为节点相应包的重要性值;
(5)基于步骤(4)所得的包节点的g核数对包节点进行降序排列,将排名靠前的包作为所识别的关键包。
2.根据权利要求1所述一种基于软件运行网络的关键包识别方法,其特征在于,所述的步骤(2)中的类是根据FCN中的方法获得的;FCN中方法被定义的类成为CDN中的类;CDN中的类是该Java软件在Java虚拟机上实际运行过程中使用的类,是一种动态分析,而非基于源代码的静态分析;同时,CDN中的类是Java中的类、内部类、抽象类和接口的统称。
3.根据权利要求1所述一种基于软件运行网络的关键包识别方法,其特征在于,所述的步骤(2)中类之间的依赖关系是根据FCN中方法间的调用关系得到的,即类包含的方法间若存在调用关系,则相应的类之间存在依赖关系;CDN中类之间的依赖关系是该Java软件在Java虚拟机上实际运行过程中发生的依赖关系,是一种动态分析,而非基于源代码的静态分析;类之间的依赖关系的强度值是根据FCN中方法间的调用关系的强度值得到的,即类包含的方法间的强度值之和是相应的类之间依赖关系的强度值;CDN中类之间依赖关系的强度值是该Java软件在Java虚拟机上实际运行过程中发生的依赖关系的强度值,是一种动态分析,而非基于源代码的静态分析。
4.根据权利要求1所述一种基于软件运行网络的关键包识别方法,其特征在于,所述的步骤(3)中的包是根据CDN中的类获得的;CDN中类被定义的包成为PDN中的包;PDN中的包是该Java软件在Java虚拟机上实际运行过程中使用的包,是一种动态分析,而非基于源代码的静态分析。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳游禧科技有限公司,未经深圳游禧科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910033604.9/1.html,转载请声明来源钻瓜专利网。