[发明专利]一种模块依赖关系的分析方法及系统有效

专利信息
申请号: 201810725653.4 申请日: 2018-07-04
公开(公告)号: CN109086050B 公开(公告)日: 2021-11-30
发明(设计)人: 曾颜 申请(专利权)人: 烽火通信科技股份有限公司
主分类号: G06F8/52 分类号: G06F8/52;G06F8/20
代理公司: 武汉智权专利代理事务所(特殊普通合伙) 42225 代理人: 许小静
地址: 430000 湖北省武*** 国省代码: 湖北;42
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 模块 依赖 关系 分析 方法 系统
【权利要求书】:

1.一种模块依赖关系的分析方法,其特征在于,其包括:

获取待分析软件中所有的非系统类模块以构建一个模块组;

得到模块组中所有模块的两两之间的依赖关系;

建立表示模块组中所有模块的两两之间的依赖关系的依赖关系矩阵,根据依赖关系矩阵判断待分析软件中非系统类模块之间是否存在循环依赖关系;

在所述模块组中的模块之间进行函数名直接调用分析,得到所有模块的两两之间的依赖关系;

所述根据依赖关系矩阵判断待分析软件中非系统类模块之间是否存在循环依赖关系,具体包括以下步骤:

将所述模块组中第i个模块Mi和第j个模块Mj两两之间的依赖关系记为Rij=R(Mi,Mj)和Rji=R(Mj,Mi),Rij=0表示Mi不依赖Mj,Rij=1则表示Mi依赖Mj;Rji=0表示Mj不依赖Mi,Rji=1则表示Mj依赖Mi,1≤i≤n,1≤j≤n,n为所述模块组的模块总数;

所述依赖关系矩阵R为n×n矩阵,Rij和Rji均为所述依赖关系矩阵R的元素;

在所述依赖关系矩阵R中,当Rij=Rji=1时;或者,当R(Mi,Mk1)=1,R(Mk1,Mk2)=1,…,R(Mkp,Mj)=1和R(Mj,Mi)=1时,1≤i,k1,…,kp,j≤n,则表示所述非系统类模块之间存在循环依赖关系。

2.如权利要求1所述的模块依赖关系的分析方法,其特征在于:

当所述模块组包括静态库文件类型的非系统类模块时,将每个静态库文件类型的非系统类模块转换为动态库文件类型的模块,通过ldd函数得到所有模块的两两之间的依赖关系;或者,

当所述模块组包括静态库文件类型的非系统类模块和动态库文件类型的非系统类模块时,在静态库文件类型的模块之间以及静态库文件类型的模块与动态库文件类型的模块之间,通过函数名直接调用分析得到模块的两两之间的依赖关系,以及通过ldd函数得到动态库文件类型的模块的两两之间的依赖关系。

3.如权利要求2所述的模块依赖关系的分析方法,其特征在于,在所述模块组中模块Mi和Mj之间进行函数名直接调用分析的方法为:当模块Mi的一个外部符号与模块Mj的一个全局符号相同时,判定模块Mi对模块Mj存在函数引用关系,即Mi依赖Mj,其中,全局符号为定义在模块内部的函数名,外部符号为定义在模块外部并且在该模块内引用的函数名。

4.如权利要求2所述的模块依赖关系的分析方法,其特征在于:当所述静态库文件类型的非系统类模块为.a文件时,使用编译工具将.a文件展开为.obj文件,再将.obj文件编译为.so文件。

5.如权利要求1所述的模块依赖关系的分析方法,其特征在于:根据所述依赖关系矩阵R,生成有向图G=VG,EG,其中,有向图的每个节点VG表示所述模块组的一个模块,每条边EG表示该条边的两端节点之间的依赖关系,EG={Mi→Mj,Mi和Mj∈VG,i≠j},Mi→Mj表示模块Mi依赖Mj

根据所述有向图G得到所述非系统类模块之间的依赖层次关系。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于烽火通信科技股份有限公司,未经烽火通信科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201810725653.4/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top