首页 > 最新文献

2018 IEEE/ACM 40th International Conference on Software Engineering (ICSE)最新文献

英文 中文
Neuro-Symbolic Program Corrector for Introductory Programming Assignments 用于介绍性编程作业的神经符号程序校正器
Pub Date : 2018-05-27 DOI: 10.1145/3180155.3180219
Sahil Bhatia, Pushmeet Kohli, Rishabh Singh
Automatic correction of programs is a challenging problem with numerous real world applications in security, verification, and education. One application that is becoming increasingly important is the correction of student submissions in online courses for providing feedback. Most existing program repair techniques analyze Abstract Syntax Trees (ASTs) of programs, which are unfortunately unavailable for programs with syntax errors. In this paper, we propose a novel Neuro-symbolic approach that combines neural networks with constraint-based reasoning. Specifically, our method first uses a Recurrent Neural Network (RNN) to perform syntax repairs for the buggy programs; subsequently, the resulting syntactically-fixed programs are repaired using constraint-based techniques to ensure functional correctness. The RNNs are trained using a corpus of syntactically correct submissions for a given programming assignment, and are then queried to fix syntax errors in an incorrect programming submission by replacing or inserting the predicted tokens at the error location. We evaluate our technique on a dataset comprising of over 14,500 student submissions with syntax errors. Our method is able to repair syntax errors in 60% (8689) of submissions, and finds functionally correct repairs for 23.8% (3455) submissions.
在安全、验证和教育领域的许多实际应用中,程序的自动校正是一个具有挑战性的问题。一个越来越重要的应用是修改在线课程中学生提交的内容,以提供反馈。大多数现有的程序修复技术分析程序的抽象语法树(ast),不幸的是,这些树对于有语法错误的程序是不可用的。在本文中,我们提出了一种新的神经符号方法,将神经网络与基于约束的推理相结合。具体来说,我们的方法首先使用循环神经网络(RNN)对有缺陷的程序进行语法修复;随后,使用基于约束的技术修复得到的语法固定的程序,以确保功能的正确性。对于给定的编程任务,rnn使用语法正确的提交语料库进行训练,然后通过在错误位置替换或插入预测的令牌来查询以修复错误编程提交中的语法错误。我们在包含超过14,500个语法错误的学生提交的数据集上评估了我们的技术。我们的方法能够修复60%(8689)的提交中的语法错误,并为23.8%(3455)的提交找到功能正确的修复。
{"title":"Neuro-Symbolic Program Corrector for Introductory Programming Assignments","authors":"Sahil Bhatia, Pushmeet Kohli, Rishabh Singh","doi":"10.1145/3180155.3180219","DOIUrl":"https://doi.org/10.1145/3180155.3180219","url":null,"abstract":"Automatic correction of programs is a challenging problem with numerous real world applications in security, verification, and education. One application that is becoming increasingly important is the correction of student submissions in online courses for providing feedback. Most existing program repair techniques analyze Abstract Syntax Trees (ASTs) of programs, which are unfortunately unavailable for programs with syntax errors. In this paper, we propose a novel Neuro-symbolic approach that combines neural networks with constraint-based reasoning. Specifically, our method first uses a Recurrent Neural Network (RNN) to perform syntax repairs for the buggy programs; subsequently, the resulting syntactically-fixed programs are repaired using constraint-based techniques to ensure functional correctness. The RNNs are trained using a corpus of syntactically correct submissions for a given programming assignment, and are then queried to fix syntax errors in an incorrect programming submission by replacing or inserting the predicted tokens at the error location. We evaluate our technique on a dataset comprising of over 14,500 student submissions with syntax errors. Our method is able to repair syntax errors in 60% (8689) of submissions, and finds functionally correct repairs for 23.8% (3455) submissions.","PeriodicalId":6560,"journal":{"name":"2018 IEEE/ACM 40th International Conference on Software Engineering (ICSE)","volume":"4 1","pages":"60-70"},"PeriodicalIF":0.0,"publicationDate":"2018-05-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"89273159","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}
引用次数: 71
A Large-Scale Empirical Study on the Effects of Code Obfuscations on Android Apps and Anti-Malware Products 代码混淆对Android应用和反恶意软件产品影响的大规模实证研究
Pub Date : 2018-05-27 DOI: 10.1145/3180155.3180228
Mahmoud M. Hammad, Joshua Garcia, S. Malek
The Android platform has been the dominant mobile platform in recent years resulting in millions of apps and security threats against those apps. Anti-malware products aim to protect smartphone users from these threats, especially from malicious apps. However, malware authors use code obfuscation on their apps to evade detection by anti-malware products. To assess the effects of code obfuscation on Android apps and anti-malware products, we have conducted a large-scale empirical study that evaluates the effectiveness of the top anti-malware products against various obfuscation tools and strategies. To that end, we have obfuscated 3,000 benign apps and 3,000 malicious apps and generated 73,362 obfuscated apps using 29 obfuscation strategies from 7 open-source, academic, and commercial obfuscation tools. The findings of our study indicate that (1) code obfuscation significantly impacts Android anti-malware products; (2) the majority of anti-malware products are severely impacted by even trivial obfuscations; (3) in general, combined obfuscation strategies do not successfully evade anti-malware products more than individual strategies; (4) the detection of anti-malware products depend not only on the applied obfuscation strategy but also on the leveraged obfuscation tool; (5) anti-malware products are slow to adopt signatures of malicious apps; and (6) code obfuscation often results in changes to an app's semantic behaviors.
近年来,Android平台一直是占主导地位的移动平台,导致数以百万计的应用程序和针对这些应用的安全威胁。反恶意软件产品旨在保护智能手机用户免受这些威胁,尤其是来自恶意应用程序的威胁。然而,恶意软件的作者在他们的应用程序上使用代码混淆来逃避反恶意软件产品的检测。为了评估代码混淆对Android应用和反恶意软件产品的影响,我们进行了一项大规模的实证研究,评估了顶级反恶意软件产品对各种混淆工具和策略的有效性。为此,我们混淆了3000个良性应用程序和3000个恶意应用程序,并使用来自7个开源,学术和商业混淆工具的29种混淆策略生成了73362个混淆应用程序。研究结果表明:(1)代码混淆显著影响Android反恶意软件产品;(2)大多数反恶意软件产品即使受到微不足道的混淆也会受到严重影响;(3)总的来说,组合混淆策略比单个策略更不能成功地逃避反恶意软件产品;(4)反恶意软件产品的检测不仅依赖于应用的混淆策略,还依赖于利用的混淆工具;(5)反恶意软件产品采用恶意应用签名的速度较慢;(6)代码混淆通常会导致应用的语义行为发生变化。
{"title":"A Large-Scale Empirical Study on the Effects of Code Obfuscations on Android Apps and Anti-Malware Products","authors":"Mahmoud M. Hammad, Joshua Garcia, S. Malek","doi":"10.1145/3180155.3180228","DOIUrl":"https://doi.org/10.1145/3180155.3180228","url":null,"abstract":"The Android platform has been the dominant mobile platform in recent years resulting in millions of apps and security threats against those apps. Anti-malware products aim to protect smartphone users from these threats, especially from malicious apps. However, malware authors use code obfuscation on their apps to evade detection by anti-malware products. To assess the effects of code obfuscation on Android apps and anti-malware products, we have conducted a large-scale empirical study that evaluates the effectiveness of the top anti-malware products against various obfuscation tools and strategies. To that end, we have obfuscated 3,000 benign apps and 3,000 malicious apps and generated 73,362 obfuscated apps using 29 obfuscation strategies from 7 open-source, academic, and commercial obfuscation tools. The findings of our study indicate that (1) code obfuscation significantly impacts Android anti-malware products; (2) the majority of anti-malware products are severely impacted by even trivial obfuscations; (3) in general, combined obfuscation strategies do not successfully evade anti-malware products more than individual strategies; (4) the detection of anti-malware products depend not only on the applied obfuscation strategy but also on the leveraged obfuscation tool; (5) anti-malware products are slow to adopt signatures of malicious apps; and (6) code obfuscation often results in changes to an app's semantic behaviors.","PeriodicalId":6560,"journal":{"name":"2018 IEEE/ACM 40th International Conference on Software Engineering (ICSE)","volume":"23 1","pages":"421-431"},"PeriodicalIF":0.0,"publicationDate":"2018-05-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"86534591","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}
引用次数: 56
[Journal First] A Posteriori Typing for Model-Driven Engineering: Concepts, Analysis, and Applications [j]模型驱动工程的后验分类:概念、分析和应用
Pub Date : 2018-05-01 DOI: 10.1145/3180155.3182545
J. de Lara, E. Guerra
Model-Driven Engineering (MDE) is a software engineering paradigm where models are actively used to specify, test, simulate, analyse and maintain the systems to be built, among other activities. Models can be defined using general-purpose modelling languages like the UML, but for particular domains, the use of domain-specific languages is pervasive. Either way, models must conform to a meta-model which defines their abstract syntax. In MDE, the definition of model management operations – often typed over project-specific meta-models – is recurrent. However, even if two operations are similar, they must be developed from scratch whenever they are applied to instances of different meta-models. This is so as operations defined (i.e., typed) over a meta-model cannot be directly reused for another. Part of this difficulty of reuse is because classes in meta-models are used in two ways: as templates to create objects and as static classifiers for them. These two aspects are inherently tied in most meta-modelling approaches, which results in unnecessarily rigid systems and hinders reusability of MDE artefacts. To enhance flexibility and reuse in MDE, we propose an approach to decouple object creation from typing [1]. The approach relies on standard mechanisms for object creation, and proposes the notion of a posteriori typing as a means to retype objects and enable multiple, partial, dynamic typings. A posteriori typing enhances flexibility because it allows models to be retyped with respect to other meta-models. Hence, we distinguish between creation meta-models used to construct models, and role meta-models into which models are retyped. This permits unanticipated reuse, as a model management operation defined for a role meta-model can be reused as-is with models built using a different creation meta-model, once such models are reclassified. Moreover, our approach permits expressing some types of bidirectional model transformations by reclassification. The transformations defined as reclassifications have better performance than the equivalent ones defined with traditional transformation languages, because reclassification does not require creating new objects. In [1], we propose two mechanisms to define a posteriori typings: type-level (mappings between meta-models) and instance-level (set of model queries). The paper presents the underlying theory and type correctness criteria of both mechanisms, defines some analysis methods, identifies practical restrictions for retyping specifications, and demonstrates the feasibility of the approach by an implementation atop our meta-modelling tool MetaDepth. We also explore application scenarios of a posteriori typing (to define transformations, for model transformation reuse, and to improve transformation expressiveness by dynamic type change), and present an experiment showing the potential performance gains when expressing transformations as retypings. The tool is available at http://metadepth.org/. A catalo
模型驱动工程(MDE)是一种软件工程范例,其中模型被积极地用于指定、测试、模拟、分析和维护要构建的系统,以及其他活动。可以使用像UML这样的通用建模语言来定义模型,但是对于特定的领域,使用特定于领域的语言是普遍的。无论哪种方式,模型都必须符合定义其抽象语法的元模型。在MDE中,模型管理操作的定义(通常在特定于项目的元模型上键入)是反复出现的。然而,即使两个操作是相似的,当它们应用于不同元模型的实例时,也必须从头开始开发。这是因为在一个元模型上定义的(例如,键入的)操作不能直接用于另一个元模型。重用的困难部分是因为元模型中的类以两种方式使用:作为创建对象的模板和作为对象的静态分类器。这两个方面在大多数元建模方法中是固有地联系在一起的,这会导致不必要的刚性系统,并阻碍MDE工件的可重用性。为了增强MDE中的灵活性和重用性,我们提出了一种将对象创建与类型分离的方法[1]。该方法依赖于对象创建的标准机制,并提出了后验类型化的概念,作为重新类型化对象和支持多个、部分和动态类型的方法。后验类型增强了灵活性,因为它允许模型相对于其他元模型重新类型化。因此,我们区分了用于构造模型的创建元模型,以及将模型重新类型化的角色元模型。这允许意外重用,因为为角色元模型定义的模型管理操作可以与使用不同创建元模型构建的模型按原样重用,一旦这些模型被重新分类。此外,我们的方法允许通过重新分类来表达某些类型的双向模型转换。定义为重分类的转换比使用传统转换语言定义的等效转换具有更好的性能,因为重分类不需要创建新对象。在[1]中,我们提出了两种机制来定义后验类型:类型级(元模型之间的映射)和实例级(模型查询集)。本文介绍了这两种机制的基本理论和类型正确性标准,定义了一些分析方法,确定了重类型规范的实际限制,并通过在元建模工具MetaDepth上的实现演示了该方法的可行性。我们还探讨了后验类型的应用场景(定义转换,用于模型转换重用,并通过动态类型更改来改进转换的表达性),并提供了一个实验,展示了将转换表示为重类型时的潜在性能增益。该工具可在http://metadepth.org/上获得。表示为重类型的转换目录,以及桥接反复出现的元模型异构的重类型,可在http://miso.es/aposteriori/上获得。[1][参考文献]。模型驱动工程的后验类型:概念、分析和应用程序。ACM反式。Softw。Eng。方法学报,25,4(2017),31:1 - 31:1 . 60。https://doi.org/10.1145/3063384
{"title":"[Journal First] A Posteriori Typing for Model-Driven Engineering: Concepts, Analysis, and Applications","authors":"J. de Lara, E. Guerra","doi":"10.1145/3180155.3182545","DOIUrl":"https://doi.org/10.1145/3180155.3182545","url":null,"abstract":"Model-Driven Engineering (MDE) is a software engineering paradigm where models are actively used to specify, test, simulate, analyse and maintain the systems to be built, among other activities. Models can be defined using general-purpose modelling languages like the UML, but for particular domains, the use of domain-specific languages is pervasive. Either way, models must conform to a meta-model which defines their abstract syntax. In MDE, the definition of model management operations – often typed over project-specific meta-models – is recurrent. However, even if two operations are similar, they must be developed from scratch whenever they are applied to instances of different meta-models. This is so as operations defined (i.e., typed) over a meta-model cannot be directly reused for another. Part of this difficulty of reuse is because classes in meta-models are used in two ways: as templates to create objects and as static classifiers for them. These two aspects are inherently tied in most meta-modelling approaches, which results in unnecessarily rigid systems and hinders reusability of MDE artefacts. To enhance flexibility and reuse in MDE, we propose an approach to decouple object creation from typing [1]. The approach relies on standard mechanisms for object creation, and proposes the notion of a posteriori typing as a means to retype objects and enable multiple, partial, dynamic typings. A posteriori typing enhances flexibility because it allows models to be retyped with respect to other meta-models. Hence, we distinguish between creation meta-models used to construct models, and role meta-models into which models are retyped. This permits unanticipated reuse, as a model management operation defined for a role meta-model can be reused as-is with models built using a different creation meta-model, once such models are reclassified. Moreover, our approach permits expressing some types of bidirectional model transformations by reclassification. The transformations defined as reclassifications have better performance than the equivalent ones defined with traditional transformation languages, because reclassification does not require creating new objects. In [1], we propose two mechanisms to define a posteriori typings: type-level (mappings between meta-models) and instance-level (set of model queries). The paper presents the underlying theory and type correctness criteria of both mechanisms, defines some analysis methods, identifies practical restrictions for retyping specifications, and demonstrates the feasibility of the approach by an implementation atop our meta-modelling tool MetaDepth. We also explore application scenarios of a posteriori typing (to define transformations, for model transformation reuse, and to improve transformation expressiveness by dynamic type change), and present an experiment showing the potential performance gains when expressing transformations as retypings. The tool is available at http://metadepth.org/. A catalo","PeriodicalId":6560,"journal":{"name":"2018 IEEE/ACM 40th International Conference on Software Engineering (ICSE)","volume":"18 1","pages":"1136-1136"},"PeriodicalIF":0.0,"publicationDate":"2018-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"81519720","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}
引用次数: 0
[Journal First] Does Syntax Highlighting Help Programming Novices? 语法高亮对编程新手有帮助吗?
Pub Date : 2018-05-01 DOI: 10.1145/3180155.3182554
C. Hannebauer, M. Hesenius, V. Gruhn
Background: Program comprehension is an important skill for programmers – extending and debugging existing source code is part of the daily routine. Syntax highlighting is one of the most common tools used to support developers in understanding algorithms. However, most research in this area originates from a time when programmers used a completely different tool chain. Objective: We examined the influence of syntax highlighting on novices' ability to comprehend source code. Additional analyses cover the influence of task type and programming experience on the code comprehension ability itself and its relation to syntax highlighting. Method: We conducted a controlled experiment with 390 undergraduate students in an introductory Java programming course. We measured the correctness with which they solved small coding tasks. Each test subject received some tasks with syntax highlighting and some without. Results: The data provided no evidence that syntax highlighting improves novices' ability to comprehend source code. Limitations: There are very few similar experiments and it is unclear as of yet which factors impact the effectiveness of syntax highlighting. One major limitation may be the types of tasks chosen for this experiment. Conclusion: The results suggest that syntax highlighting squanders a feedback channel from the IDE to the programmer that can be used more effectively.
背景:程序理解对程序员来说是一项重要的技能——扩展和调试现有的源代码是日常工作的一部分。语法突出显示是用于支持开发人员理解算法的最常用工具之一。然而,这个领域的大多数研究都起源于程序员使用完全不同的工具链的时代。目的:探讨语法高亮对初学者理解源代码能力的影响。另外还分析了任务类型和编程经验对代码理解能力本身的影响及其与语法突出显示的关系。方法:我们对390名选修Java编程入门课程的本科生进行了对照实验。我们衡量了他们解决小型编码任务的正确性。每个测试对象都收到了一些有语法高亮显示的任务,一些没有。结果:数据没有证据表明语法高亮提高了初学者理解源代码的能力。局限性:类似的实验很少,目前还不清楚哪些因素会影响语法高亮显示的有效性。一个主要的限制可能是为这个实验选择的任务类型。结论:结果表明,语法高亮浪费了一个从IDE到程序员的反馈通道,而这个通道可以更有效地使用。
{"title":"[Journal First] Does Syntax Highlighting Help Programming Novices?","authors":"C. Hannebauer, M. Hesenius, V. Gruhn","doi":"10.1145/3180155.3182554","DOIUrl":"https://doi.org/10.1145/3180155.3182554","url":null,"abstract":"Background: Program comprehension is an important skill for programmers – extending and debugging existing source code is part of the daily routine. Syntax highlighting is one of the most common tools used to support developers in understanding algorithms. However, most research in this area originates from a time when programmers used a completely different tool chain. Objective: We examined the influence of syntax highlighting on novices' ability to comprehend source code. Additional analyses cover the influence of task type and programming experience on the code comprehension ability itself and its relation to syntax highlighting. Method: We conducted a controlled experiment with 390 undergraduate students in an introductory Java programming course. We measured the correctness with which they solved small coding tasks. Each test subject received some tasks with syntax highlighting and some without. Results: The data provided no evidence that syntax highlighting improves novices' ability to comprehend source code. Limitations: There are very few similar experiments and it is unclear as of yet which factors impact the effectiveness of syntax highlighting. One major limitation may be the types of tasks chosen for this experiment. Conclusion: The results suggest that syntax highlighting squanders a feedback channel from the IDE to the programmer that can be used more effectively.","PeriodicalId":6560,"journal":{"name":"2018 IEEE/ACM 40th International Conference on Software Engineering (ICSE)","volume":"5 1","pages":"704-704"},"PeriodicalIF":0.0,"publicationDate":"2018-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"89408061","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
[Journal First] Older Adults and Hackathons: A Qualitative Study 老年人与黑客马拉松:一项定性研究
Pub Date : 2018-05-01 DOI: 10.1145/3180155.3182547
Wiesław Kopeć, Bartłomiej Balcerzak, R. Nielek, Grzegorz Kowalik, A. Wierzbicki, F. Casati
Globally observed trends in aging indicate that older adults constitute a growing share of the population and an increasing demographic in the modern technologies marketplace. Therefore, it has become important to address the issue of participation of older adults in the process of developing solutions suitable for their group. In this study, we approached this topic by organizing a hackathon involving teams of young programmers and older adult participants. In our paper we describe a case study of that hackathon, in which our objective was to motivate older adults to participate in software engineering processes. Based on our results from an array of qualitative methods, we propose a set of good practices that may lead to improved older adult participation in similar events and an improved process of developing apps that target older adults.
全球观察到的老龄化趋势表明,老年人在人口中所占的份额越来越大,在现代技术市场中的人口也越来越多。因此,解决老年人参与制定适合其群体的解决办法的过程的问题变得很重要。在这项研究中,我们通过组织一个由年轻程序员和年长参与者组成的黑客马拉松来接近这个主题。在我们的论文中,我们描述了一个黑客马拉松的案例研究,其中我们的目标是激励老年人参与软件工程过程。根据一系列定性方法的结果,我们提出了一套良好的做法,这些做法可能会提高老年人对类似活动的参与度,并改进针对老年人的应用程序开发过程。
{"title":"[Journal First] Older Adults and Hackathons: A Qualitative Study","authors":"Wiesław Kopeć, Bartłomiej Balcerzak, R. Nielek, Grzegorz Kowalik, A. Wierzbicki, F. Casati","doi":"10.1145/3180155.3182547","DOIUrl":"https://doi.org/10.1145/3180155.3182547","url":null,"abstract":"Globally observed trends in aging indicate that older adults constitute a growing share of the population and an increasing demographic in the modern technologies marketplace. Therefore, it has become important to address the issue of participation of older adults in the process of developing solutions suitable for their group. In this study, we approached this topic by organizing a hackathon involving teams of young programmers and older adult participants. In our paper we describe a case study of that hackathon, in which our objective was to motivate older adults to participate in software engineering processes. Based on our results from an array of qualitative methods, we propose a set of good practices that may lead to improved older adult participation in similar events and an improved process of developing apps that target older adults.","PeriodicalId":6560,"journal":{"name":"2018 IEEE/ACM 40th International Conference on Software Engineering (ICSE)","volume":"96 1","pages":"702-703"},"PeriodicalIF":0.0,"publicationDate":"2018-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"90823084","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}
引用次数: 2
[Journal First] MSeer – An Advanced Technique for Locating Multiple Bugs in Parallel [期刊第一]MSeer -一种并行定位多个bug的先进技术
Pub Date : 2018-05-01 DOI: 10.1145/3180155.3182552
Ruizhi Gao, E. Wong
In practice, a program may contain multiple bugs. The simultaneous presence of these bugs may deteriorate the effectiveness of existing fault-localization techniques to locate program bugs. While it is acceptable to use all failed and successful tests to identify suspicious code for programs with exactly one bug, it is not appropriate to use the same approach for programs with multiple bugs because the due-to relationship between failed tests and underlying bugs cannot be easily identified. One solution is to generate fault-focused clusters by grouping failed tests caused by the same bug into the same clusters. We propose MSeer - an advanced fault localization technique for locating multiple bugs in parallel. Our major contributions include the use of (1) a revised Kendall tau distance to measure the distance between two failed tests, (2) an innovative approach to simultaneously estimate the number of clusters and assign initial medoids to these clusters, and (3) an improved K-medoids clustering algorithm to better identify the due-to relationship between failed tests and their corresponding bugs. Case studies on 840 multiple-bug versions of seven programs suggest that MSeer performs better in terms of effectiveness and efficiency than two other techniques for locating multiple bugs in parallel.
实际上,一个程序可能包含多个错误。这些错误的同时存在可能会降低现有错误定位技术定位程序错误的有效性。虽然使用所有失败和成功的测试来识别只有一个错误的程序的可疑代码是可以接受的,但对于有多个错误的程序使用相同的方法是不合适的,因为失败的测试和潜在的错误之间的因果关系不容易识别。一种解决方案是通过将由相同错误引起的失败测试分组到相同的集群中来生成以故障为中心的集群。我们提出了MSeer -一种先进的故障定位技术,用于并行定位多个错误。我们的主要贡献包括使用(1)修订的Kendall tau距离来测量两个失败测试之间的距离,(2)一种创新的方法来同时估计聚类的数量并为这些聚类分配初始介质,以及(3)改进的k -介质聚类算法来更好地识别失败测试与其相应错误之间的因果关系。对7个程序的840个多错误版本的案例研究表明,MSeer在并行定位多个错误方面的有效性和效率优于其他两种技术。
{"title":"[Journal First] MSeer – An Advanced Technique for Locating Multiple Bugs in Parallel","authors":"Ruizhi Gao, E. Wong","doi":"10.1145/3180155.3182552","DOIUrl":"https://doi.org/10.1145/3180155.3182552","url":null,"abstract":"In practice, a program may contain multiple bugs. The simultaneous presence of these bugs may deteriorate the effectiveness of existing fault-localization techniques to locate program bugs. While it is acceptable to use all failed and successful tests to identify suspicious code for programs with exactly one bug, it is not appropriate to use the same approach for programs with multiple bugs because the due-to relationship between failed tests and underlying bugs cannot be easily identified. One solution is to generate fault-focused clusters by grouping failed tests caused by the same bug into the same clusters. We propose MSeer - an advanced fault localization technique for locating multiple bugs in parallel. Our major contributions include the use of (1) a revised Kendall tau distance to measure the distance between two failed tests, (2) an innovative approach to simultaneously estimate the number of clusters and assign initial medoids to these clusters, and (3) an improved K-medoids clustering algorithm to better identify the due-to relationship between failed tests and their corresponding bugs. Case studies on 840 multiple-bug versions of seven programs suggest that MSeer performs better in terms of effectiveness and efficiency than two other techniques for locating multiple bugs in parallel.","PeriodicalId":6560,"journal":{"name":"2018 IEEE/ACM 40th International Conference on Software Engineering (ICSE)","volume":"40 1","pages":"1064-1064"},"PeriodicalIF":0.0,"publicationDate":"2018-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"74109656","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}
引用次数: 47
[Journal First] What Makes a Great Manager of Software Engineers? 【期刊第一篇】如何成为优秀的软件工程师经理?
Pub Date : 2018-05-01 DOI: 10.1145/3180155.3182525
Eirini Kalliamvakou, C. Bird, Thomas Zimmermann, Andrew Begel, R. Deline, D. Germán
Having great managers is as critical to success as having a good team or organization. A great manager is seen as fuelling the team they manage, enabling it to use its full potential. Though software engineering research studies factors that may affect the performance and productivity of software engineers and teams (like tools and skill), it has overlooked the software engineering manager. On the one hand, experts are questioning how the abundant work in management applies to software engineering. On the other hand, practitioners are looking to researchers for evidence-based guidance on how to manage software teams. We conducted a mixed methods empirical study to investigate what manager attributes developers and engineering managers perceive important and why. We present a conceptual framework of manager attributes, and find that technical skills are not the sign of greatness for an engineering manager. Through statistical analysis we identify how engineers and managers relate in their views, and how software engineering differs from other knowledge work groups.
拥有优秀的管理者与拥有优秀的团队或组织一样,对成功至关重要。一个伟大的管理者被视为激励他们所管理的团队,使其充分发挥潜力。虽然软件工程研究研究可能影响软件工程师和团队的性能和生产力的因素(如工具和技能),但它忽略了软件工程经理。一方面,专家们质疑管理方面的大量工作如何应用于软件工程。另一方面,实践者正在向研究人员寻求关于如何管理软件团队的循证指导。我们进行了一项混合方法的实证研究,以调查开发人员和工程经理认为重要的经理属性及其原因。我们提出了经理属性的概念框架,并发现技术技能并不是工程经理伟大的标志。通过统计分析,我们确定了工程师和管理人员在他们的观点中是如何关联的,以及软件工程与其他知识工作组的不同之处。
{"title":"[Journal First] What Makes a Great Manager of Software Engineers?","authors":"Eirini Kalliamvakou, C. Bird, Thomas Zimmermann, Andrew Begel, R. Deline, D. Germán","doi":"10.1145/3180155.3182525","DOIUrl":"https://doi.org/10.1145/3180155.3182525","url":null,"abstract":"Having great managers is as critical to success as having a good team or organization. A great manager is seen as fuelling the team they manage, enabling it to use its full potential. Though software engineering research studies factors that may affect the performance and productivity of software engineers and teams (like tools and skill), it has overlooked the software engineering manager. On the one hand, experts are questioning how the abundant work in management applies to software engineering. On the other hand, practitioners are looking to researchers for evidence-based guidance on how to manage software teams. We conducted a mixed methods empirical study to investigate what manager attributes developers and engineering managers perceive important and why. We present a conceptual framework of manager attributes, and find that technical skills are not the sign of greatness for an engineering manager. Through statistical analysis we identify how engineers and managers relate in their views, and how software engineering differs from other knowledge work groups.","PeriodicalId":6560,"journal":{"name":"2018 IEEE/ACM 40th International Conference on Software Engineering (ICSE)","volume":"30 5","pages":"701-701"},"PeriodicalIF":0.0,"publicationDate":"2018-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"72889967","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}
引用次数: 1
[Journal First] Predicting Future Developer Behavior in the IDE Using Topic Models 使用主题模型预测IDE中未来开发人员的行为
Pub Date : 2018-05-01 DOI: 10.1145/3180155.3182541
Kostadin Damevski, Hui Chen, D. Shepherd, Nicholas A. Kraft, L. Pollock
Interaction data, gathered from developers' daily clicks and key presses in the IDE, has found use in both empirical studies and in recommendation systems for software engineering. We observe that this data has several characteristics, common across IDEs: 1) exponentially distributed - some events or commands dominate the trace (e.g., cursor movement commands), while most other commands occur relatively infrequently; 2) noisy - the traces include spurious commands (or clicks), or unrelated events, that may not be important to the behavior of interest; 3) comprise of overlapping events and commands - specific commands can be invoked by separate mechanisms, and similar events can be triggered by different sources. These characteristics of this data are analogous to the characteristics of synonymy and polysemy in natural language corpora. Therefore, this paper (and presentation) presents a new modeling approach for this type of data, leveraging topic models typically applied to streams of natural language text.
从开发人员在IDE中的日常点击和按键中收集的交互数据已经在实证研究和软件工程推荐系统中得到了应用。我们观察到这些数据有几个特征,这些特征在ide中很常见:1)指数分布——一些事件或命令在跟踪中占主导地位(例如,光标移动命令),而大多数其他命令出现的频率相对较低;2)噪声-跟踪包括虚假命令(或点击)或不相关的事件,这些事件可能对感兴趣的行为不重要;3)由重叠的事件和命令组成——特定的命令可以通过单独的机制调用,类似的事件可以由不同的来源触发。这些数据的特征与自然语言语料库中同义词和多义的特征相似。因此,本文(和演示文稿)为这类数据提出了一种新的建模方法,利用通常应用于自然语言文本流的主题模型。
{"title":"[Journal First] Predicting Future Developer Behavior in the IDE Using Topic Models","authors":"Kostadin Damevski, Hui Chen, D. Shepherd, Nicholas A. Kraft, L. Pollock","doi":"10.1145/3180155.3182541","DOIUrl":"https://doi.org/10.1145/3180155.3182541","url":null,"abstract":"Interaction data, gathered from developers' daily clicks and key presses in the IDE, has found use in both empirical studies and in recommendation systems for software engineering. We observe that this data has several characteristics, common across IDEs: 1) exponentially distributed - some events or commands dominate the trace (e.g., cursor movement commands), while most other commands occur relatively infrequently; 2) noisy - the traces include spurious commands (or clicks), or unrelated events, that may not be important to the behavior of interest; 3) comprise of overlapping events and commands - specific commands can be invoked by separate mechanisms, and similar events can be triggered by different sources. These characteristics of this data are analogous to the characteristics of synonymy and polysemy in natural language corpora. Therefore, this paper (and presentation) presents a new modeling approach for this type of data, leveraging topic models typically applied to streams of natural language text.","PeriodicalId":6560,"journal":{"name":"2018 IEEE/ACM 40th International Conference on Software Engineering (ICSE)","volume":"105 3","pages":"932-932"},"PeriodicalIF":0.0,"publicationDate":"2018-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"72572749","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}
引用次数: 2
[Journal First] Are Fix-Inducing Changes a Moving Target?: A Longitudinal Case Study of Just-in-Time Defect Prediction [期刊第一]修正诱导变化是一个移动的目标吗?即时缺陷预测的纵向案例研究
Pub Date : 2018-05-01 DOI: 10.1145/3180155.3182514
Shane McIntosh, Yasutaka Kamei
Just-In-Time (JIT) models identify fix-inducing code changes. JIT models are trained using techniques that assume that past fix-inducing changes are similar to future ones. However, this assumption may not hold, e.g., as system complexity tends to accrue, expertise may become more important as systems age. In this paper, we study JIT models as systems evolve. Through a longitudinal case study of 37,524 changes from the rapidly evolving Qt and OpenStack systems, we find that fluctuations in the properties of fix-inducing changes can impact the performance and interpretation of JIT models. More specifically: (a) the discriminatory power (AUC) and calibration (Brier) scores of JIT models drop considerably one year after being trained; (b) the role that code change properties (e.g., Size, Experience) play within JIT models fluctuates over time; and (c) those fluctuations yield over- and underestimates of the future impact of code change properties on the likelihood of inducing fixes. To avoid erroneous or misleading predictions, JIT models should be retrained using recently recorded data (within three months). Moreover, quality improvement plans should be informed by JIT models that are trained using six months (or more) of historical data, since they are more resilient to period-specific fluctuations in the importance of code change properties.
即时(JIT)模型识别引起修复的代码更改。JIT模型使用的技术假定过去引起修复的更改与未来的更改相似。然而,这个假设可能不成立,例如,随着系统复杂性的增加,专业知识可能随着系统的老化而变得更加重要。在本文中,我们研究了随着系统演化的JIT模型。通过对快速发展的Qt和OpenStack系统的37,524个更改的纵向案例研究,我们发现修复诱导更改属性的波动会影响JIT模型的性能和解释。更具体地说:(a) JIT模型的歧视性(AUC)和校准(Brier)分数在训练一年后显著下降;(b)代码更改属性(例如,大小、经验)在JIT模型中所起的作用随时间而波动;(c)这些波动导致高估和低估了代码更改属性对诱导修复可能性的未来影响。为了避免错误或误导性的预测,应该使用最近记录的数据(三个月内)重新训练JIT模型。此外,质量改进计划应该由使用六个月(或更长时间)历史数据训练的JIT模型提供,因为它们对代码更改属性的重要性的特定周期波动更有弹性。
{"title":"[Journal First] Are Fix-Inducing Changes a Moving Target?: A Longitudinal Case Study of Just-in-Time Defect Prediction","authors":"Shane McIntosh, Yasutaka Kamei","doi":"10.1145/3180155.3182514","DOIUrl":"https://doi.org/10.1145/3180155.3182514","url":null,"abstract":"Just-In-Time (JIT) models identify fix-inducing code changes. JIT models are trained using techniques that assume that past fix-inducing changes are similar to future ones. However, this assumption may not hold, e.g., as system complexity tends to accrue, expertise may become more important as systems age. In this paper, we study JIT models as systems evolve. Through a longitudinal case study of 37,524 changes from the rapidly evolving Qt and OpenStack systems, we find that fluctuations in the properties of fix-inducing changes can impact the performance and interpretation of JIT models. More specifically: (a) the discriminatory power (AUC) and calibration (Brier) scores of JIT models drop considerably one year after being trained; (b) the role that code change properties (e.g., Size, Experience) play within JIT models fluctuates over time; and (c) those fluctuations yield over- and underestimates of the future impact of code change properties on the likelihood of inducing fixes. To avoid erroneous or misleading predictions, JIT models should be retrained using recently recorded data (within three months). Moreover, quality improvement plans should be informed by JIT models that are trained using six months (or more) of historical data, since they are more resilient to period-specific fluctuations in the importance of code change properties.","PeriodicalId":6560,"journal":{"name":"2018 IEEE/ACM 40th International Conference on Software Engineering (ICSE)","volume":"34 1","pages":"560-560"},"PeriodicalIF":0.0,"publicationDate":"2018-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"72997870","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}
引用次数: 11
[Journal First] On the Use of Hidden Markov Model to Predict the Time to Fix Bugs [期刊第一]利用隐马尔可夫模型预测修复bug的时间
Pub Date : 2018-05-01 DOI: 10.1145/3180155.3182522
Mayy Habayeb, Syed Shariyar Murtaza, A. Miranskyy, A. Bener
A significant amount of time is spent by software developers in investigating bug reports. It is useful to indicate when a bug report will be closed, since it would help software teams to prioritise their work. Several studies have been conducted to address this problem in the past decade. Most of these studies have used the frequency of occurrence of certain developer activities as input attributes in building their prediction models. However, these approaches tend to ignore the temporal nature of the occurrence of these activities. In this paper, a novel approach using Hidden Markov models (HMMs) and temporal sequences of developer activities is proposed. The approach is empirically demonstrated in a case study using eight years of bug reports collected from the Firefox project.
软件开发人员花费了大量的时间来调查bug报告。指出何时关闭错误报告是很有用的,因为它可以帮助软件团队确定工作的优先级。在过去的十年里,已经进行了几项研究来解决这个问题。这些研究大多使用某些开发人员活动的发生频率作为构建预测模型的输入属性。然而,这些方法往往忽略了这些活动发生的时间性质。本文提出了一种利用隐马尔可夫模型(hmm)和开发人员活动时间序列的新方法。该方法在一个案例研究中得到了实证证明,该案例研究使用了从Firefox项目收集的8年bug报告。
{"title":"[Journal First] On the Use of Hidden Markov Model to Predict the Time to Fix Bugs","authors":"Mayy Habayeb, Syed Shariyar Murtaza, A. Miranskyy, A. Bener","doi":"10.1145/3180155.3182522","DOIUrl":"https://doi.org/10.1145/3180155.3182522","url":null,"abstract":"A significant amount of time is spent by software developers in investigating bug reports. It is useful to indicate when a bug report will be closed, since it would help software teams to prioritise their work. Several studies have been conducted to address this problem in the past decade. Most of these studies have used the frequency of occurrence of certain developer activities as input attributes in building their prediction models. However, these approaches tend to ignore the temporal nature of the occurrence of these activities. In this paper, a novel approach using Hidden Markov models (HMMs) and temporal sequences of developer activities is proposed. The approach is empirically demonstrated in a case study using eight years of bug reports collected from the Firefox project.","PeriodicalId":6560,"journal":{"name":"2018 IEEE/ACM 40th International Conference on Software Engineering (ICSE)","volume":"71 1","pages":"700-700"},"PeriodicalIF":0.0,"publicationDate":"2018-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"77285486","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}
引用次数: 1
期刊
2018 IEEE/ACM 40th International Conference on Software Engineering (ICSE)
全部 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