ieee transactions of software engineering, vol. 1, no. … · are becoming more and more aware of...

23
IEEE TRANSACTIONS OF SOFTWARE ENGINEERING, VOL. 1, NO. 1, JUNE 2020 1 30 Years of Software Refactoring Research: A Systematic Literature Review Chaima Abid, Vahid Alizadeh,Marouane Kessentini, Thiago do Nascimento Ferreira and Danny Dig Abstract—Due to the growing complexity of software systems, there has been a dramatic increase and industry demand for tools and techniques on software refactoring in the last ten years, defined traditionally as a set of program transformations intended to improve the system design while preserving the behavior. Refactoring studies are expanded beyond code-level restructuring to be applied at different levels (architecture, model, requirements, etc.), adopted in many domains beyond the object-oriented paradigm (cloud computing, mobile, web, etc.), used in industrial settings and considered objectives beyond improving the design to include other non-functional requirements (e.g., improve performance, security, etc.). Thus, challenges to be addressed by refactoring work are, nowadays, beyond code transformation to include, but not limited to, scheduling the opportune time to carry refactoring, recommendations of specific refactoring activities, detection of refactoring opportunities, and testing the correctness of applied refactorings. Therefore, the refactoring research efforts are fragmented over several research communities, various domains, and objectives. To structure the field and existing research results, this paper provides a systematic literature review and analyzes the results of 3183 research papers on refactoring covering the last three decades to offer the most scalable and comprehensive literature review of existing refactoring research studies. Based on this survey, we created a taxonomy to classify the existing research, identified research trends, and highlighted gaps in the literature and avenues for further research. Index Terms—Refactoring, systematic literature review, program transformation, software quality. 1 I NTRODUCTION For decades, code refactoring has been applied in infor- mal ways before it was introduced and properly defined in academic work. The first known use of the term Refactoring in the published literature was in an article written by William Opdyke and Ralph Johnson in September 1990 [1]. William Griswold’s Ph.D. dissertation [2], published in 1991, is also one of the first major academic works on refactoring functional and procedural programs. The author defined a set of automatable transformations and described their impact on the code structure. One year later, William Opdyke also published his Ph.D. dissertation [3] on the Refactoring of object-oriented programs. In 1999, Martin Fowler published the first book about refactoring that has as title Improving the Design of Existing Code [4]. This book popularised the practice of code refactoring, set its fundamentals, and had a high impact on the world of software development. Martin Fowler defined Refactoring in his book as a sequence of small changes - called refac- toring operations - made to the internal structure of the code without altering its external behavior. The goal of these refactoring operations is to improve the code readability and reusability as well as reduce its complexity and maintenance costs in the long run. Since then, a lot has changed in the software development world, but one thing has remained the same: The need for Refactoring. Chaima Abid, Vahid Alizadeh, Marouane Kessentini, and Thiago do Nascimento Ferreira are with the department of Computer and Informa- tion Science, University of Michigan, Dearborn, MI, USA. Danny Dig is with the Computer Science department, University of Colorado, Boulder, CO, USA. E-mail: [email protected] Manuscript received on June 2020. Nearly 30 years later, Refactoring has become a crucial part of software development practice, especially with the ever-changing landscape of IT and user requirements. It is a core element of agile methodologies, and most professional IDEs include refactoring tools. Recent studies show that restructuring software systems may reduce developers’ time by over 60% [5]. Others demonstrate how Refactoring can help detect, fix, and reduce software bugs [6]. Companies are becoming more and more aware of the importance of Refactoring, and they encourage their developers to contin- uously refactor their code to set a clean foundation for future updates. It might be difficult for a developer to be justified to spend time on improving a piece of code to have the same functionality. However, it can be seen as an investment for future developments. Specifically, Refactoring is a crucial task on software with longer lifespans with multiple developers need to read and understand the codes. Refactoring can improve both the quality of software and the productivity of its developers. Increasing the quality of the software is due to decreasing its complexity at design and source code level caused by refactoring, which is proved by many studies [7], [8]. The long-term effect of Refactoring is improving developers’ productivity by increasing two crucial factors, understandability and maintainability of the codes, especially when a new developer joins an existing project. It is shown that Refactoring can help to detect, fix, and reduce software bugs and leading to software projects which are less likely to expose bug in development process [6]. Another study claims that there are some specific kinds of refactoring methods that are very probable to induce bug fixes [9].

Upload: others

Post on 14-Jul-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: IEEE TRANSACTIONS OF SOFTWARE ENGINEERING, VOL. 1, NO. … · are becoming more and more aware of the importance of Refactoring, and they encourage their developers to contin-uously

IEEE TRANSACTIONS OF SOFTWARE ENGINEERING, VOL. 1, NO. 1, JUNE 2020 1

30 Years of Software Refactoring Research:A Systematic Literature Review

Chaima Abid, Vahid Alizadeh,Marouane Kessentini, Thiago do Nascimento Ferreira and Danny Dig

Abstract—Due to the growing complexity of software systems, there has been a dramatic increase and industry demand for tools andtechniques on software refactoring in the last ten years, defined traditionally as a set of program transformations intended to improvethe system design while preserving the behavior. Refactoring studies are expanded beyond code-level restructuring to be applied atdifferent levels (architecture, model, requirements, etc.), adopted in many domains beyond the object-oriented paradigm (cloudcomputing, mobile, web, etc.), used in industrial settings and considered objectives beyond improving the design to include othernon-functional requirements (e.g., improve performance, security, etc.). Thus, challenges to be addressed by refactoring work are,nowadays, beyond code transformation to include, but not limited to, scheduling the opportune time to carry refactoring,recommendations of specific refactoring activities, detection of refactoring opportunities, and testing the correctness of appliedrefactorings. Therefore, the refactoring research efforts are fragmented over several research communities, various domains, andobjectives. To structure the field and existing research results, this paper provides a systematic literature review and analyzes theresults of 3183 research papers on refactoring covering the last three decades to offer the most scalable and comprehensive literaturereview of existing refactoring research studies. Based on this survey, we created a taxonomy to classify the existing research, identifiedresearch trends, and highlighted gaps in the literature and avenues for further research.

Index Terms—Refactoring, systematic literature review, program transformation, software quality.

F

1 INTRODUCTION

For decades, code refactoring has been applied in infor-mal ways before it was introduced and properly defined inacademic work. The first known use of the term Refactoringin the published literature was in an article written byWilliam Opdyke and Ralph Johnson in September 1990[1]. William Griswold’s Ph.D. dissertation [2], publishedin 1991, is also one of the first major academic workson refactoring functional and procedural programs. Theauthor defined a set of automatable transformations anddescribed their impact on the code structure. One year later,William Opdyke also published his Ph.D. dissertation [3]on the Refactoring of object-oriented programs. In 1999,Martin Fowler published the first book about refactoringthat has as title Improving the Design of Existing Code [4].This book popularised the practice of code refactoring, setits fundamentals, and had a high impact on the world ofsoftware development. Martin Fowler defined Refactoringin his book as a sequence of small changes - called refac-toring operations - made to the internal structure of thecode without altering its external behavior. The goal of theserefactoring operations is to improve the code readability andreusability as well as reduce its complexity and maintenancecosts in the long run. Since then, a lot has changed in thesoftware development world, but one thing has remainedthe same: The need for Refactoring.

• Chaima Abid, Vahid Alizadeh, Marouane Kessentini, and Thiago doNascimento Ferreira are with the department of Computer and Informa-tion Science, University of Michigan, Dearborn, MI, USA.Danny Dig is with the Computer Science department, University ofColorado, Boulder, CO, USA.E-mail: [email protected]

Manuscript received on June 2020.

Nearly 30 years later, Refactoring has become a crucialpart of software development practice, especially with theever-changing landscape of IT and user requirements. It is acore element of agile methodologies, and most professionalIDEs include refactoring tools. Recent studies show thatrestructuring software systems may reduce developers’ timeby over 60% [5]. Others demonstrate how Refactoring canhelp detect, fix, and reduce software bugs [6]. Companiesare becoming more and more aware of the importance ofRefactoring, and they encourage their developers to contin-uously refactor their code to set a clean foundation for futureupdates.

It might be difficult for a developer to be justified tospend time on improving a piece of code to have the samefunctionality. However, it can be seen as an investmentfor future developments. Specifically, Refactoring is acrucial task on software with longer lifespans with multipledevelopers need to read and understand the codes.Refactoring can improve both the quality of software andthe productivity of its developers. Increasing the quality ofthe software is due to decreasing its complexity at designand source code level caused by refactoring, which is provedby many studies [7], [8]. The long-term effect of Refactoringis improving developers’ productivity by increasing twocrucial factors, understandability and maintainability of thecodes, especially when a new developer joins an existingproject. It is shown that Refactoring can help to detect, fix,and reduce software bugs and leading to software projectswhich are less likely to expose bug in development process[6]. Another study claims that there are some specific kindsof refactoring methods that are very probable to induce bugfixes [9].

Page 2: IEEE TRANSACTIONS OF SOFTWARE ENGINEERING, VOL. 1, NO. … · are becoming more and more aware of the importance of Refactoring, and they encourage their developers to contin-uously

IEEE TRANSACTIONS OF SOFTWARE ENGINEERING, VOL. 1, NO. 1, JUNE 2020 2

1.1 Problem Description and Motivation

Refactoring is among the fastest-growing software engineer-ing research areas, if not the fastest. Figure 1 shows thedistribution of publications related to refactoring across theglobe. Figure 2 reflects the number of publications in thetop 10 most active countries in the field of Refactoring. TheUnited States tops the list of countries with a total of 714publications followed by Germany and Canada with a totalof 317 and 248 publications, respectively. During the past4 years, the number of published refactoring studies hasincreased with an average of 37% in all top 10 countries.This demonstrates a noticeable increase in interest/need inRefactoring.

Over 5584 authors from all over the world contributed tothe field of Refactoring. We highlight the most active authorsin Figure 3 and 4, based on both the number of publicationsand citations in the area. Many scholars started research inthe refactoring filed prior to 2000. Others are relatively newto the field and started their contributions after year 2010.All top 10 authors in the field have a constantly increasingnumber of publications over the past 20 years. MarouaneKessentini heads the list with a total of 43 publications(51% of them were published during the past five years)followed by Steve Counsell and Danny Dig with a total of39 and 36 publications, respectively. Marouane kessentinipublished an average of more than 4 articles per year whileall other authors published an average between 1.5 and2.75 publications per year. Figure 5 is a histogram showinghow many publications were issued each year starting from1990. The number of published journal articles, conferencepapers, and books has increased dramatically during the lastdecade, reaching a pick of 265 publications in 2016. Duringjust the last four years (2016-2019), over 1026 papers werepublished in the field, with an average of 256 papers eachyear.

Recently, several researchers and practitioners haveadopted the use of refactoring operations at higher degreesof abstraction than source code level (e.g., databases, Uni-fied Modeling Language (UML) models, Object ConstraintLanguage (OCL) rules, etc.). As a result, they often hadto redefine the principles and guidelines of refactoringaccording to the requirements and specifications of theirdomains. For instance, in User Interface Refactoring, de-velopers make changes to the UI to retain its semanticsand consistency for all users. These refactorings include,but not limited to, Align entry field, Apply common buttonsize, Apply font, Indicate format, and Increase color contrast.In Database Refactoring, developers improve the databaseschema by applying changes such as Rename column, Splittable, Move method, Replace LOB with table, and Introducecolumn constraint. Henceforth, the refactoring operations arecalled restructuring operations when applied to artifactsother than the ones related to object-oriented programming.Although the different refactoring communities (e.g., soft-ware maintenance and evolution, model-driven engineer-ing, formal methods, search-based software engineering,etc.) are interdependent in many ways, they remain dis-connected, which may create inconsistencies. For example,when model-level Refactoring does not match the code-level practice, it can lead to incoherence and technical issues

during development. The detachment is visible not onlybetween different refactoring domains but also betweenpractitioners and researchers. The distance between themprimarily originates from the lack of insights into bothworlds’ recent findings and needs. For instance, developerstend to use the refactoring features provided by IDEs dueto their accessibility and popularity. Most of the time, theyare uninformed of the benefits that can be derived fromadopting state-of-the-art advances in academia. All thesechallenges call for a need to identify, critically appraise, andsummarize the existing work published across the differentdomains. Existing systematic literature reviews examinefindings in very specific refactoring areas such as identifyingthe impact of refactoring on quality metrics [10] or codesmells [11]. To the best of our knowledge, no work collectsand synthesizes existing research, tools, and recent advancesmade in the refactoring community. This paper is the mostcomprehensive synthesis of theories and principles of refac-toring intended to help researchers and practitioners makequick advances and avoid reinventing or re-implementingresearch infrastructure from scratch, wasting time and re-sources. We also build a refactoring infrastructure that willconnect researchers with practitioners in industry and pro-vide a bridge between different refactoring communities inorder to advance the field of refactoring research.

1.2 Contributions

The Refactoring area is growing very rapidly, and manyadvances, challenges, and trends have lately emerged. Theprimary purpose of this study is to implement a systematicliterature review (SLR) for the field of refactoring as a whole.This SLR follows a defined protocol to increase the study’svalidity and rationality so that the output can be highin quality and evidence-based. We used various electronicdatabases and a large number of articles to comprise allthe possible candidate studies and cover more works thanexisting SLRs.

This SLR contributes to the existing literature in thefollowing ways:

• We identify a set of 3183 studies related to refactor-ing published until May 2020, fulfilling the qualityassessment criteria. These studies can be used bythe research and industry communities as a reliablebasis and help them conduct further research onRefactoring.

• We present a comprehensive qualitative and quanti-tative synthesis reflecting the state-of-the-art in refac-toring with data extracted from those 3183 high-rigorstudies. Our synthesis covers the following themes:artifacts, refactoring tools, different approaches, andperformance evaluation in refactoring research.

• We provide guidelines and recommendations basedon our findings to support further research in thearea.

• We implement a platform that includes the followingcomponents: (1) A searchable repository of refactor-ing publications based on our proposed taxonomy;(2) A searchable repository of authors who con-tributed to the refactoring community; (3) Analysis

Page 3: IEEE TRANSACTIONS OF SOFTWARE ENGINEERING, VOL. 1, NO. … · are becoming more and more aware of the importance of Refactoring, and they encourage their developers to contin-uously

IEEE TRANSACTIONS OF SOFTWARE ENGINEERING, VOL. 1, NO. 1, JUNE 2020 3

Fig. 1. Distribution of refactoring publications around the world.

Fig. 2. Number of publications in the top 10 most active countries in the refactoring field

and visualization of the refactoring trends and tech-niques based on the collected papers. The proposedinfrastructure will allow researchers and practition-ers to easily report refactoring publications and up-load information about active authors in the field ofRefactoring. It will also bridge the different commu-nities to advance the field of refactoring research andprovide opportunities to educate the next refactoringgeneration.

1.3 Related Surveys

Mens et al. [12] provided an overview of existing researchin the field of software refactoring. They compared anddiscussed different approaches based on different criteriasuch as refactoring activities, techniques and formalisms,types of software artifacts that are being refactored, andthe effect of refactoring on the software process. Elish et al.[13] proposed a classification of refactoring methods basedon their measurable effect on software quality attributes.The investigated software quality attributes are adaptability,completeness, maintainability, understandability, reusabil-

Page 4: IEEE TRANSACTIONS OF SOFTWARE ENGINEERING, VOL. 1, NO. … · are becoming more and more aware of the importance of Refactoring, and they encourage their developers to contin-uously

IEEE TRANSACTIONS OF SOFTWARE ENGINEERING, VOL. 1, NO. 1, JUNE 2020 4

Fig. 3. Top 10 Authors with the highest number of publications and citations in the field of refactoring

ity, and testability. Du Bois et al. [14] provided an overviewof the field of software restructuring and Refactoring. Theysummarized Refactoring’s current applications and toolsupport and discussed the techniques used to implementrefactorings, refactoring scalability, dependencies betweenrefactorings, and application of refactorings at higher levelsof abstraction. Mens et al. [15] identified emerging trends inrefactoring research (e.g., refactoring activities, techniques,tools, processes, etc.), and enumerates a list of open ques-tions, from a practical and theoretical point of views. Misb-hauddin et al. [16] provide a systematic overview of existingresearch in the field of model Refactoring. Al Dallal et al.[17] presented a systematic literature review of existingstudies, published through the end of 2013, identifying op-portunities for code refactoring activities. In another of theirwork [10], they presented a systematic literature review thatsummarizes the impact of refactoring on several internaland external quality attributes. Singh et al. [11] published asystematic literature review of refactoring concerning codesmells. However, the review of Refactoring is done in a gen-eral manner, and the identification of code smells and anti-patterns is performed in-depth. Abebe et al. [18] conducteda study to reveal the trends, opportunities, and challengesof software refactor researches using a systematic literaturereview. Baqais et al. [19] performed a systematic literaturereview of papers that suggest, propose, or implement anautomated refactoring process.

