首页 > 最新文献

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
Measuring neural efficiency of program comprehension 测量程序理解的神经效率
J. Siegmund, Norman Peitek, Chris Parnin, S. Apel, Johannes C. Hofmeister, Christian Kästner, Andrew Begel, A. Bethmann, A. Brechmann
Most modern software programs cannot be understood in their entirety by a single programmer. Instead, programmers must rely on a set of cognitive processes that aid in seeking, filtering, and shaping relevant information for a given programming task. Several theories have been proposed to explain these processes, such as ``beacons,' for locating relevant code, and ``plans,'' for encoding cognitive models. However, these theories are decades old and lack validation with modern cognitive-neuroscience methods. In this paper, we report on a study using functional magnetic resonance imaging (fMRI) with 11 participants who performed program comprehension tasks. We manipulated experimental conditions related to beacons and layout to isolate specific cognitive processes related to bottom-up comprehension and comprehension based on semantic cues. We found evidence of semantic chunking during bottom-up comprehension and lower activation of brain areas during comprehension based on semantic cues, confirming that beacons ease comprehension.
大多数现代软件程序不可能由一个程序员完全理解。相反,程序员必须依赖于一组认知过程,这些过程有助于为给定的编程任务寻找、过滤和塑造相关信息。已经提出了几个理论来解释这些过程,例如用于定位相关代码的“信标”和用于编码认知模型的“计划”。然而,这些理论已经有几十年的历史了,缺乏现代认知神经科学方法的验证。在本文中,我们报告了一项使用功能磁共振成像(fMRI)对11名参与者进行程序理解任务的研究。我们操纵了与信标和布局相关的实验条件,分离了与自下而上理解和基于语义线索的理解相关的特定认知过程。我们发现了自下而上理解过程中语义块化的证据,以及基于语义线索的理解过程中大脑区域激活程度较低的证据,证实了信标有助于理解。
{"title":"Measuring neural efficiency of program comprehension","authors":"J. Siegmund, Norman Peitek, Chris Parnin, S. Apel, Johannes C. Hofmeister, Christian Kästner, Andrew Begel, A. Bethmann, A. Brechmann","doi":"10.1145/3106237.3106268","DOIUrl":"https://doi.org/10.1145/3106237.3106268","url":null,"abstract":"Most modern software programs cannot be understood in their entirety by a single programmer. Instead, programmers must rely on a set of cognitive processes that aid in seeking, filtering, and shaping relevant information for a given programming task. Several theories have been proposed to explain these processes, such as ``beacons,' for locating relevant code, and ``plans,'' for encoding cognitive models. However, these theories are decades old and lack validation with modern cognitive-neuroscience methods. In this paper, we report on a study using functional magnetic resonance imaging (fMRI) with 11 participants who performed program comprehension tasks. We manipulated experimental conditions related to beacons and layout to isolate specific cognitive processes related to bottom-up comprehension and comprehension based on semantic cues. We found evidence of semantic chunking during bottom-up comprehension and lower activation of brain areas during comprehension based on semantic cues, confirming that beacons ease comprehension.","PeriodicalId":313494,"journal":{"name":"Proceedings of the 2017 11th Joint Meeting on Foundations of Software Engineering","volume":"114 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":"116526968","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}
引用次数: 101
Static analysis for optimizing big data queries 静态分析优化大数据查询
D. Garbervetsky, Zvonimir Pavlinovic, Mike Barnett, Madan Musuvathi, Todd Mytkowicz, Edgardo Zoppi
Query languages for big data analysis provide user extensibility through a mechanism of user-defined operators (UDOs). These operators allow programmers to write proprietary functionalities on top of a relational query skeleton. However, achieving effective query optimization for such languages is extremely challenging since the optimizer needs to understand data dependencies induced by UDOs. SCOPE, the query language from Microsoft, allows for hand coded declarations of UDO data dependencies. Unfortunately, most programmers avoid using this facility since writing and maintaining the declarations is tedious and error-prone. In this work, we designed and implemented two sound and robust static analyses for computing UDO data dependencies. The analyses can detect what columns of an input table are never used or pass-through a UDO unchanged. This information can be used to significantly improve execution of SCOPE scripts. We evaluate our analyses on thousands of real-world queries and show we can catch many unused and pass-through columns automatically without relying on any manually provided declarations.
用于大数据分析的查询语言通过用户自定义操作符(UDOs)机制提供用户可扩展性。这些操作符允许程序员在关系查询框架之上编写专有功能。然而,为这些语言实现有效的查询优化是极具挑战性的,因为优化器需要理解由dos引起的数据依赖性。SCOPE是来自Microsoft的查询语言,它允许手工编码UDO数据依赖关系的声明。不幸的是,大多数程序员都避免使用这种功能,因为编写和维护声明既繁琐又容易出错。在这项工作中,我们设计并实现了两个可靠的静态分析,用于计算UDO数据依赖关系。分析可以检测输入表的哪些列从未使用过,或者不加更改地传递UDO。此信息可用于显著改进SCOPE脚本的执行。我们对数千个实际查询进行了分析,并证明我们可以自动捕获许多未使用的和传递的列,而不依赖于任何手动提供的声明。
{"title":"Static analysis for optimizing big data queries","authors":"D. Garbervetsky, Zvonimir Pavlinovic, Mike Barnett, Madan Musuvathi, Todd Mytkowicz, Edgardo Zoppi","doi":"10.1145/3106237.3117774","DOIUrl":"https://doi.org/10.1145/3106237.3117774","url":null,"abstract":"Query languages for big data analysis provide user extensibility through a mechanism of user-defined operators (UDOs). These operators allow programmers to write proprietary functionalities on top of a relational query skeleton. However, achieving effective query optimization for such languages is extremely challenging since the optimizer needs to understand data dependencies induced by UDOs. SCOPE, the query language from Microsoft, allows for hand coded declarations of UDO data dependencies. Unfortunately, most programmers avoid using this facility since writing and maintaining the declarations is tedious and error-prone. In this work, we designed and implemented two sound and robust static analyses for computing UDO data dependencies. The analyses can detect what columns of an input table are never used or pass-through a UDO unchanged. This information can be used to significantly improve execution of SCOPE scripts. We evaluate our analyses on thousands of real-world queries and show we can catch many unused and pass-through columns automatically without relying on any manually provided declarations.","PeriodicalId":313494,"journal":{"name":"Proceedings of the 2017 11th Joint Meeting on Foundations of Software Engineering","volume":"73 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":"122035704","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
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
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
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
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
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
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学术文献互助群
群 号:604180095
Book学术
文献互助 智能选刊 最新文献 互助须知 联系我们:info@booksci.cn
Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。
Copyright © 2023 Book学术 All rights reserved.
ghs 京公网安备 11010802042870号 京ICP备2023020795号-1