首页 > 最新文献

2019 IEEE/ACM 41st International Conference on Software Engineering (ICSE)最新文献

英文 中文
Program Committee of ICSE 2019 ICSE 2019项目委员会
Pub Date : 2019-05-01 DOI: 10.1109/icse.2019.00014
Jonathan Aldrich
Jonathan Aldrich Carnegie Mellon University Aldeida Aleti Monash University Dalal Alrajeh Imperial College London Samik Basu Iowa State University Benoit Baudry KTH Gabriele Bavota Università della Svizzera Italiana (USI) Nelly Bencomo Aston University Ayse Bener Ryerson University Domenico Bianculli SnT Centre University of Luxembourg Christian Bird Microsoft Kelly Blincoe The University of Auckland Barbora Buhnova Masaryk University Marcel Böhme Monash University Maria Christakis MPI-SWS Siobhan Clarke Trinity College Dublin James Clause University of Delaware Marcelo d'Amorim Federal University of Pernambuco Cleidson De Souza Vale Institute of Technology and UFPA Robert Deline Microsoft Danny Dig Oregon State University Yvonne Dittrich IT University of Copenhagen Hakan Erdogmus Carnegie Mellon University Robert Feldt Blekinge Institute of Technology Maria Angela Ferrario Lancaster University Antonio Filieri Imperial College London Thomas Fritz University of Zurich, University of British Columbia Diego Garbervetsky Departamento de Computación. FCEyN. UBA Jaco Geldenhuys Stellenbosch University Milos Gligoric The University of Texas at Austin Mike Godfrey University of Waterloo Alex Groce Northern Arizona University John Grundy Monash University Lars Grunske Humboldt University Berlin Paul Grünbacher Johannes Kepler University Linz Arie Gurfinkel University of Waterloo William G.J. Halfond University of Southern California Tracy Hall Lancaster University Sylvain Hallé Université du Québec à Chicoutimi Dan Hao Peking University Mark Harman University College London Rachel Harrison University of Oxford Emily Hill Drew University
Jonathan Aldrich卡内基梅隆大学Aldeida Aleti莫纳什大学Dalal Alrajeh帝国理工学院伦敦Samik Basu爱荷华州立大学Benoit Baudry KTH Gabriele Bavota意大利Svizzera大学(USI) Nelly Bencomo阿斯顿大学Ayse Bener Ryerson大学Domenico Bianculli SnT中心卢森堡大学Christian Bird微软Kelly Blincoe奥克兰大学Barbora Buhnova Masaryk大学Marcel Böhme莫纳什大学Maria Christakis mpa - sws西沃恩·克拉克都柏林三一学院詹姆斯·克拉宾大学特拉华大学马塞洛·德·阿莫林伯南布哥联邦大学克莱德森·德·苏扎·瓦尔理工学院和upa罗伯特·德林微软丹尼·迪格俄勒冈州立大学伊冯·迪特里希IT大学哥本哈根哈坎·埃尔多格莫斯卡内基梅隆大学罗伯特·费尔特·布莱金理工学院玛丽亚·安吉拉·费拉里奥兰开斯特大学安东尼奥·菲利埃里伦敦帝国理工学院托马斯·弗里茨苏黎世大学英属哥伦比亚大学Diego Garbervetsky系Computación。FCEyN。UBA Jaco Geldenhuys Stellenbosch大学Milos Gligoric德克萨斯大学奥斯汀分校Mike Godfrey滑铁卢大学Alex Groce北亚利桑那大学John Grundy Monash大学Lars Grunske Humboldt大学Berlin Paul gr nbacher Johannes Kepler大学Linz Arie Gurfinkel滑铁卢大学William G.J. Halfond南加州大学Tracy Hall兰开斯特大学Sylvain hall quacimbec大学Chicoutimi Dan Hao北京大学Mark Harman伦敦大学学院雷切尔·哈里森牛津大学艾米莉·希尔德鲁大学
{"title":"Program Committee of ICSE 2019","authors":"Jonathan Aldrich","doi":"10.1109/icse.2019.00014","DOIUrl":"https://doi.org/10.1109/icse.2019.00014","url":null,"abstract":"Jonathan Aldrich Carnegie Mellon University Aldeida Aleti Monash University Dalal Alrajeh Imperial College London Samik Basu Iowa State University Benoit Baudry KTH Gabriele Bavota Università della Svizzera Italiana (USI) Nelly Bencomo Aston University Ayse Bener Ryerson University Domenico Bianculli SnT Centre University of Luxembourg Christian Bird Microsoft Kelly Blincoe The University of Auckland Barbora Buhnova Masaryk University Marcel Böhme Monash University Maria Christakis MPI-SWS Siobhan Clarke Trinity College Dublin James Clause University of Delaware Marcelo d'Amorim Federal University of Pernambuco Cleidson De Souza Vale Institute of Technology and UFPA Robert Deline Microsoft Danny Dig Oregon State University Yvonne Dittrich IT University of Copenhagen Hakan Erdogmus Carnegie Mellon University Robert Feldt Blekinge Institute of Technology Maria Angela Ferrario Lancaster University Antonio Filieri Imperial College London Thomas Fritz University of Zurich, University of British Columbia Diego Garbervetsky Departamento de Computación. FCEyN. UBA Jaco Geldenhuys Stellenbosch University Milos Gligoric The University of Texas at Austin Mike Godfrey University of Waterloo Alex Groce Northern Arizona University John Grundy Monash University Lars Grunske Humboldt University Berlin Paul Grünbacher Johannes Kepler University Linz Arie Gurfinkel University of Waterloo William G.J. Halfond University of Southern California Tracy Hall Lancaster University Sylvain Hallé Université du Québec à Chicoutimi Dan Hao Peking University Mark Harman University College London Rachel Harrison University of Oxford Emily Hill Drew University","PeriodicalId":6736,"journal":{"name":"2019 IEEE/ACM 41st International Conference on Software Engineering (ICSE)","volume":"04 1","pages":""},"PeriodicalIF":0.0,"publicationDate":"2019-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"86079284","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
Message from the Web Chairs of ICSE 2019 来自ICSE 2019网络主席的信息
Pub Date : 2019-05-01 DOI: 10.1109/icse.2019.00010
{"title":"Message from the Web Chairs of ICSE 2019","authors":"","doi":"10.1109/icse.2019.00010","DOIUrl":"https://doi.org/10.1109/icse.2019.00010","url":null,"abstract":"","PeriodicalId":6736,"journal":{"name":"2019 IEEE/ACM 41st International Conference on Software Engineering (ICSE)","volume":"58 1","pages":""},"PeriodicalIF":0.0,"publicationDate":"2019-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"86716632","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
Dynamic Slicing for Android Android的动态切片
Pub Date : 2019-05-01 DOI: 10.1109/ICSE.2019.00118
Tanzirul Azim, Arash Alavi, Iulian Neamtiu, Rajiv Gupta
Dynamic program slicing is useful for a variety of tasks, from testing to debugging to security. Prior slicing approaches have targeted traditional desktop/server platforms, rather than mobile platforms such as Android. Slicing mobile, event-based systems is challenging due to their asynchronous callback construction and the IPC (interprocess communication)- heavy, sensor-driven, timing-sensitive nature of the platform. To address these problems, we introduce AndroidSlicer1, the first slicing approach for Android. AndroidSlicer combines a novel asynchronous slicing approach for modeling data and control dependences in the presence of callbacks with lightweight and precise instrumentation; this allows slicing for apps running on actual phones, and without requiring the app's source code. Our slicer is capable of handling a wide array of inputs that Android supports without adding any noticeable overhead. Experiments on 60 apps from Google Play show that AndroidSlicer is effective (reducing the number of instructions to be examined to 0.3% of executed instructions) and efficient (app instrumentation and post-processing combined takes 31 seconds); all while imposing a runtime overhead of just 4%. We present three applications of AndroidSlicer that are particularly relevant in the mobile domain: (1) finding and tracking input parts responsible for an error/crash, (2) fault localization, i.e., finding the instructions responsible for an error/crash, and (3) reducing the regression test suite. Experiments with these applications on an additional set of 18 popular apps indicate that AndroidSlicer is effective for Android testing and debugging.
动态程序切片对于从测试到调试到安全的各种任务都很有用。之前的切片方法针对的是传统的桌面/服务器平台,而不是Android等移动平台。由于其异步回调结构和IPC(进程间通信)——沉重的、传感器驱动的、对时间敏感的平台特性,对基于事件的移动系统进行切片是具有挑战性的。为了解决这些问题,我们引入了AndroidSlicer1,这是Android的第一种切片方法。AndroidSlicer结合了一种新颖的异步切片方法,用于在回调存在的情况下建模数据和控制依赖;这允许在实际手机上运行的应用程序切片,而不需要应用程序的源代码。我们的切片器能够处理Android支持的大量输入,而不会增加任何明显的开销。在b谷歌Play的60个应用程序上的实验表明,AndroidSlicer是有效的(将要检查的指令数量减少到执行指令的0.3%)和高效的(应用程序检测和后处理加起来只需要31秒);同时,运行时开销仅为4%。我们介绍了AndroidSlicer在移动领域特别相关的三个应用:(1)查找和跟踪导致错误/崩溃的输入部分,(2)故障定位,即查找导致错误/崩溃的指令,以及(3)减少回归测试套件。在另外一组18个流行应用程序上对这些应用程序进行的实验表明,AndroidSlicer对于Android测试和调试是有效的。
{"title":"Dynamic Slicing for Android","authors":"Tanzirul Azim, Arash Alavi, Iulian Neamtiu, Rajiv Gupta","doi":"10.1109/ICSE.2019.00118","DOIUrl":"https://doi.org/10.1109/ICSE.2019.00118","url":null,"abstract":"Dynamic program slicing is useful for a variety of tasks, from testing to debugging to security. Prior slicing approaches have targeted traditional desktop/server platforms, rather than mobile platforms such as Android. Slicing mobile, event-based systems is challenging due to their asynchronous callback construction and the IPC (interprocess communication)- heavy, sensor-driven, timing-sensitive nature of the platform. To address these problems, we introduce AndroidSlicer1, the first slicing approach for Android. AndroidSlicer combines a novel asynchronous slicing approach for modeling data and control dependences in the presence of callbacks with lightweight and precise instrumentation; this allows slicing for apps running on actual phones, and without requiring the app's source code. Our slicer is capable of handling a wide array of inputs that Android supports without adding any noticeable overhead. Experiments on 60 apps from Google Play show that AndroidSlicer is effective (reducing the number of instructions to be examined to 0.3% of executed instructions) and efficient (app instrumentation and post-processing combined takes 31 seconds); all while imposing a runtime overhead of just 4%. We present three applications of AndroidSlicer that are particularly relevant in the mobile domain: (1) finding and tracking input parts responsible for an error/crash, (2) fault localization, i.e., finding the instructions responsible for an error/crash, and (3) reducing the regression test suite. Experiments with these applications on an additional set of 18 popular apps indicate that AndroidSlicer is effective for Android testing and debugging.","PeriodicalId":6736,"journal":{"name":"2019 IEEE/ACM 41st International Conference on Software Engineering (ICSE)","volume":"25 1","pages":"1154-1164"},"PeriodicalIF":0.0,"publicationDate":"2019-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"77872337","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
Message from the Journal-First Chair of ICSE 2019 ICSE 2019第一届主席的讲话
Pub Date : 2019-05-01 DOI: 10.1109/icse.2019.00007
{"title":"Message from the Journal-First Chair of ICSE 2019","authors":"","doi":"10.1109/icse.2019.00007","DOIUrl":"https://doi.org/10.1109/icse.2019.00007","url":null,"abstract":"","PeriodicalId":6736,"journal":{"name":"2019 IEEE/ACM 41st International Conference on Software Engineering (ICSE)","volume":"179 1","pages":""},"PeriodicalIF":0.0,"publicationDate":"2019-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"87595449","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
Supporting Analysts by Dynamic Extraction and Classification of Requirements-Related Knowledge 通过需求相关知识的动态提取和分类来支持分析人员
Pub Date : 2019-05-01 DOI: 10.1109/ICSE.2019.00057
Zahra Shakeri Hossein Abad, V. Gervasi, D. Zowghi, B. Far
In many software development projects, analysts are required to deal with systems' requirements from unfamiliar domains. Familiarity with the domain is necessary in order to get full leverage from interaction with stakeholders and for extracting relevant information from the existing project documents. Accurate and timely extraction and classification of requirements knowledge support analysts in this challenging scenario. Our approach is to mine real-time interaction records and project documents for the relevant phrasal units about the requirements related topics being discussed during elicitation. We propose to use both generative and discriminating methods. To extract the relevant terms, we leverage the flexibility and power of Weighted Finite State Transducers (WFSTs) in dynamic modelling of natural language processing tasks. We used an extended version of Support Vector Machines (SVMs) with variable-sized feature vectors to efficiently and dynamically extract and classify requirements-related knowledge from the existing documents. To evaluate the performance of our approach intuitively and quantitatively, we used edit distance and precision/recall metrics. We show in three case studies that the snippets extracted by our method are intuitively relevant and reasonably accurate. Furthermore, we found that statistical and linguistic parameters such as smoothing methods, and words contiguity and order features can impact the performance of both extraction and classification tasks.
在许多软件开发项目中,分析人员需要处理来自不熟悉领域的系统需求。为了充分利用与涉众的交互以及从现有项目文档中提取相关信息,熟悉领域是必要的。准确和及时地提取和分类需求知识支持分析人员在这个具有挑战性的场景中工作。我们的方法是挖掘实时交互记录和项目文档,以获取在启发过程中讨论的与需求相关的主题的相关短语单元。我们建议同时使用生成和判别方法。为了提取相关术语,我们利用加权有限状态传感器(WFSTs)在自然语言处理任务的动态建模中的灵活性和功能。我们使用了一个扩展版本的支持向量机(svm)和可变大小的特征向量来有效地、动态地从现有文档中提取和分类与需求相关的知识。为了直观和定量地评估我们的方法的性能,我们使用了编辑距离和精度/召回指标。我们在三个案例研究中表明,通过我们的方法提取的片段具有直观的相关性和合理的准确性。此外,我们发现统计和语言参数,如平滑方法,单词的邻近性和顺序特征会影响提取和分类任务的性能。
{"title":"Supporting Analysts by Dynamic Extraction and Classification of Requirements-Related Knowledge","authors":"Zahra Shakeri Hossein Abad, V. Gervasi, D. Zowghi, B. Far","doi":"10.1109/ICSE.2019.00057","DOIUrl":"https://doi.org/10.1109/ICSE.2019.00057","url":null,"abstract":"In many software development projects, analysts are required to deal with systems' requirements from unfamiliar domains. Familiarity with the domain is necessary in order to get full leverage from interaction with stakeholders and for extracting relevant information from the existing project documents. Accurate and timely extraction and classification of requirements knowledge support analysts in this challenging scenario. Our approach is to mine real-time interaction records and project documents for the relevant phrasal units about the requirements related topics being discussed during elicitation. We propose to use both generative and discriminating methods. To extract the relevant terms, we leverage the flexibility and power of Weighted Finite State Transducers (WFSTs) in dynamic modelling of natural language processing tasks. We used an extended version of Support Vector Machines (SVMs) with variable-sized feature vectors to efficiently and dynamically extract and classify requirements-related knowledge from the existing documents. To evaluate the performance of our approach intuitively and quantitatively, we used edit distance and precision/recall metrics. We show in three case studies that the snippets extracted by our method are intuitively relevant and reasonably accurate. Furthermore, we found that statistical and linguistic parameters such as smoothing methods, and words contiguity and order features can impact the performance of both extraction and classification tasks.","PeriodicalId":6736,"journal":{"name":"2019 IEEE/ACM 41st International Conference on Software Engineering (ICSE)","volume":"63 1","pages":"442-453"},"PeriodicalIF":0.0,"publicationDate":"2019-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"76220008","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}
引用次数: 12
A Novel Neural Source Code Representation Based on Abstract Syntax Tree 一种基于抽象语法树的神经网络源代码表示方法
Pub Date : 2019-05-01 DOI: 10.1109/ICSE.2019.00086
Jian Zhang, Xu Wang, Hongyu Zhang, Hailong Sun, Kaixuan Wang, Xudong Liu
Exploiting machine learning techniques for analyzing programs has attracted much attention. One key problem is how to represent code fragments well for follow-up analysis. Traditional information retrieval based methods often treat programs as natural language texts, which could miss important semantic information of source code. Recently, state-of-the-art studies demonstrate that abstract syntax tree (AST) based neural models can better represent source code. However, the sizes of ASTs are usually large and the existing models are prone to the long-term dependency problem. In this paper, we propose a novel AST-based Neural Network (ASTNN) for source code representation. Unlike existing models that work on entire ASTs, ASTNN splits each large AST into a sequence of small statement trees, and encodes the statement trees to vectors by capturing the lexical and syntactical knowledge of statements. Based on the sequence of statement vectors, a bidirectional RNN model is used to leverage the naturalness of statements and finally produce the vector representation of a code fragment. We have applied our neural network based source code representation method to two common program comprehension tasks: source code classification and code clone detection. Experimental results on the two tasks indicate that our model is superior to state-of-the-art approaches.
利用机器学习技术来分析程序已经引起了人们的广泛关注。一个关键问题是如何很好地表示代码片段以供后续分析。传统的基于信息检索的方法往往将程序视为自然语言文本,容易遗漏源代码的重要语义信息。最近,最新的研究表明,基于抽象语法树(AST)的神经模型可以更好地表示源代码。然而,ast的大小通常很大,现有模型容易出现长期依赖问题。在本文中,我们提出了一种新的基于ast的神经网络(ASTNN)用于源代码表示。与在整个AST上工作的现有模型不同,ASTNN将每个大AST分成一系列小的语句树,并通过捕获语句的词法和语法知识将语句树编码为向量。基于语句向量序列,利用双向RNN模型利用语句的自然性,最终生成代码片段的向量表示。我们将基于神经网络的源代码表示方法应用于两个常见的程序理解任务:源代码分类和代码克隆检测。两个任务的实验结果表明,我们的模型优于目前最先进的方法。
{"title":"A Novel Neural Source Code Representation Based on Abstract Syntax Tree","authors":"Jian Zhang, Xu Wang, Hongyu Zhang, Hailong Sun, Kaixuan Wang, Xudong Liu","doi":"10.1109/ICSE.2019.00086","DOIUrl":"https://doi.org/10.1109/ICSE.2019.00086","url":null,"abstract":"Exploiting machine learning techniques for analyzing programs has attracted much attention. One key problem is how to represent code fragments well for follow-up analysis. Traditional information retrieval based methods often treat programs as natural language texts, which could miss important semantic information of source code. Recently, state-of-the-art studies demonstrate that abstract syntax tree (AST) based neural models can better represent source code. However, the sizes of ASTs are usually large and the existing models are prone to the long-term dependency problem. In this paper, we propose a novel AST-based Neural Network (ASTNN) for source code representation. Unlike existing models that work on entire ASTs, ASTNN splits each large AST into a sequence of small statement trees, and encodes the statement trees to vectors by capturing the lexical and syntactical knowledge of statements. Based on the sequence of statement vectors, a bidirectional RNN model is used to leverage the naturalness of statements and finally produce the vector representation of a code fragment. We have applied our neural network based source code representation method to two common program comprehension tasks: source code classification and code clone detection. Experimental results on the two tasks indicate that our model is superior to state-of-the-art approaches.","PeriodicalId":6736,"journal":{"name":"2019 IEEE/ACM 41st International Conference on Software Engineering (ICSE)","volume":"40 1","pages":"783-794"},"PeriodicalIF":0.0,"publicationDate":"2019-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"78771330","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}
引用次数: 402
SMOKE: Scalable Path-Sensitive Memory Leak Detection for Millions of Lines of Code SMOKE:数百万行代码的可扩展路径敏感内存泄漏检测
Pub Date : 2019-05-01 DOI: 10.1109/ICSE.2019.00025
Gang Fan, Rongxin Wu, Qingkai Shi, Xiao Xiao, Jinguo Zhou, Charles Zhang
Detecting memory leak at industrial scale is still not well addressed, in spite of the tremendous effort from both industry and academia in the past decades. Existing work suffers from an unresolved paradox - a highly precise analysis limits its scalability and an imprecise one seriously hurts its precision or recall. In this work, we present SMOKE, a staged approach to resolve this paradox. In the ?rst stage, instead of using a uniform precise analysis for all paths, we use a scalable but imprecise analysis to compute a succinct set of candidate memory leak paths. In the second stage, we leverage a more precise analysis to verify the feasibility of those candidates. The ?rst stage is scalable, due to the design of a new sparse program representation, the use-?ow graph (UFG), that models the problem as a polynomial-time state analysis. The second stage analysis is both precise and ef?cient, due to the smaller number of candidates and the design of a dedicated constraint solver. Experimental results show that SMOKE can ?nish checking industrial-sized projects, up to 8MLoC, in forty minutes with an average false positive rate of 24.4%. Besides, SMOKE is signi?cantly faster than the state-of-the-art research techniques as well as the industrial tools, with the speedup ranging from 5.2X to 22.8X. In the twenty-nine mature and extensively checked benchmark projects, SMOKE has discovered thirty previously unknown memory leaks which were con?rmed by developers, and one even assigned a CVE ID.
尽管工业界和学术界在过去几十年做出了巨大的努力,但在工业规模上检测内存泄漏仍然没有得到很好的解决。现有的工作存在一个未解决的悖论——高度精确的分析限制了它的可扩展性,而不精确的分析严重损害了它的精度或召回率。在这项工作中,我们提出了SMOKE,一种分阶段的方法来解决这个悖论。在第一阶段,我们不是对所有路径使用统一的精确分析,而是使用可扩展但不精确的分析来计算一组简洁的候选内存泄漏路径。在第二阶段,我们利用更精确的分析来验证这些候选方案的可行性。第一阶段是可扩展的,由于设计了新的稀疏程序表示,使用-?ow图(UFG),它将问题建模为多项式时间状态分析。第二阶段的分析既精确又有效。由于候选者数量较少,并且设计了专用约束求解器,因此非常方便。实验结果表明,SMOKE可以在40分钟内完成高达8MLoC的工业规模项目的检查,平均误报率为24.4%。此外,烟雾是一种信号。比最先进的研究技术和工业工具快得多,加速速度从5.2倍到22.8倍不等。在29个成熟和广泛检查的基准项目中,SMOKE发现了30个以前未知的内存泄漏。其中一个甚至被分配了一个CVE ID。
{"title":"SMOKE: Scalable Path-Sensitive Memory Leak Detection for Millions of Lines of Code","authors":"Gang Fan, Rongxin Wu, Qingkai Shi, Xiao Xiao, Jinguo Zhou, Charles Zhang","doi":"10.1109/ICSE.2019.00025","DOIUrl":"https://doi.org/10.1109/ICSE.2019.00025","url":null,"abstract":"Detecting memory leak at industrial scale is still not well addressed, in spite of the tremendous effort from both industry and academia in the past decades. Existing work suffers from an unresolved paradox - a highly precise analysis limits its scalability and an imprecise one seriously hurts its precision or recall. In this work, we present SMOKE, a staged approach to resolve this paradox. In the ?rst stage, instead of using a uniform precise analysis for all paths, we use a scalable but imprecise analysis to compute a succinct set of candidate memory leak paths. In the second stage, we leverage a more precise analysis to verify the feasibility of those candidates. The ?rst stage is scalable, due to the design of a new sparse program representation, the use-?ow graph (UFG), that models the problem as a polynomial-time state analysis. The second stage analysis is both precise and ef?cient, due to the smaller number of candidates and the design of a dedicated constraint solver. Experimental results show that SMOKE can ?nish checking industrial-sized projects, up to 8MLoC, in forty minutes with an average false positive rate of 24.4%. Besides, SMOKE is signi?cantly faster than the state-of-the-art research techniques as well as the industrial tools, with the speedup ranging from 5.2X to 22.8X. In the twenty-nine mature and extensively checked benchmark projects, SMOKE has discovered thirty previously unknown memory leaks which were con?rmed by developers, and one even assigned a CVE ID.","PeriodicalId":6736,"journal":{"name":"2019 IEEE/ACM 41st International Conference on Software Engineering (ICSE)","volume":"20 1","pages":"72-82"},"PeriodicalIF":0.0,"publicationDate":"2019-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"84163253","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}
引用次数: 46
Latent Patterns in Activities: A Field Study of How Developers Manage Context 活动中的潜在模式:开发人员如何管理上下文的实地研究
Pub Date : 2019-05-01 DOI: 10.1109/ICSE.2019.00051
Souti Chattopadhyay, Nicholas Nelson, Yenifer Ramirez Gonzalez, Annel Amelia Leon, Rahul Pandita, A. Sarma
In order to build efficient tools that support complex programming tasks, it is imperative that we understand how developers program. We know that developers create a context around their programming task by gathering relevant information. We also know that developers decompose their tasks recursively into smaller units. However, important gaps exist in our knowledge about: (1) the role that context plays in supporting smaller units of tasks, (2) the relationship that exists among these smaller units, and (3) how context flows across them. The goal of this research is to gain a better understanding of how developers structure their tasks and manage context through a field study of ten professional developers in an industrial setting. Our analysis reveals that developers decompose their tasks into smaller units with distinct goals, that specific patterns exist in how they sequence these smaller units, and that developers may maintain context between those smaller units with related goals.
为了构建支持复杂编程任务的高效工具,我们必须了解开发人员如何编程。我们知道开发人员通过收集相关信息来围绕他们的编程任务创建上下文。我们也知道开发人员将他们的任务递归地分解成更小的单元。然而,在我们的知识中存在着重要的空白:(1)上下文在支持较小的任务单元中所起的作用,(2)这些较小的单元之间存在的关系,以及(3)上下文如何在它们之间流动。本研究的目的是通过对工业环境中10名专业开发人员的实地研究,更好地理解开发人员如何构建任务和管理上下文。我们的分析表明,开发人员将他们的任务分解为具有不同目标的较小单元,特定的模式存在于他们如何对这些较小单元进行排序,并且开发人员可能维护具有相关目标的较小单元之间的上下文。
{"title":"Latent Patterns in Activities: A Field Study of How Developers Manage Context","authors":"Souti Chattopadhyay, Nicholas Nelson, Yenifer Ramirez Gonzalez, Annel Amelia Leon, Rahul Pandita, A. Sarma","doi":"10.1109/ICSE.2019.00051","DOIUrl":"https://doi.org/10.1109/ICSE.2019.00051","url":null,"abstract":"In order to build efficient tools that support complex programming tasks, it is imperative that we understand how developers program. We know that developers create a context around their programming task by gathering relevant information. We also know that developers decompose their tasks recursively into smaller units. However, important gaps exist in our knowledge about: (1) the role that context plays in supporting smaller units of tasks, (2) the relationship that exists among these smaller units, and (3) how context flows across them. The goal of this research is to gain a better understanding of how developers structure their tasks and manage context through a field study of ten professional developers in an industrial setting. Our analysis reveals that developers decompose their tasks into smaller units with distinct goals, that specific patterns exist in how they sequence these smaller units, and that developers may maintain context between those smaller units with related goals.","PeriodicalId":6736,"journal":{"name":"2019 IEEE/ACM 41st International Conference on Software Engineering (ICSE)","volume":"88 1","pages":"373-383"},"PeriodicalIF":0.0,"publicationDate":"2019-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"79979372","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}
引用次数: 16
Automated Reporting of Anti-Patterns and Decay in Continuous Integration 持续集成中反模式和衰减的自动报告
Pub Date : 2019-05-01 DOI: 10.1109/ICSE.2019.00028
Carmine Vassallo, Sebastian Proksch, H. Gall, M. D. Penta
Continuous Integration (CI) is a widely-used software engineering practice. The software is continuously built so that changes can be easily integrated and issues such as unmet quality goals or style inconsistencies get detected early. Unfortunately, it is not only hard to introduce CI into an existing project, but it is also challenging to live up to the CI principles when facing tough deadlines or business decisions. Previous work has identified common anti-patterns that reduce the promised benefits of CI. Typically, these anti-patterns slowly creep into a project over time before they are identified. We argue that automated detection can help with early identification and prevent such a process decay. In this work, we further analyze this assumption and survey 124 developers about CI anti-patterns. From the results, we build CI-Odor, a reporting tool for CI processes that detects the existence of four relevant anti-patterns by analyzing regular build logs and repository information. In a study on the 18,474 build logs of 36 popular JAVA projects, we reveal the presence of 3,823 high-severity warnings spread across projects. We validate our reports in a survey among 13 original developers of these projects and through general feedback from 42 developers that confirm the relevance of our reports.
持续集成(CI)是一种广泛使用的软件工程实践。软件是连续构建的,这样变更可以很容易地集成,并且诸如未达到质量目标或风格不一致之类的问题可以及早发现。不幸的是,在现有项目中引入CI不仅很困难,而且在面临严格的截止日期或业务决策时,实现CI原则也是一项挑战。以前的工作已经确定了降低CI所承诺的好处的常见反模式。通常,在确定这些反模式之前,这些反模式会随着时间的推移慢慢地渗透到项目中。我们认为自动化检测可以帮助早期识别并防止这种过程衰减。在这项工作中,我们进一步分析了这一假设,并调查了124名关于CI反模式的开发人员。根据结果,我们构建了CI- odor,这是一个用于CI流程的报告工具,它通过分析常规构建日志和存储库信息来检测四种相关反模式的存在。在对36个流行JAVA项目的18,474个构建日志的研究中,我们揭示了分布在项目中的3,823个高严重性警告。我们通过对这些项目的13个原始开发人员的调查来验证我们的报告,并通过来自42个开发人员的一般反馈来确认我们报告的相关性。
{"title":"Automated Reporting of Anti-Patterns and Decay in Continuous Integration","authors":"Carmine Vassallo, Sebastian Proksch, H. Gall, M. D. Penta","doi":"10.1109/ICSE.2019.00028","DOIUrl":"https://doi.org/10.1109/ICSE.2019.00028","url":null,"abstract":"Continuous Integration (CI) is a widely-used software engineering practice. The software is continuously built so that changes can be easily integrated and issues such as unmet quality goals or style inconsistencies get detected early. Unfortunately, it is not only hard to introduce CI into an existing project, but it is also challenging to live up to the CI principles when facing tough deadlines or business decisions. Previous work has identified common anti-patterns that reduce the promised benefits of CI. Typically, these anti-patterns slowly creep into a project over time before they are identified. We argue that automated detection can help with early identification and prevent such a process decay. In this work, we further analyze this assumption and survey 124 developers about CI anti-patterns. From the results, we build CI-Odor, a reporting tool for CI processes that detects the existence of four relevant anti-patterns by analyzing regular build logs and repository information. In a study on the 18,474 build logs of 36 popular JAVA projects, we reveal the presence of 3,823 high-severity warnings spread across projects. We validate our reports in a survey among 13 original developers of these projects and through general feedback from 42 developers that confirm the relevance of our reports.","PeriodicalId":6736,"journal":{"name":"2019 IEEE/ACM 41st International Conference on Software Engineering (ICSE)","volume":"53 1","pages":"105-115"},"PeriodicalIF":0.0,"publicationDate":"2019-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"84458613","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}
引用次数: 41
Detecting Incorrect Build Rules 检测错误的构建规则
Pub Date : 2019-05-01 DOI: 10.1109/ICSE.2019.00125
N. Licker, A. Rice
Automated build systems are routinely used by software engineers to minimize the number of objects that need to be recompiled after incremental changes to the source files of a project. In order to achieve efficient and correct builds, developers must provide the build tools with dependency information between the files and modules of a project, usually expressed in a macro language specific to each build tool. In order to guarantee correctness, the authors of these tools are responsible for enumerating all the files whose contents an output depends on. Unfortunately, this is a tedious process and not all dependencies are captured in practice, which leads to incorrect builds. We automatically uncover such missing dependencies through a novel method that we call build fuzzing. The correctness of build definitions is verified by modifying files in a project, triggering incremental builds and comparing the set of changed files to the set of expected changes. These sets are determined using a dependency graph inferred by tracing the system calls executed during a clean build. We evaluate our method by exhaustively testing build rules of open-source projects, uncovering issues leading to race conditions and faulty builds in 31 of them. We provide a discussion of the bugs we detect, identifying anti-patterns in the use of the macro languages. We fix some of the issues in projects where the features of build systems allow a clean solution.
软件工程师经常使用自动化构建系统,以尽量减少在对项目源文件进行增量更改后需要重新编译的对象的数量。为了实现高效和正确的构建,开发人员必须向构建工具提供项目的文件和模块之间的依赖信息,这些信息通常用特定于每个构建工具的宏语言表示。为了保证正确性,这些工具的作者负责枚举输出所依赖的所有文件的内容。不幸的是,这是一个乏味的过程,并且在实践中并不是所有的依赖都被捕获,这将导致不正确的构建。我们通过一种称为构建模糊的新方法自动发现这些缺失的依赖关系。通过修改项目中的文件、触发增量构建并将更改的文件集与预期的更改集进行比较,可以验证构建定义的正确性。这些集合是通过跟踪干净构建期间执行的系统调用推断出的依赖关系图来确定的。我们通过详尽地测试开源项目的构建规则来评估我们的方法,在其中31个项目中发现导致竞争条件和错误构建的问题。我们讨论了我们检测到的错误,识别了使用宏语言时的反模式。我们修复了一些项目中的问题,其中构建系统的特性允许一个干净的解决方案。
{"title":"Detecting Incorrect Build Rules","authors":"N. Licker, A. Rice","doi":"10.1109/ICSE.2019.00125","DOIUrl":"https://doi.org/10.1109/ICSE.2019.00125","url":null,"abstract":"Automated build systems are routinely used by software engineers to minimize the number of objects that need to be recompiled after incremental changes to the source files of a project. In order to achieve efficient and correct builds, developers must provide the build tools with dependency information between the files and modules of a project, usually expressed in a macro language specific to each build tool. In order to guarantee correctness, the authors of these tools are responsible for enumerating all the files whose contents an output depends on. Unfortunately, this is a tedious process and not all dependencies are captured in practice, which leads to incorrect builds. We automatically uncover such missing dependencies through a novel method that we call build fuzzing. The correctness of build definitions is verified by modifying files in a project, triggering incremental builds and comparing the set of changed files to the set of expected changes. These sets are determined using a dependency graph inferred by tracing the system calls executed during a clean build. We evaluate our method by exhaustively testing build rules of open-source projects, uncovering issues leading to race conditions and faulty builds in 31 of them. We provide a discussion of the bugs we detect, identifying anti-patterns in the use of the macro languages. We fix some of the issues in projects where the features of build systems allow a clean solution.","PeriodicalId":6736,"journal":{"name":"2019 IEEE/ACM 41st International Conference on Software Engineering (ICSE)","volume":"7 1","pages":"1234-1244"},"PeriodicalIF":0.0,"publicationDate":"2019-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"88228724","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
期刊
2019 IEEE/ACM 41st 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