The different studies mentioned above are mainly aboutidentifying the studies related to very specific or specializedtopics. In this paper, we are trying to be as comprehensiveas possible by collecting, categorizing, and summarizing allthe papers related to refactoring in general that conform toour quality standards.

1.4 OrganizationThe rest of the paper is organized as follows: First, Section 2outlines the research method and the underlying protocolfor the systematic literature review. Section 3 describesthe proposed refactoring infrastructure. The results of thissystematic review are reported in Sections 4. Finally, Section5 presents the conclusions.

2 RESEARCH METHODOLOGY

Our literature review follows the guidelines established byKitchenham and Charters [20], which decompose a sys-tematic literature review in software engineering into threestages: planning, conducting, and reporting the review. Wehave also taken inspiration from recent systematic litera-ture reviews in the fields of empirical software engineering[10] and search-based software engineering [21]. All thesteps of our research are well documented, and all therelated data are available online for further validation andexploration []. This section details the performed researchsteps and the protocol of the literature review. First, section2.1 describes the research questions underlying our survey.Second, section 2.2 details the literature search step. Next,section 2.3 highlights the inclusion and exclusion criteria.The data preprocessing step and our proposed taxonomyare described in sections 2.4 and 2.5, respectively. The qual-ity assessment criteria are defined in section 2.6. Finally,Section 2.7 discusses threats to the validity of our study.

2.1 Research QuestionsThe following research questions have been derived basedon the objectives described in the introduction, which formthe basis for the literature review:

Page 5: IEEE TRANSACTIONS OF SOFTWARE ENGINEERING, VOL. 1, NO. … · are becoming more and more aware of the importance of Refactoring, and they encourage their developers to contin-uously

IEEE TRANSACTIONS OF SOFTWARE ENGINEERING, VOL. 1, NO. 1, JUNE 2020 5

Fig. 4. Evolution of the Top 10 Authors during the past 10 years

Fig. 5. Trend of publications in the field of refactoring during the lastthree decades.

• RQ1: What is the refactoring life-cycle?• RQ2: What are the types of artifacts that are being

refactored at each step of the refactoring life-cycle?• RQ3: Why do software practitioners and researchers

perform refactoring?• RQ4: What are the different approaches used by

software practitioners and researchers to performrefactoring?

• RQ5: What types of datasets are used by softwarepractitioners and researchers to validate the refactor-ing?

2.2 Literature Search StrategyAll the papers have been queried from a wide range of scien-tific literature sources to make our search as comprehensiveas possible:

• Digital libraries: ACM Library, IEEE Xplore, Science-Direct, SpringerLink.

• Citation databases: Web of Science (formerly ISI Webof Knowledge), Scopus.

• Citation search engines: DBLP, Google Scholar.

We first defined a list of terms covering the variety of bothapplication domains and refactoring techniques. For that,we checked the title, keywords, and abstract of the relevantpapers that were already known to us. Synonyms andkeywords were derived from this list. These keywords werecombined using logical operators ANDs and ORs to createsearch terms. Before starting collecting the primary studies(PS), we tested the search terms’ effectiveness on all thedata sources. Then, we refined the queries to avoid gettingirrelevant papers. The string adjustments were agreed onby all authors. The final list of search strings are shownin Table 1. These search strings were modified to suit thespecific requirements of different electronic databases. Weconducted our search on May 31st, 2020, and identifiedstudies published up until that date. The search was donefirst by the corresponding author and then verified by therest of the authors. In our systematic review, we followed amulti-stage model to minimize the probability of missingrelevant publications as much as possible. The differentstages are shown in figure 6 along with the total returnedpublications at each stage. The first stage consists of execut-ing the search queries on the databases mentioned above;a total of 6158 references were found. Then, we removedthe duplicates, which reduced the list of candidate papersto 3882. Then, we performed a manual examination oftitles and abstracts to discard irrelevant publications basedon the inclusion and exclusion criteria. We also looked atthe body of the paper whenever necessary. This decreasedthe list of candidate papers to 3161 publications. Next, we

Page 6: IEEE TRANSACTIONS OF SOFTWARE ENGINEERING, VOL. 1, NO. … · are becoming more and more aware of the importance of Refactoring, and they encourage their developers to contin-uously

IEEE TRANSACTIONS OF SOFTWARE ENGINEERING, VOL. 1, NO. 1, JUNE 2020 6

Select Scientific Literature Sources

Define Search Strings

Executing the Search Queries(6158 publications)Stage 1

Check Cross-references of Relevant Publications(3178 publications)Stage 5

Remove Duplicates(3882 publications)Stage 2

Manual Examination of Titles and Abstracts(3161 publications)Stage 3

Consult Web Profiles of Relevant Authors(3164 publications)Stage 4

Contact Authors(3183 publications)Stage 6

-2276

-721

+3

+14

+5

Fig. 6. SLR steps

used the resulting set as input for the snowballing process,recommended by Wohlin [22], to identify additional studies.We consulted web profiles of relevant authors and theirnetworks. We also checked cross-references until no furtherpapers were detected. As a result, 17 new references wereadded. After that, we contacted the corresponding authorsof the identified publications to inquire about any missingrelevant studies. This led to adding 5 studies.

2.3 Inclusion and Exclusion Criteria

To filter out the irrelevant articles among those selected inStage 2 and determine the Primary studies, we consideredthe following inclusion and exclusion criteria.

2.3.1 Inclusion criteriaAll of the following criteria must be satisfied in the selectedprimary studies:

1) The article must have been published in a peerreviewed journal or conference proceeding betweenthe years 1990 and 2020. The main reason for im-posing a constraint over the start year is becausethe first known use of the term “refactoring” inthe published literature was in a September, 1990article by William Opdyke and Ralph Johnson [1].We included papers up till May 31st 2020.

2) The article must be related to computer science andengineering and propose techniques, methods andtools for refactoring.

3) The paper must be written in English.

4) In case a conference paper has a journal extension,we would include both the conference and journalpublications.

5) The paper must pass the quality assessment criteriathat are elaborated in Section 2.6.

2.3.2 Exclusion criteriaPapers satisfying any of the exclusion criteria were dis-carded, as follows:

1) Studies that are not related to the computer sciencefield.

2) Studies that investigated the impact of generalmaintenance on code quality. In this case, the main-tenance tasks were potentially performed due toseveral reasons and not limited to refactoring, andtherefore, we cannot judge whether the impact wasdue to refactoring or to other maintenance taskssuch as corrective or adaptive maintenance.

3) Grey Literature

2.4 Data PreprocessingA pre-processing technique was applied to improve reliabil-ity and precision, as detailed in the following sub sections.

2.4.1 Simplifying Author’s nameIn general, scientific and bibliographic databases such asWeb of Science (WoS) and Scopus have the following incon-sistencies in authors names:

• Most journals abbreviate the author’s first name toan initial and a dot.

• Most journals use the author name’s special accents.• WoS uses a comma between the author’s last name

and first name initial, but Scopus does not.

These name-related inconsistencies mean that sciento-metrics scripts cannot find all of the similar author’s names.For that reason, ScientoPy script applies the following stepsto simplify author’s name fields:

• Remove dots and coma from author’s name.• Remove special accents from author’s name

2.4.2 Fixing inconsistent country namesSome authors use different naming to refer to the samecountry (such as USA and United States). For that reason,some country names were replaced based on Table 3.

2.5 Study ClassificationAccording to the research questions listed in Section 2.1, weclassified the PSs into five dimensions: (1) refactoring life-cycle (related to RQ1), (2) artifacts affected by refactoring(related to RQ2), (3) refactoring objectives (related to RQ3),(4) refactoring techniques (related to RQ4) and (5) refactor-ing evaluation (related to RQ5). The determination of theattributes of each dimension was performed incrementally.That is, for each dimension, we started with an emptyset of attributes. The authors of this study screened thefull texts of the PSs one by one, analyzed each reportedstudy based on the considered dimension, and determined

Page 7: IEEE TRANSACTIONS OF SOFTWARE ENGINEERING, VOL. 1, NO. … · are becoming more and more aware of the importance of Refactoring, and they encourage their developers to contin-uously

IEEE TRANSACTIONS OF SOFTWARE ENGINEERING, VOL. 1, NO. 1, JUNE 2020 7

TABLE 1final list of search strings

search strings(software OR system OR code OR service OR diagram OR database OR architecture OR Model ORGUI OR user interface OR UI OR design OR artifact OR developer OR computer OR programmingOR object-oriented OR implement OR mobile app OR cloud OR document ) AND (refactor ORrefactoring)

TABLE 2PS quality assessment questions [17]

Question

Design

Are the applied identification techniques for refactoring opportunities clearly described?Are the refactoring activities considered clearly stated and defined?Was the sample size justified?Are the evaluation measures fully defined?

Conduct Are the data collection methods adequately described?

Analysis

Are the results of applying the identification techniques evaluated?Are the data sets adequately described? (size, programming languages, source)Are the study participants or observational units adequately described?Are the statistical methods described?Are the statistical methods justified?Is the purpose of the analysis clear?Are the scoring systems (performance evaluation) described?

Conclusion

Are all study questions answered?Are negative findings presented?Are the results compared with previous reports?Do the results add to the literature?Are validity threats discussed?

TABLE 3List of countries and their replacements

Country ReplacementRepublic of China ChinaUSA United StatesEngland, Scotland and Wales EnglandU Arab Emirates United Arab EmiratesRussia Russian FederationViet Nam VietnamTrinid & Tobago Trinidad and Tobago

the attributes of that dimension as considered by each PS.Table 4 outlines the keywords extracted for each category.It should be pointed out that, most of the time, we removeall of the affixes (i.e., suffixes, prefixes, etc.) attached to aword in order to keep its lexical base, also known as rootor stem or its dictionary form or lemma. For instance, theword document allows us to detect the words documentationand documenting. Also, we did not include bi-grams andtri-grams that can be detected using one uni-gram. Forexample, Class Diagram, Object Diagram, Sequence Diagram,and Use Case Diagram can all be detected using the wordDiagram alone.

The screening of the PSs resulted in determining sixstages for the refactoring life-cycle (e.g., detection, pri-oritization, recommendation, testing, documentation, andprediction). We also classified the papers according to thelevel of automation of the proposed technique (e.g., auto-matic, manual, semi-automatic). The results are describedin section 4.1. For the second dimension, we identified fiveartifacts on which the impact of refactoring is studied byat least one of the PSs. These artifacts are code, architec-ture, model, GUI, and database. The classification of PSsbased on these artifacts is discussed in detail in Section4.2. We subdivided the third dimension into five categories

(e.g., External quality, internal quality, performance, migra-tion, and security) to reflect the refactoring objective andsix categories (e.g., Object-oriented design, Aspect-orienteddesign, Model-driven engineering, Documentation, Mobiledevelopment, and Cloud computing) to describe the refac-toring paradigms. The classification of PSs based on thesecategories is discussed in detail in Section 4.3. We dividedthe fourth dimension into four categories (e.g., data mining,search-based algorithms, formal methods, and fuzzy logic)to reveal the refactoring techniques adopted in the studiesand into twelve categories (e.g., Java, C, C#, Python, Cobol,PHP, Scala, Smalltalk, Ruby, Javascript, MATLAB, and CSS)to show the most common programming languages used inour PSs. The details of this categorization are reported insection 4.4. Finally, for the fifth dimension, we divide thePSs into two categories: open-source and industrial. Theopen-source category includes studies that validate theirapproaches using open source systems. In contrast, theindustrial category consists of the studies that validate theirwork on systems of their industrial collaborators. Thesefindings are outlined in Section 4.5.

2.6 Study Quality Assessment

To ensure a level of quality of papers, we only includedvenues that are known for publishing high-quality softwareengineering research in general with an h-index of at least10, as has been done by [23] . Each of the papers thatwere published before 2019 has to be cited at least once.The quality of each primary study was assessed based ona quality checklist defined by Kitchenham and Charters[20]. This step aims to extract the primary studies withinformation suitable for analysis and answering the definedresearch questions. The quality checklist, (described in table2) were defined by Galster et al. [23]. They are developed

Page 8: IEEE TRANSACTIONS OF SOFTWARE ENGINEERING, VOL. 1, NO. … · are becoming more and more aware of the importance of Refactoring, and they encourage their developers to contin-uously

IEEE TRANSACTIONS OF SOFTWARE ENGINEERING, VOL. 1, NO. 1, JUNE 2020 8

TABLE 4List of keywords used to detect the different categories

Category KeywordsRefactoring life-cycle (RQ1)Detection detect, opportunity, smell, antipattern, design defectPrioritization schedul, sequence, prioritRecommendation recommend, correction, correcting, fixing, suggestTesting test, regression testing, test case, unit testDocumentation documentPrediction predict, future release, next release, development history, refactoring historyLevel of automation (RQ1)Manual manualSemi-automatic semi-automat, semi-manualAutomatic automatArtifact (RQ2)Code code, java, object orient, smell, antipattern, anti-pattern, object-orientModel design, model, UML, diagram, Unified Modeling LanguageArchitecture architecture, hotspot, hierarchyGUI gui, user interface, UIDatabase relational, schema, database, Structured Query Language, SQLParadigm (RQ3)Object-oriented design object orient, object-orient, oo, java, c, ++, python, C sharp, c#, css, Python, R, PHP, JavaScript, Ruby,

Perl, Object Pascal, Objective-C, Dart, Swift, Scala, Kotlin, Common Lisp, MATLAB, SmalltalkAspect-oriented design aspectModel-driven engineering model transform, uml, reverse engineering, diagram, Unified Modeling LanguageDocumentation documentMobile development android, mobile, IOS, phone, smartphone, cellphonesCould computing web service, wsdl, restful, cloud, Apache Hadoop, Docker, Middleware, Software-as-a-Service,

SaaS, XaaS, Anything-as-a-Service, Platform-as-a-Service, PaaS, Infrastructure-as-a-Service, IaaS, AWS,Amazon EC2, Amazon Simple Storage Service, S3

Refactoring Objectives (RQ3)Internal Quality maintainability, cyclomatic, depth of inheritance, coupling, quality, Flexibility, Portability, Re-usability,

Readability, Testability, UnderstandabilityPerformance performance, parallel, Response Time, Error Rates, Request Rate, availabilityExternal quality analysability, changeability, time behaviour, resource, Correctness, Usability, Efficiency, Reliability,

Integrity, Adaptability, Accuracy, RobustnessMigration migratSecurity secure, safety, Attack surface, virus, hack, vulnerability, vulnerable, spamProgramming languages (RQ4)Java javaC c, c++C# c sharp, c#Python pythonCSS cssPHP phpCobol cobolScala scalaJavascript javascriptRuby rubySmalltalk smalltalkMATLAB matlabAdopted methods (RQ4)Search-based algorithms search, search-base, sbse, genetic, fitness, simulated annealing, tabu search, search space, Hill climbing,

Multi-objective evolutionary algorithms, multi objective optimization, multi-objective programming,vector optimization, multi-criteria optimization, multi-attribute optimization, Pareto optimization,Evolutionary Multi-objective Optimization, EMO, Single-Objective Optimization, Many-ObjectiveOptimization, multi objective

Data mining artificial intelligence, ai , machine learning, naive bayes, decision tree, SVM, support vector machine,Cluster, Classification, classify, Association, Neural networks, deep learning, random forest, regression,reinforcement learning, learning

Formal methods model check, formal method, B-Method, RAISE, Z notation, SPARK AdaFuzzy logic fuzzyEvaluation method (RQ5)Open source open source, open-sourceIndustrial proprietary, industrial, industry, collaborator, collaboration

Page 9: IEEE TRANSACTIONS OF SOFTWARE ENGINEERING, VOL. 1, NO. … · are becoming more and more aware of the importance of Refactoring, and they encourage their developers to contin-uously

IEEE TRANSACTIONS OF SOFTWARE ENGINEERING, VOL. 1, NO. 1, JUNE 2020 9

by considering bias and validity problems that can occurat different stages, including the study design, conduct,analysis, and conclusion. Each question is answered by a”Yes”, ”Partially”, or ”No”, which correspond to a score of1, 0.5, or 0, respectively. If a question does not apply to astudy, we do not evaluate the study for that question. Thequality assessment checklist was independently applied toall 3882 studies by two of the authors. All disagreementson the quality assessment results were discussed, and aconsensus was reached eventually. Few cases where agree-ment could not be reached were sent to the third author forfurther investigation. 154 studies did not meet the qualityassessment criteria.

2.7 Threats to ValiditySeveral limitations may affect the generalizability and theinterpretations of our results. The first is the possibility ofpaper selection bias. To ensure that the studies were se-lected in an unbiased manner, we followed the well-definedresearch protocol and guidelines reported by Kitchenhamand Charters [20] instead of proposing nonstandard qualityfactors. Also, the final decision on the articles with selectiondisagreements was performed based on consensus meet-ings. The Primary studies were assessed by one researcherand checked by the other, a technique applied in similarstudies [21]. The second threat consists of missing a rele-vant study. To overcome this threat, we employed severalstrategies that we mentioned in Section 2.2. Few relatedstudies were detected after performing the automatic search,which indicates that the constructed search strings and thementioned utilized libraries were comprehensive enough toidentify most of the relevant articles. Another critical issueis whether our taxonomy is complete and robust sufficientto analyze and classify the primary studies. To overcomethis problem, we used an iterative content analysis methodby going through the papers one by one and continuouslyexpand the taxonomy for every new encountered concept.Furthermore, to gather sufficient keywords to detect thedifferent categories, we followed the same iterative process,and we added synonyms based on the authors’ expertisein the field of refactoring. Another threat is related to thetagging of the papers according to our taxonomy. To miti-gate this problem, we asked 27 graduate students to checkthe correctness of the classification results by reading theabstract, the title, and keywords. They also check the bodyof the paper whenever necessary.

3 REFACTORING INFRASTRUCTURE

We implemented a large scale platform [24] that collects,manages, and analyzes refactoring related papers to helpresearchers and practitioners share, report, and discoverthe latest advancements in software refactoring research. Itincludes the following components:

1) A searchable repository of refactoring publicationsbased on our proposed taxonomy. Figure 9 shows ascreenshot of the publications’ tab of the refactoringrepository website. The papers can be searched byauthor, title, or year of publication. Each paper hastags that describe its content based on our taxonomy

