基于程序静态与动态结构的特征定位技术探析.docVIP

基于程序静态与动态结构的特征定位技术探析.doc

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于程序静态与动态结构的特征定位技术探析.doc

  基于程序静态与动态结构的特征定位技术探析   摘要:特征定位技术对于解决维护任务中提出的面向特征的程序理解以具有很强的针对性和应用价值,对提高软件维护和程序理解的效率和准确性具有重要的意义。本文对基于程序静态与动态结构的特征定位技术进行了分析和研究。   关键词:特征定位;静态与动态;基于程序      1特征定位技术概述   对于确定的维护任务,纠正或完善系统的某个或某些功能,我们把这些系统待维护的功能称为特征。完成对特征的纠正或完善,往往只需要理解与这些特征所对应的那部分代码。因此特征定位是实现面向特征程序理解的重要支撑技术。   理解一个特征是如何执行的是程序理解中主要的问题。在真正的理解程序运行之前,必须先定位特征代码的执行位置。找出执行给定特征的源码通常是不容易的,例如现存的文档己经过时,或系统的初始设计师已经无法找到了。所以维护工作引入了不连贯的修改,这种改变引发了这个系统结构的退化。任何时候的修改使得对程序的理解更加难了。近年来,很多研究人员认为辅助纠正性、完善性维护任务的程序理解活动的一个关键步骤是进行特征定位。它将来自系统问题域的特征映射到系统实现域的相应代码实体。而完成对当前任务涉及特征的纠正或完善,往往只需要理解与这些特征所对应的那部分代码。因此特征定位是实现面向特征的程序理解的重要支撑技术。总体来讲,需要通过特征定位恢复出的特征与代码实体间的追踪关系分为基本追踪关系和导出追踪关系两大类。基本追踪关系是特征与代码实体间的相关关系,特征与实现该特征的所有代码实体间具有相关关系。导出追踪关系是从特征与代码实体间的基本追踪关系推导得出。常见的导出追踪关系有特定关系和有关系。特征与代码实体间具有特定关系表明该代码实体参与实现该特征且不参与实现任何其它特征。特征与代码实体间具有共有关系表明该实体参与实现该特征且同时参与实现其它特征。获取一个特征的导出追踪关系通常还需要其它特征的基本追踪关系。   2基于程序静态结构的特征定位   2.1基于抽象系统依赖图的方法   基于抽象系统依赖图定位特定系统特征的方法以人对一个特定的系统特征的认识作为特征定位的出发点。在定位的过程中依赖辅助工具分析得到的程序抽象视图以及辅助工具所提供的对浏览、查找、推理程序信息等活动的支持。但具体而言,其在系统抽象、定位过程和工具支持三方面又具有自己的特点。   系统抽象。其方法在特征定位过程中利用了抽象系统依赖图。ASDG建立在系统依赖图的基础之上,但忽略了更细粒度的语句信息。   针对C语言,抽象系统依赖图中的节点代表函数和全局变量,节点间的边代表函数间的调用关系、函数与全局变量之间以及全局变量间的数据流依赖关系。   特征定位过程。他们基于抽象系统依赖图的方法给出了理解人员和辅助工具在特征定位过程中的明确分工和细致的步骤。理解人员的任务是:确定初始节点;选择下一个要访问的节点;访问该节点;判断该节点是否与所调查的特征相关;检查是否己经得到了所有相关的节点。   工具支持。基于抽象系统依赖图的方法中,辅助工具的任务是:构造抽象系统依赖图并可视化展示;根据当前访问的系统依赖图中的节点和边更新查找图;根据确定下来的与当前特征相关的节点和边扩展查找图。   他们的工具中提出了一个查找图的概念,它记录了当前查找过的节点,因此除了提供抽象系统依赖图的可视化以外,还支持程序理解过程中理解步骤的回溯、撤销以及重做。   2.2借鉴地图信息可视化技术的方法   该方法的本质仍然是利用工具辅助人的查找和定位,只是它针对那些分散实现在程序全局内的系统特征,尤其针对大型系统,以基于Grep的正规表达式匹配为起点,首先在源代码中强调显示出那些查找到的与当前特征相关的所有语句行。其次,借鉴了地图信息的可视化技术,处理这些大规模空间分散但逻辑相关的语句行信息,为分散实现的系统特征的查找、定位、变更提供了以下辅助:为那些与特定系统特征相关的代码实体建立索引从而对其进行控制;支持在单一视图内展示分散实现的系统特征的所有语句行; 提供视图的缩放以支持用户在不同粒度的程序信息间切换;对实现一个特定系统特征的代码实体的不同修改状态进行标记,从而更好地控制分散实现的代码的变更,并保证代码的一致性;折叠当前不需要的代码信息,使得在一个视图内观察到更多的有用信息。   2.3关注图方法   关注图的核心结构包括类、方法和属性,并刻画它们之间的调用、读取等关系。其方法中,关注图是程序模型的压缩子集,它并没有包含程序模型中涉及一个关注点的所有节点和边,那些能够根据关注图中已有信息准确地从程序模型中恢复出来的信息将被省略,如一个完全实现关注点的类,它的属性和方法肯定也是完全实现该关注点的,则关注图中只包含这个类,它的属性和方法是省略掉的。  

文档评论(0)

ggkkppp + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档