【技术实现步骤摘要】
一种模块依赖关系的分析方法及系统
本专利技术涉及通信
,具体是涉及一种模块依赖关系的分析方法及系统。
技术介绍
模块化设计是软件设计的一个重要方法,模块设计应遵循高内聚低耦合的原则。内聚是模块内部各成分之间关联程度的一种度量,耦合是模块之间相互连接的一种度量。模块间的耦合关系是指模块之间的依赖关系,包括控制关系、引用关系和数据传递关系等。模块依赖关系的控制在软件设计阶段进行,而模块依赖关系的分析则是针对软件开发所交付产物的后评估和度量,当设计不符合高内聚低耦合的原则时,或者设计未覆盖到每一项执行时,或者开发过程管控不力时,就可能出现模块之间的依赖关系不符合预期,甚至出现循环依赖关系,更不符合高内聚低耦合的原则。模块的循环依赖关系可简单描述如下:比如模块A依赖模块B,同时模块B又依赖模块A。再比如模块A依赖模块B,模块B依赖模块C,而模块C又依赖模块A,从而构成一个环形的循环依赖关系。上述环形的循环依赖关系仅为示例,可以存在其它形式的或者更复杂的循环依赖关系。当模块是可以形成最终可执行文件的二进制目标文件时,例如Linux操作系统下的静态库.a文件以及动态库. ...
【技术保护点】
1.一种模块依赖关系的分析方法,其特征在于,其包括:获取待分析软件中所有的非系统类模块以构建一个模块组;得到模块组中所有模块的两两之间的依赖关系;建立表示模块组中所有模块的两两之间的依赖关系的依赖关系矩阵,根据依赖关系矩阵判断待分析软件中非系统类模块之间是否存在循环依赖关系。
【技术特征摘要】
1.一种模块依赖关系的分析方法,其特征在于,其包括:获取待分析软件中所有的非系统类模块以构建一个模块组;得到模块组中所有模块的两两之间的依赖关系;建立表示模块组中所有模块的两两之间的依赖关系的依赖关系矩阵,根据依赖关系矩阵判断待分析软件中非系统类模块之间是否存在循环依赖关系。2.如权利要求1所述的模块依赖关系的分析方法,其特征在于:在所述模块组中的模块之间进行函数名直接调用分析,得到所有模块的两两之间的依赖关系;或者,当所述模块组包括静态库文件类型的非系统类模块时,将每个静态库文件类型的非系统类模块转换为动态库文件类型的模块,通过ldd函数得到所有模块的两两之间的依赖关系;或者,当所述模块组包括静态库文件类型的非系统类模块和动态库文件类型的非系统类模块时,在静态库文件类型的模块之间以及静态库文件类型的模块与动态库文件类型的模块之间,通过函数名直接调用分析得到模块的两两之间的依赖关系,以及通过ldd函数得到动态库文件类型的模块的两两之间的依赖关系。3.如权利要求2所述的模块依赖关系的分析方法,其特征在于,在所述模块组中模块Mi和Mj之间进行函数名直接调用分析的方法为:当模块Mi的一个外部符号与模块Mj的一个全局符号相同时,判定模块Mi对模块Mj存在函数引用关系,即Mi依赖Mj,其中,全局符号为定义在模块内部的函数名,外部符号为定义在模块外部并且在该模块内引用的函数名。4.如权利要求2所述的模块依赖关系的分析方法,其特征在于:当所述静态库文件类型的非系统类模块为.a文件时,使用编译工具将.a文件展开为.obj文件,再将.obj文件编译为.so文件。5.如权利要求1所述的模块依赖关系的分析方法,其特征在于:将所述模块组中第i个模块Mi和第j个模块Mj两两之间的依赖关系记为Rij=R(Mi,Mj)和Rji=R(Mj,Mi),Rij=0表示Mi不依赖Mj,Rij=1则表示Mi依赖Mj;R...
【专利技术属性】
技术研发人员:曾颜,
申请(专利权)人:烽火通信科技股份有限公司,
类型:发明
国别省市:湖北,42
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。