described in section 2.5. The papers can also befiltered using those tags and sorted alphabeticallyor chronologically according to the title and yearof publication, respectively. The user can export thepublications’ dataset to many formats, includingpdf, excel, and CSV. He can also easily report a newpublication by entering its link.

2) A searchable repository of authors who con-tributed to the refactoring community. Figure8 shows a screenshot of the authors’ tab of therefactoring repository website. The authors can besearched and sorted alphabetically by name, affil-iation, or country. They can also be sorted basedon the total number of refactoring publications.The user can also consult the Google Scholar andScopus profiles of the authors if available. Finally,the user can easily report a new author by enteringtheir information and their profile. Furthermore, wedefined the refactoring h-index, which shows howmany papers about refactoring published by theauthor have been cited proportionately. A refac-toring h-index of X means that the author has Xpapers about refactoring that have been cited atleast X times. Authors can also be sorted accordingto the refactoring h-index and the total number ofcitations (see figure 11). Besides, we created a co-author network and corresponding visualizations(see figure 12) to get a snapshot view of the breadthand depth of an individual’s collaborations in thefield of refactoring research. Finally, we generated ahistogram (see figure 7) that shows the number ofpublications issued by the top institutions active inthe refactoring research by considering the authors’affiliations.

3) Analysis and visualization of the refactoringtrends and techniques based on the collected pa-pers. Figure 10 shows a screenshot of the refactoringrepository dashboard. It contains histograms andpie charts that show the distribution and percent-ages of the categories defined in our taxonomy. Italso includes maps that reflect the spread of refac-toring activity across the world.

The proposed infrastructure will enable researchers toperform a fair comparison between their new refactoringapproaches and state-of-the-art tools; enable researchers touse refactoring data of large software systems; facilitate in-teractions between researchers from currently disconnecteddomains/communities of refactoring (model-driven engi-neering, service computing, parallelism and performanceoptimization, software quality, testing, etc.); enable practi-tioners and researchers to quickly identify relevant existingresearch papers and tools for their problems based on theproposed taxonomy and classification; create benchmarksagainst which various refactoring approaches can be evalu-ated; enable effective interactions between practitioners andrefactoring researchers to identify relevant problems facedby the software industry.

Page 10: IEEE TRANSACTIONS OF SOFTWARE ENGINEERING, VOL. 1, NO. … · are becoming more and more aware of the importance of Refactoring, and they encourage their developers to contin-uously

IEEE TRANSACTIONS OF SOFTWARE ENGINEERING, VOL. 1, NO. 1, JUNE 2020 10

Fig. 7. Top institutions active in the refactoring field

Fig. 8. A screenshot of the authors tab of the refactoring repositoryWebsite

4 RESULTS

In this section, we aim to answer the research questions. Toprovide an overview of the current state of the art in refac-toring and guide the reader to a specific set of approaches,tools, and recent advances that are of interest, we classifiedthe 3183 reviewed papers based on the taxonomy describedin Section 2.5. Table 5 contains representative references forthe categories created for each RQ. We only provided 10references per category because we cannot possibly reportin this paper the categorization of all the studies sincewe are dealing with a total of 3183 papers. The resultsof the classification of all the papers are provided in ourwebsite [24]. For some taxonomy categories, papers mayhave multiple values and thus be listed several times. Asa result, percentages in the tables may sum up to more than100 percent. Also, not all the papers were classified in alldimensions. Consequently, percentages in one dimensionmay not sum up to 100 percent. The rest of this sectionpresents the observations and insights that can be derivedfrom the visualization of the categories.

4.1 Refactoring life-cycleGoing through the primary studies, we have been able toestablish a refactoring life-cycle that is composed of six

Fig. 9. A screenshot of the publications tab of the refactoring repositoryWebsite

Fig. 10. A screenshot of the Dashboard of the refactoring repositorywebsite

stages:

• Refactoring detection: Identifying refactoring op-portunities is an important stage that precedes theactual refactoring process. It can be done by man-ually inspecting and analyzing an artifact of a sys-tem to identify refactoring opportunities. However,this technique is time-consuming and costly. Re-searchers in this area typically propose fully or semi-automated techniques to identify refactoring oppor-tunities. These techniques may be applicable to dif-ferent artifacts and should be evaluated empirically.

• Refactoring prioritization: The number of refactor-ing opportunities usually exceeds the amount ofproblems that the developer can deal with, par-ticularly when the effort available for performingrefactorings is limited. Moreover, not all refactoringopportunities are equally relevant to the goals of thesystem or its health. In this stage, the refactorings op-erations are prioritized using different criteria (e.g.,maximizing the refactoring of classes with a large

Page 11: IEEE TRANSACTIONS OF SOFTWARE ENGINEERING, VOL. 1, NO. … · are becoming more and more aware of the importance of Refactoring, and they encourage their developers to contin-uously

IEEE TRANSACTIONS OF SOFTWARE ENGINEERING, VOL. 1, NO. 1, JUNE 2020 11

TABLE 5Representative references for all categories

Category Percentage PapersRefactoring life-cycle (RQ1)Detection 28.65% [S1], [S2], [S3], [S4], [S5], [S6], [S7], [S8], [S9], [S10]Prioritization 9.43% [S11], [S12], [S13], [S14], [S15], [S16], [S17], [S18], [S19], [S20]Recommendation 16.18% [S3], [S11], [S12], [S21], [S22], [S23], [S24], [S25], [S26], [S27]Testing 18.44% [S4], [S6], [S7], [S8], [S13], [S28], [S29], [S30], [S31], [S32]Documention 5.22% [S33], [S34], [S35], [S36], [S37], [S38], [S39], [S40], [S41], [S42], [S43]Prediction 4.818% [S44], [S45], [S46], [S47], [S48], [S49], [S50], [S51], [S52], [S53]Level of automation (RQ1)Automatic 30.95% [S54], [S55], [S56], [S57], [S58], [S59], [S60], [S61], [S62], [S63]Semi-automatic 1.95% [S64], [S65], [S66], [S67], [S68], [S69], [S70], [S71], [S72], [S73], [S74], [S75]Manual 8.67% [S69], [S76], [S77], [S78], [S79], [S80], [S81], [S82], [S83], [S84]Artifact (RQ2)Code 72.89% [S1], [S2], [S3], [S11], [S65], [S85], [S86], [S87], [S88], [S89]Model 59.25% [S1], [S3], [S28], [S29], [S65], [S87], [S89], [S90], [S91], [S92]Architecture 17.25% [S28], [S91], [S93], [S94], [S95], [S96], [S97], [S98], [S99], [S100]GUI 2.58% [S6], [S8], [S28], [S87], [S89], [S90], [S101], [S102], [S103], [S104]Database 4.12% [S27], [S36], [S65], [S100], [S105], [S106], [S107], [S108], [S109], [S110]Paradigm (RQ3)Object-oriented design 34.09% [S1], [S8], [S30], [S85], [S87], [S88], [S101], [S111], [S112], [S113]Aspect-oriented 10.87% [S88], [S96], [S101], [S102], [S103], [S114], [S115], [S116], [S117], [S118]Model-driven engineering 7.35% [S3], [S15], [S32], [S58], [S65], [S119], [S120], [S121], [S122], [S123]Mobile apps development 3.55% [S23], [S87], [S87], [S95], [S99], [S112], [S124], [S125], [S126], [S127]Could computing 4.15% [S128], [S129], [S130], [S131], [S132], [S133], [S134], [S135], [S136], [S137]Refactoring Objective (RQ3)Internal Quality 41.63% [S3], [S12], [S21], [S29], [S30], [S89], [S90], [S94], [S138], [S139]Performance 15.93% [S10], [S12], [S28], [S86], [S88], [S91], [S92], [S96], [S115], [S119]External quality 22.68% [S87], [S91], [S92], [S95], [S102], [S140], [S141], [S142], [S143], [S144]Migration 3.61% [S95], [S100], [S113], [S145], [S146], [S147], [S148], [S149], [S150], [S151]Security 3.11% [S113], [S152], [S153], [S154], [S155], [S156], [S157], [S158], [S159], [S160]Programming language (RQ4)Java 17.15% [S1], [S8], [S10], [S30], [S85], [S87], [S88], [S112], [S113], [S140]C 4.65% [S59], [S96], [S104], [S105], [S111], [S146], [S161], [S162], [S163], [S164]C# 0.66% [S61], [S165], [S166], [S167], [S168], [S169], [S170], [S171], [S172], [S173]Python 0.53% [S174], [S175], [S176], [S177], [S178], [S179], [S180], [S181], [S182], [S183]CSS 0.5% [S147], [S184], [S185], [S186], [S187], [S188], [S189], [S190], [S191], [S192]PHP 0.35% [S169], [S193], [S194], [S195], [S196], [S197], [S198], [S199], [S200], [S201]Cobol 0.31% [12], [S202], [S203], [S205], [S206], [S207], [S208], [S209]MATLAB 0.28% [S210], [S211], [S212], [S213], [S214], [S215], [S216], [S217]Smalltalk 0.79% [25], [S219], [S220], [S221], [S222], [S223], [S224], [S225], [S226], [S227]Ruby 0.22% [S169], [S181], [S228], [S229], [S230], [S231]Javascript 0.72% [S112], [S232], [S233], [S234], [S235], [S236], [S237], [S238], [S239], [S240], [S241]Scala 4.02% [S33], [S55], [S86], [S126], [S242], [S243], [S244], [S245], [S246], [S247]Adopted Method (RQ4)Search-based algorithms 25.76% [S12], [S248], [S249], [S250], [S251], [S252], [S253], [S254], [S255], [S256]Data mining 15.49% [S2], [S82], [S107], [S185], [S257], [S258], [S259], [S260], [S261], [S262]Formal methods 2.92% [S42], [S199], [S263], [S264], [S265], [S266], [S267], [S268], [S269]Fuzzy logic 0.28% [S257], [S270], [S271], [S272], [S273], [S273], [S274]Evaluation method (RQ5)Open source 16.31% [S1], [S7], [S12], [S30], [S32], [S88], [S112], [S139], [S248], [S275]Industrial 10.4% [S9], [S12], [S16], [S115], [S120], [S147], [S276], [S277], [S278], [S279]

Fig. 11. A screenshot of the refactoring repository dashboard that showsthe authors, their h-index and total number of publications and citations

number of anti-patterns or with the previous history

of bugs, etc.) according to the needs of developers.• Refactoring recommendation: Several refactoring

recommendation tools have been proposed that dy-namically adapt and suggest refactorings to develop-ers. The output is sequences of refactorings that de-velopers can apply to improve the quality of systemsby fixing, for example, code smells or optimizingsecurity metrics.

• Refactoring testing: After choosing the refactoringsto be applied, tests need to be done to ensure the cor-rectness of artifacts transformations and avoid futurebugs. This is done by checking the satisfaction of thepre-and post-conditions of the refactoring operationsand the preservation of the system behavior.

• Refactoring documentation: After applying and test-ing the refactorings, we need to document the refac-

Page 12: IEEE TRANSACTIONS OF SOFTWARE ENGINEERING, VOL. 1, NO. … · are becoming more and more aware of the importance of Refactoring, and they encourage their developers to contin-uously

IEEE TRANSACTIONS OF SOFTWARE ENGINEERING, VOL. 1, NO. 1, JUNE 2020 12

Fig. 12. A screenshot of the authors network graph from the refactoringrepository website

torings, their locations, why they have been applied,and the quality improvements.

• Prediction: It is interesting for developers to knowwhich locations are likely to demand refactoring infuture releases of their software products. This willhelp them focus on the relevant artifacts that willundergo changes in the future, prepare them for fur-ther improvements and extensions of functionality,and optimize the management of limited resourcesand time. Predicting locations of future refactoringcan be done using the development history.

Figure 13 illustrates the percentage of the papers relatedto each stage of the refactoring life-cycle. 33.08% of thepapers deal with testing. Researchers have invested heavilyin testing to ensure the reliability of refactoring becausechanging the structure of code can easily introduce bugsin the program and lead to challenging debugging sessions.A plenty of effort is made towards the automation of thetesting process to facilitate the adoption of refactoring [S54],[S55], [S56]. Detecting refactoring opportunities is also atopic of interest to researchers. Several approaches havebeen proposed to detect refactoring opportunities includingbut not limited to techniques that depend on quality metrics(e.g., cohesion, coupling, lines of code, etc.), code smells(e.g., feature envy, Blob class, etc.), Clustering (similaritiesbetween one method and other methods, distances betweenthe methods and attributes, etc.), Graphs (e.g., representthe dependencies among classes, relations between methodsand attributes, etc.), and Dynamic analysis (e.g., analyzingmethod traces, etc.). Refactoring documentation is an under-explored area of research. Only 5.22% of the collected pa-pers dived into refactoring documentation. Many studiesexamined the automation of the different refactoring stagesto reduce the refactoring effort and, therefore, increase itsadaption. Figure 14 shows the count of publications dealingwith manual, semi-automatic, and automated refactoring.In fact, 30.95% of the papers deal with the automationof refactoring. Only 1.95% and 8.67% of the papers usedmanual and semi-automatic refactoring, respectively.

4.2 Artifacts affected by refactoringAs we mentioned before, refactoring is not limited to soft-ware code. In fact, it can be applied to any type of soft-ware artifacts (e.g., software architectures, database schema,models, user interfaces, and code). Figure 15 shows the per-centage of refactoring publications per artifact. The evidencefrom this histogram shows that the most popular refactoringartifact is code (72.89%). Model refactoring has also receivedconsiderable attention, with a percentage of 59.25%. Graph-ical user interfaces (GUIs) and Database refactoring havereceived the least attention of all with a fraction of only4.12% and 2.58%, respectively. This might be due to the factthat database refactoring is conceptually more difficult thancode refactoring; code refactorings only need to maintainbehavioral semantics while database refactorings also mustmaintain informational semantics. Also, GUI refactoring isvery demanding, requiring the adoption of user interfacesarchitectural patterns from the early software design stages.Future research should explore database and user interfacerefactoring further as they are an indispensable part oftoday’s software.

4.3 Refactoring objectivesFive paradigms have been identified from analyzing theprimary studies: object-oriented designs, cloud computing,mobile apps, model-driven, and aspect-oriented. Object-oriented programming has gained popularity because itmatches the way people actually think in the real world,structuring their code into meaningful objects with relation-ships that are obvious and intuitive. The increased popular-ity of the object-oriented paradigm has also increased theinterest in object-oriented refactoring. This can be observedin figure 16 where more than 34% of the studies related torefactoring focus on object-oriented designs. Less than 5% ofthe papers investigated refactoring for cloud computing andmobile app development. For the refactoring objectives clas-sification of the taxonomy, five subcategories are considered:external quality (e.g. correctness, usability, efficiency, relia-bility, etc.) , internal quality (e. g. maintainability, flexibility,portability, re-usability, readability etc.) , performance (e.g.response time, error rate, request rate, memory use, etc.),migration (e.g. Dispersion in the Class Hierarchy, numberof referenced variables, number of assigned variables etc. ),security (e.g. time needed to resolve vulnerabilities, Numberof viruses and spams blocked, Number of port probes,number of patches applied, Cost per defect, Attack surfaceetc.). Figure 17 is illustrating the reasons why people refactortheir systems. Improving the internal quality takes up thelargest portion (41.63%) followed by refactoring to improvethe external quality (22.68%). Although security is a majorconcern for almost all systems, only 3.11% of the papersinvestigated refactorings for security reasons.

