{"title":"IWOR 2019 Program Committee","authors":"","doi":"10.1109/iwor.2019.00007","DOIUrl":"https://doi.org/10.1109/iwor.2019.00007","url":null,"abstract":"","PeriodicalId":393051,"journal":{"name":"2019 IEEE/ACM 3rd International Workshop on Refactoring (IWoR)","volume":"22 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"117137833","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}
{"title":"Maximizing Refactoring Coverage in an Automated Maintenance Approach Using Multi-Objective Optimization","authors":"M. Mohan, D. Greer, P. McMullan","doi":"10.1109/IWoR.2019.00014","DOIUrl":"https://doi.org/10.1109/IWoR.2019.00014","url":null,"abstract":"This paper describes a multi-objective genetic algorithm used to automate software refactoring. The approach is validated using a set of open source Java programs with a purpose built tool, MultiRefactor. The tool uses a metric function to measure quality in a software system and tests a second objective to measure the amount of code coverage of the applied refactorings by analyzing the code elements they have been applied to. The multi-objective setup will refactor the input program to improve its quality using the quality objective, while also maximizing the code coverage of the refactorings applied to the software. An experiment has been constructed to measure the multi-objective approach against the alternative mono-objective approach that does not use an objective to measure refactoring coverage. The two approaches are tested on six different open source Java programs. The multi-objective approach is found to give significantly better refactoring coverage scores across all inputs in a similar time, while also generating improvements in the quality scores.","PeriodicalId":393051,"journal":{"name":"2019 IEEE/ACM 3rd International Workshop on Refactoring (IWoR)","volume":"21 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128424397","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}
{"title":"Code Transformation Issues in Move-Instance-Method Refactorings","authors":"Jongwook Kim, D. Batory, Miloš Gligorić","doi":"10.1109/IWoR.2019.00011","DOIUrl":"https://doi.org/10.1109/IWoR.2019.00011","url":null,"abstract":"Refactorings, by definition, preserve the behavior of a target program. Such a strong semantic property is encoded by a set of preconditions for each refactoring. Only if all preconditions are satisfied will a target program be transformed. The code transformation that implements the refactoring follows another set of rules to produce syntactically-correct, refactored code. Consequently, it is easy to believe that most behavior-changing violations in refactorings are induced by incorrect preconditions or lack of required checks. In this paper, however, we show that code transformations for Move-Instance-Method Refactoring available in several popular Java Integrated Development Environments do not preserve program behavior. We report these errors and propose solutions for each identified problem.","PeriodicalId":393051,"journal":{"name":"2019 IEEE/ACM 3rd International Workshop on Refactoring (IWoR)","volume":"12 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114661793","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}
Daniel Oliveira, Ana Carla Bibiano, Alessandro F. Garcia
{"title":"On the Customization of Batch Refactoring","authors":"Daniel Oliveira, Ana Carla Bibiano, Alessandro F. Garcia","doi":"10.1109/IWoR.2019.00010","DOIUrl":"https://doi.org/10.1109/IWoR.2019.00010","url":null,"abstract":"Refactorings are program transformations to improve code structure quality. Developers often apply these transformations in a batch, i.e., transformations in a sequence on a certain program location in order to achieve a specific goal. Either individual or batch refactorings often need to be customized to a particular program context. Otherwise, the developer may not be able to achieve his goal. Existing tools provide limited support for refactoring customization. IDE features do not allow developers to properly create their own custom refactoring. As a consequence, developers often feel reluctant to use these tools, and end up applying their refactorings manually. This position paper proposes an approach for developers to customize program transformations for their refactorings. The approach allows a developer to: (i) compose an individual or batch refactoring according to his context's needs, and (ii) reuse the custom refactorings in similar contexts. This novel approach has the potential to increase the use of automated refactoring, while allowing software companies to better tailor the IDE to their specific refactoring practices. From a research perspective, our approach motivates researchers to investigate better practices for refactoring customization.","PeriodicalId":393051,"journal":{"name":"2019 IEEE/ACM 3rd International Workshop on Refactoring (IWoR)","volume":"154 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115168258","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}
{"title":"Can Refactoring Be Self-Affirmed? An Exploratory Study on How Developers Document Their Refactoring Activities in Commit Messages","authors":"E. Alomar, Mohamed Wiem Mkaouer, Ali Ouni","doi":"10.1109/IWoR.2019.00017","DOIUrl":"https://doi.org/10.1109/IWoR.2019.00017","url":null,"abstract":"Refactoring is a critical task in software maintenance and is usually performed to enforce best design practices, or to cope with design defects. Previous studies heavily rely on defining a set of keywords to identify refactoring commits from a list of general commits extracted from a small set of software systems. All approaches thus far consider all commits without checking whether refactorings had actually happened or not. In this paper, we aim at exploring how developers document their refactoring activities during the software life cycle. We call such activity Self-Affirmed Refactoring, which is an indication of the developer-related refactoring events in the commit messages. Our approach relies on text mining refactoring-related change messages and identifying refactoring patterns by only considering refactoring commits. We found that (1) developers use a variety of patterns to purposefully target refactoring-related activities; (2) developers tend to explicitly mention the improvement of specific quality attributes and code smells; and (3) commit messages with self-affirmed refactoring patterns tend to have more significant refactoring activity than those without.","PeriodicalId":393051,"journal":{"name":"2019 IEEE/ACM 3rd International Workshop on Refactoring (IWoR)","volume":"77 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128200848","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}