[发明专利]一种模块依赖关系的分析方法及系统有效
申请号: | 201810725653.4 | 申请日: | 2018-07-04 |
公开(公告)号: | CN109086050B | 公开(公告)日: | 2021-11-30 |
发明(设计)人: | 曾颜 | 申请(专利权)人: | 烽火通信科技股份有限公司 |
主分类号: | G06F8/52 | 分类号: | G06F8/52;G06F8/20 |
代理公司: | 武汉智权专利代理事务所(特殊普通合伙) 42225 | 代理人: | 许小静 |
地址: | 430000 湖北省武*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 模块 依赖 关系 分析 方法 系统 | ||
本发明公开了一种模块依赖关系的分析方法及系统,涉及通信技术领域。模块依赖关系的分析方法包括:获取待分析软件中所有的非系统类模块以构建一个模块组;得到模块组中所有模块的两两之间的依赖关系;建立表示模块组中所有模块的两两之间的依赖关系的依赖关系矩阵,根据依赖关系矩阵判断待分析软件中非系统类模块之间是否存在循环依赖关系。本发明能够判定待分析软件中作为模块的二进制目标文件之间是否存在循环依赖关系。
技术领域
本发明涉及通信技术领域,具体是涉及一种模块依赖关系的分析方法及系统。
背景技术
模块化设计是软件设计的一个重要方法,模块设计应遵循高内聚低耦合的原则。内聚是模块内部各成分之间关联程度的一种度量,耦合是模块之间相互连接的一种度量。模块间的耦合关系是指模块之间的依赖关系,包括控制关系、引用关系和数据传递关系等。
模块依赖关系的控制在软件设计阶段进行,而模块依赖关系的分析则是针对软件开发所交付产物的后评估和度量,当设计不符合高内聚低耦合的原则时,或者设计未覆盖到每一项执行时,或者开发过程管控不力时,就可能出现模块之间的依赖关系不符合预期,甚至出现循环依赖关系,更不符合高内聚低耦合的原则。模块的循环依赖关系可简单描述如下:比如模块A依赖模块B,同时模块B又依赖模块A。再比如模块A依赖模块B,模块B依赖模块C,而模块C又依赖模块A,从而构成一个环形的循环依赖关系。上述环形的循环依赖关系仅为示例,可以存在其它形式的或者更复杂的循环依赖关系。
当模块是可以形成最终可执行文件的二进制目标文件时,例如Linux操作系统下的静态库.a文件以及动态库.so文件等,模块之间的依赖关系主要指模块之间的函数引用关系。以C语言为例,函数引用方式有两种:(1)通过函数名直接调用;(2)通过函数指针间接调用。从软件设计的角度来说,当模块A通过函数名直接调用模块B时,模块A依赖模块B;当模块A通过函数指针间接调用模块B时,模块A不依赖模块B,即模块A和模块B之间并未耦合。因此在分析模块之间的依赖关系时,仅需要分析模块之间通过函数名的直接调用关系。
目前可以通过目标码来分析模块之间的依赖关系,例如利用Linux系统中的ldd命令分析二进制目标文件之间的依赖关系。但是该命令只能针对动态库,不能针对静态库,并且仅能分析二进制目标文件之间是否存在依赖关系,而不能分析这些二进制目标文件之间是否存在循环依赖关系等。
发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种模块依赖关系的分析方法及系统,判定待分析软件中作为模块的二进制目标文件之间是否存在循环依赖关系。
本发明提供一种模块依赖关系的分析方法,其包括:
获取待分析软件中所有的非系统类模块以构建一个模块组;
得到模块组中所有模块的两两之间的依赖关系;
建立表示模块组中所有模块的两两之间的依赖关系的依赖关系矩阵,根据依赖关系矩阵判断待分析软件中非系统类模块之间是否存在循环依赖关系。
在上述技术方案的基础上,在所述模块组中的模块之间进行函数名直接调用分析,得到所有模块的两两之间的依赖关系;或者,
当所述模块组包括静态库文件类型的非系统类模块时,将每个静态库文件类型的非系统类模块转换为动态库文件类型的模块,通过ldd函数得到所有模块的两两之间的依赖关系;或者,
当所述模块组包括静态库文件类型的非系统类模块和动态库文件类型的非系统类模块时,在静态库文件类型的模块之间以及静态库文件类型的模块与动态库文件类型的模块之间,通过函数名直接调用分析得到模块的两两之间的依赖关系,以及通过ldd函数得到动态库文件类型的模块的两两之间的依赖关系。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于烽火通信科技股份有限公司,未经烽火通信科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810725653.4/2.html,转载请声明来源钻瓜专利网。
- 上一篇:遍历用户在线状态数据的方法
- 下一篇:应用组件部署方法、装置及计算机存储介质