4.4 Refactoring techniquesObject-oriented programming languages have commontraits/properties that facilitate the development of widelyautomated source code analysis and transformation tools.Many studies [25] have given sufficient proof that a refac-toring tool can be built for almost any object-oriented lan-guage (Python, PHP, Java, and C++). Support for multiple

Page 13: IEEE TRANSACTIONS OF SOFTWARE ENGINEERING, VOL. 1, NO. … · are becoming more and more aware of the importance of Refactoring, and they encourage their developers to contin-uously

IEEE TRANSACTIONS OF SOFTWARE ENGINEERING, VOL. 1, NO. 1, JUNE 2020 13

Fig. 13. Histogram illustrating the percentage of refactoring publications per refactoring life-cycle

Fig. 14. Histogram illustrating the percentage of publications dealing withmanual, semi-automatic and automated refactoring

languages in a refactoring tool is mentioned by [26]. Javais probably the most commercially important recent object-oriented language with an infrastructure that is designedto support analysis. It has generic parsing, tree building,prettyprinting, tree manipulation, source-to-source rewrit-ing, attribute grammar evaluations, control, and data flowanalysis. This explains the fact that 17.15% of refactoringstudies (see figure 18) provided refactoring techniques andtools that support Java. At the same time, most of the otherprogramming languages have a fraction of less than 1%.We classified the refactoring techniques into four main cat-egories: data mining (e.g., Clustering, Classification, Deci-sion trees, Association, Neural networks, etc.), search-basedmethods (e.g., Genetic algorithms, Hill climbing, Simulatedannealing, Multi-objective evolutionary algorithms, etc.),formal methods (B-Method, the specification languagesused in automated theorem proving, RAISE, the Z notation,

Fig. 15. histogram illustrating the count of refactoring publications perartifact

SPARK Ada, etc.), and fuzzy logic. More than 25% of thepapers use Search-based techniques to address refactoringproblems (see figure 19). This can be explained by thefact that search-based approaches have been proven to beefficient at finding solutions for complex and labor-intensivetasks. With the growing complexity of software systems,there’s an infinite amount of improvement/changes you canmake to any piece of artifact. Exact algorithms are hard touse to solve the refactoring problem within an instance-dependent, finite run-time. That’s why finding optimalrefactoring solutions are sacrificed for the sake of gettingperfect solutions in polynomial time using heuristic meth-ods like search-based algorithms. Data mining techniqueshave also received significant attention (17.59%) as they areknown to be efficient at discovering new information, suchas unknown patterns or hidden relationships, from hugedatabases like, for our case, large code repositories.

4.5 Refactoring evaluationOpen-source software systems are becoming increasinglyimportant these days. 61.1% of the studies (see figure 20)

Page 14: IEEE TRANSACTIONS OF SOFTWARE ENGINEERING, VOL. 1, NO. … · are becoming more and more aware of the importance of Refactoring, and they encourage their developers to contin-uously

IEEE TRANSACTIONS OF SOFTWARE ENGINEERING, VOL. 1, NO. 1, JUNE 2020 14

Fig. 16. Histogram illustrating the count of refactoring publications per paradigm

Fig. 17. Histogram illustrating the count of publications per refactoring objective

used open-source systems to validate their work comparedto 38.9% of studies that validated their work on industrialprojects. This result is expected because of the availabilityand accessibility of open source systems. However, open-source software is often developed with a different man-agement style than the industrial ones. Thus, refactoringtechniques and tools must be validated and checked forquality and reliability using industrial systems. More indus-trial collaborations are needed to bridge the gap betweenacademic research and the industry’s research needs, andtherefore, produce groundbreaking research and innovationthat solves complex real-world problems.

5 CONCLUSION

In this paper, we have conducted a systematic literaturereview on refactoring accompanied by meta-analysis to an-swer the defined research questions. After a comprehensive

search that follows a systematic series of steps and assessingthe quality of the studies, 3183 publications were identified.Based on these selected papers, we derived a taxonomyfocused on five key aspects of Refactoring: refactoring life-cycle, artifacts affected by refactoring, refactoring objectives,refactoring techniques, and refactoring evaluation. Usingthis classification scheme, we analyzed the primary studiesand presented the results in a way that enables researchersto relate their work to the current body of knowledge andidentify future research directions. We also implemented arepository that helps researchers/practitioners collect andreport papers about Refactoring. It also provides visualiza-tion charts and graphs that highlight the analysis results ofour selected studies. This infrastructure will bridge the gapamong the different refactoring communities and allow formore effortless knowledge transfer. To conclude, we believethat the results of our systematic review will help advancethe refactoring research area. Since we expect this research

Page 15: IEEE TRANSACTIONS OF SOFTWARE ENGINEERING, VOL. 1, NO. … · are becoming more and more aware of the importance of Refactoring, and they encourage their developers to contin-uously

IEEE TRANSACTIONS OF SOFTWARE ENGINEERING, VOL. 1, NO. 1, JUNE 2020 15

Fig. 18. histogram illustrating the count of refactoring publications per programming language

Fig. 19. histogram illustrating the count of refactoring publications perfield

area to continue to grow in the future, we hope that ourrepository and taxonomy will become useful in organizing,developing and judging new approaches.

REFERENCES

[1] W. F. Opdyke, “Refactoring: An aid in designing application frame-works and evolving object-oriented systems,” in Proc. SOOPPA’90:Symposium on Object-Oriented Programming Emphasizing PracticalApplications, 1990.

[2] W. G. Griswold, “Program restructuring as an aid to softwaremaintenance.” 1992.

[3] W. F. Opdyke, “Refactoring object-oriented frameworks,” 1992.[4] M. Fowler, K. Beck, J. Brant, W. Opdyke, and D. Roberts, “Refactor-

ing: Improving the Design of Existing Code,” Xtemp01, pp. 1–337,1999.

[5] C. A. C. Coello, G. B. Lamont, D. A. Van Veldhuizen et al., Evolu-tionary algorithms for solving multi-objective problems. Springer, 2007,vol. 5.

[6] W. Ma, L. Chen, Y. Zhou, and B. Xu, “Do We Havea Chance to Fix Bugs When Refactoring Code Smells?”2016 International Conference on Software Analysis, Testing andEvolution (SATE), pp. 24–29, 2016. [Online]. Available: http://ieeexplore.ieee.org/document/7780189/

[7] K. Stroggylos and D. Spinellis, “Refactoring–Does It Improve Soft-ware Quality?” Fifth International Workshop on Software Quality(WoSQ’07: ICSE Workshops 2007), pp. 3–8, 2007.

Fig. 20. Pie chart illustrating the percentage of publications in which theauthors used industrial and/or open source systems in the validationstep

[8] A. Kaur and M. Kaur, “Analysis of Code Refactoring Impact onSoftware Quality,” MATEC Web of Conferences, vol. 57, p. 02012,may 2016. [Online]. Available: http://www.matec-conferences.org/10.1051/matecconf/20165702012

[9] G. Bavota, B. De Carluccio, A. De Lucia, M. Di Penta, R. Oliveto,and O. Strollo, “When does a refactoring induce bugs? An empiricalstudy,” Proceedings - 2012 IEEE 12th International Working Conferenceon Source Code Analysis and Manipulation, SCAM 2012, pp. 104–113,2012.

[10] J. Al Dallal and A. Abdin, “Empirical evaluation of the impact ofobject-oriented code refactoring on quality attributes: A systematicliterature review,” IEEE Transactions on Software Engineering, vol. 44,no. 1, pp. 44–69, 2017.

[11] S. Singh and S. Kaur, “A systematic literature review: Refactoringfor disclosing code smells in object oriented software,” Ain ShamsEngineering Journal, vol. 9, no. 4, pp. 2129–2151, 2018.

[12] T. Mens and T. Tourwe, “A survey of software refactoring,” IEEETransactions on software engineering, vol. 30, no. 2, pp. 126–139, 2004.

[13] K. O. Elish and M. Alshayeb, “A classification of refactoringmethods based on software quality attributes,” Arabian Journal forScience and Engineering, vol. 36, no. 7, pp. 1253–1267, 2011.

[14] B. Du Bois, P. Van Gorp, A. Amsel, N. Van Eetvelde, H. Stenten,S. Demeyer, and T. Mens, “A discussion of refactoring in researchand practice,” Reporte Tecnico. Universidad de Antwerpen, Belgica,2004.

[15] T. Mens, A. Van Deursen et al., “Refactoring: Emerging trendsand open problems,” in Proceedings First International Workshop on

Page 16: IEEE TRANSACTIONS OF SOFTWARE ENGINEERING, VOL. 1, NO. … · are becoming more and more aware of the importance of Refactoring, and they encourage their developers to contin-uously

IEEE TRANSACTIONS OF SOFTWARE ENGINEERING, VOL. 1, NO. 1, JUNE 2020 16

REFactoring: Achievements, Challenges, Effects (REFACE). Universityof Waterloo, 2003.

[16] M. Misbhauddin and M. Alshayeb, “Uml model refactoring: asystematic literature review,” Empirical Software Engineering, vol. 20,no. 1, pp. 206–251, 2015.

[17] J. Al Dallal, “Identifying refactoring opportunities in object-oriented code: A systematic literature review,” Information andsoftware Technology, vol. 58, pp. 231–249, 2015.

[18] M. Abebe and C.-J. Yoo, “Trends, opportunities and challenges ofsoftware refactoring: A systematic literature review,” InternationalJournal of Software Engineering and Its Applications, vol. 8, no. 6, pp.299–318, 2014.

[19] A. A. B. Baqais and M. Alshayeb, “Automatic software refactoring:a systematic literature review,” Software Quality Journal, pp. 1–44,2019.

[20] B. Kitchenham and S. Charters, “Guidelines for performing sys-tematic literature reviews in software engineering,” 2007.

[21] A. Ramirez, J. R. Romero, and C. L. Simons, “A systematic reviewof interaction in search-based software engineering,” IEEE Transac-tions on Software Engineering, vol. 45, no. 8, pp. 760–781, 2018.

[22] C. Wohlin, “Guidelines for snowballing in systematic literaturestudies and a replication in software engineering,” in Proceedingsof the 18th international conference on evaluation and assessment insoftware engineering, 2014, pp. 1–10.

[23] M. Galster, D. Weyns, D. Tofan, B. Michalik, and P. Avgeriou,“Variability in software systems—a systematic literature review,”IEEE Transactions on Software Engineering, vol. 40, no. 3, pp. 282–306, 2013.

[24] (2020) Slr website. URL: https://slr.iselab.us/.[25] S. Tichelaar, S. Ducasse, S. Demeyer, and O. Nierstrasz, “A meta-

model for language-independent refactoring,” in Proceedings Inter-national Symposium on Principles of Software Evolution. IEEE, 2000,pp. 154–164.

[26] M. O. Cinneide and P. Nixon, “A methodology for the automatedintroduction of design patterns,” in Proceedings IEEE InternationalConference on Software Maintenance-1999 (ICSM’99).’Software Main-tenance for Business Change’(Cat. No. 99CB36360). IEEE, 1999, pp.463–472.

PRIMARY SOURCES

[S1] H. Sajnani, V. Saini, and C. V. Lopes, “A comparative study ofbug patterns in java cloned and non-cloned code,” in 2014 IEEE14th International Working Conference on Source Code Analysis andManipulation. IEEE, 2014, pp. 21–30.

[S2] J. Ghofrani, M. Mohseni, and A. Bozorgmehr, “A conceptualframework for clone detection using machine learning,” in 2017IEEE 4th International Conference on Knowledge-Based Engineeringand Innovation (KBEI). IEEE, 2017, pp. 0810–0817.

[S3] I. Verebi, “A model-based approach to software refactoring,” in2015 IEEE International Conference on Software Maintenance andEvolution (ICSME). IEEE, 2015, pp. 606–609.

[S4] M. Tufano, F. Palomba, G. Bavota, M. Di Penta, R. Oliveto,A. De Lucia, and D. Poshyvanyk, “An empirical investigationinto the nature of test smells,” in Proceedings of the 31st IEEE/ACMInternational Conference on Automated Software Engineering, 2016,pp. 4–15.

[S5] B. Zhang, G. Huang, Z. Zheng, J. Ren, and C. Hu, “Approach tomine the modularity of software network based on the most vitalnodes,” IEEE Access, vol. 6, pp. 32 543–32 553, 2018.

[S6] G. Balogh, T. Gergely, A. Beszedes, and T. Gyimothy, “Are myunit tests in the right package?” in 2016 IEEE 16th InternationalWorking Conference on Source Code Analysis and Manipulation(SCAM). IEEE, 2016, pp. 137–146.

[S7] N. Tsantalis, D. Mazinanian, and G. P. Krishnan, “Assessing therefactorability of software clones,” IEEE Transactions on SoftwareEngineering, vol. 41, no. 11, pp. 1055–1090, 2015.

[S8] G. Soares, R. Gheyi, and T. Massoni, “Automated behavioraltesting of refactoring engines,” IEEE Transactions on SoftwareEngineering, vol. 39, no. 2, pp. 147–162, 2012.

[S9] J. Zhang, S. Han, D. Hao, L. Zhang, and D. Zhang, “Automatedrefactoring of nested-if formulae in spreadsheets,” in Proceedingsof the 2018 26th ACM Joint Meeting on European Software Engi-neering Conference and Symposium on the Foundations of SoftwareEngineering, 2018, pp. 833–838.

[S10] Y. Kataoka, M. D. Ernst, W. G. Griswold, and D. Notkin, “Au-tomated support for program refactoring using invariants,” inProceedings IEEE International Conference on Software Maintenance.ICSM 2001. IEEE, 2001, pp. 736–743.

[S11] M. Mondal, C. K. Roy, and K. A. Schneider, “A comparative studyon the bug-proneness of different types of code clones,” in 2015IEEE International conference on software maintenance and evolution(ICSME). IEEE, 2015, pp. 91–100.

[S12] V. Alizadeh, M. Kessentini, W. Mkaouer, M. Ocinneide, A. Ouni,and Y. Cai, “An interactive and dynamic search-based approachto software refactoring recommendations,” IEEE Transactions onSoftware Engineering, 2018.

[S13] W. Snipes, B. Robinson, and E. Murphy-Hill, “Code hot spot: Atool for extraction and analysis of code change history,” in 201127th IEEE International Conference on Software Maintenance (ICSM).IEEE, 2011, pp. 392–401.

[S14] H. Liu, Q. Liu, Z. Niu, and Y. Liu, “Dynamic and automaticfeedback-based threshold adaptation for code smell detection,”IEEE Transactions on Software Engineering, vol. 42, no. 6, pp. 544–558, 2015.

[S15] V. Cosentino, S. Duenas, A. Zerouali, G. Robles, and J. M.Gonzalez-Barahona, “Graal: The quest for source code knowl-edge.”

[S16] S. Charalampidou, A. Ampatzoglou, A. Chatzigeorgiou, A. Gko-rtzis, and P. Avgeriou, “Identifying extract method refactoringopportunities based on functional relevance,” IEEE Transactionson Software Engineering, vol. 43, no. 10, pp. 954–974, 2016.

[S17] A. Rani and J. K. Chhabra, “Prioritization of smelly classes: A twophase approach (reducing refactoring efforts),” in 2017 3rd Inter-national Conference on Computational Intelligence & CommunicationTechnology (CICT). IEEE, 2017, pp. 1–6.

[S18] P. Rachow, “Refactoring decision support for developers and ar-chitects based on architectural impact,” in 2019 IEEE InternationalConference on Software Architecture Companion (ICSA-C). IEEE,2019, pp. 262–266.

[S19] H. Liu, Z. Ma, W. Shao, and Z. Niu, “Schedule of bad smell detec-tion and resolution: A new way to save effort,” IEEE transactionson Software Engineering, vol. 38, no. 1, pp. 220–235, 2011.

[S20] J. Kim, D. Batory, and D. Dig, “Scripting parametric refactoringsin java to retrofit design patterns,” in 2015 IEEE InternationalConference on Software Maintenance and Evolution (ICSME). IEEE,2015, pp. 211–220.

[S21] M. A. Parande and G. Koru, “A longitudinal analysis of thedependency concentration in smaller modules for open-sourcesoftware products,” in 2010 IEEE International Conference on Soft-ware Maintenance. IEEE, 2010, pp. 1–5.

[S22] H. Liu, Z. Xu, and Y. Zou, “Deep learning based feature envydetection,” in Proceedings of the 33rd ACM/IEEE InternationalConference on Automated Software Engineering, 2018, pp. 385–396.

