首页 > 最新文献

Proceedings of the 2017 11th Joint Meeting on Foundations of Software Engineering最新文献

英文 中文
Are deep neural networks the best choice for modeling source code? 深度神经网络是源代码建模的最佳选择吗?
V. Hellendoorn, Premkumar T. Devanbu
Current statistical language modeling techniques, including deep-learning based models, have proven to be quite effective for source code. We argue here that the special properties of source code can be exploited for further improvements. In this work, we enhance established language modeling approaches to handle the special challenges of modeling source code, such as: frequent changes, larger, changing vocabularies, deeply nested scopes, etc. We present a fast, nested language modeling toolkit specifically designed for software, with the ability to add & remove text, and mix & swap out many models. Specifically, we improve upon prior cache-modeling work and present a model with a much more expansive, multi-level notion of locality that we show to be well-suited for modeling software. We present results on varying corpora in comparison with traditional N-gram, as well as RNN, and LSTM deep-learning language models, and release all our source code for public use. Our evaluations suggest that carefully adapting N-gram models for source code can yield performance that surpasses even RNN and LSTM based deep-learning models.
目前的统计语言建模技术,包括基于深度学习的模型,已被证明对源代码非常有效。我们认为源代码的特殊属性可以用于进一步的改进。在这项工作中,我们增强了已建立的语言建模方法,以处理源代码建模的特殊挑战,例如:频繁更改、更大、不断变化的词汇表、深度嵌套作用域等。我们提供了一个专门为软件设计的快速、嵌套的语言建模工具包,具有添加和删除文本以及混合和交换许多模型的能力。具体来说,我们改进了先前的缓存建模工作,并提出了一个具有更广泛、多层次的局域性概念的模型,我们认为它非常适合建模软件。与传统的N-gram、RNN和LSTM深度学习语言模型相比,我们展示了不同语料库上的结果,并发布了所有源代码供公众使用。我们的评估表明,仔细调整源代码的N-gram模型可以产生甚至超过基于RNN和LSTM的深度学习模型的性能。
{"title":"Are deep neural networks the best choice for modeling source code?","authors":"V. Hellendoorn, Premkumar T. Devanbu","doi":"10.1145/3106237.3106290","DOIUrl":"https://doi.org/10.1145/3106237.3106290","url":null,"abstract":"Current statistical language modeling techniques, including deep-learning based models, have proven to be quite effective for source code. We argue here that the special properties of source code can be exploited for further improvements. In this work, we enhance established language modeling approaches to handle the special challenges of modeling source code, such as: frequent changes, larger, changing vocabularies, deeply nested scopes, etc. We present a fast, nested language modeling toolkit specifically designed for software, with the ability to add & remove text, and mix & swap out many models. Specifically, we improve upon prior cache-modeling work and present a model with a much more expansive, multi-level notion of locality that we show to be well-suited for modeling software. We present results on varying corpora in comparison with traditional N-gram, as well as RNN, and LSTM deep-learning language models, and release all our source code for public use. Our evaluations suggest that carefully adapting N-gram models for source code can yield performance that surpasses even RNN and LSTM based deep-learning models.","PeriodicalId":313494,"journal":{"name":"Proceedings of the 2017 11th Joint Meeting on Foundations of Software Engineering","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-08-21","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129428140","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 270
Toward full elasticity in distributed static analysis: the case of callgraph analysis 分布式静态分析中的全弹性:以书法分析为例
D. Garbervetsky, Edgardo Zoppi, B. Livshits
In this paper we present the design and implementation of a distributed, whole-program static analysis framework that is designed to scale with the size of the input. Our approach is based on the actor programming model and is deployed in the cloud. Our reliance on a cloud cluster provides a degree of elasticity for CPU, memory, and storage resources. To demonstrate the potential of our technique, we show how a typical call graph analysis can be implemented in a distributed setting. The vision that motivates this work is that every large-scale software repository such as GitHub, BitBucket, or Visual Studio Online will be able to perform static analysis on a large scale. We experimentally validate our implementation of the distributed call graph analysis using a combination of both synthetic and real benchmarks. To show scalability, we demonstrate how the analysis presented in this paper is able to handle inputs that are almost 10 million lines of code (LOC) in size, without running out of memory. Our results show that the analysis scales well in terms of memory pressure independently of the input size, as we add more virtual machines (VMs). As the number of worker VMs increases, we observe that the analysis time generally improves as well. Lastly, we demonstrate that querying the results can be performed with a median latency of 15 ms.
在本文中,我们提出了一个分布式、全程序静态分析框架的设计和实现,该框架被设计为随输入的大小而扩展。我们的方法基于参与者编程模型,并部署在云中。我们对云集群的依赖为CPU、内存和存储资源提供了一定程度的弹性。为了演示我们技术的潜力,我们将展示如何在分布式设置中实现典型的调用图分析。激励这项工作的愿景是,每个大型软件存储库(如GitHub、BitBucket或Visual Studio Online)都能够大规模地执行静态分析。我们通过实验验证了分布式调用图分析的实现,使用了合成基准和真实基准的组合。为了展示可伸缩性,我们演示了本文中提供的分析如何能够处理大小接近1000万行代码(LOC)的输入,而不会耗尽内存。我们的结果表明,当我们添加更多虚拟机(vm)时,就内存压力而言,分析的伸缩性与输入大小无关。随着工作虚拟机数量的增加,我们观察到分析时间通常也会提高。最后,我们证明查询结果可以在中位延迟为15 ms的情况下执行。
{"title":"Toward full elasticity in distributed static analysis: the case of callgraph analysis","authors":"D. Garbervetsky, Edgardo Zoppi, B. Livshits","doi":"10.1145/3106237.3106261","DOIUrl":"https://doi.org/10.1145/3106237.3106261","url":null,"abstract":"In this paper we present the design and implementation of a distributed, whole-program static analysis framework that is designed to scale with the size of the input. Our approach is based on the actor programming model and is deployed in the cloud. Our reliance on a cloud cluster provides a degree of elasticity for CPU, memory, and storage resources. To demonstrate the potential of our technique, we show how a typical call graph analysis can be implemented in a distributed setting. The vision that motivates this work is that every large-scale software repository such as GitHub, BitBucket, or Visual Studio Online will be able to perform static analysis on a large scale. We experimentally validate our implementation of the distributed call graph analysis using a combination of both synthetic and real benchmarks. To show scalability, we demonstrate how the analysis presented in this paper is able to handle inputs that are almost 10 million lines of code (LOC) in size, without running out of memory. Our results show that the analysis scales well in terms of memory pressure independently of the input size, as we add more virtual machines (VMs). As the number of worker VMs increases, we observe that the analysis time generally improves as well. Lastly, we demonstrate that querying the results can be performed with a median latency of 15 ms.","PeriodicalId":313494,"journal":{"name":"Proceedings of the 2017 11th Joint Meeting on Foundations of Software Engineering","volume":"133 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-08-21","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127310078","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 21
Probabilistic model checking of perturbed MDPs with applications to cloud computing 云计算应用中扰动mdp的概率模型检验
Yamilet R. Serrano Llerena, Guoxin Su, David S. Rosenblum
Probabilistic model checking is a formal verification technique that has been applied successfully in a variety of domains, providing identification of system errors through quantitative verification of stochastic system models. One domain that can benefit from probabilistic model checking is cloud computing, which must provide highly reliable and secure computational and storage services to large numbers of mission-critical software systems. For real-world domains like cloud computing, external system factors and environmental changes must be estimated accurately in the form of probabilities in system models; inaccurate estimates for the model probabilities can lead to invalid verification results. To address the effects of uncertainty in probability estimates, in previous work we have developed a variety of techniques for perturbation analysis of discrete- and continuous-time Markov chains (DTMCs and CTMCs). These techniques determine the consequences of the uncertainty on verification of system properties. In this paper, we present the first approach for perturbation analysis of Markov decision processes (MDPs), a stochastic formalism that is especially popular due to the significant expressive power it provides through the combination of both probabilistic and nondeterministic choice. Our primary contribution is a novel technique for efficiently analyzing the effects of perturbations of model probabilities on verification of reachability properties of MDPs. The technique heuristically explores the space of adversaries of an MDP, which encode the different ways of resolving the MDP's nondeterministic choices. We demonstrate the practical effectiveness of our approach by applying it to two case studies of cloud systems.
概率模型检验是一种形式验证技术,通过对随机系统模型的定量验证来识别系统误差,已成功应用于许多领域。可以从概率模型检查中受益的一个领域是云计算,它必须为大量关键任务软件系统提供高度可靠和安全的计算和存储服务。对于像云计算这样的现实世界领域,外部系统因素和环境变化必须以系统模型中的概率形式准确估计;对模型概率的不准确估计可能导致无效的验证结果。为了解决概率估计中不确定性的影响,在之前的工作中,我们开发了各种技术用于离散时间和连续时间马尔可夫链(dtmc和ctmc)的扰动分析。这些技术决定了不确定度对系统特性验证的影响。在本文中,我们提出了马尔可夫决策过程(mdp)的扰动分析的第一种方法,这是一种随机形式,由于它通过概率和不确定性选择的结合提供了显着的表达能力而特别受欢迎。我们的主要贡献是一种新的技术,可以有效地分析模型概率扰动对MDPs可达性验证的影响。该技术启发式地探索MDP的对手空间,对解决MDP的不确定性选择的不同方法进行编码。我们通过将该方法应用于云系统的两个案例研究来证明其实际有效性。
{"title":"Probabilistic model checking of perturbed MDPs with applications to cloud computing","authors":"Yamilet R. Serrano Llerena, Guoxin Su, David S. Rosenblum","doi":"10.1145/3106237.3106301","DOIUrl":"https://doi.org/10.1145/3106237.3106301","url":null,"abstract":"Probabilistic model checking is a formal verification technique that has been applied successfully in a variety of domains, providing identification of system errors through quantitative verification of stochastic system models. One domain that can benefit from probabilistic model checking is cloud computing, which must provide highly reliable and secure computational and storage services to large numbers of mission-critical software systems. For real-world domains like cloud computing, external system factors and environmental changes must be estimated accurately in the form of probabilities in system models; inaccurate estimates for the model probabilities can lead to invalid verification results. To address the effects of uncertainty in probability estimates, in previous work we have developed a variety of techniques for perturbation analysis of discrete- and continuous-time Markov chains (DTMCs and CTMCs). These techniques determine the consequences of the uncertainty on verification of system properties. In this paper, we present the first approach for perturbation analysis of Markov decision processes (MDPs), a stochastic formalism that is especially popular due to the significant expressive power it provides through the combination of both probabilistic and nondeterministic choice. Our primary contribution is a novel technique for efficiently analyzing the effects of perturbations of model probabilities on verification of reachability properties of MDPs. The technique heuristically explores the space of adversaries of an MDP, which encode the different ways of resolving the MDP's nondeterministic choices. We demonstrate the practical effectiveness of our approach by applying it to two case studies of cloud systems.","PeriodicalId":313494,"journal":{"name":"Proceedings of the 2017 11th Joint Meeting on Foundations of Software Engineering","volume":"119 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-08-21","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114975763","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 8
Detecting missing information in bug descriptions 检测bug描述中缺失的信息
Oscar Chaparro, Jing Lu, Fiorella Zampetti, Laura Moreno, M. D. Penta, Andrian Marcus, G. Bavota, Vincent Ng
Bug reports document unexpected software behaviors experienced by users. To be effective, they should allow bug triagers to easily understand and reproduce the potential reported bugs, by clearly describing the Observed Behavior (OB), the Steps to Reproduce (S2R), and the Expected Behavior (EB). Unfortunately, while considered extremely useful, reporters often miss such pieces of information in bug reports and, to date, there is no effective way to automatically check and enforce their presence. We manually analyzed nearly 3k bug reports to understand to what extent OB, EB, and S2R are reported in bug reports and what discourse patterns reporters use to describe such information. We found that (i) while most reports contain OB (i.e., 93.5%), only 35.2% and 51.4% explicitly describe EB and S2R, respectively; and (ii) reporters recurrently use 154 discourse patterns to describe such content. Based on these findings, we designed and evaluated an automated approach to detect the absence (or presence) of EB and S2R in bug descriptions. With its best setting, our approach is able to detect missing EB (S2R) with 85.9% (69.2%) average precision and 93.2% (83%) average recall. Our approach intends to improve bug descriptions quality by alerting reporters about missing EB and S2R at reporting time.
Bug报告记录了用户遇到的意外软件行为。为了有效,它们应该允许bug触发器通过清晰地描述观察到的行为(OB)、重现的步骤(S2R)和预期的行为(EB),轻松地理解和重现潜在的报告错误。不幸的是,虽然被认为非常有用,但报告者经常在错误报告中遗漏这些信息,而且到目前为止,还没有有效的方法来自动检查和强制执行它们的存在。我们手动分析了近3k个bug报告,以了解bug报告中报告了OB、EB和S2R的程度,以及记者使用什么话语模式来描述这些信息。我们发现(i)虽然大多数报告包含OB(即93.5%),但分别只有35.2%和51.4%明确描述EB和S2R;(ii)记者经常使用154种话语模式来描述这些内容。基于这些发现,我们设计并评估了一种自动方法来检测bug描述中EB和S2R的缺失(或存在)。在最佳设置下,我们的方法能够检测缺失的EB (S2R),平均精度为85.9%(69.2%),平均召回率为93.2%(83%)。我们的方法是通过在报告时提醒记者缺少EB和S2R来提高bug描述的质量。
{"title":"Detecting missing information in bug descriptions","authors":"Oscar Chaparro, Jing Lu, Fiorella Zampetti, Laura Moreno, M. D. Penta, Andrian Marcus, G. Bavota, Vincent Ng","doi":"10.1145/3106237.3106285","DOIUrl":"https://doi.org/10.1145/3106237.3106285","url":null,"abstract":"Bug reports document unexpected software behaviors experienced by users. To be effective, they should allow bug triagers to easily understand and reproduce the potential reported bugs, by clearly describing the Observed Behavior (OB), the Steps to Reproduce (S2R), and the Expected Behavior (EB). Unfortunately, while considered extremely useful, reporters often miss such pieces of information in bug reports and, to date, there is no effective way to automatically check and enforce their presence. We manually analyzed nearly 3k bug reports to understand to what extent OB, EB, and S2R are reported in bug reports and what discourse patterns reporters use to describe such information. We found that (i) while most reports contain OB (i.e., 93.5%), only 35.2% and 51.4% explicitly describe EB and S2R, respectively; and (ii) reporters recurrently use 154 discourse patterns to describe such content. Based on these findings, we designed and evaluated an automated approach to detect the absence (or presence) of EB and S2R in bug descriptions. With its best setting, our approach is able to detect missing EB (S2R) with 85.9% (69.2%) average precision and 93.2% (83%) average recall. Our approach intends to improve bug descriptions quality by alerting reporters about missing EB and S2R at reporting time.","PeriodicalId":313494,"journal":{"name":"Proceedings of the 2017 11th Joint Meeting on Foundations of Software Engineering","volume":"11 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-08-21","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130424554","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 119
QEMU-based framework for non-intrusive virtual machine instrumentation and introspection 基于qemu的框架,用于非侵入式虚拟机检测和自省
P. Dovgalyuk, N. Fursova, I. Vasiliev, V. Makarov
This paper presents the framework based on the emulator QEMU. Our framework provides set of multi-platform analysis tools for the virtual machines and mechanism for creating instrumentation and analysis tools. Our framework is based on a lightweight approach to dynamic analysis of binary code executed in virtual machines. This approach is non-intrusive and provides system-wide analysis capabilities. It does not require loading any guest agents and source code of the OS. Therefore it may be applied to ROM-based guest systems and enables using of record/replay of the system execution. We use application binary interface (ABI) of the platform to be analyzed for creating introspection tools. These tools recover the part of kernel-level information related to the system calls executed on the guest machine.
本文提出了基于仿真器QEMU的框架。我们的框架为虚拟机提供了一套多平台分析工具,并为创建仪器和分析工具提供了机制。我们的框架基于一种轻量级的方法来动态分析在虚拟机中执行的二进制代码。这种方法是非侵入性的,并且提供了系统范围的分析能力。它不需要加载任何客户机代理和操作系统的源代码。因此,它可以应用于基于rom的客户机系统,并允许使用系统执行的记录/重播。我们使用待分析平台的应用程序二进制接口(ABI)来创建自省工具。这些工具恢复与在客户机上执行的系统调用相关的部分内核级信息。
{"title":"QEMU-based framework for non-intrusive virtual machine instrumentation and introspection","authors":"P. Dovgalyuk, N. Fursova, I. Vasiliev, V. Makarov","doi":"10.1145/3106237.3122817","DOIUrl":"https://doi.org/10.1145/3106237.3122817","url":null,"abstract":"This paper presents the framework based on the emulator QEMU. Our framework provides set of multi-platform analysis tools for the virtual machines and mechanism for creating instrumentation and analysis tools. Our framework is based on a lightweight approach to dynamic analysis of binary code executed in virtual machines. This approach is non-intrusive and provides system-wide analysis capabilities. It does not require loading any guest agents and source code of the OS. Therefore it may be applied to ROM-based guest systems and enables using of record/replay of the system execution. We use application binary interface (ABI) of the platform to be analyzed for creating introspection tools. These tools recover the part of kernel-level information related to the system calls executed on the guest machine.","PeriodicalId":313494,"journal":{"name":"Proceedings of the 2017 11th Joint Meeting on Foundations of Software Engineering","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-08-21","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130476422","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 9
DecisionDroid: a supervised learning-based system to identify cloned Android applications DecisionDroid:一个基于监督学习的系统,用于识别克隆的Android应用程序
Ayush Kohli
This study presents DecisionDroid, a supervised learning based system to identify cloned Android app pairs. DecisionDroid is trained using a manually verified diverse dataset of 12,000 Android app pairs. On a hundred ten-fold cross validations, DecisionDroid achieved 97.9% precision, 98.3% recall, and 98.4% accuracy.
本研究提出了一个基于监督学习的系统DecisionDroid,用于识别克隆的Android应用对。DecisionDroid使用人工验证的12,000个Android应用对的多样化数据集进行训练。在100次10倍交叉验证中,DecisionDroid达到了97.9%的精度,98.3%的召回率和98.4%的准确率。
{"title":"DecisionDroid: a supervised learning-based system to identify cloned Android applications","authors":"Ayush Kohli","doi":"10.1145/3106237.3121277","DOIUrl":"https://doi.org/10.1145/3106237.3121277","url":null,"abstract":"This study presents DecisionDroid, a supervised learning based system to identify cloned Android app pairs. DecisionDroid is trained using a manually verified diverse dataset of 12,000 Android app pairs. On a hundred ten-fold cross validations, DecisionDroid achieved 97.9% precision, 98.3% recall, and 98.4% accuracy.","PeriodicalId":313494,"journal":{"name":"Proceedings of the 2017 11th Joint Meeting on Foundations of Software Engineering","volume":"383 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-08-21","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132944258","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 3
DESCRY: reproducing system-level concurrency failures DESCRY:再现系统级并发失败
Tingting Yu, T. S. Zaman, Chao Wang
Concurrent systems may fail in the field due to various elusive faults such as race conditions. Reproducing such failures is hard because (1) concurrency failures at the system level often involve multiple processes or event handlers (e.g., software signals), which cannot be handled by existing tools for reproducing intra-process (thread-level) failures; (2) detailed field data, such as user input, file content and interleaving schedule, may not be available to developers; and (3) the debugging environment may differ from the deployed environment, which further complicates failure reproduction. To address these problems, we present DESCRY, the first fully automated tool for reproducing system-level concurrency failures based only on default log messages collected from the field. DESCRY uses a combination of static and dynamic analysis techniques, together with symbolic execution, to synthesize both the failure-inducing data input and the interleaving schedule, and leverages them to deterministically replay the failed execution using existing virtual platforms. We have evaluated DESCRY on 22 real-world multi-process Linux applications with a total of 236,875 lines of code to demonstrate both its effectiveness and its efficiency in reproducing failures that no other tool can reproduce.
并发系统可能由于各种难以捉摸的故障(如竞争条件)而在现场失败。再现这样的故障是困难的,因为(1)系统级的并发故障通常涉及多个进程或事件处理程序(例如,软件信号),而现有的再现进程内(线程级)故障的工具无法处理这些故障;(2)详细的现场数据,如用户输入、文件内容和交错时间表,可能无法提供给开发人员;(3)调试环境可能与部署环境不同,这进一步使故障再现变得复杂。为了解决这些问题,我们提出了DESCRY,这是第一个完全自动化的工具,仅基于从现场收集的默认日志消息来再现系统级并发性故障。DESCRY结合了静态和动态分析技术,以及符号执行,综合了导致故障的数据输入和交错调度,并利用它们确定地使用现有的虚拟平台重播失败的执行。我们在22个真实的多进程Linux应用程序上评估了DESCRY,总共有236,875行代码,以证明它在再现其他工具无法再现的故障方面的有效性和效率。
{"title":"DESCRY: reproducing system-level concurrency failures","authors":"Tingting Yu, T. S. Zaman, Chao Wang","doi":"10.1145/3106237.3106266","DOIUrl":"https://doi.org/10.1145/3106237.3106266","url":null,"abstract":"Concurrent systems may fail in the field due to various elusive faults such as race conditions. Reproducing such failures is hard because (1) concurrency failures at the system level often involve multiple processes or event handlers (e.g., software signals), which cannot be handled by existing tools for reproducing intra-process (thread-level) failures; (2) detailed field data, such as user input, file content and interleaving schedule, may not be available to developers; and (3) the debugging environment may differ from the deployed environment, which further complicates failure reproduction. To address these problems, we present DESCRY, the first fully automated tool for reproducing system-level concurrency failures based only on default log messages collected from the field. DESCRY uses a combination of static and dynamic analysis techniques, together with symbolic execution, to synthesize both the failure-inducing data input and the interleaving schedule, and leverages them to deterministically replay the failed execution using existing virtual platforms. We have evaluated DESCRY on 22 real-world multi-process Linux applications with a total of 236,875 lines of code to demonstrate both its effectiveness and its efficiency in reproducing failures that no other tool can reproduce.","PeriodicalId":313494,"journal":{"name":"Proceedings of the 2017 11th Joint Meeting on Foundations of Software Engineering","volume":"98 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-08-21","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"133034888","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 17
Reflections on the REST architectural style and "principled design of the modern web architecture" (impact paper award) 关于REST架构风格和“现代web架构的原则设计”的思考(影响力论文奖)
R. Fielding, R. Taylor, Justin R. Erenkrantz, M. Gorlick, Jim Whitehead, Rohit Khare, P. Oreizy
Seventeen years after its initial publication at ICSE 2000, the Representational State Transfer (REST) architectural style continues to hold significance as both a guide for understanding how the World Wide Web is designed to work and an example of how principled design, through the application of architectural styles, can impact the development and understanding of large-scale software architecture. However, REST has also become an industry buzzword: frequently abused to suit a particular argument, confused with the general notion of using HTTP, and denigrated for not being more like a programming methodology or implementation framework. In this paper, we chart the history, evolution, and shortcomings of REST, as well as several related architectural styles that it inspired, from the perspective of a chain of doctoral dissertations produced by the University of California's Institute for Software Research at UC Irvine. These successive theses share a common theme: extending the insights of REST to new domains and, in their own way, exploring the boundary of software engineering as it applies to decentralized software architectures and architectural design. We conclude with discussion of the circumstances, environment, and organizational characteristics that gave rise to this body of work.
在ICSE 2000上首次发表17年后,Representational State Transfer (REST)架构风格作为理解万维网如何设计工作的指南,以及通过架构风格的应用,原则性设计如何影响大规模软件架构的开发和理解的一个例子,仍然具有重要意义。然而,REST也已经成为一个行业流行语:经常被滥用以适应特定的论点,与使用HTTP的一般概念混淆,并因不更像编程方法或实现框架而受到诋毁。在本文中,我们从加州大学欧文分校软件研究所的一系列博士论文的角度,描绘了REST的历史、演变和缺点,以及它所启发的几个相关的架构风格。这些连续的论文都有一个共同的主题:将REST的见解扩展到新的领域,并以自己的方式探索软件工程的边界,因为它适用于分散的软件体系结构和体系结构设计。最后,我们将讨论产生本研究的环境、环境和组织特征。
{"title":"Reflections on the REST architectural style and \"principled design of the modern web architecture\" (impact paper award)","authors":"R. Fielding, R. Taylor, Justin R. Erenkrantz, M. Gorlick, Jim Whitehead, Rohit Khare, P. Oreizy","doi":"10.1145/3106237.3121282","DOIUrl":"https://doi.org/10.1145/3106237.3121282","url":null,"abstract":"Seventeen years after its initial publication at ICSE 2000, the Representational State Transfer (REST) architectural style continues to hold significance as both a guide for understanding how the World Wide Web is designed to work and an example of how principled design, through the application of architectural styles, can impact the development and understanding of large-scale software architecture. However, REST has also become an industry buzzword: frequently abused to suit a particular argument, confused with the general notion of using HTTP, and denigrated for not being more like a programming methodology or implementation framework. In this paper, we chart the history, evolution, and shortcomings of REST, as well as several related architectural styles that it inspired, from the perspective of a chain of doctoral dissertations produced by the University of California's Institute for Software Research at UC Irvine. These successive theses share a common theme: extending the insights of REST to new domains and, in their own way, exploring the boundary of software engineering as it applies to decentralized software architectures and architectural design. We conclude with discussion of the circumstances, environment, and organizational characteristics that gave rise to this body of work.","PeriodicalId":313494,"journal":{"name":"Proceedings of the 2017 11th Joint Meeting on Foundations of Software Engineering","volume":"55 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-08-21","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127637650","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 53
Improving performance of automatic program repair using learned heuristics 利用学习启发式改进自动程序修复的性能
Liam Schramm
Automatic program repair offers the promise of significant reduction in debugging time, but still faces challenges in making the process efficient, accurate, and generalizable enough for practical application. Recent efforts such as Prophet demonstrate that machine learning can be used to develop heuristics about which patches are likely to be correct, reducing overfitting problems and improving speed of repair. SearchRepair takes a different approach to accuracy, using blocks of human-written code as patches to better constrain repairs and avoid overfitting. This project combines Prophet's learning techniques with SearchRepair's larger block size to create a method that is both fast and accurate, leading to higher-quality repairs. We propose a novel first-pass filter to substantially reduce the number of candidate patches in SearchRepair and demonstrate 85% reduction in runtime over standard SearchRepair on the IntroClass dataset.
自动程序修复提供了显著减少调试时间的承诺,但仍然面临着使过程高效、准确和足以用于实际应用的通用性的挑战。Prophet等最近的努力表明,机器学习可以用来开发启发式方法,判断哪些补丁可能是正确的,从而减少过拟合问题,提高修复速度。SearchRepair采用不同的方法来提高准确性,使用人工编写的代码块作为补丁,以更好地约束修复并避免过拟合。该项目将Prophet的学习技术与SearchRepair更大的块大小相结合,创造了一种既快速又准确的方法,从而实现了更高质量的修复。我们提出了一种新的第一遍过滤器,以大幅减少SearchRepair中的候选补丁数量,并证明在IntroClass数据集上比标准SearchRepair减少85%的运行时间。
{"title":"Improving performance of automatic program repair using learned heuristics","authors":"Liam Schramm","doi":"10.1145/3106237.3121281","DOIUrl":"https://doi.org/10.1145/3106237.3121281","url":null,"abstract":"Automatic program repair offers the promise of significant reduction in debugging time, but still faces challenges in making the process efficient, accurate, and generalizable enough for practical application. Recent efforts such as Prophet demonstrate that machine learning can be used to develop heuristics about which patches are likely to be correct, reducing overfitting problems and improving speed of repair. SearchRepair takes a different approach to accuracy, using blocks of human-written code as patches to better constrain repairs and avoid overfitting. This project combines Prophet's learning techniques with SearchRepair's larger block size to create a method that is both fast and accurate, leading to higher-quality repairs. We propose a novel first-pass filter to substantially reduce the number of candidate patches in SearchRepair and demonstrate 85% reduction in runtime over standard SearchRepair on the IntroClass dataset.","PeriodicalId":313494,"journal":{"name":"Proceedings of the 2017 11th Joint Meeting on Foundations of Software Engineering","volume":"133 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-08-21","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"133663012","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 6
Thread-modular static analysis for relaxed memory models 宽松内存模型的线程模块化静态分析
Markus Kusano, Chao Wang
We propose a memory-model-aware static program analysis method for accurately analyzing the behavior of concurrent software running on processors with weak consistency models such as x86-TSO, SPARC-PSO, and SPARC-RMO. At the center of our method is a unified framework for deciding the feasibility of inter-thread interferences to avoid propagating spurious data flows during static analysis and thus boost the performance of the static analyzer. We formulate the checking of interference feasibility as a set of Datalog rules which are both efficiently solvable and general enough to capture a range of hardware-level memory models. Compared to existing techniques, our method can significantly reduce the number of bogus alarms as well as unsound proofs. We implemented the method and evaluated it on a large set of multithreaded C programs. Our experiments show the method significantly outperforms state-of-the-art techniques in terms of accuracy with only moderate runtime overhead.
我们提出了一种内存模型感知的静态程序分析方法,用于准确分析运行在具有弱一致性模型(如x86-TSO、SPARC-PSO和SPARC-RMO)处理器上的并发软件的行为。该方法的核心是一个统一的框架,用于确定线程间干扰的可行性,以避免在静态分析期间传播虚假数据流,从而提高静态分析器的性能。我们将干扰可行性的检查制定为一组数据规则,这些规则既可有效求解又足够通用,可以捕获一系列硬件级内存模型。与现有技术相比,我们的方法可以显著减少虚假警报的数量以及不可靠的证明。我们实现了这个方法,并在一个大的多线程C程序集上对它进行了评估。我们的实验表明,该方法在精度方面明显优于最先进的技术,而运行时开销适中。
{"title":"Thread-modular static analysis for relaxed memory models","authors":"Markus Kusano, Chao Wang","doi":"10.1145/3106237.3106243","DOIUrl":"https://doi.org/10.1145/3106237.3106243","url":null,"abstract":"We propose a memory-model-aware static program analysis method for accurately analyzing the behavior of concurrent software running on processors with weak consistency models such as x86-TSO, SPARC-PSO, and SPARC-RMO. At the center of our method is a unified framework for deciding the feasibility of inter-thread interferences to avoid propagating spurious data flows during static analysis and thus boost the performance of the static analyzer. We formulate the checking of interference feasibility as a set of Datalog rules which are both efficiently solvable and general enough to capture a range of hardware-level memory models. Compared to existing techniques, our method can significantly reduce the number of bogus alarms as well as unsound proofs. We implemented the method and evaluated it on a large set of multithreaded C programs. Our experiments show the method significantly outperforms state-of-the-art techniques in terms of accuracy with only moderate runtime overhead.","PeriodicalId":313494,"journal":{"name":"Proceedings of the 2017 11th Joint Meeting on Foundations of Software Engineering","volume":"2501 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2017-08-21","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131238557","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 18
期刊
Proceedings of the 2017 11th Joint Meeting on Foundations of Software Engineering
全部 Acc. Chem. Res. ACS Applied Bio Materials ACS Appl. Electron. Mater. ACS Appl. Energy Mater. ACS Appl. Mater. Interfaces ACS Appl. Nano Mater. ACS Appl. Polym. Mater. ACS BIOMATER-SCI ENG ACS Catal. ACS Cent. Sci. ACS Chem. Biol. ACS Chemical Health & Safety ACS Chem. Neurosci. ACS Comb. Sci. ACS Earth Space Chem. ACS Energy Lett. ACS Infect. Dis. ACS Macro Lett. ACS Mater. Lett. ACS Med. Chem. Lett. ACS Nano ACS Omega ACS Photonics ACS Sens. ACS Sustainable Chem. Eng. ACS Synth. Biol. Anal. Chem. BIOCHEMISTRY-US Bioconjugate Chem. BIOMACROMOLECULES Chem. Res. Toxicol. Chem. Rev. Chem. Mater. CRYST GROWTH DES ENERG FUEL Environ. Sci. Technol. Environ. Sci. Technol. Lett. Eur. J. Inorg. Chem. IND ENG CHEM RES Inorg. Chem. J. Agric. Food. Chem. J. Chem. Eng. Data J. Chem. Educ. J. Chem. Inf. Model. J. Chem. Theory Comput. J. Med. Chem. J. Nat. Prod. J PROTEOME RES J. Am. Chem. Soc. LANGMUIR MACROMOLECULES Mol. Pharmaceutics Nano Lett. Org. Lett. ORG PROCESS RES DEV ORGANOMETALLICS J. Org. Chem. J. Phys. Chem. J. Phys. Chem. A J. Phys. Chem. B J. Phys. Chem. C J. Phys. Chem. Lett. Analyst Anal. Methods Biomater. Sci. Catal. Sci. Technol. Chem. Commun. Chem. Soc. Rev. CHEM EDUC RES PRACT CRYSTENGCOMM Dalton Trans. Energy Environ. Sci. ENVIRON SCI-NANO ENVIRON SCI-PROC IMP ENVIRON SCI-WAT RES Faraday Discuss. Food Funct. Green Chem. Inorg. Chem. Front. Integr. Biol. J. Anal. At. Spectrom. J. Mater. Chem. A J. Mater. Chem. B J. Mater. Chem. C Lab Chip Mater. Chem. Front. Mater. Horiz. MEDCHEMCOMM Metallomics Mol. Biosyst. Mol. Syst. Des. Eng. Nanoscale Nanoscale Horiz. Nat. Prod. Rep. New J. Chem. Org. Biomol. Chem. Org. Chem. Front. PHOTOCH PHOTOBIO SCI PCCP Polym. Chem.
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
0
微信
客服QQ
Book学术公众号 扫码关注我们
反馈
×
意见反馈
请填写您的意见或建议
请填写您的手机或邮箱
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
现在去查看 取消
×
提示
确定
Book学术官方微信
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术
文献互助 智能选刊 最新文献 互助须知 联系我们:info@booksci.cn
Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。
Copyright © 2023 Book学术 All rights reserved.
ghs 京公网安备 11010802042870号 京ICP备2023020795号-1