【24h】

Longitudinal program analysis

机译:纵向计划分析

获取原文

摘要

The field of program analysis has made significant improvements recently, but still faces some major obstacles. In this talk I argue that considering analysis as applying longitudinally across the multitude of versions created during a program's lifetime -rather than to a given instance of a program - shows significant promise in overcoming some of these obstacles. I focus on identifying a set of opportunities that arise when this shift in outlook is taken.Most program analysis techniques have focused on questions of the form "Does program P satisfy a given property A?" or "What program points in P satisfy a given property A?" Type-checking is the classic example of the first form, while lexical, syntactic, and semantic analyses are examples of the second form. The key point (with respect to this talk) is that a single program P is being analyzed.Some analyses expand this view and explicitly consider a pair of programs, P and P', where P' represents a modified version of P. Test selection and prioritization techniques are among the best examples of this approach: the idea is to analyze the delta between P and P', and to use that information to determine which test cases must be re-run (for test selection) or should be re-run (for test prioritization). (There are dozens of results in these areas; Harrold et al.'s empirical study is one recent example of test selection [1], and the recent work at Microsoft Research is an example of test prioritization [2].There are at least three ways in which a longitudinal approach could improve analysis.Second, we can use previously computed information to better inform analysis on a newer version. One recent example of this is the work by Kim and Porter that uses historical information about the application of tests of a set of versions as a basis for test prioritization algorithms [3].Third, we can imagine applying otherwise "intractable" analyses over the lifetime of (multiple versions of) a program, as opposed to the (much more limited) time available to analyzea specific version. In essence, there is an opportunity to compute the analysis in stages, with the goal of completing the analysis by specific important points in the program lifetime (e.g., external releases). Work on vertical staging of analyses for runtime compilation is one place to look for ideas and techniques for this kind of "horizontal" staging [4].The traditional view of software evolution says that (to accommodate needed change) program structure degrades and program size increases [5][6]; this in turn tends to increase the difficult of analysis. I propose here some opportunities for viewing time and change as potential benefits with respect to analysis, rather than as roadblocks. This provides potential for significantly improving software dependability over time.
机译:方案分析领域最近取得了重大改善,但仍面临着一些主要障碍。在这次谈话中,我认为,考虑分析,因为在程序终身 - 射线期间创建的众多版本纵向应用而不是对程序的给定实例 - 在克服一些这些障碍时显示出了重要的承诺。我专注于识别出现在展望中的这种转变时出现的一组机会。大多数计划分析技术侧重于表格的问题“程序P确实满足给定的属性a?”或者“P中的节目点满足于特定属性a?”类型检查是第一形式的经典示例,而词汇,句法和语义分析是第二种形式的示例。关键点(关于此谈话)是正在分析单个程序P.SOME分析扩展此视图并明确地考虑一对程序,P和P',其中P'表示P.测试选择的修改版本和优先级化技术是这种方法的最佳示例之一:该想法是分析p和p'之间的三角洲,并使用该信息来确定必须重新运行哪个测试用例(用于测试选择)或者应该重新运行(进行测试优先级)。 (这些地区有几十个结果; Harrold等人。的实证研究是最近的测试选择[1]的一个例子,而最近在Microsoft Research的工作是测试优先级的一个例子[2]。至少三种方式,其中纵向方法可以改善分析。第二种方式,我们可以使用先前计算的信息来更好地了解更新版本的分析。这是一个最近的例子是Kim和Porter使用有关应用测试的历史信息的工作一组版本作为测试优先级算法的基础[3]。第三,我们可以想象在程序的一生中应用于(多个版本)的寿命,而不是可用的(更多有限)的时间分析特定版本。实质上,有机会在阶段计算分析,目的是通过计划寿命的特定重要点(例如,外部版本)完成分析。垂直分期运行时编译的分析是寻找这种“水平”暂存的想法和技术的一个地方[4]。传统的软件演进视图表明(为了适应所需的变化)程序结构降低和程序尺寸增加[5] [6];这反过来往往会增加分析的困难。我在此提出一些观看时间和改变为分析的潜在利益的机会,而不是作为障碍。这提供了显着提高软件可靠性随时间的潜力。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号