[S23] R. Morales, R. Saborido, F. Khomh, F. Chicano, and G. Anto-niol, “Earmo: An energy-aware refactoring approach for mobileapps,” IEEE Transactions on Software Engineering, vol. 44, no. 12,pp. 1176–1206, 2017.

[S24] H. Liu, L. Yang, Z. Niu, Z. Ma, and W. Shao, “Facilitating softwarerefactoring with appropriate resolution order of bad smells,”in Proceedings of the 7th joint meeting of the European softwareengineering conference and the ACM SIGSOFT symposium on Thefoundations of software engineering, 2009, pp. 265–268.

[S25] H. Liu, Q. Liu, Y. Liu, and Z. Wang, “Identifying renaming op-portunities by expanding conducted rename refactorings,” IEEETransactions on Software Engineering, vol. 41, no. 9, pp. 887–900,2015.

[S26] B. Lin, S. Scalabrino, A. Mocci, R. Oliveto, G. Bavota, andM. Lanza, “Investigating the use of code analysis and nlp topromote a consistent usage of identifiers,” in 2017 IEEE 17thInternational Working Conference on Source Code Analysis and Ma-nipulation (SCAM). IEEE, 2017, pp. 81–90.

[S27] G. Bavota, R. Oliveto, M. Gethers, D. Poshyvanyk, and A. De Lu-cia, “Methodbook: Recommending move method refactorings viarelational topic models,” IEEE Transactions on Software Engineer-ing, vol. 40, no. 7, pp. 671–694, 2013.

[S28] C. Hinds-Charles, J. Adames, Y. Yang, Y. Shen, and Y. Wang,“A longitude analysis on bitcoin issue repository,” in 2018 1stIEEE International Conference on Hot Information-Centric Network-ing (HotICN). IEEE, 2018, pp. 212–217.

[S29] T. D. Oyetoyan, D. S. Cruzes, and C. Thurmann-Nielsen, “Adecision support system to refactor class cycles,” in 2015 IEEE

Page 17: IEEE TRANSACTIONS OF SOFTWARE ENGINEERING, VOL. 1, NO. … · are becoming more and more aware of the importance of Refactoring, and they encourage their developers to contin-uously

IEEE TRANSACTIONS OF SOFTWARE ENGINEERING, VOL. 1, NO. 1, JUNE 2020 17

International Conference on Software Maintenance and Evolution(ICSME). IEEE, 2015, pp. 231–240.

[S30] N. Rachatasumrit and M. Kim, “An empirical investigation intothe impact of refactoring on regression testing,” in 2012 28th IeeeInternational Conference on Software Maintenance (Icsm). IEEE,2012, pp. 357–366.

[S31] M. Mirzaaghaei, F. Pastore, and M. Pezze, “Automatically repair-ing test cases for evolving method declarations,” in 2010 IEEEInternational Conference on Software Maintenance. IEEE, 2010, pp.1–5.

[S32] B. Van Rompaey, B. Du Bois, and S. Demeyer, “Characterizingthe relative significance of a test smell,” in 2006 22nd IEEEInternational Conference on Software Maintenance. IEEE, 2006, pp.391–400.

[S33] A. Sherwany, N. Zaza, and N. Nystrom, “A refactoring library forscala compiler extensions,” in International Conference on CompilerConstruction. Springer, 2015, pp. 31–48.

[S34] S. Paydar and M. Kahani, “A semantic web based approachfor design pattern detection from source code,” in 2012 2ndInternational eConference on Computer and Knowledge Engineering(ICCKE). IEEE, 2012, pp. 289–294.

[S35] T. Haendler, “A card game for learning software-refactoringprinciples,” 2019.

[S36] C. Kastner, S. Apel, and D. Batory, “A case study implementingfeatures using aspectj,” in 11th International Software Product LineConference (SPLC 2007). IEEE, 2007, pp. 223–232.

[S37] T. Viana, “A catalog of bad smells in design-by-contract method-ologies with java modeling language,” Journal of Computing Sci-ence and Engineering, vol. 7, no. 4, pp. 251–262, 2013.

[S38] D. Foetsch and E. Pulvermueller, “A concept and implementationof higher-level xml transformation languages,” Knowledge-BasedSystems, vol. 22, no. 3, pp. 186–194, 2009.

[S39] J. Reutelshoefer, J. Baumeister, and F. Puppe, “A data structure forthe refactoring of multimodal knowledge,” in Proceedings of the5th Workshop on Knowledge Engineering and Software Engineering,2009, pp. 33–45.

[S40] S. Mouchawrab, L. C. Briand, and Y. Labiche, “A measurementframework for object-oriented software testability,” Informationand software technology, vol. 47, no. 15, pp. 979–997, 2005.

[S41] I. Cassol and G. Arevalo, “A methodology to infer and refactoran object-oriented model from c applications,” Software: Practiceand Experience, vol. 48, no. 3, pp. 550–577, 2018.

[S42] G. De Ruvo and A. Santone, “A novel methodology based onformal methods for analysis and verification of wikis,” in 2014IEEE 23rd International WETICE Conference. IEEE, 2014, pp. 411–416.

[S43] S. Rebai, O. B. Sghaier, V. Alizadeh, M. Kessentini, and M. Chater,“Interactive refactoring documentation bot,” in 2019 19th Interna-tional Working Conference on Source Code Analysis and Manipulation(SCAM). IEEE, 2019, pp. 152–162.

[S44] J. Krinke, “Mining execution relations for crosscutting concerns,”IET software, vol. 2, no. 2, pp. 65–78, 2008.

[S45] D. Bowes, D. Randall, and T. Hall, “The inconsistent measure-ment of message chains,” in 2013 4th International Workshop onEmerging Trends in Software Metrics (WETSoM). IEEE, 2013, pp.62–68.

[S46] J. Liu, “Feature interactions and software derivatives.” Journal ofObject Technology, vol. 4, no. 3, pp. 13–19, 2004.

[S47] A. Swidan, F. Hermans, and R. Koesoemowidjojo, “Improvingthe performance of a large scale spreadsheet: a case study,”in 2016 IEEE 23rd International Conference on Software Analysis,Evolution, and Reengineering (SANER), vol. 1. IEEE, 2016, pp.673–677.

[S48] H. Li, S. Thompson, and T. Arts, “Extracting properties from testcases by refactoring,” in 2011 IEEE Fourth International Conferenceon Software Testing, Verification and Validation Workshops. IEEE,2011, pp. 472–473.

[S49] S. Ducasse, O. Nierstrasz, N. Scharli, R. Wuyts, and A. P. Black,“Traits: A mechanism for fine-grained reuse,” ACM Transactionson Programming Languages and Systems (TOPLAS), vol. 28, no. 2,pp. 331–388, 2006.

[S50] R. Ramos, J. Castro, J. Araujo, F. Alencar, and R. Penteado, “Di-vide and conquer refactoring: dealing with the large, scattering ortangling use case model,” in Proceedings of the 8th Latin AmericanConference on Pattern Languages of Programs, 2010, pp. 1–11.

[S51] E. Murphy-Hill, A. P. Black, D. Dig, and C. Parnin, “Gatheringrefactoring data: a comparison of four methods,” in Proceedingsof the 2nd Workshop on Refactoring Tools, 2008, pp. 1–5.

[S52] A. Derezinska, “A structure-driven process of automated refac-toring to design patterns,” in International Conference on Informa-tion Systems Architecture and Technology. Springer, 2017, pp. 39–48.

[S53] E. Selim, Y. Ghanam, C. Burns, T. Seyed, and F. Maurer, “A test-driven approach for extracting libraries of reusable componentsfrom existing applications,” in International Conference on AgileSoftware Development. Springer, 2011, pp. 238–252.

[S54] Y. Zhang, S. Dong, X. Zhang, H. Liu, and D. Zhang, “Automatedrefactoring for stampedlock,” IEEE Access, vol. 7, pp. 104 900–104 911, 2019.

[S55] H. Xue, S. Sun, G. Venkataramani, and T. Lan, “Machine learning-based analysis of program binaries: A comprehensive study,”IEEE Access, vol. 7, pp. 65 889–65 912, 2019.

[S56] Y. Zhang, S. Shao, H. Liu, J. Qiu, D. Zhang, and G. Zhang,“Refactoring java programs for customizable locks based onbytecode transformation,” IEEE Access, vol. 7, pp. 66 292–66 303,2019.

[S57] M. F. Dolz, D. D. R. Astorga, J. Fernandez, J. D. Garcıa, and J. Car-retero, “Towards automatic parallelization of stream processingapplications,” IEEE Access, vol. 6, pp. 39 944–39 961, 2018.

[S58] B. K. Sidhu, K. Singh, and N. Sharma, “A catalogue of modelsmells and refactoring operations for object-oriented software,”in 2018 Second International Conference on Inventive Communicationand Computational Technologies (ICICCT). IEEE, 2018, pp. 313–319.

[S59] F. Medeiros, M. Ribeiro, R. Gheyi, and B. F. dos Santos Neto, “Acatalogue of refactorings to remove incomplete annotations.” J.UCS, vol. 20, no. 5, pp. 746–771, 2014.

[S60] P. Ma, Y. Bian, and X. Su, “A clustering method for pruning falsepositive of clonde code detection,” in Proceedings 2013 Interna-tional Conference on Mechatronic Sciences, Electric Engineering andComputer (MEC). IEEE, 2013, pp. 1917–1920.

[S61] G.-S. Cojocar and A.-M. Guran, “A comparative analysis of mon-itoring concerns implementation in object oriented systems,” in2018 IEEE 12th International Symposium on Applied ComputationalIntelligence and Informatics (SACI). IEEE, 2018, pp. 000 355–000 360.

[S62] S. Negara, N. Chen, M. Vakilian, R. E. Johnson, and D. Dig, “Acomparative study of manual and automated refactorings,” inEuropean Conference on Object-Oriented Programming. Springer,2013, pp. 552–576.

[S63] T. Chen and C. He, “A comparison of approaches to legacysystem crosscutting concerns mining,” in 2013 International Con-ference on Computer Sciences and Applications. IEEE, 2013, pp.813–816.

[S64] A. Martini, E. Sikander, and N. Madlani, “A semi-automatedframework for the identification and estimation of architecturaltechnical debt: A comparative case-study on the modularizationof a software component,” Information and Software Technology,vol. 93, pp. 264–279, 2018.

[S65] M. T. Valente, V. Borges, and L. Passos, “A semi-automatic ap-proach for extracting software product lines,” IEEE Transactionson Software Engineering, vol. 38, no. 4, pp. 737–754, 2011.

[S66] K. Garces, J. M. Vara, F. Jouault, and E. Marcos, “Adapting trans-formations to metamodel changes via external transformationcomposition,” Software & Systems Modeling, vol. 13, no. 2, pp.789–806, 2014.

[S67] S. A. Vidal, C. Marcos, and J. A. Dıaz-Pace, “An approach toprioritize code smells for refactoring,” Automated Software Engi-neering, vol. 23, no. 3, pp. 501–532, 2016.

[S68] C. Brown, H. Li, and S. Thompson, “An expression processor:a case study in refactoring haskell programs,” in InternationalSymposium on Trends in Functional Programming. Springer, 2010,pp. 31–49.

[S69] M. Marin, A. van Deursen, L. Moonen, and R. van der Rijst,“An integrated crosscutting concern migration strategy and itssemi-automated application to jhotdraw,” Automated SoftwareEngineering, vol. 16, no. 2, pp. 323–356, 2009.

[S70] A. O’Riordan, “Aspect-oriented reengineering of an object-oriented library in a short iteration agile process,” Informatica,vol. 35, no. 4, 2011.

[S71] K. Fujiwara, K. Fushida, N. Yoshida, and H. Iida, “Assessingrefactoring instances and the maintainability benefits of themfrom version archives,” in International Conference on Product

Page 18: IEEE TRANSACTIONS OF SOFTWARE ENGINEERING, VOL. 1, NO. … · are becoming more and more aware of the importance of Refactoring, and they encourage their developers to contin-uously

IEEE TRANSACTIONS OF SOFTWARE ENGINEERING, VOL. 1, NO. 1, JUNE 2020 18

Focused Software Process Improvement. Springer, 2013, pp. 313–323.

[S72] B. Alkhazi, T. Ruas, M. Kessentini, M. Wimmer, and W. I.Grosky, “Automated refactoring of atl model transformations:a search-based approach,” in Proceedings of the ACM/IEEE 19thInternational Conference on Model Driven Engineering Languages andSystems, 2016, pp. 295–304.

[S73] M. Tanhaei, J. Habibi, and S.-H. Mirian-Hosseinabadi, “Au-tomating feature model refactoring: A model transformationapproach,” Information and Software Technology, vol. 80, pp. 138–157, 2016.

[S74] V. Alizadeh, H. Fehri, and M. Kessentini, “Less is more: Frommulti-objective to mono-objective refactoring via developer’sknowledge extraction,” in 2019 19th International Working Con-ference on Source Code Analysis and Manipulation (SCAM). IEEE,2019, pp. 181–192.

[S75] V. Alizadeh, M. A. Ouali, M. Kessentini, and M. Chater, “Refbot:intelligent software refactoring bot,” in 2019 34th IEEE/ACMInternational Conference on Automated Software Engineering (ASE).IEEE, 2019, pp. 823–834.

[S76] Z. Mushtaq, G. Rasool, and B. Shehzad, “Multilingual sourcecode analysis: A systematic literature review,” IEEE Access, vol. 5,pp. 11 307–11 336, 2017.

[S77] F. Schmidt, S. G. MacDonell, and A. M. Connor, “An auto-matic architecture reconstruction and refactoring framework,” inSoftware Engineering Research, Management and Applications 2011.Springer, 2012, pp. 95–111.

[S78] G. Cong, H. Wen, I.-h. Chung, D. Klepacki, H. Murata, andY. Negishi, “An efficient framework for multi-dimensional tuningof high performance computing applications,” in 2012 IEEE 26thInternational Parallel and Distributed Processing Symposium. IEEE,2012, pp. 1376–1387.

[S79] J. Park, M. Kim, and D.-H. Bae, “An empirical study of sup-plementary patches in open source projects,” Empirical SoftwareEngineering, vol. 22, no. 1, pp. 436–473, 2017.

[S80] T. L. Nguyen, A. Fish, and M. Song, “An empirical study onsimilar changes in evolving software,” in 2018 IEEE InternationalConference on Electro/Information Technology (EIT). IEEE, 2018, pp.0560–0563.

[S81] M. Bruntink, A. Van Deursen, T. Tourwe, and R. van Engelen,“An evaluation of clone detection techniques for crosscuttingconcerns,” in 20th IEEE International Conference on Software Main-tenance, 2004. Proceedings. IEEE, 2004, pp. 200–209.

[S82] Y. Kosker, B. Turhan, and A. Bener, “An expert system fordetermining candidate software classes for refactoring,” ExpertSystems with Applications, vol. 36, no. 6, pp. 10 000–10 003, 2009.

[S83] B. L. Sousa, M. A. Bigonha, and K. A. Ferreira, “An exploratorystudy on cooccurrence of design patterns and bad smells usingsoftware metrics,” Software: Practice and Experience, vol. 49, no. 7,pp. 1079–1113, 2019.

[S84] O. Mehani, G. Jourjon, T. Rakotoarivelo, and M. Ott, “An in-strumentation framework for the critical task of measurementcollection in the future internet,” Computer Networks, vol. 63, pp.68–83, 2014.

[S85] M. Schafer, A. Thies, F. Steimann, and F. Tip, “A comprehensiveapproach to naming and accessibility in refactoring java pro-grams,” IEEE Transactions on Software Engineering, vol. 38, no. 6,pp. 1233–1257, 2012.

[S86] D. Dig, “A practical tutorial on refactoring for parallelism,” in2010 IEEE International Conference on Software Maintenance. IEEE,2010, pp. 1–2.

[S87] X. Li and J. P. Gallagher, “A source-level energy optimizationframework for mobile applications,” in 2016 IEEE 16th Interna-tional Working Conference on Source Code Analysis and Manipulation(SCAM). IEEE, 2016, pp. 31–40.

[S88] R. Khatchadourian, Y. Tang, M. Bagherzadeh, and S. Ahmed,“[engineering paper] a tool for optimizing java 8 stream softwarevia automated refactoring,” in 2018 IEEE 18th International Work-ing Conference on Source Code Analysis and Manipulation (SCAM).IEEE, 2018, pp. 34–39.

[S89] Z. Xing and E. Stroulia, “Api-evolution support with diff-catchup,” IEEE Transactions on Software Engineering, vol. 33,no. 12, pp. 818–836, 2007.

[S90] R. Gheyi, T. Massoni, and P. Borba, “A rigorous approach forproving model refactorings,” in Proceedings of the 20th IEEE/ACMinternational Conference on Automated software engineering, 2005,pp. 372–375.

