程序理解的研究.docVIP

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

程序理解的研究   摘要随着社会对软件需求的不断增长,软件的规模变得越来越大,使得软件维护成为了当前软件产业面临的重要问题。能否准确、迅速、全面地理解程序是决定维护工作成败的关键。分析比较6种代表性的程序理解策略,指出当前程序理解上存在的困难和程序理解在不同层次上应该完成的任务。   关键词软件维护;程序理解   中图分类号TP文献标识码A文章编号1673-9671-(2010)052-0015-01      随着社会对软件需求的不断增长,正在使用和开发的软件数量与日俱增,许多软件的规模变得越来越大,这些软件的维护问题成为了当前软件产业面临的重要问题。能否准确、迅速、全面地理解程序是决定维护工作成败的关键。为了能够充分利用这些有用资产,遗产系统持续性演化变得十分重要。程序理解的目的在于获取足够的系统信息以便让系统按所期望的方式演化,因而,程序理解是遗产系统成功演化的关键之一。   如何选择一个合适的理解策略是今后理解工作顺利进行的保障。本文分析了程序理解的研究现状,提出了6种国内外学者在程序理解方面的几种具有代表性的程序理解策略:自底向上策略、自顶向下策略、基于知识策略、Systematic/As-Needed策略、潜在语义分析策略和集成策略,并对这些策略进行了详细的比较。同时,还指出了当前程序理解上存在的困难和程序理解在不同层次上应该完成的任务。   1程序理解在国内外的研究现状   国内在程序理解方面的研究。国内研究程序理解方法及其应用的单位主要有北京大学,浙江大学、浙江工业大学、哈尔滨工业大学等。北大青鸟工程的青鸟程序理解系统――JBPAS(Jade Bird Program Analysis System)支持用户在程序理解过程中采用的多种理解策略,用多层抽象视图表现程序,并方便程序理解过程中的用户交互。文献研究基于Plan的自动程序理解方法。   2程序理解的策略   程序理解是一个复杂的过程。理解过程中信息容易丢失、前后不一致,这就给理解过程带来了很大的麻烦。因此,采用一种行之有效的理解策略尤为重要。   2.1自顶向下(Top Down)策略   自顶向下模型基于三个主要想法:1)编程过程是构建映射的过程,实现从任务域开始,经过一个或几个中间领域最终到达编程领域的映射过程。2)程序理解过程就是重构整个或部分的映射关系。3)重构过程是通过创建假设、证实假设、改进假设的方式进行的,其中的假设描述了多种领域以及它们的关系。   该策略的思维模型是通过自顶向下的方式连续改进假设和辅助性假设。这些假设经过通过多个知识领域的时候,进行反复性的改进,直到它们可以匹配到程序中的具体代码或者相关的文档为止。   2.2自底向上(Bottom Up)策略   自底向上策略强调的是:通过读取源码,建立底层的部分信息,逐步抽象,最终建立高层的抽象模型。这是一个逐渐聚合的过程。理解过程分为两个不同的思维表示:程序模型和状况模型。程序模型由微观结构向宏观结构转换及交叉引用编程设计知识来创建。状况模型也是按照自底向上方式进行构造的,是数据流/功能的抽象。模型需要现实世界的领域知识,如操作系统领域的一般系统结构和功能。一旦达到程序的目标就完成了状况模型。   2.3基于知识(Knowledge Based)策略   此策略由三个部分组成:1)知识库:包含了程序员经验、问题域知识、论述规则、计划和目的。2)思维模型:分为三层:由规格说明层、实现层和注解层组成。规格说明层是程序抽象的最高层次,完整地描述了程序的意图;实现层包括了数据结构和功能在内的最低级抽象;注解层连接规格说明层中的每个目标到它在实现层里的具体实现。这些连接可以是不完全的。3)消化吸收过程:描述思维模型如何根据程序员的经验和程序信息进行理解。吸收过程既有自顶而下又有自底而上方式。具体按照哪种方式进行完全依赖子程序员。   程序理解是一件复杂的工作。困难体现在它要桥接不同的概念领域。其中尤其重要的几个方面是:1)在编程语言中存在应用领域问题和解决方案之间的代沟。我们进行理解程序是为了重建应用工程领域到程序的映射关系,其中不仅需要编程方面的知识,而且需要来自应用工程领域的知识。目前大多数的自动分析工具局限于分析源程序的正文而没有涉及应用领域。2)存在物理机器和计算机程序的具体世界与高级设计描述的抽象世界之间的代沟。逆向工程师必须从一大堆的具体细节中创造出程序的抽象描述。3)系统设计者最初提出的一致化和结构化的系统与一个正在随时间变化结构逐渐分解的实际系统之间的代沟。尽管编程语言具备某些有利于抽象和结构化的特征,但程序理解需要的高层设计可能会随着时间而丢失或过时。更加重要的情况是通过维护工作,诸如移植、纠错和增强程序功能等,可能会被坏原本的程序结构

文档评论(0)

189****7685 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档