【技术实现步骤摘要】
一种获取程序中模块间函数接口的方法和系统
本专利技术涉及大型软件的模块接口技术,尤其涉及一种获取程序中模块间函数接口的方法和系统。
技术介绍
随着计算机技术和通信技术的不断发展,用户对软件系统的性能要求也越来越高,软件系统也变得越来越大,进而在现有技术中,产生了很多大型软件系统。在大型软件系统中,程序里包含了若干逻辑模块之间的相互作用,而这些逻辑模块之间的接口,会直接影响模块的程序架构中的模块耦合关系,对软件系统的综合性能影响很大。逻辑模块之间的接口除了在系统架构设计时考虑以外,还需要在后续的详细设计、编码实现中严格遵循接口说明书。因此,需要一种有效的手段,可以检查已实现的软件系统中,模块的实际接口情况,以便与接口设计进行对比,在发现接口差异可以进行及时修改。同时,在对旧的软件系统架构改造中,还需要对现有程序中的模块接口关系进行提取,然后在此基础上进行模块解耦,设计新的模块接口。而这也需要获取模块接口。程序模块之间的接口,包括函数接口与数据接口。对于函数接口,程序里的函数调用关系有两类,分别是内部函数调用IFC(InternalFunctionCalling)、外部函数调用EFC(ExternalFunctionCalling)。其中IFC的函数调用点和被调用函数都处于程序范围内,而EFC的被调用函数处于程序范围以外,通常为调用动态链接库内的函数。IFC根据调用形式的不同,还可以分为内部函数静态调用IFSC(InternalFunctionStaticCalling)和内部函数动态调用IFDC(InternalFunctionDynamicCalling) ...
【技术保护点】
一种获取程序中模块间函数接口的方法,用于获取可执行程序中模块间函数接口,其特征在于,所述方法包括:通过静态扫描所述可执行程序,生成内部函数静态调用IFSC关系文件、外部函数调用EFC关系文件,及内部函数动态调用IFDC出口清单文件;在运行所述可执行程序时,基于所述IFDC出口清单文件,生成IFDC记录文件;基于所述EFC关系文件、所述IFSC关系文件及IFDC记录文件,获得所述可执行程序中模块间的函数调用关系表。
【技术特征摘要】
1.一种获取程序中模块间函数接口的方法,用于获取可执行程序中模块间函数接口,其特征在于,所述方法包括:通过静态扫描所述可执行程序,生成内部函数静态调用IFSC关系文件、外部函数调用EFC关系文件,及内部函数动态调用IFDC出口清单文件;在运行所述可执行程序时,基于所述IFDC出口清单文件,生成IFDC记录文件;基于所述EFC关系文件、所述IFSC关系文件及IFDC记录文件,获得所述可执行程序中模块间的函数调用关系表;其中,在所述基于所述EFC关系文件、所述IFSC关系文件及IFDC记录文件,获得所述可执行程序中模块间的函数调用关系表之后,还包括:基于实际函数调用关系表和模块内部函数清单,获得所述可执行程序中模块间的实际函数接口关系;基于所述可执行程序的标准模块函数接口配置文件,获得所述可执行程序中模块间的标准函数接口关系;比较所述可执行程序中模块间的实际函数接口关系及标准函数接口关系,获得所述可执行程序中模块间的函数接口变更信息文件。2.如权利要求1所述的方法,其特征在于,所述通过静态扫描所述可执行程序,生成内部函数静态调用IFSC关系文件、外部函数调用EFC关系文件,及内部函数动态调用IFDC出口清单文件,具体包括:提取所述可执行程序中每个函数的用来表征每个函数特征的属性信息;分析所述可执行程序的重定位段,生成所述外部函数调用EFC关系文件;扫描所述可执行程序的每个函数的函数代码段,获得每个函数的函数调用指令;在所述函数调用指令中指定的函数调用方式为寄存器形式时,生成所述IFDC出口清单文件;在所述函数调用指令中指定的函数调用方式为操作数形式时,生成所述IFSC关系文件。3.如权利要求1所述的方法,其特征在于,所述在运行所述可执行程序时,基于所述IFDC出口清单文件,生成IFDC记录文件,具体包括:所述可执行程序运行时,执行所述可执行程序初始化段内的提取动态调用关系模块的初始化代码,以获得所述IFDC出口清单文件;执行每个函数头部内的动态调用关系模块的提取代码,以获得每个函数的上级函数调用出口地址;当所述IFDC出口清单文件中存在所述调用出口地址时且所述IFDC出口清单文件对应的目标函数列表中包括所述调用出口地址对应函数时,则记录所述调用出口地址对应函数的IFDC信息;当所述IFDC出口清单文件中存在所述调用出口地址时且所述IFDC出口清单文件对应的目标函数列表中不包括所述调用出口地址对应函数时,则在为所述调用出口地址对应函数建立新的IFDC关系之后,记录所述调用出口地址对应函数的IFDC信息;当所述可执行程序运行结束时,提取出每个函数的IFDC信息,在程序目录下生成所述IFDC记录文件。4.一种获取程序中模块间函数接口的系统,用于获取可执行程序中模块间函数接口,其特征在于,所述系统包括:静态扫描单元,用于通过静态扫描所述可执行程序,生成内部函数静态调用...
【专利技术属性】
技术研发人员:蒋嵩,
申请(专利权)人:中兴通讯股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。