[S91] B. Cyganek, “Adding parallelism to the hybrid image processinglibrary in multi-threading and multi-core systems,” in 2011 IEEE2nd International Conference on Networked Embedded Systems forEnterprise Applications. IEEE, 2011, pp. 1–8.

[S92] R. Hardt and E. V. Munson, “An empirical evaluation of ant buildmaintenance using formiga,” in 2015 IEEE International Conferenceon Software Maintenance and Evolution (ICSME). IEEE, 2015, pp.201–210.

[S93] R. Kolb, D. Muthig, T. Patzke, and K. Yamauchi, “A case studyin refactoring a legacy component for reuse in a product line,”in 21st IEEE International Conference on Software Maintenance(ICSM’05). IEEE, 2005, pp. 369–378.

[S94] D. Strein, R. Lincke, J. Lundberg, and W. Lowe, “An extensiblemeta-model for program analysis,” IEEE Transactions on SoftwareEngineering, vol. 33, no. 9, pp. 592–607, 2007.

[S95] Y.-W. Kwon, “Automated s/w reengineering for fault-tolerantand energy-efficient distributed execution,” in 2013 IEEE Inter-national Conference on Software Maintenance. IEEE, 2013, pp. 582–585.

[S96] B. Adams, H. Tromp, K. De Schutter, and W. De Meuter, “De-sign recovery and maintenance of build systems,” in 2007 IEEEInternational Conference on Software Maintenance. IEEE, 2007, pp.114–123.

[S97] R. Bahsoon and W. Emmerich, “Evaluating architectural stabilitywith real options theory,” in 20th IEEE International Conference onSoftware Maintenance, 2004. Proceedings. IEEE, 2004, pp. 443–447.

[S98] J. O’neal, K. Weide, and A. Dubey, “Experience report: refactoringthe mesh interface in flash, a multiphysics software,” in 2018IEEE 14th International Conference on e-Science (e-Science). IEEE,2018, pp. 1–6.

[S99] M. A. Khan and H. Tembine, “Meta-learning for realizing self-xmanagement of future networks,” IEEE Access, vol. 5, pp. 19 072–19 083, 2017.

[S100] A. Cleve, “Program analysis and transformation for data-intensive system evolution,” in 2010 IEEE International Conferenceon Software Maintenance. IEEE, 2010, pp. 1–6.

[S101] D. Binkley, M. Ceccato, M. Harman, F. Ricca, and P. Tonella,“Automated refactoring of object oriented code into aspects,”in 21st IEEE International Conference on Software Maintenance(ICSM’05). IEEE, 2005, pp. 27–36.

[S102] F. Castor Filho, A. Garcia, and C. M. F. Rubira, “Extractingerror handling to aspects: A cookbook,” in 2007 IEEE InternationalConference on Software Maintenance. IEEE, 2007, pp. 134–143.

[S103] M. Bajammal, D. Mazinanian, and A. Mesbah, “Generatingreusable web components from mockups,” in Proceedings of the33rd ACM/IEEE International Conference on Automated SoftwareEngineering, 2018, pp. 601–611.

[S104] N. A. Kraft, E. B. Duffy, and B. A. Malloy, “Grammar recoveryfrom parse trees and metrics-guided grammar refactoring,” IEEETransactions on Software Engineering, vol. 35, no. 6, pp. 780–794,2009.

[S105] D. Spinellis, “Global analysis and transformations in prepro-cessed languages,” IEEE Transactions on Software Engineering,vol. 29, no. 11, pp. 1019–1030, 2003.

[S106] C. Noguera, A. Kellens, C. De Roover, and V. Jonckers, “Refac-toring in the presence of annotations,” in 2012 28th IEEE Interna-tional Conference on Software Maintenance (ICSM). IEEE, 2012, pp.337–346.

[S107] S. Rongrong, Z. Liping, and Z. Fengrong, “A method for iden-tifying and recommending reconstructed clones,” in Proceedingsof the 2019 3rd International Conference on Management Engineering,Software Engineering and Service Sciences, 2019, pp. 39–44.

[S108] Y. Khan and M. El-Attar, “A model transformation approachtowards refactoring use case models based on antipatterns,”in 21st International Conference on Software Engineering and DataEngineering (SEDE’12), Los Angeles, California, USA, 2012, pp. 49–54.

[S109] K. Grolinger and M. A. Capretz, “A unit test approach fordatabase schema evolution,” Information and Software Technology,vol. 53, no. 2, pp. 159–170, 2011.

[S110] O. Febbraro, K. Reale, and F. Ricca, “Aspide: Integrated develop-ment environment for answer set programming,” in InternationalConference on Logic Programming and Nonmonotonic Reasoning.Springer, 2011, pp. 317–330.

[S111] A. Garrido and R. Johnson, “Analyzing multiple configurationsof a c program,” in 21st IEEE International Conference on SoftwareMaintenance (ICSM’05). IEEE, 2005, pp. 379–388.

Page 19: IEEE TRANSACTIONS OF SOFTWARE ENGINEERING, VOL. 1, NO. … · are becoming more and more aware of the importance of Refactoring, and they encourage their developers to contin-uously

IEEE TRANSACTIONS OF SOFTWARE ENGINEERING, VOL. 1, NO. 1, JUNE 2020 19

[S112] A. Paltoglou, V. E. Zafeiris, E. A. Giakoumakis, and N. Diaman-tidis, “Automated refactoring of client-side javascript code to es6modules,” in 2018 IEEE 25th International Conference on SoftwareAnalysis, Evolution and Reengineering (SANER). IEEE, 2018, pp.402–412.

[S113] R. Khatchadourian, J. Sawin, and A. Rountev, “Automatedrefactoring of legacy java software to enumerated types,” in 2007IEEE International Conference on Software Maintenance. IEEE, 2007,pp. 224–233.

[S114] M. Marin, L. Moonen, and A. van Deursen, “A classificationof crosscutting concerns,” in 21st IEEE International Conference onSoftware Maintenance (ICSM’05). IEEE, 2005, pp. 673–676.

[S115] M. Mortensen, S. Ghosh, and J. Bieman, “Aspect-oriented refac-toring of legacy applications: An evaluation,” IEEE Transactionson Software Engineering, vol. 38, no. 1, pp. 118–140, 2010.

[S116] M. Mondal, C. K. Roy, and K. A. Schneider, “Automatic identi-fication of important clones for refactoring and tracking,” in 2014IEEE 14th International Working Conference on Source Code Analysisand Manipulation. IEEE, 2014, pp. 11–20.

[S117] A. Kellens, K. De Schutter, T. D’Hondt, V. Jonckers, andH. Doggen, “Experiences in modularizing business rules intoaspects,” in 2008 IEEE International Conference on Software Mainte-nance. IEEE, 2008, pp. 448–451.

[S118] R. Stoiber, S. Fricker, M. Jehle, and M. Glinz, “Feature unweav-ing: Refactoring software requirements specifications into soft-ware product lines,” in 2010 18th IEEE International RequirementsEngineering Conference. IEEE, 2010, pp. 403–404.

[S119] G. Zhao and J. Huang, “Deepsim: deep learning code functionalsimilarity,” in Proceedings of the 2018 26th ACM Joint Meeting onEuropean Software Engineering Conference and Symposium on theFoundations of Software Engineering, 2018, pp. 141–151.

[S120] S. Demeyer, S. Ducasse, and O. Nierstrasz, “Object-orientedreengineering: patterns and techniques,” in 21st IEEE Interna-tional Conference on Software Maintenance (ICSM’05). IEEE, 2005,pp. 723–724.

[S121] P. Hegedus, “Revealing the effect of coding practices on soft-ware maintainability,” in 2013 IEEE International Conference onSoftware Maintenance. IEEE, 2013, pp. 578–581.

[S122] T. Feng, J. Zhang, H. Wang, and X. Wang, “Software designimprovement through anti-patterns identification,” in 20th IEEEInternational Conference on Software Maintenance, 2004. Proceedings.IEEE, 2004, p. 524.

[S123] S. Meng and L. S. Barbosa, “A coalgebraic semantic frameworkfor reasoning about uml sequence diagrams,” in 2008 The EighthInternational Conference on Quality Software. IEEE, 2008, pp. 17–26.

[S124] P. Mayer and A. Schroeder, “Cross-language code analysis andrefactoring,” in 2012 IEEE 12th International Working Conference onSource Code Analysis and Manipulation. IEEE, 2012, pp. 94–103.

[S125] R. Moser, P. Abrahamsson, W. Pedrycz, A. Sillitti, and G. Succi,“A case study on the impact of refactoring on quality andproductivity in an agile team,” in IFIP Central and East EuropeanConference on Software Engineering Techniques. Springer, 2007, pp.252–266.

[S126] A. L. Candido, F. A. Trinta, L. S. Rocha, P. A. Rego, N. C.Mendonca, and V. C. Garcia, “A microservice based architectureto support offloading in mobile cloud computing,” in Proceedingsof the XIII Brazilian Symposium on Software Components, Architec-tures, and Reuse, 2019, pp. 93–102.

[S127] A. Peruma, “A preliminary study of android refactorings,” in2019 IEEE/ACM 6th International Conference on Mobile SoftwareEngineering and Systems (MOBILESoft). IEEE, 2019, pp. 148–149.

[S128] M. Mascheroni and E. Irrazabal, “A design pattern approachfor restful tests: A case study,” in IEEE 12th Colombian ComputingCongress, 2018.

[S129] D. Kermek, T. Jakupic, and N. Vrcek, “A model of heterogeneousdistributed system for foreign exchange portfolio analysis,” Jour-nal of Information and Organizational Sciences, vol. 30, no. 1, pp.83–92, 2006.

[S130] G. Rodriguez, A. Teyseyre, A. Soria, and L. Berdun, “A visu-alization tool to detect refactoring opportunities in soa applica-tions,” in 2017 XLIII Latin American Computer Conference (CLEI).IEEE, 2017, pp. 1–10.

[S131] H. Li, S. Thompson, P. Lamela Seijas, and M. A. Francisco,“Automating property-based testing of evolving web services,”in Proceedings of the ACM SIGPLAN 2014 Workshop on PartialEvaluation and Program Manipulation, 2014, pp. 169–180.

[S132] D. Athanasopoulos, A. V. Zarras, G. Miskos, V. Issarny, andP. Vassiliadis, “Cohesion-driven decomposition of service inter-faces without access to source code,” IEEE Transactions on ServicesComputing, vol. 8, no. 4, pp. 550–562, 2014.

[S133] M. Kessentini and H. Wang, “Detecting refactorings amongmultiple web service releases: A heuristic-based approach,” in2017 IEEE International Conference on Web Services (ICWS). IEEE,2017, pp. 365–372.

[S134] F. Wei, C. Ouyang, and A. Barros, “Discovering behaviouralinterfaces for overloaded web services,” in 2015 IEEE WorldCongress on Services. IEEE, 2015, pp. 286–293.

[S135] K. Fekete, A. Pelle, and K. Csorba, “Energy efficient code opti-mization in mobile environment,” in 2014 IEEE 36th InternationalTelecommunications Energy Conference (INTELEC). IEEE, 2014, pp.1–6.

[S136] W. B. Langdon, “Genetic improvement of programs,” in 201416th International Symposium on Symbolic and Numeric Algorithmsfor Scientific Computing. IEEE, 2014, pp. 14–19.

[S137] H. Wang, A. Ouni, M. Kessentini, B. Maxim, and W. I. Grosky,“Identification of web service refactoring opportunities as amulti-objective problem,” in 2016 IEEE International Conferenceon Web Services (ICWS). IEEE, 2016, pp. 586–593.

[S138] M. Kim, T. Zimmermann, and N. Nagappan, “An empiricalstudy of refactoringchallenges and benefits at microsoft,” IEEETransactions on Software Engineering, vol. 40, no. 7, pp. 633–649,2014.

[S139] S. M. Olbrich, D. S. Cruzes, and D. I. Sjøberg, “Are all codesmells harmful? a study of god classes and brain classes in theevolution of three open source systems,” in 2010 IEEE Interna-tional Conference on Software Maintenance. IEEE, 2010, pp. 1–10.

[S140] P. S. Kochhar, F. Thung, and D. Lo, “Automatic fine-grainedissue report reclassification,” in 2014 19th International Conferenceon Engineering of Complex Computer Systems. IEEE, 2014, pp. 126–135.

[S141] G. Bastide, A. Seriai, and M. Oussalah, “Dynamic adaptationof software component structures,” in 2006 IEEE InternationalConference on Information Reuse & Integration. IEEE, 2006, pp.404–409.

[S142] G. Zhang, L. Shen, X. Peng, Z. Xing, and W. Zhao, “Incrementaland iterative reengineering towards software product line: Anindustrial case study,” in 2011 27th IEEE International Conferenceon Software Maintenance (ICSM). IEEE, 2011, pp. 418–427.

[S143] G. Bavota, R. Oliveto, A. De Lucia, G. Antoniol, and Y.-G.Gueheneuc, “Playing with refactoring: Identifying extract classopportunities through game theory,” in 2010 IEEE InternationalConference on Software Maintenance. IEEE, 2010, pp. 1–5.

[S144] P. S. Kochhar, Y. Tian, and D. Lo, “Potential biases in buglocalization: Do they matter?” in Proceedings of the 29th ACM/IEEEinternational conference on Automated software engineering, 2014, pp.803–814.

[S145] R. Khatchadourian and H. Masuhara, “Defaultification refactor-ing: A tool for automatically converting java methods to default,”in 2017 32nd IEEE/ACM International Conference on AutomatedSoftware Engineering (ASE). IEEE, 2017, pp. 984–989.

[S146] H. K. Wright, D. Jasper, M. Klimek, C. Carruth, and Z. Wan,“Large-scale automated refactoring using clangmr,” in 2013 IEEEInternational Conference on Software Maintenance. IEEE, 2013, pp.548–551.

[S147] D. Mazinanian and N. Tsantalis, “Migrating cascading stylesheets to preprocessors by introducing mixins,” in Proceedings ofthe 31st IEEE/ACM International Conference on Automated SoftwareEngineering, 2016, pp. 672–683.

[S148] P. Tonella and M. Ceccato, “Migrating interface implementa-tions to aspects,” in 20th IEEE International Conference on SoftwareMaintenance, 2004. Proceedings. IEEE, 2004, pp. 220–229.

[S149] M. Ceccato, “Migrating object oriented code to aspect orientedprogramming,” 2006.

[S150] D. Majumdar, “Migration from procedural programming toaspect oriented paradigm,” in 2009 IEEE/ACM International Con-ference on Automated Software Engineering. IEEE, 2009, pp. 712–715.

[S151] C. Marcos, S. Vidal, E. Abait, M. Arroqui, and S. Sampaoli,“Refactoring of a beef-cattle farm simulator,” IEEE Latin AmericaTransactions, vol. 9, no. 7, pp. 1099–1104, 2011.

[S152] R. Khatchadourian and B. Muskalla, “Enumeration refactoring:a tool for automatically converting java constants to enumerated

Page 20: IEEE TRANSACTIONS OF SOFTWARE ENGINEERING, VOL. 1, NO. … · are becoming more and more aware of the importance of Refactoring, and they encourage their developers to contin-uously

IEEE TRANSACTIONS OF SOFTWARE ENGINEERING, VOL. 1, NO. 1, JUNE 2020 20

types,” in Proceedings of the IEEE/ACM international conference onAutomated software engineering, 2010, pp. 181–182.

[S153] E. L. Alves, M. Song, T. Massoni, P. D. Machado, and M. Kim,“Refactoring inspection support for manual refactoring edits,”IEEE Transactions on Software Engineering, vol. 44, no. 4, pp. 365–383, 2017.

[S154] Y. Yu, J. Jurjens, and J. Mylopoulos, “Traceability for the main-tenance of secure software,” in 2008 IEEE International Conferenceon Software Maintenance. IEEE, 2008, pp. 297–306.

[S155] C. Kulkarni, “Notice of violation of ieee publication principles aqualitative approach for refactoring of code clone opportunitiesusing graph and tree methods,” in 2016 International Conferenceon Information Technology (InCITe)-The Next Generation IT Summiton the Theme-Internet of Things: Connect your Worlds. IEEE, 2016,pp. 154–159.

[S156] A. F. Tappenden, T. Huynh, J. Miller, A. Geras, and M. Smith,“Agile development of secure web-based applications,” Inter-national Journal of Information Technology and Web Engineering(IJITWE), vol. 1, no. 2, pp. 1–24, 2006.

[S157] P. M. Cousot, R. Cousot, F. Logozzo, and M. Barnett, “An ab-stract interpretation framework for refactoring with applicationto extract methods with contracts,” in Proceedings of the ACMinternational conference on Object oriented programming systemslanguages and applications, 2012, pp. 213–232.

