搜索

系统可以使复杂的分析对于导入大量代码的程序变得切实可行

gecimao 发表于 2019-05-12 22:09 | 查看: | 回复:

  符号执行是一种功能强大的软件分析工具,可用于自动 定位甚至修复编程错误。从本质上讲,它描绘了程序执行可能采取的每条路径。

  但它往往不适用于使用今天的编程框架编写的应用程序。应用程序可能只包含1,000行新代码,但它通常会从编程框架中导入函数(例如处理虚拟按钮的函数),编程框架包含大量经常重用的代码库。评估导入代码的额外负担使符号执行过于耗时。

  计算机科学家通过创建导入库的简单模型来解决这个问题,这些模型描述了它们与新程序的交互,但不需要对其代码进行逐行评估。然而,构建模型是劳动密集型且容易出错的,并且模型需要定期更新,因为编程框架在不断发展。

  麻省理工学院计算机科学与人工智能实验室的研究人员与马里兰大学的同事合作,朝着实现使用编程框架编写的应用程序的符号执行迈出了重要的一步,系统可以自动构建框架库模型。

  研究人员将他们系统生成的模型与广泛使用的Java标准图形用户界面组件库进行了比较,这些模型经过多年的艰苦构建。他们发现他们的新型号在手工编码中插入了几个孔。

  他们在上周在国际软件工程大会上发表的一篇论文中描述了他们的结果。他们的工作由国家科学基金会的探险计划资助。

  “四十年前,如果你想写一个程序,你进去了,你编写了代码,基本上你编写的所有代码都是执行的代码,”电气工程和计算机副教授Armando Solar-Lezama说。麻省理工学院的科学,其团队领导了新的工作。“但是今天,如果你想编写一个程序,你就可以引入这些庞大的框架和这些巨大的功能,然后将它们粘合在一起,然后编写一些代码让它们相互交互。如果你不明白那个大框架在做什么,你甚至都不知道你的程序将从哪里开始执行。“

  因此,程序分析器不仅可以省去框架代码,而且可以专注于新编写的代码。但符号执行通过逐步执行程序为各种输入值执行的每个指令来工作。如果分析仪必须评估向窗口添加虚拟按钮所涉及的每条指令 - 屏幕上按钮的位置,用户向下滚动窗口时按钮的移动,按钮的外观变化,那么该过程就变得难以理解它被压了,等等。

  出于分析的目的,重要的是按下按钮时发生的事情,这是框架模型需要捕获的按钮功能的唯一方面。更准确地说,该模型仅描述了从标准编程框架导入的代码将程序控制权返回给新编写的代码时会发生什么。

  “我们唯一关心的是跨越应用程序和框架之间的界限,”Solar-Lezama实验室的博士后和新论文的共同作者Xiaokang Qiu说。“框架本身就像一个我们想抽象出来的黑盒子。”

  为了生成他们的模型,研究人员运行了一套教程,旨在教新手如何用Java编程。他们的系统自动跟踪教程代码和教程导入的框架代码之间的交互。

  “教程的好处在于,它们旨在帮助人们了解框架的工作原理,因此它们也是教授合成器框架如何工作的好方法,”Solar-Lezama说。“问题在于,如果我只是向您展示我的程序所做的一切,那么就会有一组无限的程序可以表现得像那条痕迹。”

  为了了解这一系列的可能性,研究人员的系统试图将程序轨迹与一套标准软件“设计模式”相匹配。首先在20世纪70年代末提出并在1995年出版的一本名为“设计模式”的书中推广,设计模式是基于软件工程中的大多数问题仅适用于几个类别的想法,并且他们的解决方案只有几个一般形状。

  计算机科学家已经确定了大约20种描述计算机程序不同组件之间通信的设计模式。Solar-Lezama,Qiu和他们的马里兰同事 - Jinseong Jeon,Jonathan Fetter-Degges和Jeffrey Foster--在他们的新系统中构建了四种这样的模式,他们称之为Pasket,用于“模式草图”。对于任何给定的程序跟踪组,Pasket试图将其与每种设计模式相匹配,只选择效果最好的设计模式。

  因为给定的设计模式需要描述解决各种细节问题的解决方案,所以在计算机科学文献中,它们用非常笼统的术语描述。幸运的是,Solar-Lezama在其职业生涯的大部分时间里都在开发一个名为Sketch的系统,它采用程序功能的一般描述并填充低级计算细节。Sketch是他小组最初 研究的基础,也是Pasket中设计模式和程序轨迹的协调。

  “使用Swing [Java的图形用户界面组件库]和Android等框架模型的可用性对于实现使用这些框架构建的应用程序的符号执行至关重要,”计算机科学与工程教授Rajiv Gupta说。加州大学河滨分校。“目前,框架模型是手动开发和维护的。这项工作为合成技术的发展提供了令人信服的证明.Pasket的可扩展性令人印象深刻 - 在几分钟内,它合成了近2,700行代码。此外,生成模型与人工创建的模型相比毫不逊色。

本文链接:http://jonnutting.com/dongtaikongjian/431.html
随机为您推荐歌词

联系我们 | 关于我们 | 网友投稿 | 版权声明 | 广告服务 | 站点统计 | 网站地图

版权声明:本站资源均来自互联网,如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

Copyright @ 2012-2013 织梦猫 版权所有  Powered by Dedecms 5.7
渝ICP备10013703号  

回顶部