首页 > 最新文献

2018 IEEE International Conference on Software Maintenance and Evolution (ICSME)最新文献

英文 中文
On the Relation of Test Smells to Software Code Quality 测试气味与软件代码质量的关系研究
Pub Date : 2018-09-01 DOI: 10.1109/ICSME.2018.00010
D. Spadini, Fabio Palomba, A. Zaidman, M. Bruntink, Alberto Bacchelli
Test smells are sub-optimal design choices in the implementation of test code. As reported by recent studies, their presence might not only negatively affect the comprehension of test suites but can also lead to test cases being less effective in finding bugs in production code. Although significant steps toward understanding test smells, there is still a notable absence of studies assessing their association with software quality. In this paper, we investigate the relationship between the presence of test smells and the change-and defect-proneness of test code, as well as the defect-proneness of the tested production code. To this aim, we collect data on 221 releases of ten software systems and we analyze more than a million test cases to investigate the association of six test smells and their co-occurrence with software quality. Key results of our study include:(i) tests with smells are more change-and defect-prone, (ii) "Indirect Testing", "Eager Test", and "Assertion Roulette" are the most significant smells for change-proneness and, (iii) production code is more defect-prone when tested by smelly tests.
测试气味是测试代码实现中的次优设计选择。正如最近的研究所报告的那样,它们的存在不仅会对测试套件的理解产生负面影响,而且还会导致测试用例在发现产品代码中的错误时效率降低。尽管在理解测试气味方面迈出了重要的一步,但是仍然缺乏评估它们与软件质量之间关系的研究。在本文中,我们研究了测试气味的存在与测试代码的变更和缺陷倾向性之间的关系,以及测试产品代码的缺陷倾向性。为了达到这个目的,我们收集了10个软件系统的221个版本的数据,我们分析了超过一百万个测试用例,以调查六种测试气味的关联以及它们与软件质量的共同出现。我们研究的主要结果包括:(i)气味测试更容易发生变化和缺陷;(ii)“间接测试”、“急切测试”和“断言轮盘赌”是变更倾向最显著的气味,并且(iii)产品代码在使用有气味的测试进行测试时更容易出现缺陷。
{"title":"On the Relation of Test Smells to Software Code Quality","authors":"D. Spadini, Fabio Palomba, A. Zaidman, M. Bruntink, Alberto Bacchelli","doi":"10.1109/ICSME.2018.00010","DOIUrl":"https://doi.org/10.1109/ICSME.2018.00010","url":null,"abstract":"Test smells are sub-optimal design choices in the implementation of test code. As reported by recent studies, their presence might not only negatively affect the comprehension of test suites but can also lead to test cases being less effective in finding bugs in production code. Although significant steps toward understanding test smells, there is still a notable absence of studies assessing their association with software quality. In this paper, we investigate the relationship between the presence of test smells and the change-and defect-proneness of test code, as well as the defect-proneness of the tested production code. To this aim, we collect data on 221 releases of ten software systems and we analyze more than a million test cases to investigate the association of six test smells and their co-occurrence with software quality. Key results of our study include:(i) tests with smells are more change-and defect-prone, (ii) \"Indirect Testing\", \"Eager Test\", and \"Assertion Roulette\" are the most significant smells for change-proneness and, (iii) production code is more defect-prone when tested by smelly tests.","PeriodicalId":6572,"journal":{"name":"2018 IEEE International Conference on Software Maintenance and Evolution (ICSME)","volume":"8 1","pages":"1-12"},"PeriodicalIF":0.0,"publicationDate":"2018-09-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"74662394","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}
引用次数: 120
Test Re-Prioritization in Continuous Testing Environments 连续测试环境中的测试重优先级
Pub Date : 2018-09-01 DOI: 10.1109/ICSME.2018.00016
Y. Zhu, Emad Shihab, Peter C. Rigby
New changes are constantly and concurrently being made to large software systems. In modern continuous integration and deployment environments, each change requires a set of tests to be run. This volume of tests leads to multiple test requests being made simultaneously, which warrant prioritization of such requests. Previous work on test prioritization schedules queued tests at set time intervals. However, after a test has been scheduled it will never be reprioritized even if new higher risk tests arrive. Furthermore, as each test finishes, new information is available which could be used to reprioritize tests. In this work, we use the conditional failure probability among tests to reprioritize tests after each test run. This means that tests can be reprioritized hundreds of times as they wait to be run. Our approach is scalable because we do not depend on static analysis or coverage measures and simply prioritize tests based on their co-failure probability distributions. We named this approach CODYNAQ and in particular, we propose three prioritization variants called CODYNAQSINGLE, CODYNAQDOUBLE and CODYNAQFLEXI. We evaluate our approach on two data sets, CHROME and Google testing data. We find that our co-failure dynamic re-prioritization approach, CODYNAQ, outperforms the default order, FIFOBASELINE, finding the first failure and all failures for a change request by 31% and 62% faster, respectively. CODYNAQ also outperforms GOOGLETCP by finding the first failure 27% faster and all failures 62% faster.
大型软件系统不断地同时发生新的变化。在现代的持续集成和部署环境中,每个更改都需要运行一组测试。大量的测试导致同时发出多个测试请求,这保证了这些请求的优先级。先前关于测试优先级的工作以设置的时间间隔安排排队测试。然而,在测试被安排之后,即使新的高风险测试到来,它也永远不会被重新安排优先级。此外,当每个测试完成时,可以使用新的信息来重新确定测试的优先级。在此工作中,我们使用测试之间的条件失败概率在每次测试运行后重新确定测试的优先级。这意味着在等待运行的过程中,测试可以被重新排列数百次优先级。我们的方法是可伸缩的,因为我们不依赖于静态分析或覆盖度量,而是简单地根据它们的共同故障概率分布对测试进行优先级排序。我们将这种方法命名为CODYNAQ,特别是,我们提出了三个优先级变体,分别是CODYNAQSINGLE、CODYNAQDOUBLE和CODYNAQFLEXI。我们在两个数据集上评估我们的方法,CHROME和Google测试数据。我们发现,我们的共同故障动态重新优先化方法CODYNAQ优于默认顺序FIFOBASELINE,发现更改请求的第一个故障和所有故障分别快31%和62%。CODYNAQ查找第一个故障的速度快27%,查找所有故障的速度快62%。
{"title":"Test Re-Prioritization in Continuous Testing Environments","authors":"Y. Zhu, Emad Shihab, Peter C. Rigby","doi":"10.1109/ICSME.2018.00016","DOIUrl":"https://doi.org/10.1109/ICSME.2018.00016","url":null,"abstract":"New changes are constantly and concurrently being made to large software systems. In modern continuous integration and deployment environments, each change requires a set of tests to be run. This volume of tests leads to multiple test requests being made simultaneously, which warrant prioritization of such requests. Previous work on test prioritization schedules queued tests at set time intervals. However, after a test has been scheduled it will never be reprioritized even if new higher risk tests arrive. Furthermore, as each test finishes, new information is available which could be used to reprioritize tests. In this work, we use the conditional failure probability among tests to reprioritize tests after each test run. This means that tests can be reprioritized hundreds of times as they wait to be run. Our approach is scalable because we do not depend on static analysis or coverage measures and simply prioritize tests based on their co-failure probability distributions. We named this approach CODYNAQ and in particular, we propose three prioritization variants called CODYNAQSINGLE, CODYNAQDOUBLE and CODYNAQFLEXI. We evaluate our approach on two data sets, CHROME and Google testing data. We find that our co-failure dynamic re-prioritization approach, CODYNAQ, outperforms the default order, FIFOBASELINE, finding the first failure and all failures for a change request by 31% and 62% faster, respectively. CODYNAQ also outperforms GOOGLETCP by finding the first failure 27% faster and all failures 62% faster.","PeriodicalId":6572,"journal":{"name":"2018 IEEE International Conference on Software Maintenance and Evolution (ICSME)","volume":"1 1","pages":"69-79"},"PeriodicalIF":0.0,"publicationDate":"2018-09-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"72647077","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}
引用次数: 33
Towards Feature Envy Design Flaw Detection at Block Level 面向块级特征羡慕设计的缺陷检测
Pub Date : 2018-09-01 DOI: 10.1109/ICSME.2018.00064
Árpád Kiss, Petru Florin Mihancea
Software is continuously evolving as bugs need to be fixed and new features need to be added. Design flaws hinder the simple evolution of software and thus, we have to detect and correct them. Feature Envy is an object-oriented design issue that can be detected at the level of methods using different state-of-the-art approaches. Unfortunately, these are insufficient because only a portion of a method may actually be affected by this flaw. Thus, only that part needs to be treated using the corresponding correction strategy, not the entire method. To address this issue, we propose the detection of Feature Envy code smell at the level of blocks of code. Initial evaluation suggests that our approach is promising in spotting the envious areas within a method.
软件是不断发展的,因为需要修复bug和添加新功能。设计缺陷阻碍了软件的简单发展,因此,我们必须检测并纠正它们。特征嫉妒是一个面向对象的设计问题,可以在使用不同的最先进方法的方法级别上检测到。不幸的是,这些是不够的,因为实际上只有一部分方法可能受到这个缺陷的影响。因此,只需要使用相应的校正策略来处理该部分,而不是整个方法。为了解决这个问题,我们提出在代码块级别检测特征羡慕代码气味。初步评估表明,我们的方法在发现方法中令人羡慕的区域方面是有希望的。
{"title":"Towards Feature Envy Design Flaw Detection at Block Level","authors":"Árpád Kiss, Petru Florin Mihancea","doi":"10.1109/ICSME.2018.00064","DOIUrl":"https://doi.org/10.1109/ICSME.2018.00064","url":null,"abstract":"Software is continuously evolving as bugs need to be fixed and new features need to be added. Design flaws hinder the simple evolution of software and thus, we have to detect and correct them. Feature Envy is an object-oriented design issue that can be detected at the level of methods using different state-of-the-art approaches. Unfortunately, these are insufficient because only a portion of a method may actually be affected by this flaw. Thus, only that part needs to be treated using the corresponding correction strategy, not the entire method. To address this issue, we propose the detection of Feature Envy code smell at the level of blocks of code. Initial evaluation suggests that our approach is promising in spotting the envious areas within a method.","PeriodicalId":6572,"journal":{"name":"2018 IEEE International Conference on Software Maintenance and Evolution (ICSME)","volume":"78 1","pages":"544-548"},"PeriodicalIF":0.0,"publicationDate":"2018-09-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"76694406","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
An Empirical Study of Multi-entity Changes in Real Bug Fixes 真实Bug修复中多实体变化的实证研究
Pub Date : 2018-09-01 DOI: 10.1109/ICSME.2018.00038
Ye Wang, Na Meng, Hao Zhong
Prior studies showed that developers applied repeated bug fixes—similar or identical code changes—to multiple locations. According to the observation, researchers built tools to automatically generate candidate patches from the repeated bug-fixing patterns. However, all such research focuses on the recurring change patterns within single methods. We are curious whether there are also repeated bug fixes that change multiple program entities (e.g., classes, methods, and fields); and if so, how we can leverage such recurring change patterns to further help developers fix bugs. In this paper, we present a comprehensive empirical study on multi-entity bug fixes in terms of their frequency, composition, and semantic meanings. Specifically for each bug fix, we first used our approach InterPart to perform static inter-procedural analysis on partial programs (i.e., the old and new versions of changed Java files), and to extract change dependency graphs (CDGs)—graphs that connect multiple changed entities based on their syntactic dependencies. By extracting common subgraphs from the CDGs of different fixes, we identified the recurring change patterns. Our study on Aries, Cassandra, Derby, and Mahout shows that (1) 52-58% of bug fixes involved multi-entity changes; (2) 6 recurring change patterns commonly exist in all projects; and (3) 19-210 entity pairs were repetitively co-changed mainly because the pairs invoked the same methods, accessed the same fields, or contained similar content. These results helped us better understand the gap between the fixes generated by existing automatic program repair (APR) approaches and the real fixes. Our observations will shed light on the follow-up research of automatic program comprehension and modification.
先前的研究表明,开发人员在多个位置重复应用bug修复(类似或相同的代码更改)。根据观察,研究人员构建了一些工具,可以从重复的错误修复模式中自动生成候选补丁。然而,所有这些研究都集中在单一方法中反复出现的变化模式。我们很好奇是否也有重复的错误修复,改变多个程序实体(例如,类,方法和字段);如果是这样,我们如何利用这种重复的变更模式来进一步帮助开发人员修复错误。在本文中,我们对多实体错误修复的频率、组成和语义进行了全面的实证研究。具体来说,对于每个bug修复,我们首先使用我们的方法InterPart对部分程序执行静态过程间分析(例如,更改Java文件的旧版本和新版本),并提取更改依赖关系图(cdg) -基于语法依赖关系连接多个更改实体的图。通过从不同修复的cdg中提取公共子图,我们确定了反复出现的变化模式。我们对Aries、Cassandra、Derby和Mahout的研究表明:(1)52-58%的bug修复涉及多实体更改;(2)所有项目中普遍存在6种重复变化模式;(3) 19 ~ 210个实体对重复共变的主要原因是这些实体对调用相同的方法、访问相同的字段或包含相似的内容。这些结果帮助我们更好地理解由现有的自动程序修复(APR)方法生成的修复与实际修复之间的差距。我们的观察结果将为后续程序自动理解和修改的研究提供启示。
{"title":"An Empirical Study of Multi-entity Changes in Real Bug Fixes","authors":"Ye Wang, Na Meng, Hao Zhong","doi":"10.1109/ICSME.2018.00038","DOIUrl":"https://doi.org/10.1109/ICSME.2018.00038","url":null,"abstract":"Prior studies showed that developers applied repeated bug fixes—similar or identical code changes—to multiple locations. According to the observation, researchers built tools to automatically generate candidate patches from the repeated bug-fixing patterns. However, all such research focuses on the recurring change patterns within single methods. We are curious whether there are also repeated bug fixes that change multiple program entities (e.g., classes, methods, and fields); and if so, how we can leverage such recurring change patterns to further help developers fix bugs. In this paper, we present a comprehensive empirical study on multi-entity bug fixes in terms of their frequency, composition, and semantic meanings. Specifically for each bug fix, we first used our approach InterPart to perform static inter-procedural analysis on partial programs (i.e., the old and new versions of changed Java files), and to extract change dependency graphs (CDGs)—graphs that connect multiple changed entities based on their syntactic dependencies. By extracting common subgraphs from the CDGs of different fixes, we identified the recurring change patterns. Our study on Aries, Cassandra, Derby, and Mahout shows that (1) 52-58% of bug fixes involved multi-entity changes; (2) 6 recurring change patterns commonly exist in all projects; and (3) 19-210 entity pairs were repetitively co-changed mainly because the pairs invoked the same methods, accessed the same fields, or contained similar content. These results helped us better understand the gap between the fixes generated by existing automatic program repair (APR) approaches and the real fixes. Our observations will shed light on the follow-up research of automatic program comprehension and modification.","PeriodicalId":6572,"journal":{"name":"2018 IEEE International Conference on Software Maintenance and Evolution (ICSME)","volume":"64 1","pages":"287-298"},"PeriodicalIF":0.0,"publicationDate":"2018-09-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"77263859","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}
引用次数: 22
Relational Database Schema Evolution: An Industrial Case Study 关系数据库模式演变:一个工业案例研究
Pub Date : 2018-09-01 DOI: 10.1109/ICSME.2018.00073
J. Delplanque, Anne Etien, N. Anquetil, Olivier Auverlot
Modern relational database management systems provide advanced features allowing, for example, to include behaviour directly inside the database (stored procedures). These features raise new difficulties when a database needs to evolve (e.g. adding a new table). To get a better understanding of these difficulties, we recorded and studied the actions of a database architect during a complex evolution of the database at the core of a software system. From our analysis, problems faced by the database architect are extracted, generalized and explored through the prism of software engineering. Six problems are identified: (1) difficulty in analysing and visualising dependencies between database's entities, (2) difficulty in evaluating the impact of a modification on the database, (3) replicating the evolution of the database schema on other instances of the database, (4) difficulty in testing database's functionalities, (5) lack of synchronization between the IDE's internal model of the database and the database actual state and (6) absence of an integrated tool enabling the architect to search for dependencies between entities, generate a patch or access an up to date PostgreSQL documentation. We suggest that techniques developed by the software engineering community could be adapted to help in the development and evolution of relational databases.
现代关系数据库管理系统提供了一些高级特性,例如,允许直接在数据库中包含行为(存储过程)。当数据库需要发展时(例如添加一个新表),这些特性会带来新的困难。为了更好地理解这些困难,我们记录并研究了数据库架构师在软件系统核心数据库的复杂演化过程中的操作。从我们的分析中,通过软件工程的棱镜提取、概括和探索数据库架构师面临的问题。确定了六个问题:(1)难以分析和可视化数据库实体之间的依赖关系;(2)难以评估修改对数据库的影响;(3)在数据库的其他实例上复制数据库模式的演变;(4)难以测试数据库的功能;(5) IDE的数据库内部模型和数据库实际状态之间缺乏同步;(6)缺乏集成工具,使架构师能够搜索实体之间的依赖关系,生成补丁或访问最新的PostgreSQL文档。我们建议,软件工程社区开发的技术可以用于帮助关系数据库的开发和演变。
{"title":"Relational Database Schema Evolution: An Industrial Case Study","authors":"J. Delplanque, Anne Etien, N. Anquetil, Olivier Auverlot","doi":"10.1109/ICSME.2018.00073","DOIUrl":"https://doi.org/10.1109/ICSME.2018.00073","url":null,"abstract":"Modern relational database management systems provide advanced features allowing, for example, to include behaviour directly inside the database (stored procedures). These features raise new difficulties when a database needs to evolve (e.g. adding a new table). To get a better understanding of these difficulties, we recorded and studied the actions of a database architect during a complex evolution of the database at the core of a software system. From our analysis, problems faced by the database architect are extracted, generalized and explored through the prism of software engineering. Six problems are identified: (1) difficulty in analysing and visualising dependencies between database's entities, (2) difficulty in evaluating the impact of a modification on the database, (3) replicating the evolution of the database schema on other instances of the database, (4) difficulty in testing database's functionalities, (5) lack of synchronization between the IDE's internal model of the database and the database actual state and (6) absence of an integrated tool enabling the architect to search for dependencies between entities, generate a patch or access an up to date PostgreSQL documentation. We suggest that techniques developed by the software engineering community could be adapted to help in the development and evolution of relational databases.","PeriodicalId":6572,"journal":{"name":"2018 IEEE International Conference on Software Maintenance and Evolution (ICSME)","volume":"142 1","pages":"635-644"},"PeriodicalIF":0.0,"publicationDate":"2018-09-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"77903692","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
NLP2API: Query Reformulation for Code Search Using Crowdsourced Knowledge and Extra-Large Data Analytics NLP2API:使用众包知识和超大数据分析的代码搜索查询重构
Pub Date : 2018-09-01 DOI: 10.1109/ICSME.2018.00086
M. M. Rahman, C. Roy
Software developers frequently issue generic natural language (NL) queries for code search. Unfortunately, such queries often do not lead to any relevant results with contemporary code (or web) search engines due to vocabulary mismatch problems. In our technical research paper (accepted at ICSME 2018), we propose a technique–NLP2API–that reformulates such NL queries using crowdsourced knowledge and extra-large data analytics derived from Stack Overflow Q & A site. In this paper, we discuss all the artifacts produced by our work, and provide necessary details for downloading and verifying them.
软件开发人员经常为代码搜索发出通用自然语言(NL)查询。不幸的是,由于词汇不匹配的问题,这样的查询通常无法在当代代码(或web)搜索引擎中得到任何相关的结果。在我们的技术研究论文(在ICSME 2018上被接受)中,我们提出了一种技术- nlp2api -该技术使用来自Stack Overflow问答网站的众包知识和超大数据分析来重新制定这种自然语言查询。在本文中,我们讨论了由我们的工作产生的所有工件,并提供了下载和验证它们的必要细节。
{"title":"NLP2API: Query Reformulation for Code Search Using Crowdsourced Knowledge and Extra-Large Data Analytics","authors":"M. M. Rahman, C. Roy","doi":"10.1109/ICSME.2018.00086","DOIUrl":"https://doi.org/10.1109/ICSME.2018.00086","url":null,"abstract":"Software developers frequently issue generic natural language (NL) queries for code search. Unfortunately, such queries often do not lead to any relevant results with contemporary code (or web) search engines due to vocabulary mismatch problems. In our technical research paper (accepted at ICSME 2018), we propose a technique–NLP2API–that reformulates such NL queries using crowdsourced knowledge and extra-large data analytics derived from Stack Overflow Q & A site. In this paper, we discuss all the artifacts produced by our work, and provide necessary details for downloading and verifying them.","PeriodicalId":6572,"journal":{"name":"2018 IEEE International Conference on Software Maintenance and Evolution (ICSME)","volume":"121 1","pages":"714-714"},"PeriodicalIF":0.0,"publicationDate":"2018-09-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"73680702","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
An Empirical Study on the Effect of Dynamic Slicing on Automated Program Repair Efficiency 动态切片对自动程序修复效率影响的实证研究
Pub Date : 2018-09-01 DOI: 10.1109/ICSME.2018.00066
Anbang Guo, Xiaoguang Mao, Deheng Yang, Shangwen Wang
Research on the characteristics of error propagation can guide fault localization more efficiently. Spectrum-based fault localization (SFL) and slice-based fault localization are effective fault localization techniques. The former produces a list of statements in descending order of suspicious values, and the latter generates statements that affect failure statements. We propose a new dynamic slicing and spectrum-based fault localization (DSFL) method, which combines the list of suspicious statements generated by SFL with dynamic slicing, and take the characteristics of error propagation into account. To the best of our knowledge, DSFL has not yet been implemented in automated repair tools. In this study, we use the dynamic slicing tool Javaslicer to determine the error propagation chain of faulty programs and the statements related to failure execution. We implement the DSFL algorithm in the automated repair tool Nopol and conduct repair experiments on dataset Defects4j to compare the effects of SFL and DSFL on the efficiency of automated repair. Preliminary results indicate that the scope of error propagation for most programs is a single class, and the DSFL makes automated repair more efficient.
对误差传播特性的研究可以更有效地指导故障定位。基于谱的故障定位和基于片的故障定位是有效的故障定位技术。前者按可疑值降序生成语句列表,后者生成影响失败语句的语句。本文提出了一种新的动态切片和基于频谱的故障定位方法,该方法将SFL生成的可疑语句列表与动态切片相结合,并考虑了错误传播的特点。据我们所知,DSFL尚未在自动化维修工具中实施。在这项研究中,我们使用动态切片工具Javaslicer来确定错误程序的错误传播链和与失败执行相关的语句。我们在自动修复工具Nopol中实现DSFL算法,并在数据集Defects4j上进行修复实验,比较SFL和DSFL对自动修复效率的影响。初步结果表明,大多数程序的错误传播范围为单个类,DSFL使自动修复更加高效。
{"title":"An Empirical Study on the Effect of Dynamic Slicing on Automated Program Repair Efficiency","authors":"Anbang Guo, Xiaoguang Mao, Deheng Yang, Shangwen Wang","doi":"10.1109/ICSME.2018.00066","DOIUrl":"https://doi.org/10.1109/ICSME.2018.00066","url":null,"abstract":"Research on the characteristics of error propagation can guide fault localization more efficiently. Spectrum-based fault localization (SFL) and slice-based fault localization are effective fault localization techniques. The former produces a list of statements in descending order of suspicious values, and the latter generates statements that affect failure statements. We propose a new dynamic slicing and spectrum-based fault localization (DSFL) method, which combines the list of suspicious statements generated by SFL with dynamic slicing, and take the characteristics of error propagation into account. To the best of our knowledge, DSFL has not yet been implemented in automated repair tools. In this study, we use the dynamic slicing tool Javaslicer to determine the error propagation chain of faulty programs and the statements related to failure execution. We implement the DSFL algorithm in the automated repair tool Nopol and conduct repair experiments on dataset Defects4j to compare the effects of SFL and DSFL on the efficiency of automated repair. Preliminary results indicate that the scope of error propagation for most programs is a single class, and the DSFL makes automated repair more efficient.","PeriodicalId":6572,"journal":{"name":"2018 IEEE International Conference on Software Maintenance and Evolution (ICSME)","volume":"1 1","pages":"554-558"},"PeriodicalIF":0.0,"publicationDate":"2018-09-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"75488235","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
Continuous Refactoring in CI: A Preliminary Study on the Perceived Advantages and Barriers CI中的持续重构:感知优势和障碍的初步研究
Pub Date : 2018-09-01 DOI: 10.1109/ICSME.2018.00068
Carmine Vassallo, Fabio Palomba, H. Gall
By definition, the practice of Continuous Integration (CI) promotes continuous software quality improvement. In systems adopting such a practice, quality assurance is usually performed by using static and dynamic analysis tools (e.g., SonarQube) that compute overall metrics such as maintainability or reliability measures. Furthermore, developers usually define quality gates, i.e., source code quality thresholds that must be reached by the software product after every newly committed change. If certain quality gates fail (e.g., a maintainability metric is below a settled threshold), developers should refactor the code possibly addressing some of the proposed warnings. While previous research findings showed that refactoring is often not done in practice, it is still unclear whether and how the adoption of a CI philosophy has changed the way developers perceive and adopt refactoring. In this paper, we preliminarily study—running a survey study that involves 31 developers—how developers perform refactoring in CI, which needs they have and the barriers they face while continuously refactor source code.
根据定义,持续集成(CI)的实践促进了持续的软件质量改进。在采用这种实践的系统中,质量保证通常通过使用静态和动态分析工具(例如SonarQube)来执行,这些工具可以计算总体度量,例如可维护性或可靠性度量。此外,开发人员通常定义质量门,即软件产品在每次新提交的更改之后必须达到的源代码质量阈值。如果某些质量门失败(例如,可维护性度量低于确定的阈值),开发人员应该重构代码,可能解决一些建议的警告。虽然之前的研究结果表明,重构在实践中通常不会被执行,但我们仍然不清楚CI理念的采用是否以及如何改变了开发人员感知和采用重构的方式。在本文中,我们进行了一项涉及31名开发人员的调查研究,初步研究了开发人员如何在CI中执行重构,他们有哪些需求,以及他们在持续重构源代码时面临的障碍。
{"title":"Continuous Refactoring in CI: A Preliminary Study on the Perceived Advantages and Barriers","authors":"Carmine Vassallo, Fabio Palomba, H. Gall","doi":"10.1109/ICSME.2018.00068","DOIUrl":"https://doi.org/10.1109/ICSME.2018.00068","url":null,"abstract":"By definition, the practice of Continuous Integration (CI) promotes continuous software quality improvement. In systems adopting such a practice, quality assurance is usually performed by using static and dynamic analysis tools (e.g., SonarQube) that compute overall metrics such as maintainability or reliability measures. Furthermore, developers usually define quality gates, i.e., source code quality thresholds that must be reached by the software product after every newly committed change. If certain quality gates fail (e.g., a maintainability metric is below a settled threshold), developers should refactor the code possibly addressing some of the proposed warnings. While previous research findings showed that refactoring is often not done in practice, it is still unclear whether and how the adoption of a CI philosophy has changed the way developers perceive and adopt refactoring. In this paper, we preliminarily study—running a survey study that involves 31 developers—how developers perform refactoring in CI, which needs they have and the barriers they face while continuously refactor source code.","PeriodicalId":6572,"journal":{"name":"2018 IEEE International Conference on Software Maintenance and Evolution (ICSME)","volume":"73 1","pages":"564-568"},"PeriodicalIF":0.0,"publicationDate":"2018-09-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"85498822","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}
引用次数: 17
Stereo: Editing Clones Refactored as Code Generators 立体声:编辑克隆重构为代码生成器
Pub Date : 2018-09-01 DOI: 10.1109/ICSME.2018.00069
Nic Volanschi
Clone detection is a largely mature technology able to detect many code duplications, also called clones, in software systems of practically any size. The classic approaches to clone management are either clone removal, which consists in refactoring clones as an available language abstraction, or clone tracking, using a so-called linked editor, able to propagate changes between clone instances. However, past studies have shown that clone removal is not always feasible due to the limited expressiveness of language abstractions, or not desirable because of the abstraction overhead or the risks inherent to the refactoring. Linked editors, on the other hand, provide costless abstraction at no risk, but have their own issues, such as limited expressiveness, scalability, and controllability. This paper presents a new approach in which clones are safely refactored as code generators, but the unmodified code is presented to the maintainers with the same look-and-feel as in a linked editor. This solution has good expressiveness, scalability, and controllability properties. A prototype such editor is presented along with a first application within an industrial project.
克隆检测是一种非常成熟的技术,能够在几乎任何规模的软件系统中检测许多代码重复,也称为克隆。克隆管理的经典方法要么是克隆移除,这包括将克隆重构为可用的语言抽象,要么是克隆跟踪,使用所谓的链接编辑器,能够在克隆实例之间传播更改。然而,过去的研究表明,由于语言抽象的有限表达性,克隆移除并不总是可行的,或者由于抽象开销或重构固有的风险而不可取。另一方面,链接编辑器在没有风险的情况下提供了无成本的抽象,但也有自己的问题,比如有限的表现力、可伸缩性和可控性。本文提出了一种新的方法,在这种方法中,克隆被安全地重构为代码生成器,但未修改的代码以与链接编辑器相同的外观呈现给维护者。该方案具有良好的表现力、可扩展性和可控性。这种编辑器的原型将与工业项目中的第一个应用程序一起呈现。
{"title":"Stereo: Editing Clones Refactored as Code Generators","authors":"Nic Volanschi","doi":"10.1109/ICSME.2018.00069","DOIUrl":"https://doi.org/10.1109/ICSME.2018.00069","url":null,"abstract":"Clone detection is a largely mature technology able to detect many code duplications, also called clones, in software systems of practically any size. The classic approaches to clone management are either clone removal, which consists in refactoring clones as an available language abstraction, or clone tracking, using a so-called linked editor, able to propagate changes between clone instances. However, past studies have shown that clone removal is not always feasible due to the limited expressiveness of language abstractions, or not desirable because of the abstraction overhead or the risks inherent to the refactoring. Linked editors, on the other hand, provide costless abstraction at no risk, but have their own issues, such as limited expressiveness, scalability, and controllability. This paper presents a new approach in which clones are safely refactored as code generators, but the unmodified code is presented to the maintainers with the same look-and-feel as in a linked editor. This solution has good expressiveness, scalability, and controllability properties. A prototype such editor is presented along with a first application within an industrial project.","PeriodicalId":6572,"journal":{"name":"2018 IEEE International Conference on Software Maintenance and Evolution (ICSME)","volume":"201 1","pages":"595-604"},"PeriodicalIF":0.0,"publicationDate":"2018-09-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"76002224","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
Automatic Test Smell Detection Using Information Retrieval Techniques 基于信息检索技术的自动测试气味检测
Pub Date : 2018-09-01 DOI: 10.1109/ICSME.2018.00040
Fabio Palomba, A. Zaidman, A. D. Lucia
Software testing is a key activity to control the reliability of production code. Unfortunately, the effectiveness of test cases can be threatened by the presence of faults. Recent work showed that static indicators can be exploited to identify test-related issues. In particular test smells, i.e., sub-optimal design choices applied by developers when implementing test cases, have been shown to be related to test case effectiveness. While some approaches for the automatic detection of test smells have been proposed so far, they generally suffer of poor performance: as a consequence, current detectors cannot properly provide support to developers when diagnosing the quality of test cases. In this paper, we aim at making a step ahead toward the automated detection of test smells by devising a novel textual-based detector, coined TASTE (Textual AnalySis for Test smEll detection), with the aim of evaluating the usefulness of textual analysis for detecting three test smell types, General Fixture, Eager Test, and Lack of Cohesion of Methods. We evaluate TASTE in an empirical study that involves a manually-built dataset composed of 494 test smell instances belonging to 12 software projects, comparing the capabilities of our detector with those of two code metrics-based techniques proposed by Van Rompaey et al. and Greiler et al. Our results show that the structural-based detection applied by existing approaches cannot identify most of the test smells in our dataset, while TASTE is up to 44% more effective. Finally, we find that textual and structural approaches can identify different sets of test smells, thereby indicating complementarity.
软件测试是控制产品代码可靠性的关键活动。不幸的是,测试用例的有效性可能会受到错误存在的威胁。最近的工作表明,静态指标可以用来确定与测试有关的问题。在特定的测试气味中,例如,开发人员在实现测试用例时应用的次优设计选择,已经被证明与测试用例的有效性相关。虽然到目前为止已经提出了一些自动检测测试气味的方法,但它们的性能通常很差:因此,当前的检测器在诊断测试用例的质量时不能正确地为开发人员提供支持。在本文中,我们的目标是通过设计一种新的基于文本的检测器,在测试气味的自动检测方面向前迈进一步,创造了TASTE(测试气味检测的文本分析),目的是评估文本分析在检测三种测试气味类型(通用夹具,热切测试和缺乏凝聚力的方法)方面的有用性。我们在一项实证研究中评估了TASTE,该研究涉及一个人工构建的数据集,该数据集由属于12个软件项目的494个测试气味实例组成,并将我们的检测器的能力与Van Rompaey等人和Greiler等人提出的两种基于代码度量的技术进行了比较。我们的结果表明,现有方法应用的基于结构的检测不能识别我们数据集中的大多数测试气味,而TASTE的效率高达44%。最后,我们发现文本和结构方法可以识别不同的测试气味集,从而表明互补性。
{"title":"Automatic Test Smell Detection Using Information Retrieval Techniques","authors":"Fabio Palomba, A. Zaidman, A. D. Lucia","doi":"10.1109/ICSME.2018.00040","DOIUrl":"https://doi.org/10.1109/ICSME.2018.00040","url":null,"abstract":"Software testing is a key activity to control the reliability of production code. Unfortunately, the effectiveness of test cases can be threatened by the presence of faults. Recent work showed that static indicators can be exploited to identify test-related issues. In particular test smells, i.e., sub-optimal design choices applied by developers when implementing test cases, have been shown to be related to test case effectiveness. While some approaches for the automatic detection of test smells have been proposed so far, they generally suffer of poor performance: as a consequence, current detectors cannot properly provide support to developers when diagnosing the quality of test cases. In this paper, we aim at making a step ahead toward the automated detection of test smells by devising a novel textual-based detector, coined TASTE (Textual AnalySis for Test smEll detection), with the aim of evaluating the usefulness of textual analysis for detecting three test smell types, General Fixture, Eager Test, and Lack of Cohesion of Methods. We evaluate TASTE in an empirical study that involves a manually-built dataset composed of 494 test smell instances belonging to 12 software projects, comparing the capabilities of our detector with those of two code metrics-based techniques proposed by Van Rompaey et al. and Greiler et al. Our results show that the structural-based detection applied by existing approaches cannot identify most of the test smells in our dataset, while TASTE is up to 44% more effective. Finally, we find that textual and structural approaches can identify different sets of test smells, thereby indicating complementarity.","PeriodicalId":6572,"journal":{"name":"2018 IEEE International Conference on Software Maintenance and Evolution (ICSME)","volume":"29 1","pages":"311-322"},"PeriodicalIF":0.0,"publicationDate":"2018-09-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"78763618","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}
引用次数: 61
期刊
2018 IEEE International Conference on Software Maintenance and Evolution (ICSME)
全部 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