[S158] P. Borba, “An introduction to software product line refactoring,”in International Summer School on Generative and TransformationalTechniques in Software Engineering. Springer, 2009, pp. 1–26.

[S159] O. Macek and K. Richta, “Application and relational databaseco-refactoring,” Computer Science and Information Systems, vol. 11,no. 2, pp. 503–524, 2014.

[S160] M. S. Feather and L. Z. Markosian, “Architecting and gener-alizing a safety case for critical condition detection software anexperience report,” in 2013 1st International Workshop on AssuranceCases for Software-Intensive Systems (ASSURE). IEEE, 2013, pp.29–33.

[S161] P. Muntean, M. Monperrus, H. Sun, J. Grossklags, and C. Eck-ert, “Intrepair: Informed repairing of integer overflows,” IEEETransactions on Software Engineering, 2019.

[S162] S. Demeyer, “Refactor conditionals into polymorphism: what’sthe performance cost of introducing virtual calls?” in 21st IEEEInternational Conference on Software Maintenance (ICSM’05). IEEE,2005, pp. 627–630.

[S163] A. Kumar, A. Sutton, and B. Stroustrup, “Rejuvenating c++ pro-grams through demacrofication,” in 2012 28th IEEE InternationalConference on Software Maintenance (ICSM). IEEE, 2012, pp. 98–107.

[S164] ——, “The demacrofier,” in 2012 28th IEEE International Confer-ence on Software Maintenance (ICSM). IEEE, 2012, pp. 658–661.

[S165] I. Sora, “A meta-model for representing language-independentprimary dependency structures.” in ENASE, 2012, pp. 65–74.

[S166] M. F. Zibran, R. K. Saha, M. Asaduzzaman, and C. K. Roy, “An-alyzing and forecasting near-miss clones in evolving software:An empirical study,” in 2011 16th IEEE International Conference onEngineering of Complex Computer Systems. IEEE, 2011, pp. 295–304.

[S167] R. Rolim, “Automating repetitive code changes using exam-ples,” in Proceedings of the 2016 24th ACM SIGSOFT InternationalSymposium on Foundations of Software Engineering, 2016, pp. 1063–1065.

[S168] W. S. Evans, C. W. Fraser, and F. Ma, “Clone detection viastructural abstraction,” Software Quality Journal, vol. 17, no. 4, pp.309–330, 2009.

[S169] A. Khan, H. A. Basit, S. M. Sarwar, and M. M. Yousaf, “Cloningin popular server side technologies using agile development:An empirical study,” Pakistan Journal of Engineering and AppliedSciences, no. 1, 2018.

[S170] T. D. Oyetoyan, R. Conradi, and D. S. Cruzes, “Criticality ofdefects in cyclic dependent components,” in 2013 IEEE 13thInternational Working Conference on Source Code Analysis and Ma-nipulation (SCAM). IEEE, 2013, pp. 21–30.

[S171] M. Gatrell, S. Counsell, and T. Hall, “Empirical support fortwo refactoring studies using commercial c# software,” in 13thInternational Conference on Evaluation and Assessment in SoftwareEngineering (EASE) 13, 2009, pp. 1–10.

[S172] R. K. Saha, M. Asaduzzaman, M. F. Zibran, C. K. Roy, and K. A.Schneider, “Evaluating code clone genealogies at release level:

An empirical study,” in 2010 10th IEEE Working Conference onSource Code Analysis and Manipulation. IEEE, 2010, pp. 87–96.

[S173] A. Derezinska and M. Byczkowski, “Evaluation of design pat-tern utilization and software metrics in c# programs,” in Interna-tional Conference on Dependability and Complex Systems. Springer,2019, pp. 132–142.

[S174] Y. A. Liu, M. Gorbovitski, and S. D. Stoller, “A language andframework for invariant-driven transformations,” ACM SigplanNotices, vol. 45, no. 2, pp. 55–64, 2009.

[S175] I. Lanc, P. Bui, D. Thain, and S. Emrich, “Adapting bioinfor-matics applications for heterogeneous systems: a case study,”Concurrency and Computation: Practice and Experience, vol. 26, no. 4,pp. 866–877, 2014.

[S176] L. E. d. S. Amorim, M. J. Steindorfer, S. Erdweg, and E. Visser,“Declarative specification of indentation rules: a tooling perspec-tive on parsing and pretty-printing layout-sensitive languages,”in Proceedings of the 11th ACM SIGPLAN International Conferenceon Software Language Engineering, 2018, pp. 3–15.

[S177] Z. Chen, L. Chen, W. Ma, and B. Xu, “Detecting code smellsin python programs,” in 2016 International Conference on SoftwareAnalysis, Testing and Evolution (SATE). IEEE, 2016, pp. 18–23.

[S178] C. Chapman and K. T. Stolee, “Exploring regular expression us-age and context in python,” in Proceedings of the 25th InternationalSymposium on Software Testing and Analysis, 2016, pp. 282–293.

[S179] J. B. Cabral, B. Sanchez, F. Ramos, S. Gurovich, P. M. Granitto,and J. Vanderplas, “From fats to feets: Further improvementsto an astronomical feature extraction tool based on machinelearning,” Astronomy and computing, vol. 25, pp. 213–220, 2018.

[S180] M. Zhu, F. McKenna, and M. H. Scott, “Openseespy: Pythonlibrary for the opensees finite element framework,” SoftwareX,vol. 7, pp. 6–11, 2018.

[S181] M. Furr, J.-h. An, and J. S. Foster, “Profile-guided static typingfor dynamic scripting languages,” in Proceedings of the 24th ACMSIGPLAN conference on Object oriented programming systems lan-guages and applications, 2009, pp. 283–300.

[S182] Z. W. Bell, G. G. Davidson, T. M. D’Azevedo, W. Joubert, J. K.Munro Jr, D. R. Patlolla, and B. Vacaliuc, “Python for develop-ment of openmp and cuda kernels for multidimensional data,”in Symposium on Application Accelerators in HPC, 2011.

[S183] Y. Hu, U. Z. Ahmed, S. Mechtaev, B. Leong, and A. Roy-choudhury, “Re-factoring based program repair applied to pro-gramming assignments,” in 2019 34th IEEE/ACM InternationalConference on Automated Software Engineering (ASE). IEEE, 2019,pp. 388–398.

[S184] C. Wang, S. Hirasawa, H. Takizawa, and H. Kobayashi, “Aplatform-specific code smell alert system for high performancecomputing applications,” in 2014 IEEE International Parallel &Distributed Processing Symposium Workshops. IEEE, 2014, pp. 652–661.

[S185] C. Biray and F. Buzluca, “A learning-based method for detect-ing defective classes in object-oriented systems,” in 2015 IEEEEighth International Conference on Software Testing, Verification andValidation Workshops (ICSTW). IEEE, 2015, pp. 1–8.

[S186] W. Hasanain, Y. Labiche, and S. Eldh, “An analysis of complexindustrial test code using clone analysis,” in 2018 IEEE Interna-tional Conference on Software Quality, Reliability and Security (QRS).IEEE, 2018, pp. 482–489.

[S187] D. Mazinanian and N. Tsantalis, “An empirical study on the useof css preprocessors,” in 2016 IEEE 23rd International Conferenceon Software Analysis, Evolution, and Reengineering (SANER), vol. 1.IEEE, 2016, pp. 168–178.

[S188] ——, “Cssdev: refactoring duplication in cascading stylesheets,” in 2017 IEEE/ACM 39th International Conference on Soft-ware Engineering Companion (ICSE-C). IEEE, 2017, pp. 63–66.

[S189] D. Mazinanian, N. Tsantalis, and A. Mesbah, “Discovering refac-toring opportunities in cascading style sheets,” in Proceedings ofthe 22nd ACM SIGSOFT International Symposium on Foundations ofSoftware Engineering, 2014, pp. 496–506.

[S190] D. D. Perez and W. Le, “Generating predicate callback sum-maries for the android framework,” in 2017 IEEE/ACM 4th In-ternational Conference on Mobile Software Engineering and Systems(MOBILESoft). IEEE, 2017, pp. 68–78.

[S191] S. Negara, M. Vakilian, N. Chen, R. E. Johnson, and D. Dig,“Is it dangerous to use version control histories to study sourcecode evolution?” in European Conference on Object-Oriented Pro-gramming. Springer, 2012, pp. 79–103.

Page 21: IEEE TRANSACTIONS OF SOFTWARE ENGINEERING, VOL. 1, NO. … · are becoming more and more aware of the importance of Refactoring, and they encourage their developers to contin-uously

IEEE TRANSACTIONS OF SOFTWARE ENGINEERING, VOL. 1, NO. 1, JUNE 2020 21

[S192] M. Bosch, P. Geneves, and N. Layaıda, “Reasoning with style,”in Twenty-Fourth International Joint Conference on Artificial Intelli-gence, 2015.

[S193] H. A. Nguyen, H. V. Nguyen, T. T. Nguyen, and T. N. Nguyen,“Output-oriented refactoring in php-based dynamic web appli-cations,” in 2013 IEEE International Conference on Software Mainte-nance. IEEE, 2013, pp. 150–159.

[S194] B. Chen, Z. M. Jiang, P. Matos, and M. Lacaria, “An industrial ex-perience report on performance-aware refactoring on a database-centric web application,” in 2019 34th IEEE/ACM InternationalConference on Automated Software Engineering (ASE). IEEE, 2019,pp. 653–664.

[S195] L. Eshkevari, F. Dos Santos, J. R. Cordy, and G. Antoniol, “Arephp applications ready for hack?” in 2015 IEEE 22nd Interna-tional Conference on Software Analysis, Evolution, and Reengineering(SANER). IEEE, 2015, pp. 63–72.

[S196] J. L. Overbey and R. E. Johnson, “Differential preconditionchecking: A lightweight, reusable analysis for refactoring tools,”in 2011 26th IEEE/ACM International Conference on AutomatedSoftware Engineering (ASE 2011). IEEE, 2011, pp. 303–312.

[S197] J. L. Overbey, R. E. Johnson, and M. Hafiz, “Differential pre-condition checking: a language-independent, reusable analysisfor refactoring engines,” Automated Software Engineering, vol. 23,no. 1, pp. 77–104, 2016.

[S198] M. Hills, P. Klint, and J. J. Vinju, “Enabling php softwareengineering research in rascal,” Science of Computer Programming,vol. 134, pp. 37–46, 2017.

[S199] F. Gauthier, D. Letarte, T. Lavoie, and E. Merlo, “Extraction andcomprehension of moodle’s access control model: A case study,”in 2011 Ninth Annual International Conference on Privacy, Securityand Trust. IEEE, 2011, pp. 44–51.

[S200] M. Hills and P. Klint, “Php air: Analyzing php systems withrascal,” in 2014 Software Evolution Week-IEEE Conference on Soft-ware Maintenance, Reengineering, and Reverse Engineering (CSMR-WCRE). IEEE, 2014, pp. 454–457.

[S201] Y. Yu, Y. Wang, J. Mylopoulos, S. Liaskos, A. Lapouchnian, andJ. C. S. do Prado Leite, “Reverse engineering goal models fromlegacy code,” in 13th IEEE International Conference on RequirementsEngineering (RE’05). IEEE, 2005, pp. 363–372.

[S202] R. Lammel and J. Visser, “A strafunski application letter,” in In-ternational Symposium on Practical Aspects of Declarative Languages.Springer, 2003, pp. 357–375.

[S203] G. M. Rama, “A desiderata for refactoring-based software mod-ularity improvement,” in Proceedings of the 3rd India softwareengineering conference, 2010, pp. 93–102.

[S204] T. Mens and T. Tourwe, “A survey of software refactoring,” IEEETransactions on software engineering, vol. 30, no. 2, pp. 126–139,2004.

[S205] A. Abadi, R. Ettinger, and Y. A. Feldman, “Fine slicing,” inInternational Conference on Fundamental Approaches to SoftwareEngineering. Springer, 2012, pp. 471–485.

[S206] M. Lillack, C. Bucholdt, and D. Schilling, “Detection of codeclones in software generators,” in Proceedings of the 6th Interna-tional Workshop on Feature-Oriented Software Development, 2014, pp.37–44.

[S207] H. M. Sneed and K. Erdoes, “Migrating as400-cobol to java: areport from the field,” in 2013 17th European Conference on SoftwareMaintenance and Reengineering. IEEE, 2013, pp. 231–240.

[S208] M. K. Smith and T. Laszewski, “Modernization case study:Italian ministry of instruction, university, and research,” in In-formation Systems Transformation. Elsevier, 2010, pp. 171–191.

[S209] T. Hatano and A. Matsuo, “Removing code clones from indus-trial systems using compiler directives,” in 2017 IEEE/ACM 25thInternational Conference on Program Comprehension (ICPC). IEEE,2017, pp. 336–345.

[S210] T. Gerlitz, Q. M. Tran, and C. Dziobek, “Detection and handlingof model smells for matlab/simulink models.” in MASE@ MoD-ELS, 2015, pp. 13–22.

[S211] Z. Zhao, X. Li, L. He, C. Wu, and J. K. Hedrick, “Estimationof torques transmitted by twin-clutch of dry dual-clutch trans-mission during vehicle’s launching process,” IEEE Transactionson Vehicular Technology, vol. 66, no. 6, pp. 4727–4741, 2016.

[S212] K. Aishwarya, R. Ramesh, P. M. Sobarad, and V. Singh, “Lossyimage compression using svd coding algorithm,” in 2016 Interna-tional Conference on Wireless Communications, Signal Processing andNetworking (WiSPNET). IEEE, 2016, pp. 1384–1389.

[S213] S. Schlesinger, P. Herber, T. Gothel, and S. Glesner, “Provingcorrectness of refactorings for hybrid simulink models withcontrol flow,” in International Workshop on Design, Modeling, andEvaluation of Cyber Physical Systems. Springer, 2016, pp. 71–86.

[S214] S. Makka and B. Sagar, “Simulation of a model for refactoringapproach for parallelism using parallel computing tool box,” inProceedings of First International Conference on Information and Com-munication Technology for Intelligent Systems: Volume 2. Springer,2016, pp. 77–84.

[S215] V. Pantelic, S. Postma, M. Lawford, M. Jaskolka, B. Mackenzie,A. Korobkine, M. Bender, J. Ong, G. Marks, and A. Wassyng,“Software engineering practices and simulink: bridging the gap,”International Journal on Software Tools for Technology Transfer,vol. 20, no. 1, pp. 95–117, 2018.

[S216] H. Zhu, Y. Yu, W. Qi, S. Liu, Y. Weng, T. Yuan, and H. Li, “Theresearch on fault restoration and refactoring for active distribu-tion network,” in 2019 Chinese Automation Congress (CAC). IEEE,2019, pp. 4470–4474.

[S217] V. N. Leonenko, N. V. Pertsev, and M. Artzrouni, “Using highperformance algorithms for the hybrid simulation of diseasedynamics on cpu and gpu.” in ICCS, 2015, pp. 150–159.

[S218] S. Tichelaar, S. Ducasse, S. Demeyer, and O. Nierstrasz, “A meta-model for language-independent refactoring,” in Proceedings In-ternational Symposium on Principles of Software Evolution. IEEE,2000, pp. 154–164.

[S219] T. M. T. T. F. Munoz, “Beyond the refactoring browser: Ad-vanced tool support for software refactoring,” 2003.

[S220] A. Garrido and R. Johnson, “Challenges of refactoring c pro-grams,” in Proceedings of the international workshop on Principles ofsoftware evolution, 2002, pp. 6–14.

[S221] K. Mens and T. Tourwe, “Delving source code with formal con-cept analysis,” Computer Languages, Systems & Structures, vol. 31,no. 3-4, pp. 183–197, 2005.

[S222] Y. Y. Lee, N. Chen, and R. E. Johnson, “Drag-and-drop refac-toring: intuitive and efficient program transformation,” in 201335th International Conference on Software Engineering (ICSE). IEEE,2013, pp. 23–32.

[S223] V. U. Gomez, A. Kellens, K. Gybels, and T. D’Hondt, “Ex-periments with pro-active declarative meta-programming,” inProceedings of the International Workshop on Smalltalk Technologies,2009, pp. 68–76.

[S224] M. Unterholzner, “Improving refactoring tools in smalltalkusing static type inference,” Science of Computer Programming,vol. 96, pp. 70–83, 2014.

[S225] D. Vainsencher, “Mudpie: layers in the ball of mud,” ComputerLanguages, Systems & Structures, vol. 30, no. 1-2, pp. 5–19, 2004.

[S226] O. Callau, R. Robbes, E. Tanter, D. Rothlisberger, and A. Bergel,“On the use of type predicates in object-oriented software: Thecase of smalltalk,” in Proceedings of the 10th ACM Symposium onDynamic languages, 2014, pp. 135–146.

