首页 > 最新文献

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

英文 中文
Context-Aware Conversational Developer Assistants 上下文感知会话开发人员助手
Pub Date : 2018-05-27 DOI: 10.1145/3180155.3180238
N. Bradley, Thomas Fritz, Reid Holmes
Building and maintaining modern software systems requires developers to perform a variety of tasks that span various tools and information sources. The crosscutting nature of these development tasks requires developers to maintain complex mental models and forces them (a) to manually split their high-level tasks into low-level commands that are supported by the various tools, and (b) to (re) establish their current context in each tool. In this paper we present Devy, a Conversational Developer Assistant (CDA) that enables developers to focus on their high-level development tasks. Devy reduces the number of manual, often complex, low-level commands that developers need to perform, freeing them to focus on their high-level tasks. Specifically, Devy infers high-level intent from developer's voice commands and combines this with an automatically-generated context model to determine appropriate workflows for invoking low-level tool actions; where needed, Devy can also prompt the developer for additional information. Through a mixed methods evaluation with 21 industrial developers, we found that Devy provided an intuitive interface that was able to support many development tasks while helping developers stay focused within their development environment. While industrial developers were largely supportive of the automation Devy enabled, they also provided insights into several other tasks and workflows CDAs could support to enable them to better focus on the important parts of their development tasks.
构建和维护现代软件系统需要开发人员执行跨越各种工具和信息源的各种任务。这些开发任务的横切性质要求开发人员维护复杂的心智模型,并迫使他们(a)手动将高级任务拆分为由各种工具支持的低级命令,以及(b)在每个工具中(重新)建立其当前上下文。在本文中,我们介绍Devy,一个会话开发助手(CDA),它使开发人员能够专注于他们的高级开发任务。Devy减少了开发人员需要执行的手动(通常是复杂的)低级命令的数量,使他们能够专注于高级任务。具体来说,Devy从开发人员的语音命令中推断出高级意图,并将其与自动生成的上下文模型相结合,以确定调用低级工具操作的适当工作流;在需要时,Devy还可以提示开发人员提供其他信息。通过对21个工业开发人员的混合方法评估,我们发现Devy提供了一个直观的界面,能够支持许多开发任务,同时帮助开发人员专注于他们的开发环境。虽然工业开发人员在很大程度上支持Devy启用的自动化,但他们也提供了对cda可以支持的其他几个任务和工作流的见解,以使他们能够更好地关注开发任务的重要部分。
{"title":"Context-Aware Conversational Developer Assistants","authors":"N. Bradley, Thomas Fritz, Reid Holmes","doi":"10.1145/3180155.3180238","DOIUrl":"https://doi.org/10.1145/3180155.3180238","url":null,"abstract":"Building and maintaining modern software systems requires developers to perform a variety of tasks that span various tools and information sources. The crosscutting nature of these development tasks requires developers to maintain complex mental models and forces them (a) to manually split their high-level tasks into low-level commands that are supported by the various tools, and (b) to (re) establish their current context in each tool. In this paper we present Devy, a Conversational Developer Assistant (CDA) that enables developers to focus on their high-level development tasks. Devy reduces the number of manual, often complex, low-level commands that developers need to perform, freeing them to focus on their high-level tasks. Specifically, Devy infers high-level intent from developer's voice commands and combines this with an automatically-generated context model to determine appropriate workflows for invoking low-level tool actions; where needed, Devy can also prompt the developer for additional information. Through a mixed methods evaluation with 21 industrial developers, we found that Devy provided an intuitive interface that was able to support many development tasks while helping developers stay focused within their development environment. While industrial developers were largely supportive of the automation Devy enabled, they also provided insights into several other tasks and workflows CDAs could support to enable them to better focus on the important parts of their development tasks.","PeriodicalId":6560,"journal":{"name":"2018 IEEE/ACM 40th International Conference on Software Engineering (ICSE)","volume":"12 1","pages":"993-1003"},"PeriodicalIF":0.0,"publicationDate":"2018-05-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"82420409","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
Inferring and Asserting Distributed System Invariants 推断和断言分布式系统不变量
Pub Date : 2018-05-27 DOI: 10.1145/3180155.3180199
Stewart Grant, Hendrik L. Cech, Ivan Beschastnikh
Distributed systems are difficult to debug and understand. A key reason for this is distributed state, which is not easily accessible and must be pieced together from the states of the individual nodes in the system. We propose Dinv, an automatic approach to help developers of distributed systems uncover the runtime distributed state properties of their systems. Dinv uses static and dynamic program analyses to infer relations between variables at different nodes. For example, in a leader election algorithm, Dinv can relate the variable leader at different nodes to derive the invariant forall ∀ nodes i, j, leader_i = leader_j. This can increase the developer's confidence in the correctness of their system. The developer can also use Dinv to convert an inferred invariant into a distributed runtime assertion on distributed state. We applied Dinv to several popular distributed systems, such as etcd Raft, Hashicorp Serf, and Taipei-Torrent, which have between 1.7K and 144K LOC and are widely used. Dinv derived useful invariants for these systems, including invariants that capture the correctness of distributed routing strategies, leadership, and key hash distribution. We also used Dinv to assert correctness of the inferred etcd Raft invariants at runtime, using these asserts to detect injected silent bugs.
分布式系统很难调试和理解。造成这种情况的一个关键原因是分布式状态,这种状态不容易访问,必须从系统中各个节点的状态拼凑在一起。我们提出了Dinv,这是一种帮助分布式系统开发人员发现其系统的运行时分布式状态属性的自动方法。Dinv使用静态和动态程序分析来推断不同节点上变量之间的关系。例如,在领袖选举算法中,Dinv可以关联不同节点上的变量领袖,以推导出所有∀节点i, j, leader_i = leader_j的不变量。这可以增加开发人员对其系统正确性的信心。开发人员还可以使用Dinv将推断的不变量转换为分布式状态下的分布式运行时断言。我们将Dinv应用于几个流行的分布式系统,如etcd Raft, Hashicorp Serf和Taipei-Torrent,它们的LOC在1.7K到144K之间,并且被广泛使用。Dinv为这些系统导出了有用的不变量,包括捕获分布式路由策略、领导和密钥散列分布正确性的不变量。我们还使用Dinv在运行时断言推断的etcd Raft不变量的正确性,使用这些断言来检测注入的无声错误。
{"title":"Inferring and Asserting Distributed System Invariants","authors":"Stewart Grant, Hendrik L. Cech, Ivan Beschastnikh","doi":"10.1145/3180155.3180199","DOIUrl":"https://doi.org/10.1145/3180155.3180199","url":null,"abstract":"Distributed systems are difficult to debug and understand. A key reason for this is distributed state, which is not easily accessible and must be pieced together from the states of the individual nodes in the system. We propose Dinv, an automatic approach to help developers of distributed systems uncover the runtime distributed state properties of their systems. Dinv uses static and dynamic program analyses to infer relations between variables at different nodes. For example, in a leader election algorithm, Dinv can relate the variable leader at different nodes to derive the invariant forall ∀ nodes i, j, leader_i = leader_j. This can increase the developer's confidence in the correctness of their system. The developer can also use Dinv to convert an inferred invariant into a distributed runtime assertion on distributed state. We applied Dinv to several popular distributed systems, such as etcd Raft, Hashicorp Serf, and Taipei-Torrent, which have between 1.7K and 144K LOC and are widely used. Dinv derived useful invariants for these systems, including invariants that capture the correctness of distributed routing strategies, leadership, and key hash distribution. We also used Dinv to assert correctness of the inferred etcd Raft invariants at runtime, using these asserts to detect injected silent bugs.","PeriodicalId":6560,"journal":{"name":"2018 IEEE/ACM 40th International Conference on Software Engineering (ICSE)","volume":"1 1","pages":"1149-1159"},"PeriodicalIF":0.0,"publicationDate":"2018-05-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"83027743","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
Roles and Impacts of Hands-on Software Architects in Five Industrial Case Studies 软件架构师在五个工业案例研究中的角色和影响
Pub Date : 2018-05-27 DOI: 10.1145/3180155.3180234
Inayat Rehman, Mehdi Mirakhorli, M. Nagappan, Azat Aralbay Uulu, Matthew Thornton
Whether software architects should also code is an enduring question. In order to satisfy performance, security, reliability and other quality concerns, architects need to compare and carefully choose a combination of architectural patterns, styles or tactics. Then later in the development cycle, these architectural choices must be implemented completely and correctly so there will not be any drift from envisioned design. In this paper, we use data analytics-based techniques to study five large-scale software systems, examining the impact and the role of software architects who write code on software quality. Our quantitative study is augmented with a follow-up interview of architects. This paper provides empirical evidence for supporting the pragmatic opinions that architects should write code. Our analysis shows that implementing architectural tactics is more complex than delivering functionality, tactics are more error prone than software functionalities, and the architects tend to introduce fewer bugs into the implementation of architectural tactics compared to the developers.
软件架构师是否也应该编码是一个经久不衰的问题。为了满足性能、安全性、可靠性和其他质量问题,架构师需要比较并仔细选择架构模式、风格或策略的组合。然后在开发周期的后期,这些架构选择必须完全正确地实现,这样才不会偏离预期的设计。在本文中,我们使用基于数据分析的技术来研究五个大型软件系统,检查编写代码的软件架构师对软件质量的影响和作用。我们的定量研究通过对建筑师的后续采访得到了加强。本文为支持架构师应该编写代码的实用主义观点提供了经验证据。我们的分析表明,实现架构策略比交付功能更复杂,策略比软件功能更容易出错,并且与开发人员相比,架构师倾向于在架构策略的实现中引入更少的bug。
{"title":"Roles and Impacts of Hands-on Software Architects in Five Industrial Case Studies","authors":"Inayat Rehman, Mehdi Mirakhorli, M. Nagappan, Azat Aralbay Uulu, Matthew Thornton","doi":"10.1145/3180155.3180234","DOIUrl":"https://doi.org/10.1145/3180155.3180234","url":null,"abstract":"Whether software architects should also code is an enduring question. In order to satisfy performance, security, reliability and other quality concerns, architects need to compare and carefully choose a combination of architectural patterns, styles or tactics. Then later in the development cycle, these architectural choices must be implemented completely and correctly so there will not be any drift from envisioned design. In this paper, we use data analytics-based techniques to study five large-scale software systems, examining the impact and the role of software architects who write code on software quality. Our quantitative study is augmented with a follow-up interview of architects. This paper provides empirical evidence for supporting the pragmatic opinions that architects should write code. Our analysis shows that implementing architectural tactics is more complex than delivering functionality, tactics are more error prone than software functionalities, and the architects tend to introduce fewer bugs into the implementation of architectural tactics compared to the developers.","PeriodicalId":6560,"journal":{"name":"2018 IEEE/ACM 40th International Conference on Software Engineering (ICSE)","volume":"70 1","pages":"117-127"},"PeriodicalIF":0.0,"publicationDate":"2018-05-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"87687132","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 6
To Preserve or Not to Preserve Invalid Solutions in Search-Based Software Engineering: A Case Study in Software Product Lines 在基于搜索的软件工程中保留或不保留无效的解决方案:一个软件产品线的案例研究
Pub Date : 2018-05-27 DOI: 10.1145/3180155.3180163
Jianmei Guo, Kai Shi
Multi-objective evolutionary algorithms (MOEAs) have been successfully applied for software product lines (SPLs) to search for optimal or near-optimal solutions that balance multiple objectives. However, MOEAs usually produce invalid solutions that violate the constraints predefined. As invalid solutions are unbuildable in practice, we debate the preservation of invalid solutions during the search. We conduct experiments on seven real-world SPLs, including five largest SPLs hitherto reported and two SPLs with realistic values and constraints of quality attributes. We identify three potential limitations of preserving invalid solutions. Furthermore, based on the state-of-the-art, we design five algorithm variants that adopt different evolutionary operators. By performance evaluation, we provide empirical guidance on how to preserve valid solutions. Our empirical study demonstrates that whether or not to preserve invalid solutions deserves more attention in the community, and in some cases, we have to preserve valid solutions all along the way.
多目标进化算法(moea)已经成功地应用于软件产品线(SPLs),以寻找平衡多个目标的最优或近最优解决方案。然而,moea通常会产生违反预定义约束的无效解决方案。由于无效解在实践中是不可构建的,我们在搜索过程中对无效解的保存进行了讨论。我们在七个现实世界的SPLs上进行了实验,包括迄今为止报道的五个最大的SPLs和两个具有现实值和质量属性约束的SPLs。我们确定了保留无效解的三个潜在限制。在此基础上,设计了采用不同进化算子的五种算法变体。通过绩效评估,我们为如何保持有效的解决方案提供了经验指导。我们的实证研究表明,是否保留无效的解决方案值得社区更多的关注,在某些情况下,我们必须一直保留有效的解决方案。
{"title":"To Preserve or Not to Preserve Invalid Solutions in Search-Based Software Engineering: A Case Study in Software Product Lines","authors":"Jianmei Guo, Kai Shi","doi":"10.1145/3180155.3180163","DOIUrl":"https://doi.org/10.1145/3180155.3180163","url":null,"abstract":"Multi-objective evolutionary algorithms (MOEAs) have been successfully applied for software product lines (SPLs) to search for optimal or near-optimal solutions that balance multiple objectives. However, MOEAs usually produce invalid solutions that violate the constraints predefined. As invalid solutions are unbuildable in practice, we debate the preservation of invalid solutions during the search. We conduct experiments on seven real-world SPLs, including five largest SPLs hitherto reported and two SPLs with realistic values and constraints of quality attributes. We identify three potential limitations of preserving invalid solutions. Furthermore, based on the state-of-the-art, we design five algorithm variants that adopt different evolutionary operators. By performance evaluation, we provide empirical guidance on how to preserve valid solutions. Our empirical study demonstrates that whether or not to preserve invalid solutions deserves more attention in the community, and in some cases, we have to preserve valid solutions all along the way.","PeriodicalId":6560,"journal":{"name":"2018 IEEE/ACM 40th International Conference on Software Engineering (ICSE)","volume":"130 1","pages":"1027-1038"},"PeriodicalIF":0.0,"publicationDate":"2018-05-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"83443407","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}
引用次数: 10
Symbolic Verification of Regular Properties 正则属性的符号验证
Pub Date : 2018-05-27 DOI: 10.1145/3180155.3180227
Hengbiao Yu, Zhenbang Chen, Ji Wang, Z. Su, Wei Dong
Verifying the regular properties of programs has been a significant challenge. This paper tackles this challenge by presenting symbolic regular verification (SRV) that offers significant speedups over the state-of-the-art. SRV is based on dynamic symbolic execution (DSE) and enabled by novel techniques for mitigating path explosion: (1) a regular property-oriented path slicing algorithm, and (2) a synergistic combination of property-oriented path slicing and guiding. Slicing prunes redundant paths, while guiding boosts the search for counterexamples. We have implemented SRV for Java and evaluated it on 15 real-world open-source Java programs (totaling 259K lines of code). Our evaluation results demonstrate the effectiveness and efficiency of SRV. Compared with the state-of-the-art — pure DSE, pure guiding, and pure path slicing — SRV achieves average speedups of more than 8.4X, 8.6X, and 7X, respectively, making symbolic regular property verification significantly more practical.
验证程序的常规属性一直是一个重大挑战。本文通过提出符号规则验证(SRV)来解决这一挑战,SRV提供了比最先进的显著加速。SRV基于动态符号执行(DSE),并通过以下新技术实现:(1)规则的面向属性的路径切片算法;(2)面向属性的路径切片和引导的协同组合。切片减少了冗余路径,而引导则促进了对反例的搜索。我们已经为Java实现了SRV,并在15个真实的开源Java程序(总共259K行代码)上对其进行了评估。我们的评价结果证明了SRV的有效性和效率。与最先进的纯DSE、纯引导和纯路径切片相比,SRV的平均速度分别超过8.4X、8.6X和7X,使符号正则性验证的实用性大大提高。
{"title":"Symbolic Verification of Regular Properties","authors":"Hengbiao Yu, Zhenbang Chen, Ji Wang, Z. Su, Wei Dong","doi":"10.1145/3180155.3180227","DOIUrl":"https://doi.org/10.1145/3180155.3180227","url":null,"abstract":"Verifying the regular properties of programs has been a significant challenge. This paper tackles this challenge by presenting symbolic regular verification (SRV) that offers significant speedups over the state-of-the-art. SRV is based on dynamic symbolic execution (DSE) and enabled by novel techniques for mitigating path explosion: (1) a regular property-oriented path slicing algorithm, and (2) a synergistic combination of property-oriented path slicing and guiding. Slicing prunes redundant paths, while guiding boosts the search for counterexamples. We have implemented SRV for Java and evaluated it on 15 real-world open-source Java programs (totaling 259K lines of code). Our evaluation results demonstrate the effectiveness and efficiency of SRV. Compared with the state-of-the-art — pure DSE, pure guiding, and pure path slicing — SRV achieves average speedups of more than 8.4X, 8.6X, and 7X, respectively, making symbolic regular property verification significantly more practical.","PeriodicalId":6560,"journal":{"name":"2018 IEEE/ACM 40th International Conference on Software Engineering (ICSE)","volume":"27 1","pages":"871-881"},"PeriodicalIF":0.0,"publicationDate":"2018-05-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"86401324","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
EnMobile: Entity-Based Characterization and Analysis of Mobile Malware EnMobile:基于实体的移动恶意软件表征与分析
Pub Date : 2018-05-27 DOI: 10.1145/3180155.3180223
Wei Yang, M. Prasad, Tao Xie
Modern mobile malware tend to conduct their malicious exploits through sophisticated patterns of interactions that involve multiple entities, e.g., the mobile platform, human users, and network locations. Such malware often evade the detection by existing approaches due to their limited expressiveness and accuracy in characterizing and detecting these malware. To address these issues, in this paper, we recognize entities in the environment of an app, the app's interactions with such entities, and the provenance of these interactions, i.e., the intent and ownership of each interaction, as the key to comprehensively characterizing modern mobile apps, and mobile malware in particular. With this insight, we propose a novel approach named EnMobile including a new entity-based characterization of mobile-app behaviors, and corresponding static analyses, to accurately characterize an app's interactions with entities. We implement EnMobile and provide a practical application of EnMobile in a signature-based scheme for detecting mobile malware. We evaluate EnMobile on a set of 6614 apps consisting of malware from Genome and Drebin along with benign apps from Google Play. Our results show that EnMobile detects malware with substantially higher precision and recall than four state-of-the-art approaches, namely Apposcopy, Drebin, MUDFLOW, and AppContext.
现代移动恶意软件倾向于通过涉及多个实体的复杂交互模式来进行恶意利用,例如,移动平台,人类用户和网络位置。由于这些恶意软件在表征和检测方面的表达能力和准确性有限,通常会逃避现有方法的检测。为了解决这些问题,在本文中,我们识别应用程序环境中的实体,应用程序与这些实体的交互,以及这些交互的来源,即每个交互的意图和所有权,作为全面表征现代移动应用程序,特别是移动恶意软件的关键。基于这一见解,我们提出了一种名为EnMobile的新方法,包括一种新的基于实体的移动应用程序行为表征,以及相应的静态分析,以准确表征应用程序与实体的交互。我们实现了EnMobile,并提供了EnMobile在基于签名的移动恶意软件检测方案中的实际应用。我们用6614款应用对EnMobile进行了评估,这些应用包括来自Genome和Drebin的恶意软件以及来自Google Play的良性应用。我们的研究结果表明,与Apposcopy、Drebin、MUDFLOW和AppContext这四种最先进的方法相比,EnMobile检测恶意软件的准确率和召回率要高得多。
{"title":"EnMobile: Entity-Based Characterization and Analysis of Mobile Malware","authors":"Wei Yang, M. Prasad, Tao Xie","doi":"10.1145/3180155.3180223","DOIUrl":"https://doi.org/10.1145/3180155.3180223","url":null,"abstract":"Modern mobile malware tend to conduct their malicious exploits through sophisticated patterns of interactions that involve multiple entities, e.g., the mobile platform, human users, and network locations. Such malware often evade the detection by existing approaches due to their limited expressiveness and accuracy in characterizing and detecting these malware. To address these issues, in this paper, we recognize entities in the environment of an app, the app's interactions with such entities, and the provenance of these interactions, i.e., the intent and ownership of each interaction, as the key to comprehensively characterizing modern mobile apps, and mobile malware in particular. With this insight, we propose a novel approach named EnMobile including a new entity-based characterization of mobile-app behaviors, and corresponding static analyses, to accurately characterize an app's interactions with entities. We implement EnMobile and provide a practical application of EnMobile in a signature-based scheme for detecting mobile malware. We evaluate EnMobile on a set of 6614 apps consisting of malware from Genome and Drebin along with benign apps from Google Play. Our results show that EnMobile detects malware with substantially higher precision and recall than four state-of-the-art approaches, namely Apposcopy, Drebin, MUDFLOW, and AppContext.","PeriodicalId":6560,"journal":{"name":"2018 IEEE/ACM 40th International Conference on Software Engineering (ICSE)","volume":"61 1","pages":"384-394"},"PeriodicalIF":0.0,"publicationDate":"2018-05-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"78324153","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}
引用次数: 20
Static Automated Program Repair for Heap Properties 堆属性的静态自动程序修复
Pub Date : 2018-05-27 DOI: 10.1145/3180155.3180250
R. V. Tonder, Claire Le Goues
Static analysis tools have demonstrated effectiveness at finding bugs in real world code. Such tools are increasingly widely adopted to improve software quality in practice. Automated Program Repair (APR) has the potential to further cut down on the cost of improving software quality. However, there is a disconnect between these effective bug-finding tools and APR. Recent advances in APR rely on test cases, making them inapplicable to newly discovered bugs or bugs difficult to test for deterministically (like memory leaks). Additionally, the quality of patches generated to satisfy a test suite is a key challenge. We address these challenges by adapting advances in practical static analysis and verification techniques to enable a new technique that finds and then accurately fixes real bugs without test cases. We present a new automated program repair technique using Separation Logic. At a high-level, our technique reasons over semantic effects of existing program fragments to fix faults related to general pointer safety properties: resource leaks, memory leaks, and null dereferences. The procedure automatically translates identified fragments into source-level patches, and verifies patch correctness with respect to reported faults. In this work we conduct the largest study of automatically fixing undiscovered bugs in real-world code to date. We demonstrate our approach by correctly fixing 55 bugs, including 11 previously undiscovered bugs, in 11 real-world projects.
静态分析工具已经证明了在真实世界的代码中发现bug的有效性。这些工具在实践中被越来越广泛地采用来提高软件质量。自动程序修复(APR)具有进一步降低提高软件质量的成本的潜力。然而,在这些有效的bug发现工具和APR之间存在着脱节。APR的最新进展依赖于测试用例,这使得它们不适用于新发现的bug或难以确定地测试的bug(比如内存泄漏)。此外,为满足测试套件而生成的补丁的质量是一个关键的挑战。我们通过适应实际的静态分析和验证技术的进步来解决这些挑战,从而启用一种新的技术,可以在没有测试用例的情况下发现并准确地修复真正的错误。提出了一种基于分离逻辑的自动程序修复技术。在高层次上,我们的技术超越了现有程序片段的语义影响来修复与一般指针安全属性相关的错误:资源泄漏、内存泄漏和空解引用。该过程自动将识别的片段转换为源代码级补丁,并根据报告的错误验证补丁的正确性。在这项工作中,我们进行了迄今为止最大的关于自动修复现实世界代码中未发现的bug的研究。我们通过在11个实际项目中正确修复55个错误来演示我们的方法,其中包括11个以前未发现的错误。
{"title":"Static Automated Program Repair for Heap Properties","authors":"R. V. Tonder, Claire Le Goues","doi":"10.1145/3180155.3180250","DOIUrl":"https://doi.org/10.1145/3180155.3180250","url":null,"abstract":"Static analysis tools have demonstrated effectiveness at finding bugs in real world code. Such tools are increasingly widely adopted to improve software quality in practice. Automated Program Repair (APR) has the potential to further cut down on the cost of improving software quality. However, there is a disconnect between these effective bug-finding tools and APR. Recent advances in APR rely on test cases, making them inapplicable to newly discovered bugs or bugs difficult to test for deterministically (like memory leaks). Additionally, the quality of patches generated to satisfy a test suite is a key challenge. We address these challenges by adapting advances in practical static analysis and verification techniques to enable a new technique that finds and then accurately fixes real bugs without test cases. We present a new automated program repair technique using Separation Logic. At a high-level, our technique reasons over semantic effects of existing program fragments to fix faults related to general pointer safety properties: resource leaks, memory leaks, and null dereferences. The procedure automatically translates identified fragments into source-level patches, and verifies patch correctness with respect to reported faults. In this work we conduct the largest study of automatically fixing undiscovered bugs in real-world code to date. We demonstrate our approach by correctly fixing 55 bugs, including 11 previously undiscovered bugs, in 11 real-world projects.","PeriodicalId":6560,"journal":{"name":"2018 IEEE/ACM 40th International Conference on Software Engineering (ICSE)","volume":"11 1","pages":"151-162"},"PeriodicalIF":0.0,"publicationDate":"2018-05-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"83349215","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 71
Do You Remember This Source Code? 你还记得这个源代码吗?
Pub Date : 2018-05-27 DOI: 10.1145/3180155.3180215
J. Krüger, J. Wiemann, W. Fenske, G. Saake, Thomas Leich
Being familiar with the source code of a program comprises knowledge about its purpose, structure, and details. Consequently, familiarity is an important factor in many contexts of software development, especially for maintenance and program comprehension. As a result, familiarity is considered to some extent in many different approaches, for example, to model costs or to identify experts. Still, all approaches we are aware of require a manual assessment of familiarity and empirical analyses of forgetting in software development are missing. In this paper, we address this issue with an empirical study that we conducted with 60 open-source developers. We used a survey to receive information on the developers' familiarity and analyze the responses based on data we extract from their used version control systems. The results show that forgetting is an important factor when considering familiarity and program comprehension of developers. We find that a forgetting curve is partly applicable for software development, investigate three factors - the number of edits, ratio of owned code, and tracking behavior - that can impact familiarity with code, and derive a general memory strength for our participants. Our findings can be used to scope approaches that have to consider familiarity and they provide insights into forgetting in the context of software development.
熟悉程序的源代码包括了解程序的目的、结构和细节。因此,熟悉度在软件开发的许多环境中是一个重要的因素,特别是对于维护和程序理解。因此,在许多不同的方法中,在一定程度上考虑熟悉度,例如,建立成本模型或确定专家。尽管如此,我们所知道的所有方法都需要对熟悉度进行手工评估,而对软件开发中遗忘的经验分析却缺失了。在本文中,我们通过对60个开源开发者进行的实证研究来解决这个问题。我们使用调查来接收关于开发人员熟悉程度的信息,并根据我们从他们使用的版本控制系统中提取的数据分析响应。结果表明,遗忘是开发人员考虑熟悉度和程序理解的重要因素。我们发现遗忘曲线部分适用于软件开发,调查了三个因素——编辑次数、拥有代码的比例和跟踪行为——它们会影响对代码的熟悉程度,并为我们的参与者得出一般的记忆强度。我们的发现可以用于确定必须考虑熟悉度的方法的范围,并且它们为软件开发环境中的遗忘提供了见解。
{"title":"Do You Remember This Source Code?","authors":"J. Krüger, J. Wiemann, W. Fenske, G. Saake, Thomas Leich","doi":"10.1145/3180155.3180215","DOIUrl":"https://doi.org/10.1145/3180155.3180215","url":null,"abstract":"Being familiar with the source code of a program comprises knowledge about its purpose, structure, and details. Consequently, familiarity is an important factor in many contexts of software development, especially for maintenance and program comprehension. As a result, familiarity is considered to some extent in many different approaches, for example, to model costs or to identify experts. Still, all approaches we are aware of require a manual assessment of familiarity and empirical analyses of forgetting in software development are missing. In this paper, we address this issue with an empirical study that we conducted with 60 open-source developers. We used a survey to receive information on the developers' familiarity and analyze the responses based on data we extract from their used version control systems. The results show that forgetting is an important factor when considering familiarity and program comprehension of developers. We find that a forgetting curve is partly applicable for software development, investigate three factors - the number of edits, ratio of owned code, and tracking behavior - that can impact familiarity with code, and derive a general memory strength for our participants. Our findings can be used to scope approaches that have to consider familiarity and they provide insights into forgetting in the context of software development.","PeriodicalId":6560,"journal":{"name":"2018 IEEE/ACM 40th International Conference on Software Engineering (ICSE)","volume":"42 1","pages":"764-775"},"PeriodicalIF":0.0,"publicationDate":"2018-05-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"90941467","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}
引用次数: 28
When Testing Meets Code Review: Why and How Developers Review Tests 当测试遇到代码审查时:开发人员为什么以及如何审查测试
Pub Date : 2018-05-27 DOI: 10.1145/3180155.3180192
D. Spadini, M. Aniche, M. Storey, M. Bruntink, Alberto Bacchelli
Automated testing is considered an essential process for ensuring software quality. However, writing and maintaining high-quality test code is challenging and frequently considered of secondary importance. For production code, many open source and industrial software projects employ code review, a well-established software quality practice, but the question remains whether and how code review is also used for ensuring the quality of test code. The aim of this research is to answer this question and to increase our understanding of what developers think and do when it comes to reviewing test code. We conducted both quantitative and qualitative methods to analyze more than 300,000 code reviews, and interviewed 12 developers about how they review test files. This work resulted in an overview of current code reviewing practices, a set of identified obstacles limiting the review of test code, and a set of issues that developers would like to see improved in code review tools. The study reveals that reviewing test files is very different from reviewing production files, and that the navigation within the review itself is one of the main issues developers currently face. Based on our findings, we propose a series of recommendations and suggestions for the design of tools and future research.
自动化测试被认为是确保软件质量的基本过程。然而,编写和维护高质量的测试代码是具有挑战性的,并且经常被认为是次要的。对于产品代码,许多开放源码和工业软件项目采用代码审查,这是一种完善的软件质量实践,但是问题仍然是是否以及如何使用代码审查来确保测试代码的质量。这项研究的目的是回答这个问题,并增加我们对开发人员在审查测试代码时的想法和行为的理解。我们使用定量和定性的方法来分析超过300,000个代码评审,并采访了12位开发人员,了解他们是如何评审测试文件的。这项工作产生了对当前代码审查实践的概述,一组确定的限制测试代码审查的障碍,以及一组开发人员希望在代码审查工具中看到改进的问题。研究表明,审查测试文件与审查生产文件非常不同,并且审查本身的导航是开发人员当前面临的主要问题之一。基于我们的发现,我们对工具的设计和未来的研究提出了一系列建议和建议。
{"title":"When Testing Meets Code Review: Why and How Developers Review Tests","authors":"D. Spadini, M. Aniche, M. Storey, M. Bruntink, Alberto Bacchelli","doi":"10.1145/3180155.3180192","DOIUrl":"https://doi.org/10.1145/3180155.3180192","url":null,"abstract":"Automated testing is considered an essential process for ensuring software quality. However, writing and maintaining high-quality test code is challenging and frequently considered of secondary importance. For production code, many open source and industrial software projects employ code review, a well-established software quality practice, but the question remains whether and how code review is also used for ensuring the quality of test code. The aim of this research is to answer this question and to increase our understanding of what developers think and do when it comes to reviewing test code. We conducted both quantitative and qualitative methods to analyze more than 300,000 code reviews, and interviewed 12 developers about how they review test files. This work resulted in an overview of current code reviewing practices, a set of identified obstacles limiting the review of test code, and a set of issues that developers would like to see improved in code review tools. The study reveals that reviewing test files is very different from reviewing production files, and that the navigation within the review itself is one of the main issues developers currently face. Based on our findings, we propose a series of recommendations and suggestions for the design of tools and future research.","PeriodicalId":6560,"journal":{"name":"2018 IEEE/ACM 40th International Conference on Software Engineering (ICSE)","volume":"75 1","pages":"677-687"},"PeriodicalIF":0.0,"publicationDate":"2018-05-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"86564915","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
Identifying Features in Forks 识别fork中的特性
Pub Date : 2018-05-27 DOI: 10.1145/3180155.3180205
Shurui Zhou, Stefan Stanciulescu, Olaf Leßenich, Yingfei Xiong, A. Wąsowski, Christian Kästner
Fork-based development has been widely used both in open source communities and in industry, because it gives developers flexibility to modify their own fork without affecting others. Unfortunately, this mechanism has downsides: When the number of forks becomes large, it is difficult for developers to get or maintain an overview of activities in the forks. Current tools provide little help. We introduce INFOX, an approach to automatically identify non-merged features in forks and to generate an overview of active forks in a project. The approach clusters cohesive code fragments using code and network-analysis techniques and uses information-retrieval techniques to label clusters with keywords. The clustering is effective, with 90% accuracy on a set of known features. In addition, a human-subject evaluation shows that INFOX can provide actionable insight for developers of forks.
基于fork的开发在开源社区和工业中都得到了广泛的应用,因为它使开发人员能够灵活地修改自己的fork,而不会影响其他人。不幸的是,这种机制有缺点:当分支的数量变得很大时,开发人员很难获得或维护分支中活动的概述。目前的工具提供的帮助很少。我们将介绍INFOX,这是一种自动识别分支中未合并的特性并生成项目中活动分支概览的方法。该方法使用代码和网络分析技术聚类内聚代码片段,并使用信息检索技术用关键字标记聚类。聚类是有效的,在一组已知特征上有90%的准确率。此外,人类主题评估表明,INFOX可以为分叉的开发人员提供可操作的见解。
{"title":"Identifying Features in Forks","authors":"Shurui Zhou, Stefan Stanciulescu, Olaf Leßenich, Yingfei Xiong, A. Wąsowski, Christian Kästner","doi":"10.1145/3180155.3180205","DOIUrl":"https://doi.org/10.1145/3180155.3180205","url":null,"abstract":"Fork-based development has been widely used both in open source communities and in industry, because it gives developers flexibility to modify their own fork without affecting others. Unfortunately, this mechanism has downsides: When the number of forks becomes large, it is difficult for developers to get or maintain an overview of activities in the forks. Current tools provide little help. We introduce INFOX, an approach to automatically identify non-merged features in forks and to generate an overview of active forks in a project. The approach clusters cohesive code fragments using code and network-analysis techniques and uses information-retrieval techniques to label clusters with keywords. The clustering is effective, with 90% accuracy on a set of known features. In addition, a human-subject evaluation shows that INFOX can provide actionable insight for developers of forks.","PeriodicalId":6560,"journal":{"name":"2018 IEEE/ACM 40th International Conference on Software Engineering (ICSE)","volume":"40 1","pages":"105-116"},"PeriodicalIF":0.0,"publicationDate":"2018-05-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"78789839","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}
引用次数: 55
期刊
2018 IEEE/ACM 40th International Conference on Software Engineering (ICSE)
全部 Acc. Chem. Res. ACS Applied Bio Materials ACS Appl. Electron. Mater. ACS Appl. Energy Mater. ACS Appl. Mater. Interfaces ACS Appl. Nano Mater. ACS Appl. Polym. Mater. ACS BIOMATER-SCI ENG ACS Catal. ACS Cent. Sci. ACS Chem. Biol. ACS Chemical Health & Safety ACS Chem. Neurosci. ACS Comb. Sci. ACS Earth Space Chem. ACS Energy Lett. ACS Infect. Dis. ACS Macro Lett. ACS Mater. Lett. ACS Med. Chem. Lett. ACS Nano ACS Omega ACS Photonics ACS Sens. ACS Sustainable Chem. Eng. ACS Synth. Biol. Anal. Chem. BIOCHEMISTRY-US Bioconjugate Chem. BIOMACROMOLECULES Chem. Res. Toxicol. Chem. Rev. Chem. Mater. CRYST GROWTH DES ENERG FUEL Environ. Sci. Technol. Environ. Sci. Technol. Lett. Eur. J. Inorg. Chem. IND ENG CHEM RES Inorg. Chem. J. Agric. Food. Chem. J. Chem. Eng. Data J. Chem. Educ. J. Chem. Inf. Model. J. Chem. Theory Comput. J. Med. Chem. J. Nat. Prod. J PROTEOME RES J. Am. Chem. Soc. LANGMUIR MACROMOLECULES Mol. Pharmaceutics Nano Lett. Org. Lett. ORG PROCESS RES DEV ORGANOMETALLICS J. Org. Chem. J. Phys. Chem. J. Phys. Chem. A J. Phys. Chem. B J. Phys. Chem. C J. Phys. Chem. Lett. Analyst Anal. Methods Biomater. Sci. Catal. Sci. Technol. Chem. Commun. Chem. Soc. Rev. CHEM EDUC RES PRACT CRYSTENGCOMM Dalton Trans. Energy Environ. Sci. ENVIRON SCI-NANO ENVIRON SCI-PROC IMP ENVIRON SCI-WAT RES Faraday Discuss. Food Funct. Green Chem. Inorg. Chem. Front. Integr. Biol. J. Anal. At. Spectrom. J. Mater. Chem. A J. Mater. Chem. B J. Mater. Chem. C Lab Chip Mater. Chem. Front. Mater. Horiz. MEDCHEMCOMM Metallomics Mol. Biosyst. Mol. Syst. Des. Eng. Nanoscale Nanoscale Horiz. Nat. Prod. Rep. New J. Chem. Org. Biomol. Chem. Org. Chem. Front. PHOTOCH PHOTOBIO SCI PCCP Polym. Chem.
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
0
微信
客服QQ
Book学术公众号 扫码关注我们
反馈
×
意见反馈
请填写您的意见或建议
请填写您的手机或邮箱
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
现在去查看 取消
×
提示
确定
Book学术官方微信
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术
文献互助 智能选刊 最新文献 互助须知 联系我们:info@booksci.cn
Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。
Copyright © 2023 Book学术 All rights reserved.
ghs 京公网安备 11010802042870号 京ICP备2023020795号-1