首页 > 最新文献

2018 IEEE 25th International Conference on Software Analysis, Evolution and Reengineering (SANER)最新文献

英文 中文
Automatically repairing dependency-related build breakage 自动修复与依赖相关的构建损坏
Christian Macho, Shane McIntosh, M. Pinzger
Build systems are widely used in today's software projects to automate integration and build processes. Similar to source code, build specifications need to be maintained to avoid outdated specifications, and build breakage as a consequence. Recent work indicates that neglected build maintenance is one of the most frequently occurring reasons why open source and proprietary builds break. In this paper, we propose BuildMedic, an approach to automatically repair Maven builds that break due to dependency-related issues. Based on a manual investigation of 37 broken Maven builds in 23 open source Java projects, we derive three repair strategies to automatically repair the build, namely Version Update, Delete Dependency, and Add Repository. We evaluate the three strategies on 84 additional broken builds from the 23 studied projects in order to demonstrate the applicability of our approach. The evaluation shows that BuildMedic can automatically repair 45 of these broken builds (54%). Furthermore, in 36% of the successfully repaired build breakages, BuildMedic outputs at least one repair candidate that is considered a correct repair. Moreover, 76% of them could be repaired with only a single dependency correction.
在当今的软件项目中,构建系统被广泛用于自动化集成和构建过程。与源代码类似,需要维护构建规范以避免过时的规范,从而避免构建中断。最近的工作表明,被忽视的构建维护是导致开源和专有构建中断的最常见原因之一。在本文中,我们提出了BuildMedic,一种自动修复由于依赖相关问题而导致的Maven构建中断的方法。基于对23个开源Java项目中37个损坏的Maven构建的手工调查,我们得出了三种自动修复构建的修复策略,即版本更新、删除依赖和添加存储库。为了证明我们方法的适用性,我们在23个研究项目中的84个额外的破碎构建上评估了这三种策略。评估显示BuildMedic可以自动修复这些损坏的构建中的45个(54%)。此外,在36%成功修复的构建损坏中,BuildMedic至少输出一个被认为是正确修复的修复候选项。此外,76%的错误可以通过单个依赖纠正来修复。
{"title":"Automatically repairing dependency-related build breakage","authors":"Christian Macho, Shane McIntosh, M. Pinzger","doi":"10.1109/SANER.2018.8330201","DOIUrl":"https://doi.org/10.1109/SANER.2018.8330201","url":null,"abstract":"Build systems are widely used in today's software projects to automate integration and build processes. Similar to source code, build specifications need to be maintained to avoid outdated specifications, and build breakage as a consequence. Recent work indicates that neglected build maintenance is one of the most frequently occurring reasons why open source and proprietary builds break. In this paper, we propose BuildMedic, an approach to automatically repair Maven builds that break due to dependency-related issues. Based on a manual investigation of 37 broken Maven builds in 23 open source Java projects, we derive three repair strategies to automatically repair the build, namely Version Update, Delete Dependency, and Add Repository. We evaluate the three strategies on 84 additional broken builds from the 23 studied projects in order to demonstrate the applicability of our approach. The evaluation shows that BuildMedic can automatically repair 45 of these broken builds (54%). Furthermore, in 36% of the successfully repaired build breakages, BuildMedic outputs at least one repair candidate that is considered a correct repair. Moreover, 76% of them could be repaired with only a single dependency correction.","PeriodicalId":6602,"journal":{"name":"2018 IEEE 25th International Conference on Software Analysis, Evolution and Reengineering (SANER)","volume":"73 1","pages":"106-117"},"PeriodicalIF":0.0,"publicationDate":"2018-03-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"85769488","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}
引用次数: 52
Automatically exploiting implicit design knowledge when solving the class responsibility assignment problem 在解决类责任分配问题时自动利用隐式设计知识
Yongrui Xu, Peng Liang, M. Babar
Assigning responsibilities to classes is not only vital during initial software analysis/design phases in object-oriented analysis and design (OOAD), but also during maintenance and evolution phases, when new responsibilities have to be assigned to classes or existing responsibilities have to be changed. Class Responsibility Assignment (CRA) is one of the most complex tasks in OOAD as it heavily relies on designers' judgment and implicit design knowledge (DK) of design problems. Since CRA is highly dependent on the successful use of implicit DK, (semi)-automated approaches that help designers to assign responsibilities to classes should make implicit DK explicit and exploit the DK effectively. In this paper, we propose a learning based approach for the Class Responsibility Assignment (CRA) problem. A learning mechanism is introduced into Genetic Algorithm (GA) to extract the implicit DK about which responsibilities have a high probability to be assigned to the same class, and then the extracted DK is employed automatically to improve the design quality of the generated solutions. The proposed approach has been evaluated through an experimental study with three cases. By comparing the solutions obtained from the proposed approach and the existing approaches, the proposed approach can significantly improve the design quality of the generated solutions to the CRA problem, and the generated solutions by the proposed approach are more likely to be accepted by developers from the practical aspects.
将职责分配给类不仅在面向对象分析和设计(OOAD)的初始软件分析/设计阶段至关重要,而且在必须将新职责分配给类或必须更改现有职责的维护和发展阶段也至关重要。类责任分配(Class Responsibility Assignment, CRA)是面向对象设计中最复杂的任务之一,它严重依赖于设计者对设计问题的判断和隐式设计知识(DK)。由于CRA高度依赖于隐式DK的成功使用,(半)自动化的方法可以帮助设计人员将责任分配给类,从而使隐式DK显式化,并有效地利用DK。本文提出了一种基于学习的类责任分配(CRA)方法。在遗传算法(GA)中引入学习机制,提取具有高概率的责任分配给同一类的隐式DK,然后自动利用提取的DK来提高生成的解的设计质量。通过三个案例的实验研究对所提出的方法进行了评估。通过对比本文方法与现有方法得到的解,本文方法可以显著提高CRA问题生成解的设计质量,并且从实际方面来看,本文方法生成的解更容易被开发人员所接受。
{"title":"Automatically exploiting implicit design knowledge when solving the class responsibility assignment problem","authors":"Yongrui Xu, Peng Liang, M. Babar","doi":"10.1109/SANER.2018.8330209","DOIUrl":"https://doi.org/10.1109/SANER.2018.8330209","url":null,"abstract":"Assigning responsibilities to classes is not only vital during initial software analysis/design phases in object-oriented analysis and design (OOAD), but also during maintenance and evolution phases, when new responsibilities have to be assigned to classes or existing responsibilities have to be changed. Class Responsibility Assignment (CRA) is one of the most complex tasks in OOAD as it heavily relies on designers' judgment and implicit design knowledge (DK) of design problems. Since CRA is highly dependent on the successful use of implicit DK, (semi)-automated approaches that help designers to assign responsibilities to classes should make implicit DK explicit and exploit the DK effectively. In this paper, we propose a learning based approach for the Class Responsibility Assignment (CRA) problem. A learning mechanism is introduced into Genetic Algorithm (GA) to extract the implicit DK about which responsibilities have a high probability to be assigned to the same class, and then the extracted DK is employed automatically to improve the design quality of the generated solutions. The proposed approach has been evaluated through an experimental study with three cases. By comparing the solutions obtained from the proposed approach and the existing approaches, the proposed approach can significantly improve the design quality of the generated solutions to the CRA problem, and the generated solutions by the proposed approach are more likely to be accepted by developers from the practical aspects.","PeriodicalId":6602,"journal":{"name":"2018 IEEE 25th International Conference on Software Analysis, Evolution and Reengineering (SANER)","volume":"39 1","pages":"197-209"},"PeriodicalIF":0.0,"publicationDate":"2018-03-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"86548728","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 1
Ten years of JDeodorant: Lessons learned from the hunt for smells JDeodorant的十年:寻找气味的经验教训
Nikolaos Tsantalis, Theodoros Chaikalis, A. Chatzigeorgiou
Deodorants are different from perfumes, because they are applied directly on body and by killing bacteria they reduce odours and offer a refreshing fragrance. That was our goal when we first thought about "bad smells" in code: to develop techniques for effectively identifying and removing (i.e., deodorizing) code smells from object-oriented software. JDeodorant encompasses a number of techniques for suggesting and automatically applying refactoring opportunities on Java source code, in a way that requires limited effort on behalf of the developer. In contrast to other approaches that rely on generic strategies that can be adapted to various smells, JDeodorant adopts ad-hoc strategies for each smell considering the particular characteristics of the underlying design or code problem. In this retrospective paper, we discuss the impact of JDeodorant over the last ten years and a number of tools and techniques that have been developed for a similar purpose which either compare their results with JDeodorant or have built on top of JDeodorant. Finally, we discuss the empirical findings from a number of studies that employed JDeodorant to extract their datasets.
除臭剂不同于香水,因为它们直接涂抹在身体上,通过杀死细菌来减少气味,提供一种清新的香味。当我们第一次想到代码中的“难闻气味”时,这就是我们的目标:开发技术来有效地识别和去除(即除臭)面向对象软件中的代码气味。JDeodorant包含了许多建议和自动应用Java源代码重构机会的技术,以一种对开发人员要求有限的方式。与其他依赖于可适应各种气味的通用策略的方法不同,JDeodorant根据底层设计或代码问题的特定特征,对每种气味采用特殊策略。在这篇回顾性的论文中,我们讨论了JDeodorant在过去十年中的影响,以及为类似目的而开发的一些工具和技术,这些工具和技术要么将它们的结果与JDeodorant进行比较,要么构建在JDeodorant之上。最后,我们讨论了一些使用JDeodorant提取数据集的研究的实证结果。
{"title":"Ten years of JDeodorant: Lessons learned from the hunt for smells","authors":"Nikolaos Tsantalis, Theodoros Chaikalis, A. Chatzigeorgiou","doi":"10.1109/SANER.2018.8330192","DOIUrl":"https://doi.org/10.1109/SANER.2018.8330192","url":null,"abstract":"Deodorants are different from perfumes, because they are applied directly on body and by killing bacteria they reduce odours and offer a refreshing fragrance. That was our goal when we first thought about \"bad smells\" in code: to develop techniques for effectively identifying and removing (i.e., deodorizing) code smells from object-oriented software. JDeodorant encompasses a number of techniques for suggesting and automatically applying refactoring opportunities on Java source code, in a way that requires limited effort on behalf of the developer. In contrast to other approaches that rely on generic strategies that can be adapted to various smells, JDeodorant adopts ad-hoc strategies for each smell considering the particular characteristics of the underlying design or code problem. In this retrospective paper, we discuss the impact of JDeodorant over the last ten years and a number of tools and techniques that have been developed for a similar purpose which either compare their results with JDeodorant or have built on top of JDeodorant. Finally, we discuss the empirical findings from a number of studies that employed JDeodorant to extract their datasets.","PeriodicalId":6602,"journal":{"name":"2018 IEEE 25th International Conference on Software Analysis, Evolution and Reengineering (SANER)","volume":"1 1","pages":"4-14"},"PeriodicalIF":0.0,"publicationDate":"2018-03-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"79814015","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
Classifying stack overflow posts on API issues 对API问题的堆栈溢出帖子进行分类
Md Ahasanuzzaman, M. Asaduzzaman, C. Roy, Kevin A. Schneider
The design and maintenance of APIs are complex tasks due to the constantly changing requirements of its users. Despite the efforts of its designers, APIs may suffer from a number of issues (such as incomplete or erroneous documentation, poor performance, and backward incompatibility). To maintain a healthy client base, API designers must learn these issues to fix them. Question answering sites, such as Stack Overflow (SO), has become a popular place for discussing API issues. These posts about API issues are invaluable to API designers, not only because they can help to learn more about the problem but also because they can facilitate learning the requirements of API users. However, the unstructured nature of posts and the abundance of non-issue posts make the task of detecting SO posts concerning API issues difficult and challenging. In this paper, we first develop a supervised learning approach using a Conditional Random Field (CRF), a statistical modeling method, to identify API issue-related sentences. We use the above information together with different features of posts and experience of users to build a technique, called CAPS, that can classify SO posts concerning API issues. Evaluation of CAPS using carefully curated SO posts on three popular API types reveals that the technique outperforms all three baseline approaches we consider in this study. We also conduct studies to test the generalizability of CAPS results and to understand the effects of different sources of information on it.
由于用户需求的不断变化,api的设计和维护是一项复杂的任务。尽管设计人员做出了努力,但api可能存在许多问题(例如文档不完整或错误、性能差和向后不兼容)。为了保持健康的客户基础,API设计人员必须了解这些问题并加以解决。诸如Stack Overflow (SO)之类的问答网站已经成为讨论API问题的热门场所。这些关于API问题的帖子对API设计人员来说是无价的,不仅因为它们可以帮助更多地了解问题,还因为它们可以帮助了解API用户的需求。然而,帖子的非结构化性质和大量的非问题帖子使得检测涉及API问题的SO帖子的任务变得困难和具有挑战性。在本文中,我们首先开发了一种使用条件随机场(CRF)的监督学习方法,这是一种统计建模方法,用于识别API问题相关的句子。我们利用上述信息,结合帖子的不同特征和用户的经验,构建了一种名为CAPS的技术,可以对涉及API问题的SO帖子进行分类。使用精心策划的关于三种流行API类型的SO帖子对CAPS进行评估,结果表明该技术优于我们在本研究中考虑的所有三种基线方法。我们还进行了研究,以测试CAPS结果的普遍性,并了解不同信息来源对其的影响。
{"title":"Classifying stack overflow posts on API issues","authors":"Md Ahasanuzzaman, M. Asaduzzaman, C. Roy, Kevin A. Schneider","doi":"10.1109/SANER.2018.8330213","DOIUrl":"https://doi.org/10.1109/SANER.2018.8330213","url":null,"abstract":"The design and maintenance of APIs are complex tasks due to the constantly changing requirements of its users. Despite the efforts of its designers, APIs may suffer from a number of issues (such as incomplete or erroneous documentation, poor performance, and backward incompatibility). To maintain a healthy client base, API designers must learn these issues to fix them. Question answering sites, such as Stack Overflow (SO), has become a popular place for discussing API issues. These posts about API issues are invaluable to API designers, not only because they can help to learn more about the problem but also because they can facilitate learning the requirements of API users. However, the unstructured nature of posts and the abundance of non-issue posts make the task of detecting SO posts concerning API issues difficult and challenging. In this paper, we first develop a supervised learning approach using a Conditional Random Field (CRF), a statistical modeling method, to identify API issue-related sentences. We use the above information together with different features of posts and experience of users to build a technique, called CAPS, that can classify SO posts concerning API issues. Evaluation of CAPS using carefully curated SO posts on three popular API types reveals that the technique outperforms all three baseline approaches we consider in this study. We also conduct studies to test the generalizability of CAPS results and to understand the effects of different sources of information on it.","PeriodicalId":6602,"journal":{"name":"2018 IEEE 25th International Conference on Software Analysis, Evolution and Reengineering (SANER)","volume":"16 05","pages":"244-254"},"PeriodicalIF":0.0,"publicationDate":"2018-03-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"72591463","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
Mining sandboxes: Are we there yet? 挖矿沙箱:我们到了吗?
Lingfeng Bao, Tien-Duy B. Le, D. Lo
The popularity of Android platform on mobile devices has attracted much attention from many developers and researchers, as well as malware writers. Recently, Jamrozik et al. proposed a technique to secure Android applications referred to as mining sandboxes. They used an automated test case generation technique to explore the behavior of the app under test and then extracted a set of sensitive APIs that were called. Based on the extracted sensitive APIs, they built a sandbox that can block access to APIs not used during testing. However, they only evaluated the proposed technique with benign apps but not investigated whether it was effective in detecting malicious behavior of malware that infects benign apps. Furthermore, they only investigated one test case generation tool (i.e., Droidmate) to build the sandbox, while many others have been proposed in the literature. In this work, we complement Jamrozik et al.'s work in two ways: (1) we evaluate the effectiveness of mining sandboxes on detecting malicious behaviors; (2) we investigate the effectiveness of multiple automated test case generation tools to mine sandboxes. To investigate effectiveness of mining sandboxes in detecting malicious behaviors, we make use of pairs of malware and benign app it infects. We build a sandbox based on sensitive APIs called by the benign app and check if it can identify malicious behaviors in the corresponding malware. To generate inputs to apps, we investigate five popular test case generation tools: Monkey, Droidmate, Droidbot, GUIRipper, and PUMA. We conduct two experiments to evaluate the effectiveness and efficiency of these test case generation tools on detecting malicious behavior. In the first experiment, we select 10 apps and allow test case generation tools to run for one hour; while in the second experiment, we select 102 pairs of apps and allow the test case generation tools to run for one minute. Our experiments highlight that 75.5%-77.2% of malware in our dataset can be uncovered by mining sandboxes — showing its power to protect Android apps. We also find that Droidbot performs best in generating test cases for mining sandboxes, and its effectiveness can be further boosted when coupled with other test case generation tools.
Android平台在移动设备上的流行吸引了许多开发人员和研究人员以及恶意软件编写者的关注。最近,Jamrozik等人提出了一种被称为挖掘沙箱的技术来保护Android应用程序。他们使用自动化测试用例生成技术来探索被测应用程序的行为,然后提取一组被调用的敏感api。基于提取的敏感api,他们构建了一个沙箱,可以阻止对测试期间未使用的api的访问。然而,他们只在良性应用中评估了所提出的技术,而没有调查它是否有效地检测感染良性应用的恶意软件的恶意行为。此外,他们只研究了一个测试用例生成工具(例如,Droidmate)来构建沙盒,而在文献中已经提出了许多其他工具。在这项工作中,我们从两个方面补充了Jamrozik等人的工作:(1)我们评估了挖掘沙箱在检测恶意行为方面的有效性;(2)我们研究了多个自动化测试用例生成工具在挖掘沙盒中的有效性。为了研究挖掘沙箱在检测恶意行为方面的有效性,我们利用了它感染的恶意软件和良性应用程序对。我们根据良性应用调用的敏感api构建沙盒,检查是否能识别相应恶意软件中的恶意行为。为了生成应用程序的输入,我们研究了五种流行的测试用例生成工具:Monkey、Droidmate、Droidbot、GUIRipper和PUMA。我们通过两个实验来评估这些测试用例生成工具在检测恶意行为方面的有效性和效率。在第一个实验中,我们选择了10个应用程序,并允许测试用例生成工具运行一个小时;而在第二个实验中,我们选择了102对应用程序,并允许测试用例生成工具运行一分钟。我们的实验强调,在我们的数据集中,75.5%-77.2%的恶意软件可以通过挖掘沙箱来发现,这显示了它保护Android应用程序的能力。我们还发现Droidbot在为挖掘沙箱生成测试用例方面表现最好,当与其他测试用例生成工具结合使用时,它的有效性可以进一步提高。
{"title":"Mining sandboxes: Are we there yet?","authors":"Lingfeng Bao, Tien-Duy B. Le, D. Lo","doi":"10.1109/SANER.2018.8330231","DOIUrl":"https://doi.org/10.1109/SANER.2018.8330231","url":null,"abstract":"The popularity of Android platform on mobile devices has attracted much attention from many developers and researchers, as well as malware writers. Recently, Jamrozik et al. proposed a technique to secure Android applications referred to as mining sandboxes. They used an automated test case generation technique to explore the behavior of the app under test and then extracted a set of sensitive APIs that were called. Based on the extracted sensitive APIs, they built a sandbox that can block access to APIs not used during testing. However, they only evaluated the proposed technique with benign apps but not investigated whether it was effective in detecting malicious behavior of malware that infects benign apps. Furthermore, they only investigated one test case generation tool (i.e., Droidmate) to build the sandbox, while many others have been proposed in the literature. In this work, we complement Jamrozik et al.'s work in two ways: (1) we evaluate the effectiveness of mining sandboxes on detecting malicious behaviors; (2) we investigate the effectiveness of multiple automated test case generation tools to mine sandboxes. To investigate effectiveness of mining sandboxes in detecting malicious behaviors, we make use of pairs of malware and benign app it infects. We build a sandbox based on sensitive APIs called by the benign app and check if it can identify malicious behaviors in the corresponding malware. To generate inputs to apps, we investigate five popular test case generation tools: Monkey, Droidmate, Droidbot, GUIRipper, and PUMA. We conduct two experiments to evaluate the effectiveness and efficiency of these test case generation tools on detecting malicious behavior. In the first experiment, we select 10 apps and allow test case generation tools to run for one hour; while in the second experiment, we select 102 pairs of apps and allow the test case generation tools to run for one minute. Our experiments highlight that 75.5%-77.2% of malware in our dataset can be uncovered by mining sandboxes — showing its power to protect Android apps. We also find that Droidbot performs best in generating test cases for mining sandboxes, and its effectiveness can be further boosted when coupled with other test case generation tools.","PeriodicalId":6602,"journal":{"name":"2018 IEEE 25th International Conference on Software Analysis, Evolution and Reengineering (SANER)","volume":"20 1","pages":"445-455"},"PeriodicalIF":0.0,"publicationDate":"2018-03-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"78863790","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
How do developers fix issues and pay back technical debt in the Apache ecosystem? 开发人员如何修复问题并偿还Apache生态系统中的技术债务?
Georgios Digkas, M. Lungu, P. Avgeriou, A. Chatzigeorgiou, Apostolos Ampatzoglou
During software evolution technical debt (TD) follows a constant ebb and flow, being incurred and paid back, sometimes in the same day and sometimes ten years later. There have been several studies in the literature investigating how technical debt in source code accumulates during time and the consequences of this accumulation for software maintenance. However, to the best of our knowledge there are no large scale studies that focus on the types of issues that are fixed and the amount of TD that is paid back during software evolution. In this paper we present the results of a case study, in which we analyzed the evolution of fifty-seven Java open-source software projects by the Apache Software Foundation at the temporal granularity level of weekly snapshots. In particular, we focus on the amount of technical debt that is paid back and the types of issues that are fixed. The findings reveal that a small subset of all issue types is responsible for the largest percentage of TD repayment and thus, targeting particular violations the development team can achieve higher benefits.
在软件发展过程中,技术债务(TD)遵循一个恒定的起起落落,产生和偿还,有时在同一天,有时在十年后。文献中已经有一些研究调查了源代码中的技术债务是如何随着时间的推移而积累的,以及这种积累对软件维护的影响。然而,据我们所知,目前还没有大规模的研究集中在固定的问题类型和软件开发过程中偿还的TD数量上。在本文中,我们展示了一个案例研究的结果,在这个案例中,我们分析了Apache软件基金会在每周快照的时间粒度级别上的57个Java开源软件项目的演变。特别地,我们关注已偿还的技术债务的数量和已修复的问题类型。研究结果表明,所有问题类型中的一小部分负责最大比例的TD偿还,因此,针对特定的违规行为,开发团队可以获得更高的收益。
{"title":"How do developers fix issues and pay back technical debt in the Apache ecosystem?","authors":"Georgios Digkas, M. Lungu, P. Avgeriou, A. Chatzigeorgiou, Apostolos Ampatzoglou","doi":"10.1109/SANER.2018.8330205","DOIUrl":"https://doi.org/10.1109/SANER.2018.8330205","url":null,"abstract":"During software evolution technical debt (TD) follows a constant ebb and flow, being incurred and paid back, sometimes in the same day and sometimes ten years later. There have been several studies in the literature investigating how technical debt in source code accumulates during time and the consequences of this accumulation for software maintenance. However, to the best of our knowledge there are no large scale studies that focus on the types of issues that are fixed and the amount of TD that is paid back during software evolution. In this paper we present the results of a case study, in which we analyzed the evolution of fifty-seven Java open-source software projects by the Apache Software Foundation at the temporal granularity level of weekly snapshots. In particular, we focus on the amount of technical debt that is paid back and the types of issues that are fixed. The findings reveal that a small subset of all issue types is responsible for the largest percentage of TD repayment and thus, targeting particular violations the development team can achieve higher benefits.","PeriodicalId":6602,"journal":{"name":"2018 IEEE 25th International Conference on Software Analysis, Evolution and Reengineering (SANER)","volume":"91 1","pages":"153-163"},"PeriodicalIF":0.0,"publicationDate":"2018-03-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"80926033","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
Bring your own coding style 带上你自己的编码风格
Naoto Ogura, S. Matsumoto, Hideaki Hata, S. Kusumoto
Coding style is a representation of source code, which does not affect the behavior of program execution. The choice of coding style is purely a matter of developer preference. Inconsistency of coding style not only decreased readability but also can cause frustration during programming. In this paper, we propose a novel tool, called StyleCoordinator, to solve both of the following problems, which would appear to contradict each other: ensuring a consistent coding style for all source codes managed in a repository and ensuring the ability of developers to use their own coding styles in a local environment. In order to validate the execution performance, we apply the proposed tool to an actual software repository.
编码风格是源代码的一种表示,它不影响程序执行的行为。编码风格的选择纯粹是开发人员偏好的问题。编码风格的不一致不仅会降低可读性,还会在编程过程中引起挫败感。在本文中,我们提出了一种新的工具,称为stylecordinator,来解决以下两个看起来相互矛盾的问题:确保存储库中管理的所有源代码具有一致的编码风格,并确保开发人员能够在本地环境中使用自己的编码风格。为了验证执行性能,我们将建议的工具应用于实际的软件存储库。
{"title":"Bring your own coding style","authors":"Naoto Ogura, S. Matsumoto, Hideaki Hata, S. Kusumoto","doi":"10.1109/SANER.2018.8330253","DOIUrl":"https://doi.org/10.1109/SANER.2018.8330253","url":null,"abstract":"Coding style is a representation of source code, which does not affect the behavior of program execution. The choice of coding style is purely a matter of developer preference. Inconsistency of coding style not only decreased readability but also can cause frustration during programming. In this paper, we propose a novel tool, called StyleCoordinator, to solve both of the following problems, which would appear to contradict each other: ensuring a consistent coding style for all source codes managed in a repository and ensuring the ability of developers to use their own coding styles in a local environment. In order to validate the execution performance, we apply the proposed tool to an actual software repository.","PeriodicalId":6602,"journal":{"name":"2018 IEEE 25th International Conference on Software Analysis, Evolution and Reengineering (SANER)","volume":"27 1","pages":"527-531"},"PeriodicalIF":0.0,"publicationDate":"2018-03-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"87318158","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
Mining stackoverflow for program repair 挖掘堆栈溢出以进行程序修复
Xuliang Liu, Hao Zhong
In recent years, automatic program repair has been a hot research topic in the software engineering community, and many approaches have been proposed. Although these approaches produce promising results, some researchers criticize that existing approaches are still limited in their repair capability, due to their limited repair templates. Indeed, it is quite difficult to design effective repair templates. An award-wining paper analyzes thousands of manual bug fixes, but summarizes only ten repair templates. Although more bugs are thus repaired, recent studies show such repair templates are still insufficient. We notice that programmers often refer to Stack Overflow, when they repair bugs. With years of accumulation, Stack Overflow has millions of posts that are potentially useful to repair many bugs. The observation motives our work towards mining repair templates from Stack Overflow. In this paper, we propose a novel approach, called SOFix, that extracts code samples from Stack Overflow, and mines repair patterns from extracted code samples. Based on our mined repair patterns, we derived 13 repair templates. We implemented these repair templates in SOFix, and conducted evaluations on the widely used benchmark, Defects4J. Our results show that SOFix repaired 23 bugs, which are more than existing approaches. After comparing repaired bugs and templates, we find that SOFix repaired more bugs, since it has more repair templates. In addition, our results also reveal the urgent need for better fault localization techniques.
近年来,自动程序修复一直是软件工程界的研究热点,并提出了多种修复方法。尽管这些方法产生了有希望的结果,但一些研究人员批评说,由于现有方法的修复模板有限,它们的修复能力仍然有限。事实上,设计有效的修复模板是相当困难的。一篇获奖论文分析了数千个手工bug修复,但只总结了10个修复模板。尽管越来越多的错误被修复,但最近的研究表明,这样的修复模板仍然不足。我们注意到程序员在修复bug时经常提到Stack Overflow。经过多年的积累,Stack Overflow已经拥有了数百万篇可能对修复许多bug有用的帖子。这一观察激发了我们从Stack Overflow中挖掘修复模板的工作。在本文中,我们提出了一种新的方法,称为SOFix,它从堆栈溢出中提取代码样本,并从提取的代码样本中挖掘修复模式。基于我们挖掘的修复模式,我们得到了13个修复模板。我们在SOFix中实现了这些修复模板,并对广泛使用的基准测试缺陷4j进行了评估。我们的研究结果表明,SOFix修复了23个bug,比现有的方法修复的bug要多。对比修复的bug和模板,我们发现SOFix修复的bug更多,因为它有更多的修复模板。此外,我们的研究结果还表明,迫切需要更好的故障定位技术。
{"title":"Mining stackoverflow for program repair","authors":"Xuliang Liu, Hao Zhong","doi":"10.1109/SANER.2018.8330202","DOIUrl":"https://doi.org/10.1109/SANER.2018.8330202","url":null,"abstract":"In recent years, automatic program repair has been a hot research topic in the software engineering community, and many approaches have been proposed. Although these approaches produce promising results, some researchers criticize that existing approaches are still limited in their repair capability, due to their limited repair templates. Indeed, it is quite difficult to design effective repair templates. An award-wining paper analyzes thousands of manual bug fixes, but summarizes only ten repair templates. Although more bugs are thus repaired, recent studies show such repair templates are still insufficient. We notice that programmers often refer to Stack Overflow, when they repair bugs. With years of accumulation, Stack Overflow has millions of posts that are potentially useful to repair many bugs. The observation motives our work towards mining repair templates from Stack Overflow. In this paper, we propose a novel approach, called SOFix, that extracts code samples from Stack Overflow, and mines repair patterns from extracted code samples. Based on our mined repair patterns, we derived 13 repair templates. We implemented these repair templates in SOFix, and conducted evaluations on the widely used benchmark, Defects4J. Our results show that SOFix repaired 23 bugs, which are more than existing approaches. After comparing repaired bugs and templates, we find that SOFix repaired more bugs, since it has more repair templates. In addition, our results also reveal the urgent need for better fault localization techniques.","PeriodicalId":6602,"journal":{"name":"2018 IEEE 25th International Conference on Software Analysis, Evolution and Reengineering (SANER)","volume":"40 1","pages":"118-129"},"PeriodicalIF":0.0,"publicationDate":"2018-03-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"88175715","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}
引用次数: 103
RETICULA: Real-time code quality assessment RETICULA:实时代码质量评估
L. Frunzio, B. Lin, Michele Lanza, G. Bavota
Code metrics can be used to assess the internal quality of software systems, and in particular their adherence to good design principles. While providing hints about code quality, metrics are difficult to interpret. Indeed, they take a code component as input and assess a quality attribute (e.g., code readability) by providing a number as output. However, it might be unclear for developers whether that value should be considered good or bad for the specific code at hand. We present RETICULA (REal TIme Code qUaLity Assessment), a plugin for the IntelliJ IDE to assist developers in perceiving code quality during software development. RETICULA compares the quality metrics for a project (or a single class) under development in the IDE with those of similar open source systems (classes) previously analyzed. With the visualized results, developers can gain insights about the quality of their code. A video illustrating the features of RETICULA can be found at: https://reticulaplugin.github.io/.
代码度量可以用来评估软件系统的内部质量,特别是它们对良好设计原则的遵守。虽然提供了关于代码质量的提示,但是度量标准很难解释。实际上,它们将代码组件作为输入,并通过提供一个数字作为输出来评估质量属性(例如,代码可读性)。然而,对于开发人员来说,对于手头的特定代码,这个值应该被认为是好还是坏可能是不清楚的。我们提出了RETICULA(实时代码质量评估),这是IntelliJ IDE的一个插件,可以帮助开发人员在软件开发过程中感知代码质量。RETICULA将在IDE中开发的项目(或单个类)的质量指标与之前分析过的类似开源系统(类)的质量指标进行比较。通过可视化的结果,开发人员可以深入了解他们代码的质量。说明RETICULA功能的视频可以在https://reticulaplugin.github.io/上找到。
{"title":"RETICULA: Real-time code quality assessment","authors":"L. Frunzio, B. Lin, Michele Lanza, G. Bavota","doi":"10.1109/SANER.2018.8330256","DOIUrl":"https://doi.org/10.1109/SANER.2018.8330256","url":null,"abstract":"Code metrics can be used to assess the internal quality of software systems, and in particular their adherence to good design principles. While providing hints about code quality, metrics are difficult to interpret. Indeed, they take a code component as input and assess a quality attribute (e.g., code readability) by providing a number as output. However, it might be unclear for developers whether that value should be considered good or bad for the specific code at hand. We present RETICULA (REal TIme Code qUaLity Assessment), a plugin for the IntelliJ IDE to assist developers in perceiving code quality during software development. RETICULA compares the quality metrics for a project (or a single class) under development in the IDE with those of similar open source systems (classes) previously analyzed. With the visualized results, developers can gain insights about the quality of their code. A video illustrating the features of RETICULA can be found at: https://reticulaplugin.github.io/.","PeriodicalId":6602,"journal":{"name":"2018 IEEE 25th International Conference on Software Analysis, Evolution and Reengineering (SANER)","volume":"11 1","pages":"542-546"},"PeriodicalIF":0.0,"publicationDate":"2018-03-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"78033118","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}
引用次数: 4
Supporting exploratory code search with differencing and visualization 支持探索性代码搜索与差异和可视化
Wenjian Liu, Xin Peng, Zhenchang Xing, Junyi Li, Bing Xie, Wenyun Zhao
Searching and reusing online code has become a common practice in software development. Two important characteristics of online code have not been carefully considered in current tool support. First, many pieces of online code are largely similar but subtly different. Second, several pieces of code may form complex relations through their differences. These two characteristics make it difficult to properly rank online code to a search query and reduce the efficiency of examining search results. In this paper, we present an exploratory online code search approach that explicitly takes into account the above two characteristics of online code. Given a list of methods returned for a search query, our approach uses clone detection and code differencing techniques to analyze both commonalities and differences among the methods in the search results. It then produces an exploration graph that visualizes the method differences and the relationships of methods through their differences. The exploration graph allows developers to explore search results in a structured view of different method groups present in the search results, and turns implicit code differences into visual cues to help developers navigate the search results. We implement our approach in a web-based tool called CodeNuance. We conduct experiments to evaluate the effectiveness of our CodeNuance tool for search results examination, compared with ranked-list and code-clustering based search results examination. We also compare the performance and user behavior differences in using our tool and other exploratory code search tools.
搜索和重用在线代码已经成为软件开发中的一种常见做法。在线代码的两个重要特征在当前的工具支持中没有被仔细考虑。首先,许多在线代码在很大程度上是相似的,但也有细微的不同。第二,几段代码可能通过它们的差异形成复杂的关系。这两个特征使得很难将在线代码正确地排列到搜索查询中,并降低了检查搜索结果的效率。在本文中,我们提出了一种探索性的在线代码搜索方法,该方法明确考虑了在线代码的上述两个特征。给定一个搜索查询返回的方法列表,我们的方法使用克隆检测和代码差异技术来分析搜索结果中方法之间的共性和差异。然后生成一个探索图,将方法差异和方法之间的关系可视化。探索图允许开发人员在搜索结果中呈现的不同方法组的结构化视图中探索搜索结果,并将隐式代码差异转换为可视化提示,以帮助开发人员导航搜索结果。我们在一个名为CodeNuance的基于网络的工具中实现了我们的方法。我们进行了实验来评估我们的CodeNuance工具在搜索结果检查方面的有效性,并与基于排名列表和基于代码聚类的搜索结果检查进行了比较。我们还比较了使用我们的工具和其他探索性代码搜索工具时的性能和用户行为差异。
{"title":"Supporting exploratory code search with differencing and visualization","authors":"Wenjian Liu, Xin Peng, Zhenchang Xing, Junyi Li, Bing Xie, Wenyun Zhao","doi":"10.1109/SANER.2018.8330218","DOIUrl":"https://doi.org/10.1109/SANER.2018.8330218","url":null,"abstract":"Searching and reusing online code has become a common practice in software development. Two important characteristics of online code have not been carefully considered in current tool support. First, many pieces of online code are largely similar but subtly different. Second, several pieces of code may form complex relations through their differences. These two characteristics make it difficult to properly rank online code to a search query and reduce the efficiency of examining search results. In this paper, we present an exploratory online code search approach that explicitly takes into account the above two characteristics of online code. Given a list of methods returned for a search query, our approach uses clone detection and code differencing techniques to analyze both commonalities and differences among the methods in the search results. It then produces an exploration graph that visualizes the method differences and the relationships of methods through their differences. The exploration graph allows developers to explore search results in a structured view of different method groups present in the search results, and turns implicit code differences into visual cues to help developers navigate the search results. We implement our approach in a web-based tool called CodeNuance. We conduct experiments to evaluate the effectiveness of our CodeNuance tool for search results examination, compared with ranked-list and code-clustering based search results examination. We also compare the performance and user behavior differences in using our tool and other exploratory code search tools.","PeriodicalId":6602,"journal":{"name":"2018 IEEE 25th International Conference on Software Analysis, Evolution and Reengineering (SANER)","volume":"413 1","pages":"300-310"},"PeriodicalIF":0.0,"publicationDate":"2018-03-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"78141479","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}
引用次数: 8
期刊
2018 IEEE 25th International Conference on Software Analysis, Evolution and Reengineering (SANER)
全部 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