- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
静态下Java程序函数调用关系图的框架实践.doc
静态下Java程序函数调用关系图的框架实践
摘 要:随着计算机水平在不断的提高,其应用的领域也在逐渐的扩展,本文主要研究了JAVA程序,在函数之间的调用关系中,更好的研究程序理解,其中在函数之间中,它往往代表的是一种具体功能或者是问题求解的实现,最终构建了函数调解图,来促进程序的理解。本文研究了集中函数调用图,针对其优缺点,最终提出了一种函数调用图的构建方法。
关键词:程序理解;函数调用图;构建
中图分类号:TP311.10
在研究计算机程序中,基本上大型的程序都是通过对函数的组织和调用来实现整个程序的功能要求,这样就需要函数之间的关系来分析,在采用函数调用图中,它是一种静态的对程序中的函数调用关系进行描述的方法,所以在函数调用关系图中,函数用节点表示,函数之间的调用关系用边表示,在研究调用图中,能够了解到程序之间的函数关系,来辅助理解程序的基本结构以及功能的实现。
1 JAVA语言程序
程序语言设计中,受JAVA语言法则规定以及面向对象程序设计的多样性,在编译期间基本都不能确定出函数调用点中接受对象的类型,所以在该语言程序中函数调用图中仅仅是通过大概的图示来对运行的实际函数调用关系进行促进,以此对函数调用的效率进行提高,从而可以构建出函数的调用图,为实际的程序应用提供了比较方便的调用关系,进一步提高了程序理解的应用。
2 JAVA程序函数调用图典型的实现方法
JAVA程序的函数调用图的构建中,其主要是运用三种典型的算法进行的,主要包括:类层次分析、快速类型分析以及独立的方法和域可用类型集合分析。其中前两种算法属于流不敏感分析,这种分析的方法容易实现,并且算法的具体流程比较简单,在调用图中最终提出了XTA,进一步加强了程序的精度。其中具体的算法表现在:
2.1 类层次分析
首先类层次分析是由美国教授J.Deam提出的,在具体的算法程序中,是通过类层次图得到的,一般情况下,程序中的个各类使用类层次图中的节点来表示的,各元素间继承关系则由具体的边来表示。根据得到的类层次图,在函数调用中如果对象的声明类型属于父类,那么其运行中就可能包括函数的父类及子类,那么对于某一个特定的函数调用而言,其算法中也就包含了父类及子类针对所有函数类型,这样就总结了类层次类函数调用。
2.2 快速类型分析
快速类型分析,其采用的是RTA分析法,该方法是在类层次分析方法的基础上进行完善而来的,主要思想是按照程序中的信息对接受对象进行进一步约减构成的可能性集合,从而提高函数的可调用图的效率。
2.3 XTA算法
相应的XTA算法是通过快速类型分析改进得到,其选择增量式方法进行分析,程序运用过程中,针对每一个声明变量,及函数给定的类型,构成集合,那么在每一个可用类型的集合中,涵盖了函数中的对象类型、可达函数中的可用类型等,最终将被调用函数的形式的声明类型、可用类型集合以及子类型集合的交集在函数的最后一部分进行应用。但是在XTA算法中,当被调用的函数出现返回类型时,那么返回值主要是添加在调用函数的可用类型集合中,从而构建出可调用函数的集合。
3 一种XTA方法的改进算法
函数算法的类型非常多样,在多种类型中,类型传播作为一种只对对象类型进行关注的简单数据流分析方式,包含了过程内及过程中的类型传播。在过程内类型传播分析中,指的是类型的传播依靠函数内从类型事件与调用函数点间的数据流分析,从而对函数调用中,接受对象类型集合的方式进行了有效的改善。在研究XTA方法中,去传播过程内的类型主要是对算法的设计进行具体的研究,具体的算法设计:
在对算法进行设计的过程中,可达函数集合用R表示,变量e的声明类型采用的是StatemenType(e)表示,类t中所有子类集合采用sonTypes(t)表示,用StatiLookup(c,m)来表示类C中静态查找是否声明为m的函数,那么程序中函数M给定的集合用SM来表示,用SX表示对每一个域中X给定的一个特殊集合,这样,M)表示的是返回类型,其参数的声明类型是一个集合,但是对于可达函数M中的每一个实例化类型C给定的是一个特殊集合,最终得到了变量的集合。其主要的:
步骤1:从函数mainO开始,mainR.
步骤2:对于每一个函数M以及M中的每一个函数调用点e.mO,当M中存在一系列赋值语句,这样在类C的实例化语句中存在于M当中,并且能够通过程内的类型传播,其类C的实例化信息最终达到了e,并且属于Rc。
步骤3:对于函数中M,其主要包括newC(这样的实例化信息,将初始化SM为在可达函数M中实例化的对象类型分析。
步骤4:对于每一个函数M,在可用类型集合中,如果存在类CSonTypes,当可用类型集合中包含目
您可能关注的文档
最近下载
- 第3课+追求人生理想+第一框+第3目【中职专用】2024-2025学年中职思想政治《哲学与人生》(高教版2023基础模块).pptx VIP
- 2011年考研英语二真题及答案解析.pdf VIP
- 《建筑施工企业碳排放统计核算标准》.pdf
- 面向教学评价的情感分类.pptx VIP
- 人教A版必修第一册高中数学2.1等式性质与不等式性质【教学课件】.pptx VIP
- 《中药材炮制加工方法图解》.pdf VIP
- 小学残疾儿童送教上门教案(40篇).pdf VIP
- 羊群效应——一个班级最可怕的存在!--高一上学期班级凝聚力主题班会课件.pptx VIP
- Apple 环保系统操作说明FMD_Portal_TRM_Training.pdf
- 厄瓜多尔介绍PPT.pptx
文档评论(0)