首页 > 最新文献

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

英文 中文
Fuzzy Fine-Grained Code-History Analysis 模糊细粒度代码历史分析
Pub Date : 2017-05-20 DOI: 10.1109/ICSE.2017.74
Francisco Servant, James A. Jones
Existing software-history techniques represent source-code evolution as an absolute and unambiguous mapping of lines of code in prior revisions to lines of code in subsequent revisions. However, the true evolutionary lineage of a line of code is often complex, subjective, and ambiguous. As such, existing techniques are predisposed to, both, overestimate and underestimate true evolution lineage. In this paper, we seek to address these issues by providing a more expressive model of code evolution, the fuzzy history graph, by representing code lineage as a continuous (i.e., fuzzy) metric rather than a discrete (i.e., absolute) one. Using this more descriptive model, we additionally provide a novel multi-revision code-history analysis — fuzzy history slicing. In our experiments over three real-world software systems, we found that the fuzzy history graph provides a tunable balance of precision and recall, and an overall improved accuracy over existing code-evolution models. Furthermore, we found that the use of such a fuzzy model of history provided improved accuracy for code-history analysis tasks.
现有的软件历史技术将源代码演变表示为先前版本中的代码行到后续版本中的代码行的绝对且明确的映射。然而,一行代码的真正进化谱系通常是复杂的、主观的和模糊的。因此,现有的技术倾向于高估和低估真正的进化谱系。在本文中,我们试图通过提供一个更具表现力的代码进化模型来解决这些问题,模糊历史图,通过将代码谱系表示为连续的(即模糊的)度量,而不是离散的(即绝对的)度量。利用这个更具描述性的模型,我们还提供了一种新的多版本代码历史分析-模糊历史切片。在我们对三个真实软件系统的实验中,我们发现模糊历史图提供了精度和召回率的可调平衡,并且在现有代码进化模型上总体上提高了准确性。此外,我们发现使用这种历史模糊模型可以提高代码历史分析任务的准确性。
{"title":"Fuzzy Fine-Grained Code-History Analysis","authors":"Francisco Servant, James A. Jones","doi":"10.1109/ICSE.2017.74","DOIUrl":"https://doi.org/10.1109/ICSE.2017.74","url":null,"abstract":"Existing software-history techniques represent source-code evolution as an absolute and unambiguous mapping of lines of code in prior revisions to lines of code in subsequent revisions. However, the true evolutionary lineage of a line of code is often complex, subjective, and ambiguous. As such, existing techniques are predisposed to, both, overestimate and underestimate true evolution lineage. In this paper, we seek to address these issues by providing a more expressive model of code evolution, the fuzzy history graph, by representing code lineage as a continuous (i.e., fuzzy) metric rather than a discrete (i.e., absolute) one. Using this more descriptive model, we additionally provide a novel multi-revision code-history analysis — fuzzy history slicing. In our experiments over three real-world software systems, we found that the fuzzy history graph provides a tunable balance of precision and recall, and an overall improved accuracy over existing code-evolution models. Furthermore, we found that the use of such a fuzzy model of history provided improved accuracy for code-history analysis tasks.","PeriodicalId":6505,"journal":{"name":"2017 IEEE/ACM 39th International Conference on Software Engineering (ICSE)","volume":"24 1","pages":"746-757"},"PeriodicalIF":0.0,"publicationDate":"2017-05-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"74646002","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
Glacier: Transitive Class Immutability for Java Java的传递类不变性
Pub Date : 2017-05-20 DOI: 10.1109/ICSE.2017.52
Michael J. Coblenz, Whitney Nelson, Jonathan Aldrich, B. Myers, Joshua Sunshine
Though immutability has been long-proposed as a way to prevent bugs in software, little is known about how to make immutability support in programming languages effective for software engineers. We designed a new formalism that extends Java to support transitive class immutability, the form of immutability for which there is the strongest empirical support, and implemented that formalism in a tool called Glacier. We applied Glacier successfully to two real-world systems. We also compared Glacier to Java's final in a user study of twenty participants. We found that even after being given instructions on how to express immutability with final, participants who used final were unable to express immutability correctly, whereas almost all participants who used Glacier succeeded. We also asked participants to make specific changes to immutable classes and found that participants who used final all incorrectly mutated immutable state, whereas almost all of the participants who used Glacier succeeded. Glacier represents a promising approach to enforcing immutability in Java and provides a model for enforcement in other languages.
尽管长期以来,不变性一直被认为是防止软件bug的一种方法,但对于如何使编程语言中的不变性支持对软件工程师有效却知之甚少。我们设计了一种新的形式,它扩展了Java来支持传递类的不变性,这种形式的不变性有最强的经验支持,并在一个名为Glacier的工具中实现了这种形式。我们成功地将Glacier应用于两个现实世界的系统。我们还将Glacier与Java的final进行了比较,共有20名参与者。我们发现,即使被告知如何用final表达不变性,使用final的参与者也无法正确表达不变性,而几乎所有使用Glacier的参与者都成功了。我们还要求参与者对不可变类进行特定的更改,发现使用final的参与者都错误地改变了不可变状态,而几乎所有使用Glacier的参与者都成功了。Glacier代表了在Java中实现不变性的一种很有前途的方法,并为在其他语言中实现不变性提供了一个模型。
{"title":"Glacier: Transitive Class Immutability for Java","authors":"Michael J. Coblenz, Whitney Nelson, Jonathan Aldrich, B. Myers, Joshua Sunshine","doi":"10.1109/ICSE.2017.52","DOIUrl":"https://doi.org/10.1109/ICSE.2017.52","url":null,"abstract":"Though immutability has been long-proposed as a way to prevent bugs in software, little is known about how to make immutability support in programming languages effective for software engineers. We designed a new formalism that extends Java to support transitive class immutability, the form of immutability for which there is the strongest empirical support, and implemented that formalism in a tool called Glacier. We applied Glacier successfully to two real-world systems. We also compared Glacier to Java's final in a user study of twenty participants. We found that even after being given instructions on how to express immutability with final, participants who used final were unable to express immutability correctly, whereas almost all participants who used Glacier succeeded. We also asked participants to make specific changes to immutable classes and found that participants who used final all incorrectly mutated immutable state, whereas almost all of the participants who used Glacier succeeded. Glacier represents a promising approach to enforcing immutability in Java and provides a model for enforcement in other languages.","PeriodicalId":6505,"journal":{"name":"2017 IEEE/ACM 39th International Conference on Software Engineering (ICSE)","volume":"51 1","pages":"496-506"},"PeriodicalIF":0.0,"publicationDate":"2017-05-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"81922166","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}
引用次数: 37
Search-Driven String Constraint Solving for Vulnerability Detection 基于搜索驱动的字符串约束求解漏洞检测
Pub Date : 2017-05-20 DOI: 10.1109/ICSE.2017.26
Julian Thomé, Lwin Khin Shar, D. Bianculli, L. Briand
Constraint solving is an essential technique for detecting vulnerabilities in programs, since it can reason about input sanitization and validation operations performed on user inputs. However, real-world programs typically contain complex string operations that challenge vulnerability detection. State-of-the-art string constraint solvers support only a limited set of string operations and fail when they encounter an unsupported one, this leads to limited effectiveness in finding vulnerabilities. In this paper we propose a search-driven constraint solving technique that complements the support for complex string operations provided by any existing string constraint solver. Our technique uses a hybrid constraint solving procedure based on the Ant Colony Optimization meta-heuristic. The idea is to execute it as a fallback mechanism, only when a solver encounters a constraint containing an operation that it does not support. We have implemented the proposed search-driven constraint solving technique in the ACO-Solver tool, which we have evaluated in the context of injection and XSS vulnerability detection for Java Web applications. We have assessed the benefits and costs of combining the proposed technique with two state-of-the-art constraint solvers (Z3-str2 and CVC4). The experimental results, based on a benchmark with 104 constraints derived from nine realistic Web applications, show that our approach, when combined in a state-of-the-art solver, significantly improves the number of detected vulnerabilities (from 4.7% to 71.9% for Z3-str2, from 85.9% to 100.0% for CVC4), and solves several cases on which the solver fails when used stand-alone (46 more solved cases for Z3-str2, and 11 more for CVC4), while still keeping the execution time affordable in practice.
约束求解是检测程序漏洞的基本技术,因为它可以推断对用户输入执行的输入清理和验证操作。然而,现实世界的程序通常包含复杂的字符串操作,这给漏洞检测带来了挑战。最先进的字符串约束求解器只支持有限的一组字符串操作,并且在遇到不支持的字符串操作时失败,这导致查找漏洞的有效性有限。在本文中,我们提出了一种搜索驱动的约束求解技术,以补充现有字符串约束求解器对复杂字符串操作的支持。我们的技术使用了一种基于蚁群优化元启发式的混合约束求解过程。其思想是,只有当求解器遇到包含它不支持的操作的约束时,才将其作为回退机制执行。我们已经在ACO-Solver工具中实现了所提出的搜索驱动约束求解技术,并在Java Web应用程序的注入和XSS漏洞检测上下文中对其进行了评估。我们已经评估了将所提出的技术与两个最先进的约束求解器(Z3-str2和CVC4)相结合的收益和成本。基于来自9个现实Web应用程序的104个约束的基准测试的实验结果表明,当我们的方法与最先进的求解器结合使用时,可以显着提高检测到的漏洞数量(从Z3-str2的4.7%到71.9%,从CVC4的85.9%到100.0%),并解决了求解器单独使用时失败的几种情况(Z3-str2多解决了46个案例,CVC4多解决了11个案例)。同时在实践中仍然保持可承受的执行时间。
{"title":"Search-Driven String Constraint Solving for Vulnerability Detection","authors":"Julian Thomé, Lwin Khin Shar, D. Bianculli, L. Briand","doi":"10.1109/ICSE.2017.26","DOIUrl":"https://doi.org/10.1109/ICSE.2017.26","url":null,"abstract":"Constraint solving is an essential technique for detecting vulnerabilities in programs, since it can reason about input sanitization and validation operations performed on user inputs. However, real-world programs typically contain complex string operations that challenge vulnerability detection. State-of-the-art string constraint solvers support only a limited set of string operations and fail when they encounter an unsupported one, this leads to limited effectiveness in finding vulnerabilities. In this paper we propose a search-driven constraint solving technique that complements the support for complex string operations provided by any existing string constraint solver. Our technique uses a hybrid constraint solving procedure based on the Ant Colony Optimization meta-heuristic. The idea is to execute it as a fallback mechanism, only when a solver encounters a constraint containing an operation that it does not support. We have implemented the proposed search-driven constraint solving technique in the ACO-Solver tool, which we have evaluated in the context of injection and XSS vulnerability detection for Java Web applications. We have assessed the benefits and costs of combining the proposed technique with two state-of-the-art constraint solvers (Z3-str2 and CVC4). The experimental results, based on a benchmark with 104 constraints derived from nine realistic Web applications, show that our approach, when combined in a state-of-the-art solver, significantly improves the number of detected vulnerabilities (from 4.7% to 71.9% for Z3-str2, from 85.9% to 100.0% for CVC4), and solves several cases on which the solver fails when used stand-alone (46 more solved cases for Z3-str2, and 11 more for CVC4), while still keeping the execution time affordable in practice.","PeriodicalId":6505,"journal":{"name":"2017 IEEE/ACM 39th International Conference on Software Engineering (ICSE)","volume":"27 1","pages":"198-208"},"PeriodicalIF":0.0,"publicationDate":"2017-05-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"85677624","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}
引用次数: 31
Detecting User Story Information in Developer-Client Conversations to Generate Extractive Summaries 在开发人员-客户端对话中检测用户故事信息以生成提取摘要
Pub Date : 2017-05-20 DOI: 10.1109/ICSE.2017.13
Paige Rodeghero, Siyuan Jiang, A. Armaly, Collin McMillan
User stories are descriptions of functionality that a software user needs. They play an important role in determining which software requirements and bug fixes should be handled and in what order. Developers elicit user stories through meetings with customers. But user story elicitation is complex, and involves many passes to accommodate shifting and unclear customer needs. The result is that developers must take detailed notes during meetings or risk missing important information. Ideally, developers would be freed of the need to take notes themselves, and instead speak naturally with their customers. This paper is a step towards that ideal. We present a technique for automatically extracting information relevant to user stories from recorded conversations between customers and developers. We perform a qualitative study to demonstrate that user story information exists in these conversations in a sufficient quantity to extract automatically. From this, we found that roughly 10.2% of these conversations contained user story information. Then, we test our technique in a quantitative study to determine the degree to which our technique can extract user story information. In our experiment, our process obtained about 70.8% precision and 18.3% recall on the information.
用户故事是对软件用户需要的功能的描述。它们在确定应该处理哪些软件需求和错误修复以及以何种顺序处理方面发挥着重要作用。开发人员通过与客户的会议引出用户故事。但是,用户故事的引出是复杂的,并且涉及许多步骤来适应不断变化和不明确的客户需求。结果是,开发人员必须在会议期间做详细的笔记,否则可能会错过重要的信息。理想情况下,开发人员将不再需要自己做笔记,而是自然地与客户交谈。这篇论文是朝着这个理想迈出的一步。我们提出了一种技术,用于从客户和开发人员之间记录的对话中自动提取与用户故事相关的信息。我们进行了定性研究,以证明用户故事信息在这些对话中以足够的数量存在,可以自动提取。由此,我们发现大约10.2%的对话包含用户故事信息。然后,我们在定量研究中测试我们的技术,以确定我们的技术可以提取用户故事信息的程度。在我们的实验中,我们的过程获得了70.8%的准确率和18.3%的召回率。
{"title":"Detecting User Story Information in Developer-Client Conversations to Generate Extractive Summaries","authors":"Paige Rodeghero, Siyuan Jiang, A. Armaly, Collin McMillan","doi":"10.1109/ICSE.2017.13","DOIUrl":"https://doi.org/10.1109/ICSE.2017.13","url":null,"abstract":"User stories are descriptions of functionality that a software user needs. They play an important role in determining which software requirements and bug fixes should be handled and in what order. Developers elicit user stories through meetings with customers. But user story elicitation is complex, and involves many passes to accommodate shifting and unclear customer needs. The result is that developers must take detailed notes during meetings or risk missing important information. Ideally, developers would be freed of the need to take notes themselves, and instead speak naturally with their customers. This paper is a step towards that ideal. We present a technique for automatically extracting information relevant to user stories from recorded conversations between customers and developers. We perform a qualitative study to demonstrate that user story information exists in these conversations in a sufficient quantity to extract automatically. From this, we found that roughly 10.2% of these conversations contained user story information. Then, we test our technique in a quantitative study to determine the degree to which our technique can extract user story information. In our experiment, our process obtained about 70.8% precision and 18.3% recall on the information.","PeriodicalId":6505,"journal":{"name":"2017 IEEE/ACM 39th International Conference on Software Engineering (ICSE)","volume":"11 1","pages":"49-59"},"PeriodicalIF":0.0,"publicationDate":"2017-05-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"88959125","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}
引用次数: 58
Machine-Learning-Guided Selectively Unsound Static Analysis 机器学习引导的选择性不健全静态分析
Pub Date : 2017-05-20 DOI: 10.1109/ICSE.2017.54
K. Heo, Hakjoo Oh, K. Yi
We present a machine-learning-based technique for selectively applying unsoundness in static analysis. Existing bug-finding static analyzers are unsound in order to be precise and scalable in practice. However, they are uniformly unsound and hence at the risk of missing a large amount of real bugs. By being sound, we can improve the detectability of the analyzer but it often suffers from a large number of false alarms. Our approach aims to strike a balance between these two approaches by selectively allowing unsoundness only when it is likely to reduce false alarms, while retaining true alarms. We use an anomaly-detection technique to learn such harmless unsoundness. We implemented our technique in two static analyzers for full C. One is for a taint analysis for detecting format-string vulnerabilities, and the other is for an interval analysis for buffer-overflow detection. The experimental results show that our approach significantly improves the recall of the original unsound analysis without sacrificing the precision.
我们提出了一种基于机器学习的技术,用于选择性地在静态分析中应用不稳健性。为了在实践中精确和可扩展,现有的bug查找静态分析器是不健全的。然而,它们都是不可靠的,因此有可能遗漏大量真正的bug。通过合理的检测,可以提高分析仪的可检测性,但往往存在大量的误报。我们的方法旨在在这两种方法之间取得平衡,只有在可能减少假警报的情况下才有选择地允许不健全,同时保留真警报。我们使用异常检测技术来学习这种无害的不健全。我们在两个静态分析器中实现了我们的技术。一个是用于检测格式字符串漏洞的污染分析,另一个是用于缓冲区溢出检测的间隔分析。实验结果表明,该方法在不牺牲精度的前提下,显著提高了原始不健全分析的召回率。
{"title":"Machine-Learning-Guided Selectively Unsound Static Analysis","authors":"K. Heo, Hakjoo Oh, K. Yi","doi":"10.1109/ICSE.2017.54","DOIUrl":"https://doi.org/10.1109/ICSE.2017.54","url":null,"abstract":"We present a machine-learning-based technique for selectively applying unsoundness in static analysis. Existing bug-finding static analyzers are unsound in order to be precise and scalable in practice. However, they are uniformly unsound and hence at the risk of missing a large amount of real bugs. By being sound, we can improve the detectability of the analyzer but it often suffers from a large number of false alarms. Our approach aims to strike a balance between these two approaches by selectively allowing unsoundness only when it is likely to reduce false alarms, while retaining true alarms. We use an anomaly-detection technique to learn such harmless unsoundness. We implemented our technique in two static analyzers for full C. One is for a taint analysis for detecting format-string vulnerabilities, and the other is for an interval analysis for buffer-overflow detection. The experimental results show that our approach significantly improves the recall of the original unsound analysis without sacrificing the precision.","PeriodicalId":6505,"journal":{"name":"2017 IEEE/ACM 39th International Conference on Software Engineering (ICSE)","volume":"383 1","pages":"519-529"},"PeriodicalIF":0.0,"publicationDate":"2017-05-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"80718876","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}
引用次数: 51
Repairing Event Race Errors by Controlling Nondeterminism 通过控制不确定性修复事件赛跑错误
Pub Date : 2017-05-20 DOI: 10.1109/ICSE.2017.34
Christoffer Quist Adamsen, Anders Møller, Rezwana Karim, Manu Sridharan, F. Tip, Koushik Sen
Modern web applications are written in an event-driven style, in which event handlers execute asynchronously in response to user or system events. The nondeterminism arising from this programming style can lead to pernicious errors. Recent work focuses on detecting event races and classifying them as harmful or harmless. However, since modifying the source code to prevent harmful races can be a difficult and error-prone task, it may be preferable to steer away from the bad executions. In this paper, we present a technique for automated repair of event race errors in JavaScript web applications. Our approach relies on an event controller that restricts event handler scheduling in the browser according to a specified repair policy, by intercepting and carefully postponing or discarding selected events. We have implemented the technique in a tool called EventRaceCommander, which relies entirely on source code instrumentation, and evaluated it by repairing more than 100 event race errors that occur in the web applications from the largest 20 of the Fortune 500 companies. Our results show that application-independent repair policies usually suffice to repair event race errors without excessive negative impact on performance or user experience, though application-specific repair policies that target specific event races are sometimes desirable.
现代web应用程序是以事件驱动的方式编写的,其中事件处理程序异步执行以响应用户或系统事件。这种编程风格产生的不确定性可能导致有害的错误。最近的工作重点是检测赛事竞赛,并将其分类为有害或无害。然而,由于修改源代码以防止有害的竞争可能是一项困难且容易出错的任务,因此最好避免错误的执行。在本文中,我们提出了一种在JavaScript web应用程序中自动修复事件竞争错误的技术。我们的方法依赖于一个事件控制器,该事件控制器通过拦截和小心地推迟或丢弃选定的事件,根据指定的修复策略限制浏览器中的事件处理程序调度。我们已经在一个名为eventracecommand的工具中实现了这项技术,它完全依赖于源代码检测,并通过修复来自财富500强中最大的20家公司的web应用程序中发生的100多个事件竞争错误来评估它。我们的结果表明,独立于应用程序的修复策略通常足以修复事件竞争错误,而不会对性能或用户体验产生过多的负面影响,尽管有时需要针对特定事件竞争的特定于应用程序的修复策略。
{"title":"Repairing Event Race Errors by Controlling Nondeterminism","authors":"Christoffer Quist Adamsen, Anders Møller, Rezwana Karim, Manu Sridharan, F. Tip, Koushik Sen","doi":"10.1109/ICSE.2017.34","DOIUrl":"https://doi.org/10.1109/ICSE.2017.34","url":null,"abstract":"Modern web applications are written in an event-driven style, in which event handlers execute asynchronously in response to user or system events. The nondeterminism arising from this programming style can lead to pernicious errors. Recent work focuses on detecting event races and classifying them as harmful or harmless. However, since modifying the source code to prevent harmful races can be a difficult and error-prone task, it may be preferable to steer away from the bad executions. In this paper, we present a technique for automated repair of event race errors in JavaScript web applications. Our approach relies on an event controller that restricts event handler scheduling in the browser according to a specified repair policy, by intercepting and carefully postponing or discarding selected events. We have implemented the technique in a tool called EventRaceCommander, which relies entirely on source code instrumentation, and evaluated it by repairing more than 100 event race errors that occur in the web applications from the largest 20 of the Fortune 500 companies. Our results show that application-independent repair policies usually suffice to repair event race errors without excessive negative impact on performance or user experience, though application-specific repair policies that target specific event races are sometimes desirable.","PeriodicalId":6505,"journal":{"name":"2017 IEEE/ACM 39th International Conference on Software Engineering (ICSE)","volume":"71 1","pages":"289-299"},"PeriodicalIF":0.0,"publicationDate":"2017-05-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"88653642","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}
引用次数: 35
Understanding the Impressions, Motivations, and Barriers of One Time Code Contributors to FLOSS Projects: A Survey 了解一次性代码贡献者对FLOSS项目的印象、动机和障碍:调查
Pub Date : 2017-05-20 DOI: 10.1109/ICSE.2017.25
Amanda Lee, Jeffrey C. Carver, Amiangshu Bosu
Successful Free/Libre Open Source Software (FLOSS) projects must attract and retain high-quality talent. Researchers have invested considerable effort in the study of core and peripheral FLOSS developers. To this point, one critical subset of developers that have not been studied are One-Time code Contributors (OTC) – those that have had exactly one patch accepted. To understand why OTCs have not contributed another patch and provide guidance to FLOSS projects on retaining OTCs, this study seeks to understand the impressions, motivations, and barriers experienced by OTCs. We conducted an online survey of OTCs from 23 popular FLOSS projects. Based on the 184 responses received, we observed that OTCs generally have positive impressions of their FLOSS project and are driven by a variety of motivations. Most OTCs primarily made contributions to fix bugs that impeded their work and did not plan on becoming long term contributors. Furthermore, OTCs encounter a number of barriers that prevent them from continuing to contribute to the project. Based on our findings, there are some concrete actions FLOSS projects can take to increase the chances of converting OTCs into long-term contributors.
成功的自由/自由开源软件(FLOSS)项目必须吸引和留住高质量的人才。研究人员已经在核心和外围FLOSS开发人员的研究上投入了相当多的精力。到目前为止,尚未研究的开发人员的一个关键子集是一次性代码贡献者(OTC)——那些只接受了一个补丁的开发人员。为了理解为什么otc没有贡献另一个补丁,并为FLOSS项目提供关于保留otc的指导,本研究试图理解otc的印象、动机和障碍。我们对23个流行的FLOSS项目的ota进行了在线调查。根据收到的184个答复,我们观察到,otc通常对他们的FLOSS项目有积极的印象,并且受到各种动机的驱动。大多数otc的贡献主要是修复阻碍他们工作的错误,并没有计划成为长期贡献者。此外,otc遇到了许多阻碍他们继续为项目做出贡献的障碍。根据我们的发现,FLOSS项目可以采取一些具体的行动来增加将otc转化为长期贡献者的机会。
{"title":"Understanding the Impressions, Motivations, and Barriers of One Time Code Contributors to FLOSS Projects: A Survey","authors":"Amanda Lee, Jeffrey C. Carver, Amiangshu Bosu","doi":"10.1109/ICSE.2017.25","DOIUrl":"https://doi.org/10.1109/ICSE.2017.25","url":null,"abstract":"Successful Free/Libre Open Source Software (FLOSS) projects must attract and retain high-quality talent. Researchers have invested considerable effort in the study of core and peripheral FLOSS developers. To this point, one critical subset of developers that have not been studied are One-Time code Contributors (OTC) – those that have had exactly one patch accepted. To understand why OTCs have not contributed another patch and provide guidance to FLOSS projects on retaining OTCs, this study seeks to understand the impressions, motivations, and barriers experienced by OTCs. We conducted an online survey of OTCs from 23 popular FLOSS projects. Based on the 184 responses received, we observed that OTCs generally have positive impressions of their FLOSS project and are driven by a variety of motivations. Most OTCs primarily made contributions to fix bugs that impeded their work and did not plan on becoming long term contributors. Furthermore, OTCs encounter a number of barriers that prevent them from continuing to contribute to the project. Based on our findings, there are some concrete actions FLOSS projects can take to increase the chances of converting OTCs into long-term contributors.","PeriodicalId":6505,"journal":{"name":"2017 IEEE/ACM 39th International Conference on Software Engineering (ICSE)","volume":"31 1","pages":"187-197"},"PeriodicalIF":0.0,"publicationDate":"2017-05-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"91260267","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}
引用次数: 91
Balancing Soundness and Efficiency for Practical Testing of Configurable Systems 可配置系统实际测试的可靠性与效率平衡
Pub Date : 2017-05-20 DOI: 10.1109/ICSE.2017.64
Sabrina Souto, Marcelo d’Amorim, Rohit Gheyi
Testing configurable systems is important and challenging due to the enormous space of configurations where errors can hide. Existing approaches to test these systems are often costly or unreliable. This paper proposes S-SPLat, a technique that combines heuristic sampling with symbolic search to obtain both breadth and depth in the exploration of the configuration space. S-SPLat builds on SPLat, our previously developed technique, that explores all reachable configurations from tests. In contrast to its predecessor, S-SPLat sacrifices soundness in favor of efficiency. We evaluated our technique on eight software product lines of various sizes and on a large configurable system – GCC. Considering the results for GCC, S-SPLat was able to reproduce all five bugs that we previously found in a previous study with SPLat but much faster and it was able to find two new bugs in a recent release of GCC. Results suggest that it is preferable to use a combination of simple heuristics to drive the symbolic search as opposed to a single heuristic. S-SPLat and our experimental infrastructure are publicly available.
测试可配置系统既重要又具有挑战性,因为可能隐藏错误的巨大配置空间。现有的测试这些系统的方法通常是昂贵的或不可靠的。本文提出了一种将启发式采样与符号搜索相结合的S-SPLat技术,以获得对构型空间探索的广度和深度。S-SPLat建立在SPLat之上,SPLat是我们以前开发的技术,它从测试中探索所有可到达的配置。与它的前身相比,S-SPLat为了效率而牺牲了稳健。我们在8个不同大小的软件产品线和一个大型可配置系统——GCC上评估了我们的技术。考虑到GCC的结果,S-SPLat能够重现我们之前在SPLat的研究中发现的所有五个错误,但速度要快得多,并且能够在最近的GCC版本中发现两个新错误。结果表明,与单一启发式相比,使用简单启发式的组合来驱动符号搜索是可取的。S-SPLat和我们的实验基础设施是公开的。
{"title":"Balancing Soundness and Efficiency for Practical Testing of Configurable Systems","authors":"Sabrina Souto, Marcelo d’Amorim, Rohit Gheyi","doi":"10.1109/ICSE.2017.64","DOIUrl":"https://doi.org/10.1109/ICSE.2017.64","url":null,"abstract":"Testing configurable systems is important and challenging due to the enormous space of configurations where errors can hide. Existing approaches to test these systems are often costly or unreliable. This paper proposes S-SPLat, a technique that combines heuristic sampling with symbolic search to obtain both breadth and depth in the exploration of the configuration space. S-SPLat builds on SPLat, our previously developed technique, that explores all reachable configurations from tests. In contrast to its predecessor, S-SPLat sacrifices soundness in favor of efficiency. We evaluated our technique on eight software product lines of various sizes and on a large configurable system – GCC. Considering the results for GCC, S-SPLat was able to reproduce all five bugs that we previously found in a previous study with SPLat but much faster and it was able to find two new bugs in a recent release of GCC. Results suggest that it is preferable to use a combination of simple heuristics to drive the symbolic search as opposed to a single heuristic. S-SPLat and our experimental infrastructure are publicly available.","PeriodicalId":6505,"journal":{"name":"2017 IEEE/ACM 39th International Conference on Software Engineering (ICSE)","volume":"23 1","pages":"632-642"},"PeriodicalIF":0.0,"publicationDate":"2017-05-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"81612796","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}
引用次数: 31
Feedback-Based Debugging 基于反馈的调试
Pub Date : 2017-05-20 DOI: 10.1109/ICSE.2017.43
Yun Lin, Jun Sun, Yinxing Xue, Yang Liu, J. Dong
Software debugging has long been regarded as a time and effort consuming task. In the process of debugging, developers usually need to manually inspect many program steps to see whether they deviate from their intended behaviors. Given that intended behaviors usually exist nowhere but in human mind, the automation of debugging turns out to be extremely hard, if not impossible. In this work, we propose a feedback-based debugging approach, which (1) builds on light-weight human feedbacks on a buggy program and (2) regards the feedbacks as partial program specification to infer suspicious steps of the buggy execution. Given a buggy program, we record its execution trace and allow developers to provide light-weight feedback on trace steps. Based on the feedbacks, we recommend suspicious steps on the trace. Moreover, our approach can further learn and approximate bug-free paths, which helps reduce required feedbacks to expedite the debugging process. We conduct an experiment to evaluate our approach with simulated feedbacks on 3409 mutated bugs across 3 open source projects. The results show that our feedback-based approach can detect 92.8% of the bugs and 65% of the detected bugs require less than 20 feedbacks. In addition, we implement our proof-of-concept tool, Microbat, and conduct a user study involving 16 participants on 3 debugging tasks. The results show that, compared to the participants using the baseline tool, Whyline, the ones using Microbat can spend on average 55.8% less time to locate the bugs.
软件调试一直被认为是一项费时费力的工作。在调试过程中,开发人员通常需要手动检查许多程序步骤,以查看它们是否偏离了预期的行为。考虑到预期的行为通常只存在于人的头脑中,调试的自动化即使不是不可能,也是极其困难的。在这项工作中,我们提出了一种基于反馈的调试方法,该方法(1)建立在对错误程序的轻量级人类反馈的基础上,(2)将反馈视为部分程序规范,以推断错误执行的可疑步骤。给定一个有缺陷的程序,我们记录它的执行跟踪,并允许开发人员提供关于跟踪步骤的轻量级反馈。根据反馈,我们会推荐可疑的跟踪步骤。此外,我们的方法可以进一步学习和近似无bug的路径,这有助于减少所需的反馈,从而加快调试过程。我们对3个开源项目中的3409个突变bug进行了模拟反馈,以评估我们的方法。结果表明,基于反馈的方法可以检测出92.8%的bug,其中65%的bug需要的反馈少于20次。此外,我们实现了概念验证工具Microbat,并对16名参与者进行了3个调试任务的用户研究。结果表明,与使用基线工具Whyline的参与者相比,使用Microbat的参与者平均可以减少55.8%的时间来定位漏洞。
{"title":"Feedback-Based Debugging","authors":"Yun Lin, Jun Sun, Yinxing Xue, Yang Liu, J. Dong","doi":"10.1109/ICSE.2017.43","DOIUrl":"https://doi.org/10.1109/ICSE.2017.43","url":null,"abstract":"Software debugging has long been regarded as a time and effort consuming task. In the process of debugging, developers usually need to manually inspect many program steps to see whether they deviate from their intended behaviors. Given that intended behaviors usually exist nowhere but in human mind, the automation of debugging turns out to be extremely hard, if not impossible. In this work, we propose a feedback-based debugging approach, which (1) builds on light-weight human feedbacks on a buggy program and (2) regards the feedbacks as partial program specification to infer suspicious steps of the buggy execution. Given a buggy program, we record its execution trace and allow developers to provide light-weight feedback on trace steps. Based on the feedbacks, we recommend suspicious steps on the trace. Moreover, our approach can further learn and approximate bug-free paths, which helps reduce required feedbacks to expedite the debugging process. We conduct an experiment to evaluate our approach with simulated feedbacks on 3409 mutated bugs across 3 open source projects. The results show that our feedback-based approach can detect 92.8% of the bugs and 65% of the detected bugs require less than 20 feedbacks. In addition, we implement our proof-of-concept tool, Microbat, and conduct a user study involving 16 participants on 3 debugging tasks. The results show that, compared to the participants using the baseline tool, Whyline, the ones using Microbat can spend on average 55.8% less time to locate the bugs.","PeriodicalId":6505,"journal":{"name":"2017 IEEE/ACM 39th International Conference on Software Engineering (ICSE)","volume":"22 1","pages":"393-403"},"PeriodicalIF":0.0,"publicationDate":"2017-05-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"82496161","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}
引用次数: 43
Can Latent Topics in Source Code Predict Missing Architectural Tactics? 源代码中的潜在主题可以预测缺失的架构策略吗?
Pub Date : 2017-05-20 DOI: 10.1109/ICSE.2017.10
Raghuram Gopalakrishnan, Palak Sharma, Mehdi Mirakhorli, M. Galster
Architectural tactics such as heartbeat, resource pooling, and scheduling provide solutions to satisfy reliability, security, performance, and other critical characteristics of a software system. Current design practices advocate rigorous up-front analysis of the system's quality concerns to identify tactics and where in the code they should be used. In this paper, we explore a bottom-up approach to recommend architectural tactics based on latent topics discovered in the source code of projects. We present a recommender system developed by building predictor models which capture relationships between topical concepts in source code and the use of specific architectural tactics in that code. Based on an extensive analysis of over 116,000 open source systems, we identify significant correlations between latent topics in source code and the usage of architectural tactics. We use this information to construct a predictor for generating tactic recommendations. Our approach is validated through a series of experiments which demonstrate the ability to generate package-level tactic recommendations. We provide further validation via two large-scale studies of Apache Hive and Hadoop to illustrate that our recommender system predicts tactics that are actually implemented by developers in later releases.
诸如心跳、资源池和调度等体系结构策略提供了满足软件系统的可靠性、安全性、性能和其他关键特征的解决方案。当前的设计实践提倡对系统质量问题进行严格的预先分析,以确定策略以及应该在代码中的何处使用它们。在本文中,我们探索了一种自下而上的方法来推荐基于在项目源代码中发现的潜在主题的架构策略。我们提出了一个通过构建预测模型开发的推荐系统,该模型捕获源代码中的主题概念与代码中特定架构策略的使用之间的关系。基于对超过116,000个开放源代码系统的广泛分析,我们确定了源代码中潜在主题与架构策略的使用之间的重要相关性。我们使用这些信息来构建一个预测器来生成战术建议。我们的方法通过一系列实验得到了验证,这些实验证明了生成包级策略建议的能力。我们通过对Apache Hive和Hadoop的两个大规模研究提供了进一步的验证,以说明我们的推荐系统预测的策略实际上是由开发人员在以后的版本中实现的。
{"title":"Can Latent Topics in Source Code Predict Missing Architectural Tactics?","authors":"Raghuram Gopalakrishnan, Palak Sharma, Mehdi Mirakhorli, M. Galster","doi":"10.1109/ICSE.2017.10","DOIUrl":"https://doi.org/10.1109/ICSE.2017.10","url":null,"abstract":"Architectural tactics such as heartbeat, resource pooling, and scheduling provide solutions to satisfy reliability, security, performance, and other critical characteristics of a software system. Current design practices advocate rigorous up-front analysis of the system's quality concerns to identify tactics and where in the code they should be used. In this paper, we explore a bottom-up approach to recommend architectural tactics based on latent topics discovered in the source code of projects. We present a recommender system developed by building predictor models which capture relationships between topical concepts in source code and the use of specific architectural tactics in that code. Based on an extensive analysis of over 116,000 open source systems, we identify significant correlations between latent topics in source code and the usage of architectural tactics. We use this information to construct a predictor for generating tactic recommendations. Our approach is validated through a series of experiments which demonstrate the ability to generate package-level tactic recommendations. We provide further validation via two large-scale studies of Apache Hive and Hadoop to illustrate that our recommender system predicts tactics that are actually implemented by developers in later releases.","PeriodicalId":6505,"journal":{"name":"2017 IEEE/ACM 39th International Conference on Software Engineering (ICSE)","volume":"9 1","pages":"15-26"},"PeriodicalIF":0.0,"publicationDate":"2017-05-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"88101563","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
期刊
2017 IEEE/ACM 39th 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