Nowadays, one of the IT challenges faced by many enterprises is the maintenance of their legacy system and migration of those systems to modern and flexible platform. In this paper, we study the network properties of ...Nowadays, one of the IT challenges faced by many enterprises is the maintenance of their legacy system and migration of those systems to modern and flexible platform. In this paper, we study the network properties of software call graphs, and utilize the network theories to understand the business logic of legacy system. The call graphs turn out approximately scale-free and small world network properties. This finding provides new insight to understand the business logic of legacy system: the methods in a program can be naturedly partitioned into the business methods group and supportive methods group. Moreover, the result is also very helpful in reusing valuable functionality and identifying what services should be to expose in the migration from legacy to modern SOA context.展开更多
为了分析操作系统内核等大型软件的模块间函数调用关系,针对传统的函数调用关系生成工具不适用于模块间调用关系分析以及其依赖编译器具体特定版本等不足,提出一种基于寄存器传送语言(Register Transfer Language,RTL)的函数调用图生成...为了分析操作系统内核等大型软件的模块间函数调用关系,针对传统的函数调用关系生成工具不适用于模块间调用关系分析以及其依赖编译器具体特定版本等不足,提出一种基于寄存器传送语言(Register Transfer Language,RTL)的函数调用图生成方法,并根据该方法实现了一个生成模块间函数调用图的工具CG-RTL(call graph based on RTL,简称为CG-RTL).CGRTL首先从编译过程所生成的中间结果中提取出函数定义和调用关系信息,然后利用开源图形可视化工具Graphviz将其绘制出来,并最终将该功能集成到在线源代码浏览工具LXR中去.实验结果表明:通过该方法获得的函数调用关系与目标代码较为一致,而且可以分析用户指定模块间的函数调用关系,而且该方法同时可以生成相对应的函数调用关系列表,更加细致的描述函数调用关系.展开更多
针对目前大多数的函数调用关系分析工具无法分析函数指针、系统启动过程以及可加载模块的函数调用关系的现象,在CG-RTL的基础上提出了基于内核跟踪的动态函数调用图生成方法,并开发了动态函数调用图生成工具DCG-RTL(dynamic call graph ...针对目前大多数的函数调用关系分析工具无法分析函数指针、系统启动过程以及可加载模块的函数调用关系的现象,在CG-RTL的基础上提出了基于内核跟踪的动态函数调用图生成方法,并开发了动态函数调用图生成工具DCG-RTL(dynamic call graph based on RTL)。DCG-RTL在S2E模拟器中运行待跟踪内核,通过指令捕获插件和函数解析插件记录运行时的函数调用和返回信息,分析跟踪信息得到动态和静态函数调用关系,利用CG-RTL工具在浏览器中展示。实验结果表明,DCG-RTL能全面和准确地跟踪包括函数指针引用和可加载内核模块在内的函数调用关系。展开更多
针对基于文件的内核函数调用图工具存在的文件系统可扩展性和适用性等方面的不足,设计并实现了基于数据库的DBCG-RTL工具(Data Based Call Graph Tool Based on RTL,DBCG-RTL),该工具可用于分析大型软件模块间的函数调用关系.DBCG-RTL...针对基于文件的内核函数调用图工具存在的文件系统可扩展性和适用性等方面的不足,设计并实现了基于数据库的DBCG-RTL工具(Data Based Call Graph Tool Based on RTL,DBCG-RTL),该工具可用于分析大型软件模块间的函数调用关系.DBCG-RTL通过查找编译过程中生成的符号表而获得函数入口地址、返回行号等相关函数信息,绘制相应的关系图并标识出调用次数等信息,建立了相关的虚目录;将需要分析的对象通过分析工具跟踪到的数据转换成标准化格式并存入数据库.论文结果表明,该方法扩展了动态函数调用关系分析的功能,增加了虚目录函数调用关系分析等新方法;改善了工具执行效率,提高了工具的分析精度.展开更多
文摘Nowadays, one of the IT challenges faced by many enterprises is the maintenance of their legacy system and migration of those systems to modern and flexible platform. In this paper, we study the network properties of software call graphs, and utilize the network theories to understand the business logic of legacy system. The call graphs turn out approximately scale-free and small world network properties. This finding provides new insight to understand the business logic of legacy system: the methods in a program can be naturedly partitioned into the business methods group and supportive methods group. Moreover, the result is also very helpful in reusing valuable functionality and identifying what services should be to expose in the migration from legacy to modern SOA context.
文摘为了分析操作系统内核等大型软件的模块间函数调用关系,针对传统的函数调用关系生成工具不适用于模块间调用关系分析以及其依赖编译器具体特定版本等不足,提出一种基于寄存器传送语言(Register Transfer Language,RTL)的函数调用图生成方法,并根据该方法实现了一个生成模块间函数调用图的工具CG-RTL(call graph based on RTL,简称为CG-RTL).CGRTL首先从编译过程所生成的中间结果中提取出函数定义和调用关系信息,然后利用开源图形可视化工具Graphviz将其绘制出来,并最终将该功能集成到在线源代码浏览工具LXR中去.实验结果表明:通过该方法获得的函数调用关系与目标代码较为一致,而且可以分析用户指定模块间的函数调用关系,而且该方法同时可以生成相对应的函数调用关系列表,更加细致的描述函数调用关系.
文摘针对目前大多数的函数调用关系分析工具无法分析函数指针、系统启动过程以及可加载模块的函数调用关系的现象,在CG-RTL的基础上提出了基于内核跟踪的动态函数调用图生成方法,并开发了动态函数调用图生成工具DCG-RTL(dynamic call graph based on RTL)。DCG-RTL在S2E模拟器中运行待跟踪内核,通过指令捕获插件和函数解析插件记录运行时的函数调用和返回信息,分析跟踪信息得到动态和静态函数调用关系,利用CG-RTL工具在浏览器中展示。实验结果表明,DCG-RTL能全面和准确地跟踪包括函数指针引用和可加载内核模块在内的函数调用关系。
文摘针对基于文件的内核函数调用图工具存在的文件系统可扩展性和适用性等方面的不足,设计并实现了基于数据库的DBCG-RTL工具(Data Based Call Graph Tool Based on RTL,DBCG-RTL),该工具可用于分析大型软件模块间的函数调用关系.DBCG-RTL通过查找编译过程中生成的符号表而获得函数入口地址、返回行号等相关函数信息,绘制相应的关系图并标识出调用次数等信息,建立了相关的虚目录;将需要分析的对象通过分析工具跟踪到的数据转换成标准化格式并存入数据库.论文结果表明,该方法扩展了动态函数调用关系分析的功能,增加了虚目录函数调用关系分析等新方法;改善了工具执行效率,提高了工具的分析精度.