首页 > 最新文献

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

英文 中文
How C++ Developers Use Immutability Declarations: An Empirical Study c++开发者如何使用不变性声明:一个实证研究
Pub Date : 2019-05-25 DOI: 10.1109/ICSE.2019.00050
Jon Eyolfson, Patrick Lam
Best practices for developers, as encoded in recent programming language designs, recommend the use of immutability whenever practical. However, there is a lack of empirical evidence about the uptake of this advice. Our goal is to understand the usage of immutability by C++ developers in practice. This work investigates how C++ developers use immutability by analyzing their use of the C++ immutability qualifier, const, and by analyzing the code itself. We answer the following broad questions about const usage: 1) do developers actually write non-trivial (more than 3 methods) immutable classes and immutable methods? 2) do developers label their immutable classes and methods? We analyzed 7 medium-to-large open source projects and collected two sources of empirical data: 1) const annotations by developers, indicating an intent to write immutable code; and 2) the results of a simple static analysis which identified easily const-able methods---those that clearly did not mutate state. We estimate that 5% of non-trivial classes (median) are immutable. We found the vast majority of classes do carry immutability labels on methods: surprisingly, developers const-annotate 46% of methods, and we estimate that at least 51% of methods could be const-annotated. Furthermore, developers missed immutability labels on at least 6% of unannotated methods. We provide an in-depth discussion on how developers use const and the results of our analyses.
针对开发人员的最佳实践,正如最近编程语言设计中所编码的那样,建议在可行的情况下使用不变性。然而,缺乏关于采纳这一建议的经验证据。我们的目标是理解c++开发人员在实践中对不变性的使用。这项工作通过分析c++开发人员对c++不变性限定符const的使用以及分析代码本身来研究他们是如何使用不变性的。我们回答了以下关于const用法的广泛问题:1)开发人员是否真的编写非平凡的(超过3个方法)不可变类和不可变方法?2)开发者是否给不可变的类和方法贴上标签?我们分析了7个大中型开源项目,并收集了两个经验数据来源:1)开发人员的常量注释,表明编写不可变代码的意图;2)一个简单的静态分析的结果,它确定了容易稳定的方法——那些显然没有改变状态的方法。我们估计5%的非平凡类(中位数)是不可变的。我们发现绝大多数类确实在方法上带有不变性标签:令人惊讶的是,开发人员对46%的方法进行了常量注释,我们估计至少51%的方法可以进行常量注释。此外,开发人员在至少6%的未注释方法上遗漏了不变性标签。我们对开发人员如何使用const和我们的分析结果进行了深入的讨论。
{"title":"How C++ Developers Use Immutability Declarations: An Empirical Study","authors":"Jon Eyolfson, Patrick Lam","doi":"10.1109/ICSE.2019.00050","DOIUrl":"https://doi.org/10.1109/ICSE.2019.00050","url":null,"abstract":"Best practices for developers, as encoded in recent programming language designs, recommend the use of immutability whenever practical. However, there is a lack of empirical evidence about the uptake of this advice. Our goal is to understand the usage of immutability by C++ developers in practice. This work investigates how C++ developers use immutability by analyzing their use of the C++ immutability qualifier, const, and by analyzing the code itself. We answer the following broad questions about const usage: 1) do developers actually write non-trivial (more than 3 methods) immutable classes and immutable methods? 2) do developers label their immutable classes and methods? We analyzed 7 medium-to-large open source projects and collected two sources of empirical data: 1) const annotations by developers, indicating an intent to write immutable code; and 2) the results of a simple static analysis which identified easily const-able methods---those that clearly did not mutate state. We estimate that 5% of non-trivial classes (median) are immutable. We found the vast majority of classes do carry immutability labels on methods: surprisingly, developers const-annotate 46% of methods, and we estimate that at least 51% of methods could be const-annotated. Furthermore, developers missed immutability labels on at least 6% of unannotated methods. We provide an in-depth discussion on how developers use const and the results of our analyses.","PeriodicalId":6736,"journal":{"name":"2019 IEEE/ACM 41st International Conference on Software Engineering (ICSE)","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2019-05-25","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"77090907","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
Rotten Green Tests 腐烂的绿色测试
Pub Date : 2019-05-25 DOI: 10.1109/ICSE.2019.00062
J. Delplanque, Stéphane Ducasse, G. Polito, A. Black, Anne Etien
Unit tests are a tenant of agile programming methodologies, and are widely used to improve code quality and prevent code regression. A green (passing) test is usually taken as a robust sign that the code under test is valid. However, some green tests contain assertions that are never executed. We call such tests Rotten Green Tests. Rotten Green Tests represent a case worse than a broken test: they report that the code under test is valid, but in fact do not test that validity. We describe an approach to identify rotten green tests by combining simple static and dynamic call-site analyses. Our approach takes into account test helper methods, inherited helpers, and trait compositions, and has been implemented in a tool called DrTest. DrTest reports no false negatives, yet it still reports some false positives due to conditional use or multiple test contexts. Using DrTest we conducted an empirical evaluation of 19,905 real test cases in mature projects of the Pharo ecosystem. The results of the evaluation show that the tool is effective; it detected 294 tests as rotten—green tests that contain assertions that are not executed. Some rotten tests have been “sleeping” in Pharo for at least 5 years.
单元测试是敏捷编程方法的一部分,被广泛用于提高代码质量和防止代码回归。绿色(通过)测试通常被认为是测试代码有效的可靠标志。但是,一些绿色测试包含永远不会执行的断言。我们称这种测试为烂绿测试。腐朽的绿色测试代表了一种比失败的测试更糟糕的情况:它们报告被测试的代码是有效的,但实际上不测试该有效性。我们描述了一种通过简单的静态和动态呼叫现场分析相结合的方法来识别腐烂的绿色测试。我们的方法考虑了测试助手方法、继承助手和特征组合,并在一个名为DrTest的工具中实现。DrTest没有报告假阴性,但是由于有条件使用或多个测试上下文,它仍然报告一些假阳性。使用DrTest,我们对Pharo生态系统成熟项目中的19905个真实测试用例进行了实证评估。评价结果表明,该工具是有效的;它检测到294个测试为坏绿测试,其中包含未执行的断言。一些糟糕的测试已经在Pharo“沉睡”了至少5年。
{"title":"Rotten Green Tests","authors":"J. Delplanque, Stéphane Ducasse, G. Polito, A. Black, Anne Etien","doi":"10.1109/ICSE.2019.00062","DOIUrl":"https://doi.org/10.1109/ICSE.2019.00062","url":null,"abstract":"Unit tests are a tenant of agile programming methodologies, and are widely used to improve code quality and prevent code regression. A green (passing) test is usually taken as a robust sign that the code under test is valid. However, some green tests contain assertions that are never executed. We call such tests Rotten Green Tests. Rotten Green Tests represent a case worse than a broken test: they report that the code under test is valid, but in fact do not test that validity. We describe an approach to identify rotten green tests by combining simple static and dynamic call-site analyses. Our approach takes into account test helper methods, inherited helpers, and trait compositions, and has been implemented in a tool called DrTest. DrTest reports no false negatives, yet it still reports some false positives due to conditional use or multiple test contexts. Using DrTest we conducted an empirical evaluation of 19,905 real test cases in mature projects of the Pharo ecosystem. The results of the evaluation show that the tool is effective; it detected 294 tests as rotten—green tests that contain assertions that are not executed. Some rotten tests have been “sleeping” in Pharo for at least 5 years.","PeriodicalId":6736,"journal":{"name":"2019 IEEE/ACM 41st International Conference on Software Engineering (ICSE)","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2019-05-25","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"82686956","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}
引用次数: 14
FastLane: Test Minimization for Rapidly Deployed Large-Scale Online Services 快速通道:快速部署大规模在线服务的测试最小化
Pub Date : 2019-05-25 DOI: 10.1109/ICSE.2019.00054
Adithya Abraham Philip, Ranjita Bhagwan, Rahul Kumar, C. Maddila, Nachiappan Nagappan
Today, we depend on numerous large-scale services for basic operations such as email. These services, built on the basis of Continuous Integration/Continuous Deployment (CI/CD) processes, are extremely dynamic: developers continuously commit code and introduce new features, functionality and fixes. Hundreds of commits may enter the code-base in a single day. Therefore one of the most time-critical, yet resource-intensive tasks towards ensuring code-quality is effectively testing such large code-bases. This paper presents FastLane, a system that performs data-driven test minimization. FastLane uses light-weight machine-learning models built upon a rich history of test and commit logs to predict test outcomes. Tests for which we predict outcomes need not be explicitly run, thereby saving us precious test-time and resources. Our evaluation on a large-scale email and collaboration platform service shows that our techniques can save 18.04%, i.e., almost a fifth of test-time while obtaining a test outcome accuracy of 99.99%.
今天,我们依靠大量的大型服务来进行基本的操作,比如电子邮件。这些服务建立在持续集成/持续部署(CI/CD)流程的基础上,是非常动态的:开发人员不断提交代码并引入新特性、功能和修复。一天内可能会有数百个提交进入代码库。因此,确保代码质量的最紧迫、最耗费资源的任务之一就是有效地测试如此庞大的代码库。本文介绍了FastLane,一个执行数据驱动测试最小化的系统。FastLane使用基于丰富的测试历史和提交日志的轻量级机器学习模型来预测测试结果。我们预测结果的测试不需要显式地运行,从而节省了宝贵的测试时间和资源。我们在一个大型电子邮件和协作平台服务上的评估表明,我们的技术可以节省18.04%,即几乎五分之一的测试时间,同时获得99.99%的测试结果准确率。
{"title":"FastLane: Test Minimization for Rapidly Deployed Large-Scale Online Services","authors":"Adithya Abraham Philip, Ranjita Bhagwan, Rahul Kumar, C. Maddila, Nachiappan Nagappan","doi":"10.1109/ICSE.2019.00054","DOIUrl":"https://doi.org/10.1109/ICSE.2019.00054","url":null,"abstract":"Today, we depend on numerous large-scale services for basic operations such as email. These services, built on the basis of Continuous Integration/Continuous Deployment (CI/CD) processes, are extremely dynamic: developers continuously commit code and introduce new features, functionality and fixes. Hundreds of commits may enter the code-base in a single day. Therefore one of the most time-critical, yet resource-intensive tasks towards ensuring code-quality is effectively testing such large code-bases. This paper presents FastLane, a system that performs data-driven test minimization. FastLane uses light-weight machine-learning models built upon a rich history of test and commit logs to predict test outcomes. Tests for which we predict outcomes need not be explicitly run, thereby saving us precious test-time and resources. Our evaluation on a large-scale email and collaboration platform service shows that our techniques can save 18.04%, i.e., almost a fifth of test-time while obtaining a test outcome accuracy of 99.99%.","PeriodicalId":6736,"journal":{"name":"2019 IEEE/ACM 41st International Conference on Software Engineering (ICSE)","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2019-05-25","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"91483322","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
Tool Choice Matters: JavaScript Quality Assurance Tools and Usage Outcomes in GitHub Projects 工具选择很重要:JavaScript质量保证工具和GitHub项目中的使用结果
Pub Date : 2019-05-25 DOI: 10.1109/ICSE.2019.00060
David Kavaler, Asher Trockman, Bogdan Vasilescu, V. Filkov
Quality assurance automation is essential in modern software development. In practice, this automation is supported by a multitude of tools that fit different needs and require developers to make decisions about which tool to choose in a given context. Data and analytics of the pros and cons can inform these decisions. Yet, in most cases, there is a dearth of empirical evidence on the effectiveness of existing practices and tool choices. We propose a general methodology to model the time- dependent effect of automation tool choice on four outcomes of interest: prevalence of issues, code churn, number of pull requests, and number of contributors, all with a multitude of controls. On a large data set of npm JavaScript projects, we extract the adoption events for popular tools in three task classes: linters, dependency managers, and coverage reporters. Using mixed methods approaches, we study the reasons for the adoptions and compare the adoption effects within each class, and sequential tool adoptions across classes. We find that some tools within each group are associated with more beneficial outcomes than others, providing an empirical perspective for the benefits of each. We also find that the order in which some tools are implemented is associated with varying outcomes.
质量保证自动化在现代软件开发中是必不可少的。在实践中,这种自动化是由许多工具支持的,这些工具适合不同的需求,并要求开发人员在给定的上下文中决定选择哪个工具。对利弊的数据和分析可以为这些决策提供信息。然而,在大多数情况下,缺乏关于现有实践和工具选择有效性的经验证据。我们提出了一种通用的方法来模拟自动化工具选择对四个结果的时间依赖性影响:问题的普遍性、代码流失、拉取请求的数量和贡献者的数量,所有这些都有大量的控制。在npm JavaScript项目的大型数据集上,我们从三个任务类中提取了流行工具的采用事件:lint、依赖管理器和覆盖率报告器。使用混合方法方法,我们研究了采用的原因,并比较了每个类中的采用效果,以及跨类的顺序工具采用。我们发现,每一组中的一些工具比其他工具带来更多有益的结果,为每一组的好处提供了一个经验的视角。我们还发现,一些工具实现的顺序与不同的结果相关联。
{"title":"Tool Choice Matters: JavaScript Quality Assurance Tools and Usage Outcomes in GitHub Projects","authors":"David Kavaler, Asher Trockman, Bogdan Vasilescu, V. Filkov","doi":"10.1109/ICSE.2019.00060","DOIUrl":"https://doi.org/10.1109/ICSE.2019.00060","url":null,"abstract":"Quality assurance automation is essential in modern software development. In practice, this automation is supported by a multitude of tools that fit different needs and require developers to make decisions about which tool to choose in a given context. Data and analytics of the pros and cons can inform these decisions. Yet, in most cases, there is a dearth of empirical evidence on the effectiveness of existing practices and tool choices. We propose a general methodology to model the time- dependent effect of automation tool choice on four outcomes of interest: prevalence of issues, code churn, number of pull requests, and number of contributors, all with a multitude of controls. On a large data set of npm JavaScript projects, we extract the adoption events for popular tools in three task classes: linters, dependency managers, and coverage reporters. Using mixed methods approaches, we study the reasons for the adoptions and compare the adoption effects within each class, and sequential tool adoptions across classes. We find that some tools within each group are associated with more beneficial outcomes than others, providing an empirical perspective for the benefits of each. We also find that the order in which some tools are implemented is associated with varying outcomes.","PeriodicalId":6736,"journal":{"name":"2019 IEEE/ACM 41st International Conference on Software Engineering (ICSE)","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2019-05-25","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"87091966","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}
引用次数: 27
Natural Software Revisited 重新审视自然软件
Pub Date : 2019-05-25 DOI: 10.1109/ICSE.2019.00022
Musfiqur Rahman, Dharani Palani, Peter C. Rigby
Recent works have concluded that software code is more repetitive and predictable, i.e. more natural, than English texts. On re-examination, we find that much of the apparent "naturalness" of source code is due to the presence of language specific syntax, especially separators, such as semi-colons and brackets. For example, separators account for 44% of all tokens in our Java corpus. When we follow the NLP practices of eliminating punctuation (e.g., separators) and stopwords (e.g., keywords), we find that code is still repetitive and predictable, but to a lesser degree than previously thought. We suggest that SyntaxTokens be filtered to reduce noise in code recommenders. Unlike the code written for a particular project, API code usage is similar across projects: a file is opened and closed in the same manner regardless of domain. When we restrict our n-grams to those contained in the Java API, we find that API usages are highly repetitive. Since API calls are common across programs, researchers have made reliable statistical models to recommend sophisticated API call sequences. Sequential n-gram models were developed for natural languages. Code is usually represented by an AST which contains control and data flow, making n-grams models a poor representation of code. Comparing n-grams to statistical graph representations of the same codebase, we find that graphs are more repetitive and contain higherlevel patterns than n-grams. We suggest that future work focus on statistical code graphs models that accurately capture complex coding patterns. Our replication package makes our scripts and data available to future researchers[1].
最近的研究已经得出结论,软件代码比英文文本更具重复性和可预测性,即更自然。通过重新检查,我们发现源代码的许多明显的“自然性”是由于语言特定语法的存在,特别是分隔符,如分号和括号。例如,分隔符占Java语料库中所有令牌的44%。当我们遵循NLP消除标点符号(如分隔符)和停顿词(如关键字)的做法时,我们发现代码仍然是重复和可预测的,但程度比以前想象的要小。我们建议过滤SyntaxTokens以减少代码推荐中的噪音。与为特定项目编写的代码不同,API代码的使用在项目之间是相似的:无论域如何,文件都以相同的方式打开和关闭。当我们将n-gram限制为Java API中包含的n-gram时,我们发现API的使用是高度重复的。由于API调用在程序中很常见,研究人员已经建立了可靠的统计模型来推荐复杂的API调用序列。为自然语言开发了顺序n-gram模型。代码通常由包含控制和数据流的AST表示,这使得n-gram模型不能很好地表示代码。将n图与相同代码库的统计图表示进行比较,我们发现图比n图更具重复性,并且包含更高层次的模式。我们建议未来的工作集中在统计代码图模型上,以准确地捕获复杂的编码模式。我们的复制包使我们的脚本和数据可供未来的研究人员使用[1]。
{"title":"Natural Software Revisited","authors":"Musfiqur Rahman, Dharani Palani, Peter C. Rigby","doi":"10.1109/ICSE.2019.00022","DOIUrl":"https://doi.org/10.1109/ICSE.2019.00022","url":null,"abstract":"Recent works have concluded that software code is more repetitive and predictable, i.e. more natural, than English texts. On re-examination, we find that much of the apparent \"naturalness\" of source code is due to the presence of language specific syntax, especially separators, such as semi-colons and brackets. For example, separators account for 44% of all tokens in our Java corpus. When we follow the NLP practices of eliminating punctuation (e.g., separators) and stopwords (e.g., keywords), we find that code is still repetitive and predictable, but to a lesser degree than previously thought. We suggest that SyntaxTokens be filtered to reduce noise in code recommenders. Unlike the code written for a particular project, API code usage is similar across projects: a file is opened and closed in the same manner regardless of domain. When we restrict our n-grams to those contained in the Java API, we find that API usages are highly repetitive. Since API calls are common across programs, researchers have made reliable statistical models to recommend sophisticated API call sequences. Sequential n-gram models were developed for natural languages. Code is usually represented by an AST which contains control and data flow, making n-grams models a poor representation of code. Comparing n-grams to statistical graph representations of the same codebase, we find that graphs are more repetitive and contain higherlevel patterns than n-grams. We suggest that future work focus on statistical code graphs models that accurately capture complex coding patterns. Our replication package makes our scripts and data available to future researchers[1].","PeriodicalId":6736,"journal":{"name":"2019 IEEE/ACM 41st International Conference on Software Engineering (ICSE)","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2019-05-25","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"88141835","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}
引用次数: 34
Why Does Code Review Work for Open Source Software Communities? 为什么代码审查对开源软件社区有效?
Pub Date : 2019-05-25 DOI: 10.1109/ICSE.2019.00111
A. Alami, M. Cohn, A. Wąsowski
Open source software communities have demonstrated that they can produce high quality results. The overall success of peer code review, commonly used in open source projects, has likely contributed strongly to this success. Code review is an emotionally loaded practice, with public exposure of reputation and ample opportunities for conflict. We set off to ask why code review works for open source communities, despite this inherent challenge. We interviewed 21 open source contributors from four communities and participated in meetings of ROS community devoted to implementation of the code review process. It appears that the hacker ethic is a key reason behind the success of code review in FOSS communities. It is built around the ethic of passion and the ethic of caring. Furthermore, we observed that tasks of code review are performed with strong intrinsic motivation, supported by many non-material extrinsic motivation mechanisms, such as desire to learn, to grow reputation, or to improve one's positioning on the job market. In the paper, we describe the study design, analyze the collected data and formulate 20 proposals for how what we know about hacker ethics and human and social aspects of code review, could be exploited to improve the effectiveness of the practice in software projects.
开源软件社区已经证明他们可以产生高质量的结果。同行代码审查的总体成功(通常用于开源项目)可能对这一成功做出了巨大贡献。代码审查是一项充满情感的工作,它会公开暴露自己的声誉,并有很多机会发生冲突。我们开始问为什么代码审查对开源社区有效,尽管存在这个固有的挑战。我们采访了来自四个社区的21个开源贡献者,并参加了ROS社区的会议,专门讨论代码审查过程的实现。黑客道德似乎是自由/开源软件社区代码审查成功背后的一个关键原因。它是建立在激情和关怀的伦理之上的。此外,我们观察到代码审查的任务是在强烈的内在动机下进行的,并受到许多非物质的外在动机机制的支持,比如学习的欲望,提高声誉,或者提高自己在就业市场上的定位。在本文中,我们描述了研究设计,分析了收集到的数据,并就如何利用我们对黑客道德以及代码审查的人类和社会方面的了解来提高软件项目实践的有效性提出了20条建议。
{"title":"Why Does Code Review Work for Open Source Software Communities?","authors":"A. Alami, M. Cohn, A. Wąsowski","doi":"10.1109/ICSE.2019.00111","DOIUrl":"https://doi.org/10.1109/ICSE.2019.00111","url":null,"abstract":"Open source software communities have demonstrated that they can produce high quality results. The overall success of peer code review, commonly used in open source projects, has likely contributed strongly to this success. Code review is an emotionally loaded practice, with public exposure of reputation and ample opportunities for conflict. We set off to ask why code review works for open source communities, despite this inherent challenge. We interviewed 21 open source contributors from four communities and participated in meetings of ROS community devoted to implementation of the code review process. It appears that the hacker ethic is a key reason behind the success of code review in FOSS communities. It is built around the ethic of passion and the ethic of caring. Furthermore, we observed that tasks of code review are performed with strong intrinsic motivation, supported by many non-material extrinsic motivation mechanisms, such as desire to learn, to grow reputation, or to improve one's positioning on the job market. In the paper, we describe the study design, analyze the collected data and formulate 20 proposals for how what we know about hacker ethics and human and social aspects of code review, could be exploited to improve the effectiveness of the practice in software projects.","PeriodicalId":6736,"journal":{"name":"2019 IEEE/ACM 41st International Conference on Software Engineering (ICSE)","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2019-05-25","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"89448706","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}
引用次数: 23
GreenBundle: An Empirical Study on the Energy Impact of Bundled Processing 绿色捆绑:捆绑加工对能源影响的实证研究
Pub Date : 2019-05-25 DOI: 10.1109/ICSE.2019.00114
S. Chowdhury, Abram Hindle, R. Kazman, Takumi Shuto, Ken Matsui, Yasutaka Kamei
Energy consumption is a concern in the data-center and at the edge, on mobile devices such as smartphones. Software that consumes too much energy threatens the utility of the end-user's mobile device. Energy consumption is fundamentally a systemic kind of performance and hence it should be addressed at design time via a software architecture that supports it, rather than after release, via some form of refactoring. Unfortunately developers often lack knowledge of what kinds of designs and architectures can help address software energy consumption. In this paper we show that some simple design choices can have significant effects on energy consumption. In particular we examine the Model-View-Controller architectural pattern and demonstrate how converting to Model-View-Presenter with bundling can improve the energy performance of both benchmark systems and real world applications. We show the relationship between energy consumption and bundled and delayed view updates: bundling events in the presenter can often reduce energy consumption by 30%.
在数据中心和智能手机等移动设备的边缘,能源消耗是一个值得关注的问题。消耗过多能量的软件会威胁到终端用户移动设备的效用。能量消耗基本上是一种系统性能,因此它应该在设计时通过支持它的软件架构来解决,而不是在发布后通过某种形式的重构来解决。不幸的是,开发人员通常不知道什么样的设计和架构可以帮助解决软件能耗问题。在本文中,我们证明了一些简单的设计选择可以对能源消耗产生显着影响。我们特别研究了模型-视图-控制器体系结构模式,并演示了如何通过绑定转换为模型-视图-演示器来提高基准系统和现实世界应用程序的能效。我们展示了能耗与捆绑和延迟视图更新之间的关系:在演示器中捆绑事件通常可以减少30%的能耗。
{"title":"GreenBundle: An Empirical Study on the Energy Impact of Bundled Processing","authors":"S. Chowdhury, Abram Hindle, R. Kazman, Takumi Shuto, Ken Matsui, Yasutaka Kamei","doi":"10.1109/ICSE.2019.00114","DOIUrl":"https://doi.org/10.1109/ICSE.2019.00114","url":null,"abstract":"Energy consumption is a concern in the data-center and at the edge, on mobile devices such as smartphones. Software that consumes too much energy threatens the utility of the end-user's mobile device. Energy consumption is fundamentally a systemic kind of performance and hence it should be addressed at design time via a software architecture that supports it, rather than after release, via some form of refactoring. Unfortunately developers often lack knowledge of what kinds of designs and architectures can help address software energy consumption. In this paper we show that some simple design choices can have significant effects on energy consumption. In particular we examine the Model-View-Controller architectural pattern and demonstrate how converting to Model-View-Presenter with bundling can improve the energy performance of both benchmark systems and real world applications. We show the relationship between energy consumption and bundled and delayed view updates: bundling events in the presenter can often reduce energy consumption by 30%.","PeriodicalId":6736,"journal":{"name":"2019 IEEE/ACM 41st International Conference on Software Engineering (ICSE)","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2019-05-25","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"89931391","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}
引用次数: 15
A System Identification Based Oracle for Control-CPS Software Fault Localization 基于Oracle的Control-CPS软件故障定位系统识别
Pub Date : 2019-05-25 DOI: 10.1109/ICSE.2019.00029
Zhijian He, Yao Chen, Enyan Huang, Qixin Wang, Yu Pei, Haidong Yuan
Control-CPS software fault localization (SFL, aka bug localization) is of critical importance as bugs may cause major failures, even injuries/deaths. To locate the bugs in control-CPSs, SFL tools often demand many labeled ("correct"/"incorrect") source code execution traces as inputs. To label the correctness of these traces, we must judge the corresponding control-CPS physical trajectories' correctness. However, unlike discrete outputs, the boundaries between correct and incorrect physical trajectories are often vague. The mechanism (aka oracle) to judge the physical trajectories' correctness thus becomes a major challenge. So far, the ad hoc practice of ``human oracles'' is still widely used, whose qualities heavily depend on the human experts' expertise and availability. This paper proposes an oracle based on the well adopted autoregressive system identification (AR-SI). With proven success for controlling black-box physical systems, AR-SI is adapted by us to identify the buggy control-CPS as a black-box. We use this identification result as an oracle to judge the control-CPS's behaviors, and propose a methodology to prepare traces for control-CPS debugging. Comprehensive evaluations on classic control-CPSs with injected real-life and artificial bugs show that our proposed approach significantly outperforms the human oracle approach in SFL accuracy (recall) and latency, and in oracle false positive/negative rates. Our approach also helps discover a new real-life bug in a consumer-grade control-CPS.
控制- cps软件故障定位(SFL,又名bug定位)至关重要,因为bug可能导致重大故障,甚至伤害/死亡。为了定位控制cps中的错误,SFL工具通常需要许多标记(“正确”/“不正确”)的源代码执行跟踪作为输入。为了标记这些轨迹的正确性,我们必须判断相应的控制- cps物理轨迹的正确性。然而,与离散输出不同,正确和不正确物理轨迹之间的界限通常是模糊的。因此,判断物理轨迹正确性的机制(又名神谕)成为一个重大挑战。迄今为止,“人类神谕”的特别实践仍被广泛使用,其质量在很大程度上取决于人类专家的专业知识和可用性。本文提出了一种基于自回归系统辨识(AR-SI)的预测方法。由于AR-SI在控制黑盒物理系统方面取得了成功,我们采用AR-SI来识别有缺陷的控制- cps作为黑盒。我们将此识别结果作为判断control-CPS行为的预言,并提出了一种为control-CPS调试准备跟踪的方法。对注入真实和人工错误的经典对照cps的综合评估表明,我们提出的方法在SFL准确性(召回率)和延迟以及oracle假阳性/阴性率方面明显优于人类oracle方法。我们的方法还有助于在消费级控件- cps中发现新的现实错误。
{"title":"A System Identification Based Oracle for Control-CPS Software Fault Localization","authors":"Zhijian He, Yao Chen, Enyan Huang, Qixin Wang, Yu Pei, Haidong Yuan","doi":"10.1109/ICSE.2019.00029","DOIUrl":"https://doi.org/10.1109/ICSE.2019.00029","url":null,"abstract":"Control-CPS software fault localization (SFL, aka bug localization) is of critical importance as bugs may cause major failures, even injuries/deaths. To locate the bugs in control-CPSs, SFL tools often demand many labeled (\"correct\"/\"incorrect\") source code execution traces as inputs. To label the correctness of these traces, we must judge the corresponding control-CPS physical trajectories' correctness. However, unlike discrete outputs, the boundaries between correct and incorrect physical trajectories are often vague. The mechanism (aka oracle) to judge the physical trajectories' correctness thus becomes a major challenge. So far, the ad hoc practice of ``human oracles'' is still widely used, whose qualities heavily depend on the human experts' expertise and availability. This paper proposes an oracle based on the well adopted autoregressive system identification (AR-SI). With proven success for controlling black-box physical systems, AR-SI is adapted by us to identify the buggy control-CPS as a black-box. We use this identification result as an oracle to judge the control-CPS's behaviors, and propose a methodology to prepare traces for control-CPS debugging. Comprehensive evaluations on classic control-CPSs with injected real-life and artificial bugs show that our proposed approach significantly outperforms the human oracle approach in SFL accuracy (recall) and latency, and in oracle false positive/negative rates. Our approach also helps discover a new real-life bug in a consumer-grade control-CPS.","PeriodicalId":6736,"journal":{"name":"2019 IEEE/ACM 41st International Conference on Software Engineering (ICSE)","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2019-05-25","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"74044339","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}
引用次数: 19
Socio-Technical Work-Rate Increase Associates With Changes in Work Patterns in Online Projects 社会技术工作率的增加与在线项目中工作模式的变化有关
Pub Date : 2019-05-25 DOI: 10.1109/ICSE.2019.00099
F. Sarker, Bogdan Vasilescu, Kelly Blincoe, V. Filkov
Software developers work on a variety of tasks ranging from the technical, e.g., writing code, to the social, e.g., participating in issue resolution discussions. The amount of work developers perform per week (their work-rate) also varies and depends on project needs and developer schedules. Prior work has shown that while moderate levels of increased technical work and multitasking lead to higher productivity, beyond a certain threshold, they can lead to lowered performance. Here, we study how increases in the short-term work-rate along both the technical and social dimensions are associated with changes in developers' work patterns, in particular communication sentiment, technical productivity, and social productivity. We surveyed active and prolific developers on GitHub to understand the causes and impacts of increased work-rates. Guided by the responses, we developed regression models to study how communication and committing patterns change with increased work-rates and fit those models to large-scale data gathered from traces left by thousands of GitHub developers. From our survey and models, we find that most developers do experience work-rate-increase-related changes in behavior. Most notably, our models show that there is a sizable effect when developers comment much more than their average: the negative sentiment in their comments increases, suggesting an increased level of stress. Our models also show that committing patterns do not change with increased commenting, and vice versa, suggesting that technical and social activities tend not to be multitasked.
软件开发人员从事各种各样的任务,从技术方面(例如,编写代码)到社会方面(例如,参与问题解决讨论)。开发人员每周执行的工作量(他们的工作率)也根据项目需求和开发人员时间表而变化。先前的研究表明,虽然适度增加的技术工作和多任务处理会提高工作效率,但超过一定的阈值,就会导致工作表现下降。在这里,我们研究了技术和社会维度上的短期工作率的增加是如何与开发人员工作模式的变化相关联的,特别是沟通情绪、技术生产力和社会生产力。我们调查了GitHub上活跃和多产的开发人员,以了解工作率增加的原因和影响。在响应的指导下,我们开发了回归模型来研究通信和提交模式如何随着工作率的增加而变化,并将这些模型与从数千名GitHub开发人员留下的痕迹中收集的大规模数据相匹配。从我们的调查和模型中,我们发现大多数开发人员确实经历了与工作效率增加相关的行为变化。最值得注意的是,我们的模型显示,当开发者的评论远远超过他们的平均水平时,会产生相当大的影响:他们评论中的负面情绪会增加,这表明压力水平会增加。我们的模型还表明,提交模式不会随着评论的增加而改变,反之亦然,这表明技术和社会活动往往不是多任务的。
{"title":"Socio-Technical Work-Rate Increase Associates With Changes in Work Patterns in Online Projects","authors":"F. Sarker, Bogdan Vasilescu, Kelly Blincoe, V. Filkov","doi":"10.1109/ICSE.2019.00099","DOIUrl":"https://doi.org/10.1109/ICSE.2019.00099","url":null,"abstract":"Software developers work on a variety of tasks ranging from the technical, e.g., writing code, to the social, e.g., participating in issue resolution discussions. The amount of work developers perform per week (their work-rate) also varies and depends on project needs and developer schedules. Prior work has shown that while moderate levels of increased technical work and multitasking lead to higher productivity, beyond a certain threshold, they can lead to lowered performance. Here, we study how increases in the short-term work-rate along both the technical and social dimensions are associated with changes in developers' work patterns, in particular communication sentiment, technical productivity, and social productivity. We surveyed active and prolific developers on GitHub to understand the causes and impacts of increased work-rates. Guided by the responses, we developed regression models to study how communication and committing patterns change with increased work-rates and fit those models to large-scale data gathered from traces left by thousands of GitHub developers. From our survey and models, we find that most developers do experience work-rate-increase-related changes in behavior. Most notably, our models show that there is a sizable effect when developers comment much more than their average: the negative sentiment in their comments increases, suggesting an increased level of stress. Our models also show that committing patterns do not change with increased commenting, and vice versa, suggesting that technical and social activities tend not to be multitasked.","PeriodicalId":6736,"journal":{"name":"2019 IEEE/ACM 41st International Conference on Software Engineering (ICSE)","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2019-05-25","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"85169742","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}
引用次数: 13
SLF: Fuzzing without Valid Seed Inputs 没有有效种子输入的模糊测试
Pub Date : 2019-05-25 DOI: 10.1109/ICSE.2019.00080
Wei You, Xuwei Liu, Shiqing Ma, D. Perry, X. Zhang, Bin Liang
Fuzzing is an important technique to detect software bugs and vulnerabilities. It works by mutating a small set of seed inputs to generate a large number of new inputs. Fuzzers' performance often substantially degrades when valid seed inputs are not available. Although existing techniques such as symbolic execution can generate seed inputs from scratch, they have various limitations hindering their applications in real-world complex software. In this paper, we propose a novel fuzzing technique that features the capability of generating valid seed inputs. It piggy-backs on AFL to identify input validity checks and the input fields that have impact on such checks. It further classifies these checks according to their relations to the input. Such classes include arithmetic relation, object offset, data structure length and so on. A multi-goal search algorithm is developed to apply class-specific mutations in order to satisfy inter-dependent checks all together. We evaluate our technique on 20 popular benchmark programs collected from other fuzzing projects and the Google fuzzer test suite, and compare it with existing fuzzers AFL and AFLFast, symbolic execution engines KLEE and S2E, and a hybrid tool Driller that combines fuzzing with symbolic execution. The results show that our technique is highly effective and efficient, out-performing the other tools.
模糊测试是检测软件缺陷和漏洞的一项重要技术。它的工作原理是使一小部分种子输入发生突变,从而产生大量的新输入。当没有有效的种子输入时,Fuzzers的性能通常会大幅下降。尽管符号执行等现有技术可以从零开始生成种子输入,但它们有各种限制,阻碍了它们在现实世界复杂软件中的应用。在本文中,我们提出了一种新的模糊技术,其特点是能够产生有效的种子输入。它利用AFL来识别输入有效性检查和对此类检查有影响的输入字段。它根据这些检查与输入的关系进一步对它们进行分类。这些类包括算术关系、对象偏移量、数据结构长度等。提出了一种多目标搜索算法来应用类特异性突变,以满足相互依赖的检查。我们在从其他模糊测试项目和谷歌模糊测试套件中收集的20个流行基准程序中评估了我们的技术,并将其与现有的模糊测试器AFL和AFLFast、符号执行引擎KLEE和S2E以及将模糊测试与符号执行相结合的混合工具Driller进行了比较。结果表明,我们的技术是高效和高效的,优于其他工具。
{"title":"SLF: Fuzzing without Valid Seed Inputs","authors":"Wei You, Xuwei Liu, Shiqing Ma, D. Perry, X. Zhang, Bin Liang","doi":"10.1109/ICSE.2019.00080","DOIUrl":"https://doi.org/10.1109/ICSE.2019.00080","url":null,"abstract":"Fuzzing is an important technique to detect software bugs and vulnerabilities. It works by mutating a small set of seed inputs to generate a large number of new inputs. Fuzzers' performance often substantially degrades when valid seed inputs are not available. Although existing techniques such as symbolic execution can generate seed inputs from scratch, they have various limitations hindering their applications in real-world complex software. In this paper, we propose a novel fuzzing technique that features the capability of generating valid seed inputs. It piggy-backs on AFL to identify input validity checks and the input fields that have impact on such checks. It further classifies these checks according to their relations to the input. Such classes include arithmetic relation, object offset, data structure length and so on. A multi-goal search algorithm is developed to apply class-specific mutations in order to satisfy inter-dependent checks all together. We evaluate our technique on 20 popular benchmark programs collected from other fuzzing projects and the Google fuzzer test suite, and compare it with existing fuzzers AFL and AFLFast, symbolic execution engines KLEE and S2E, and a hybrid tool Driller that combines fuzzing with symbolic execution. The results show that our technique is highly effective and efficient, out-performing the other tools.","PeriodicalId":6736,"journal":{"name":"2019 IEEE/ACM 41st International Conference on Software Engineering (ICSE)","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"2019-05-25","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"88886420","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}
引用次数: 50
期刊
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