[S227] P. Tesone, G. Polito, L. Fabresse, N. Bouraqadi, and S. Ducasse,“Preserving instance state during refactorings in live environ-ments,” Future Generation Computer Systems, 2020.

[S228] V. Arnaoudova and C. Constantinides, “Adaptation of refac-toring strategies to multiple axes of modularity: characteristicsand criteria,” in 2008 Sixth International Conference on SoftwareEngineering Research, Management and Applications. IEEE, 2008,pp. 105–114.

[S229] E. Rodrigues Jr, R. S. Durelli, R. W. de Bettio, L. Montecchi, andR. Terra, “Refactorings for replacing dynamic instructions withstatic ones: the case of ruby,” in Proceedings of the XXII BrazilianSymposium on Programming Languages, 2018, pp. 59–66.

[S230] P. Sommerlad, G. Zgraggen, T. Corbat, and L. Felber, “Retainingcomments when refactoring code,” in Companion to the 23rdACM SIGPLAN conference on Object-oriented programming systemslanguages and applications, 2008, pp. 653–662.

[S231] T. Corbat, L. Felber, M. Stocker, and P. Sommerlad, “Rubyrefactoring plug-in for eclipse,” in Companion to the 22nd ACMSIGPLAN conference on Object-oriented programming systems andapplications companion, 2007, pp. 779–780.

[S232] R. Chen and H. Miao, “A selenium based approach to automatictest script generation for refactoring javascript code,” in 2013IEEE/ACIS 12th International Conference on Computer and Informa-tion Science (ICIS). IEEE, 2013, pp. 341–346.

[S233] H. V. Nguyen, H. A. Nguyen, T. T. Nguyen, and T. N. Nguyen,“Babelref: detection and renaming tool for cross-language pro-gram entities in dynamic web applications,” in 2012 34th Interna-

Page 22: IEEE TRANSACTIONS OF SOFTWARE ENGINEERING, VOL. 1, NO. … · are becoming more and more aware of the importance of Refactoring, and they encourage their developers to contin-uously

IEEE TRANSACTIONS OF SOFTWARE ENGINEERING, VOL. 1, NO. 1, JUNE 2020 22

tional Conference on Software Engineering (ICSE). IEEE, 2012, pp.1391–1394.

[S234] K. An and E. Tilevich, “D-goldilocks: Automatic redistributionof remote functionalities for performance and efficiency,” in 2020IEEE 27th International Conference on Software Analysis, Evolutionand Reengineering (SANER). IEEE, 2020, pp. 251–260.

[S235] C.-Y. Hsieh, C. Le My, K. T. Ho, and Y. C. Cheng, “Identificationand refactoring of exception handling code smells in javascript,”Journal of Internet Technology, vol. 18, no. 6, pp. 1461–1471, 2017.

[S236] T. Mendes, M. T. Valente, and A. Hora, “Identifying utilityfunctions in java and javascript,” in 2016 X Brazilian Symposiumon Software Components, Architectures and Reuse (SBCARS). IEEE,2016, pp. 121–130.

[S237] N. Van Es, Q. Stievenart, J. Nicolay, T. D’Hondt, andC. De Roover, “Implementing a performant scheme interpreterfor the web in asm. js,” Computer Languages, Systems & Structures,vol. 49, pp. 62–81, 2017.

[S238] L. Gong, M. Pradel, and K. Sen, “Jitprof: pinpointing jit-unfriendly javascript code,” in Proceedings of the 2015 10th JointMeeting on Foundations of Software Engineering, 2015, pp. 357–368.

[S239] A. M. Fard and A. Mesbah, “Jsnose: Detecting javascript codesmells,” in 2013 IEEE 13th International Working Conference onSource Code Analysis and Manipulation (SCAM). IEEE, 2013, pp.116–125.

[S240] C. Schuster, T. Disney, and C. Flanagan, “Macrofication: Refac-toring by reverse macro expansion,” in European Symposium onProgramming. Springer, 2016, pp. 644–671.

[S241] J. Portner, J. Kerr, and B. Chu, “Moving target defense againstcross-site scripting attacks (position paper),” in International Sym-posium on Foundations and Practice of Security. Springer, 2014, pp.85–91.

[S242] G. Ortiz, J. A. Caravaca, A. Garcıa-de Prado, J. Boubeta-Puiget al., “Real-time context-aware microservice architecture for pre-dictive analytics and smart decision-making,” IEEE Access, vol. 7,pp. 183 177–183 194, 2019.

[S243] M. U. Khan, M. Z. Iqbal, and S. Ali, “A heuristic-based approachto refactor crosscutting behaviors in uml state machines,” in2014 IEEE International Conference on Software Maintenance andEvolution. IEEE, 2014, pp. 557–560.

[S244] R. Terra, M. T. Valente, and N. Anquetil, “A lightweight re-modularization process based on structural similarity,” in 2016X Brazilian Symposium on Software Components, Architectures andReuse (SBCARS). IEEE, 2016, pp. 111–120.

[S245] M. Bialy, M. Lawford, V. Pantelic, and A. Wassyng, “A method-ology for the simplification of tabular designs in model-baseddevelopment,” in 2015 IEEE/ACM 3rd FME Workshop on FormalMethods in Software Engineering. IEEE, 2015, pp. 47–53.

[S246] P. Langer, M. Wimmer, P. Brosch, M. Herrmannsdorfer, M. Seidl,K. Wieland, and G. Kappel, “A posteriori operation detectionin evolving software models,” Journal of Systems and Software,vol. 86, no. 2, pp. 551–566, 2013.

[S247] A. T. Sampson, J. M. Bjorndalen, and P. S. Andrews, “Birdson the wall: Distributing a process-oriented simulation,” in 2009IEEE Congress on Evolutionary Computation. IEEE, 2009, pp. 225–231.

[S248] Y. Wang, H. Yu, Z. Zhu, W. Zhang, and Y. Zhao, “Automaticsoftware refactoring via weighted clustering in method-levelnetworks,” IEEE Transactions on Software Engineering, vol. 44,no. 3, pp. 202–236, 2017.

[S249] A. Ouni, M. Kessentini, M. O Cinneide, H. Sahraoui, K. Deb, andK. Inoue, “More: A multi-objective refactoring recommendationapproach to introducing design patterns and fixing code smells,”Journal of Software: Evolution and Process, vol. 29, no. 5, p. e1843,2017.

[S250] H. Wang, M. Kessentini, and A. Ouni, “Bi-level identificationof web service defects,” in International Conference on Service-Oriented Computing. Springer, Cham, 2016, pp. 352–368.

[S251] A. Ghannem, G. El Boussaidi, and M. Kessentini, “On the useof design defect examples to detect model refactoring opportuni-ties,” Software Quality Journal, vol. 24, no. 4, pp. 947–965, 2016.

[S252] B. Amal, M. Kessentini, S. Bechikh, J. Dea, and L. B. Said, “Onthe use of machine learning and search-based software engi-neering for ill-defined fitness function: a case study on softwarerefactoring,” in International Symposium on Search Based SoftwareEngineering. Springer, Cham, 2014, pp. 31–45.

[S253] M. Kessentini, A. Ouni, P. Langer, M. Wimmer, and S. Bechikh,

“Search-based metamodel matching with structural and syntacticmeasures,” Journal of Systems and Software, vol. 97, pp. 1–14, 2014.

[S254] M. Kessentini, R. Mahaouachi, and K. Ghedira, “What you likein design use to correct bad-smells,” Software Quality Journal,vol. 21, no. 4, pp. 551–571, 2013.

[S255] A. Ghannem, M. Kessentini, and G. El Boussaidi, “Detectingmodel refactoring opportunities using heuristic search,” in Pro-ceedings of the 2011 Conference of the Center for Advanced Studies onCollaborative Research, 2011, pp. 175–187.

[S256] M. Boussaa, W. Kessentini, M. Kessentini, S. Bechikh, and S. B.Chikha, “Competitive coevolutionary code-smells detection,”in International Symposium on Search Based Software Engineering.Springer, Berlin, Heidelberg, 2013, pp. 50–65.

[S257] E. Erturk and E. A. Sezer, “A comparison of some soft comput-ing methods for software fault prediction,” Expert systems withapplications, vol. 42, no. 4, pp. 1872–1879, 2015.

[S258] C. S. Melo, M. M. L. da Cruz, A. D. F. Martins, T. Matos, J. M.da Silva Monteiro Filho, and J. de Castro Machado, “A practicalguide to support change-proneness prediction,” 2019.

[S259] L. Kumar, S. M. Satapathy, and A. Krishna, “Application ofsmote and lssvm with various kernels for predicting refactoringat method level,” in International Conference on Neural InformationProcessing. Springer, 2018, pp. 150–161.

[S260] R. Hill and J. Rideout, “Automatic method completion,” inProceedings. 19th International Conference on Automated SoftwareEngineering, 2004. IEEE, 2004, pp. 228–235.

[S261] S. Haiduc, G. Bavota, A. Marcus, R. Oliveto, A. De Lucia, andT. Menzies, “Automatic query reformulations for text retrievalin software engineering,” in 2013 35th International Conference onSoftware Engineering (ICSE). IEEE, 2013, pp. 842–851.

[S262] G. M. Ubayawardana and D. D. Karunaratna, “Bug predictionmodel using code smells,” in 2018 18th International Conferenceon Advances in ICT for Emerging Regions (ICTer). IEEE, 2018, pp.70–77.

[S263] Z. Aliyu, L. A. Rahim, and E. E. Mustapha, “A combine usabilityframework for imcat evaluation,” in 2014 International Conferenceon Computer and Information Sciences (ICCOINS). IEEE, 2014, pp.1–5.

[S264] A. Herranz and J. J. Moreno-Navarro, “Formal extreme (andextremely formal) programming,” in International Conference onExtreme Programming and Agile Processes in Software Engineering.Springer, 2003, pp. 88–96.

[S265] L. Quan, Q. Zongyan, and Z. Liu, “Formal use of design patternsand refactoring,” in International Symposium on Leveraging Appli-cations of Formal Methods, Verification and Validation. Springer,2008, pp. 323–338.

[S266] J. W. Ko and Y. J. Song, “Graph based model transforma-tion verification using mapping patterns and graph comparisonalgorithm,” International Journal of Advancements in ComputingTechnology, vol. 4, no. 8, 2012.

[S267] T. Ruhroth and H. Wehrheim, “Model evolution and refine-ment,” Science of Computer Programming, vol. 77, no. 3, pp. 270–289, 2012.

[S268] S. Stepney, F. Polack, and I. Toyn, “Patterns to guide practicalrefactoring: examples targetting promotion in z,” in InternationalConference of B and Z Users. Springer, 2003, pp. 20–39.

[S269] T. v. Enckevort, “Refactoring uml models: using openarchitec-tureware to measure uml model quality and perform patternmatching on uml models with ocl queries,” in Proceedings ofthe 24th ACM SIGPLAN conference companion on Object orientedprogramming systems languages and applications, 2009, pp. 635–646.

[S270] D. Luciv, D. Koznov, H. A. Basit, and A. N. Terekhov, “On fuzzyrepetitions detection in documentation reuse,” Programming andComputer Software, vol. 42, no. 4, pp. 216–224, 2016.

[S271] D. Arcelli, V. Cortellessa, and C. Trubiani, “Performance-basedsoftware model refactoring in fuzzy contexts,” in InternationalConference on Fundamental Approaches to Software Engineering.Springer, 2015, pp. 149–164.

[S272] C. Wang and S. Kang, “Adfl: An improved algorithm for ameri-can fuzzy lop in fuzz testing,” in International Conference on CloudComputing and Security. Springer, 2018, pp. 27–36.

[S273] P. Lerthathairat and N. Prompoon, “An approach for sourcecode classification using software metrics and fuzzy logic toimprove code quality with refactoring techniques,” in Interna-tional Conference on Software Engineering and Computer Systems.Springer, 2011, pp. 478–492.

Page 23: IEEE TRANSACTIONS OF SOFTWARE ENGINEERING, VOL. 1, NO. … · are becoming more and more aware of the importance of Refactoring, and they encourage their developers to contin-uously

IEEE TRANSACTIONS OF SOFTWARE ENGINEERING, VOL. 1, NO. 1, JUNE 2020 23

[S274] Z. Avdagic, D. Boskovic, and A. Delic, “Code evaluation us-ing fuzzy logic,” in Proceedings of the 9th WSEAS InternationalConference on Fuzzy Systems. World Scientific and EngineeringAcademy and Society (WSEAS), 2008, pp. 20–25.

[S275] H. Liu, J. Jin, Z. Xu, Y. Bu, Y. Zou, and L. Zhang, “Deep learningbased code smell detection,” IEEE Transactions on Software Engi-neering, 2019.

[S276] Y. Wang, “What motivate software engineers to refactor sourcecode? evidences from professional developers,” in 2009 IEEEInternational Conference on Software Maintenance. IEEE, 2009, pp.413–416.

[S277] J. Grigera, A. Garrido, and G. Rossi, “Kobold: web usabilityas a service,” in 2017 32nd IEEE/ACM International Conference onAutomated Software Engineering (ASE). IEEE, 2017, pp. 990–995.

[S278] M. W. Mkaouer, M. Kessentini, S. Bechikh, K. Deb, andM. O Cinneide, “Recommendation system for software refactor-ing using innovization and interactive dynamic optimization,”in Proceedings of the 29th ACM/IEEE international conference onAutomated software engineering, 2014, pp. 331–336.

[S279] V. Alizadeh and M. Kessentini, “Reducing interactive refactor-ing effort via clustering-based multi-objective search,” in Proceed-ings of the 33rd ACM/IEEE International Conference on AutomatedSoftware Engineering, 2018, pp. 464–474.

Chaima Abid is currently a PhD student in theintelligent Software Engineering group at theUniversity of Michigan. Her PhD project is con-cerned with the application of intelligent searchand machine learning in different areas such asweb services, refactoring and security. Her cur-rent research interests are Search-Based Soft-ware Engineering, web services, refactoring, se-curity, data analytics and software quality.

Vahid Alizadeh is currently a Ph.D. student inthe intelligent Software Engineering group at theUniversity of Michigan. His Ph.D. project is con-cerned with the application of intelligent searchand machine learning in different software engi-neering areas such as refactoring, testing, anddocumentation. His current research interestsare Search-Based Software Engineering, Refac-toring, Artificial Intelligence, data analytics andsoftware quality.

Marouane Kessentini is a recipient of the pres-tigious 2018 President of Tunisia distinguishedresearch award, the University distinguishedteaching award, the University distinguished dig-ital education award, the College of Engineeringand Computer Science distinguished researchaward, 4 best paper awards, and his AI-basedsoftware refactoring invention, licensed and de-ployed by industrial partners, is selected as oneof the Top 8 inventions at the University of Michi-gan for 2018 (including the three campuses),

among over 500 inventions, by the UM Technology Transfer Office. Heis currently a tenured associate professor and leading a research groupon Software Engineering Intelligence. Prior to joining UM in 2013, Hereceived his Ph.D. from the University of Montreal in Canada in 2012.He received several grants from both industry and federal agencies andpublished over 110 papers in top journals and conferences. He hasseveral collaborations with industry on the use of computational search,machine learning and evolutionary algorithms to address software engi-neering and services computing problems.

Thiago do Nascimento Ferreira is a Post-doctoral Researcher at University of Michigan-Dearborn under the supervision of Dr. MarouaneKessentini in the ISELab. He received my PhDDegree in Computer Science from the Fed-eral University of Parana in 2019. His researchmainly focuses on the use of Preference andSearch Based Software Engineering to addressseveral software engineering problems such asSoftware Testing and Software Refactoring.

Danny Dig is an associate professor of com-puter science at the University of Colorado,and an adjunct professor at University of Illinoisand Oregon State. He successfully pioneeredinteractive program transformations by openingthe field of refactoring in cutting-edge domainsincluding mobile, concurrency and parallelism,component-based, testing, and end-user pro-gramming. He earned his Ph.D. from the Univer-sity of Illinois at Urbana-Champaign where hisresearch won the best Ph.D. dissertation award,

and the First Prize at the ACM Student Research Competition GrandFinals. He did a postdoc at MIT. He (co-)authored 50+ journal andconference papers that appeared in top places in SE/PL. Accordingto Google Scholar his publications have been cited 4000+ times. Hisresearch was recognized with 8 best paper awards at the flagship andtop conferences in SE, 4 award runner-ups, and 1 most influential paperaward (N-10 years) at ICSME’15. He received the NSF CAREER award,the Google Faculty Research Award (twice), and the Microsoft SoftwareEngineering Innovation Award (twice). He released 9 software systems,among them the world’s first open-source refactoring tool. Some of thetechniques he developed are shipping with the official release of thepopular Eclipse, NetBeans, and Visual Studio development environ-ments (of which Eclipse alone had more than 14M downloads in 2014).