Refactoring

14,000,000 Leading Edge Experts on the ideXlab platform

Scan Science and Technology

Contact Leading Edge Experts & Companies

Scan Science and Technology

Contact Leading Edge Experts & Companies

The Experts below are selected from a list of 17232 Experts worldwide ranked by ideXlab platform

Mark Harman - One of the best experts on this subject based on the ideXlab platform.

  • pareto optimal search based Refactoring at the design level
    Genetic and Evolutionary Computation Conference, 2007
    Co-Authors: Mark Harman, Laurence Tratt
    Abstract:

    Refactoring aims to improve the quality of a software systems' structure, which tends to degrade as the system evolves. While manually determining useful Refactorings can be challenging, search based techniques can automatically discover useful Refactorings. Current search based Refactoring approaches require metrics to be combined in a complex fashion, and producea single sequence of Refactorings. In this paper we show how Pareto optimality can improve search based Refactoring, making the combination of metrics easier, and aiding the presentation of multiple sequences of optimal Refactorings to users.

  • ICSM - Automated Refactoring of object oriented code into aspects
    21st IEEE International Conference on Software Maintenance (ICSM'05), 2005
    Co-Authors: David Binkley, Mark Harman, Mariano Ceccato, Filippo Ricca, Paolo Tonella
    Abstract:

    This paper presents a human-guided automated approach to Refactoring object oriented programs to the aspect oriented paradigm. The approach is based upon the iterative application of four steps: discovery, enabling, selection, and Refactoring. After discovering potentially applicable Refactorings, the enabling step transforms the code to improve refactorability. During the selection phase the particular Refactorings to apply are chosen. Finally, the Refactoring phase transforms the code by moving the selected code to a new aspect. This paper presents the results of an evaluation in which one of the crosscutting concerns of a 40,000 LoC program (JHotDraw) is refactored.

Laurence Tratt - One of the best experts on this subject based on the ideXlab platform.

  • pareto optimal search based Refactoring at the design level
    Genetic and Evolutionary Computation Conference, 2007
    Co-Authors: Mark Harman, Laurence Tratt
    Abstract:

    Refactoring aims to improve the quality of a software systems' structure, which tends to degrade as the system evolves. While manually determining useful Refactorings can be challenging, search based techniques can automatically discover useful Refactorings. Current search based Refactoring approaches require metrics to be combined in a complex fashion, and producea single sequence of Refactorings. In this paper we show how Pareto optimality can improve search based Refactoring, making the combination of metrics easier, and aiding the presentation of multiple sequences of optimal Refactorings to users.

Steve Counsell - One of the best experts on this subject based on the ideXlab platform.

  • PROFES - Do developers really worry about Refactoring re-test? An empirical study of open-source systems
    Product-Focused Software Process Improvement, 2018
    Co-Authors: Steve Counsell, Stephen Swift, Mahir Arzoky, Giuseppe Destefanis
    Abstract:

    In this paper, we explore the extent to which a set of over 12000 Refactorings fell into one of four re-test categories defined by van Deursen and Moonen; the ‘least disruptive’ of the four categories contains Refactorings requiring only minimal re-test. The ‘most disruptive’ category of Refactorings on the other hand requires significant re-test effort. We used multiple versions of three open-source systems to answer one research question: Do developers prefer to undertake Refactorings in the least disruptive categories or in the most disruptive? The simple answer is that they prefer to do both. We provide insights into these Refactoring patterns across the systems and highlight a fundamental weakness with software metrics trying to capture the Refactoring process.

  • COMPSAC - Refactoring Steps, Java Refactorings and Empirical Evidence
    2008 32nd Annual IEEE International Computer Software and Applications Conference, 2008
    Co-Authors: Steve Counsell, Stephen Swift
    Abstract:

    While we can determine the likely testing effort of a single Refactoring through simple visual inspection, the inter-relationships between many of the seventy- two Refactorings mean that a chain of Refactorings and hence a chain of tests may be required for completion of each. In this paper, we establish the properties of, and the inter-relationships between, fourteen of the seventy-two Refactorings described in Fowler from a testing chain perspective. We provide an empirical analysis of those Refactorings and their associated testing chains. We also inform our understanding of testing effort with recourse to Refactoring data from 7 Java OSS.

  • extracting Refactoring trends from open source software and a possible solution to the related Refactoring conundrum
    ACM Symposium on Applied Computing, 2006
    Co-Authors: Deepak Advani, Youssef Hassoun, Steve Counsell
    Abstract:

    Refactoring, as a software engineering discipline has emerged over recent years to become an important aspect of maintaining software. Refactoring refers to the restructuring of software according to specific mechanics and principles. In this paper, we describe a tool that allows Refactoring data across multiple versions of seven open-source software systems to be collected. The tool automates the identification of Refactorings as program transformations between consecutive software releases. The same tool thus allowed an empirical analysis of software development across versions from the perspective of those transformations. We describe results for the systems analysed and point to key conclusions from our analysis. In particular, we investigate a problematic empirical question as to whether certain Refactorings are related, i.e., they cannot be undertaken in isolation without other Refactorings being undertaken in parallel. In this context, we focus specifically on the four most common Refactorings identified by the tool from three of the open-source systems and use a dependency graph to inform conclusions about the empirical data extracted by the tool. An interesting result relating to some common Refactorings is described.

Ralph E Johnson - One of the best experts on this subject based on the ideXlab platform.

  • a comparative study of manual and automated Refactorings
    European Conference on Object-Oriented Programming, 2013
    Co-Authors: Stas Negara, Mohsen Vakilian, Nicholas Chen, Ralph E Johnson, Danny Dig
    Abstract:

    Despite the enormous success that manual and automated Refactoring has enjoyed during the last decade, we know little about the practice of Refactoring. Understanding the Refactoring practice is important for developers, Refactoring tool builders, and researchers. Many previous approaches to study Refactorings are based on comparing code snapshots, which is imprecise, incomplete, and does not allow answering research questions that involve time or compare manual and automated Refactoring. We present the first extended empirical study that considers both manual and automated Refactoring. This study is enabled by our algorithm, which infers Refactorings from continuous changes. We implemented and applied this algorithm to the code evolution data collected from 23 developers working in their natural environment for 1,520 hours. Using a corpus of 5,371 Refactorings, we reveal several new facts about manual and automated Refactorings. For example, more than half of the Refactorings were performed manually. The popularity of automated and manual Refactorings differs. More than one third of the Refactorings performed by developers are clustered in time. On average, 30% of the performed Refactorings do not reach the Version Control System.

  • drag and drop Refactoring intuitive and efficient program transformation
    International Conference on Software Engineering, 2013
    Co-Authors: Yun Young Lee, Nicholas Chen, Ralph E Johnson
    Abstract:

    Refactoring is a disciplined technique for restructuring code to improve its readability and maintainability. Almost all modern integrated development environments (IDEs) offer built-in support for automated Refactoring tools. However, the user interface for Refactoring tools has remained largely unchanged from the menu and dialog approach introduced in the Smalltalk Refactoring Browser, the first automated Refactoring tool, more than a decade ago. As the number of supported Refactorings and their options increase, invoking and configuring these tools through the traditional methods have become increasingly unintuitive and inefficient. The contribution of this paper is a novel approach that eliminates the use of menus and dialogs altogether. We streamline the invocation and configuration process through direct manipulation of program elements via drag-and-drop. We implemented and evaluated this approach in our tool, Drag-and-Drop Refactoring (DNDRefactoring), which supports up to 12 of 23 Refactorings in the Eclipse IDE. Empirical evaluation through surveys and controlled user studies demonstrates that our approach is intuitive, more efficient, and less error-prone compared to traditional methods available in IDEs today. Our results bolster the need for researchers and tool developers to rethink the design of future Refactoring tools.

  • ECOOP - A comparative study of manual and automated Refactorings
    ECOOP 2013 – Object-Oriented Programming, 2013
    Co-Authors: Stas Negara, Mohsen Vakilian, Nicholas Chen, Ralph E Johnson, Danny Dig
    Abstract:

    Despite the enormous success that manual and automated Refactoring has enjoyed during the last decade, we know little about the practice of Refactoring. Understanding the Refactoring practice is important for developers, Refactoring tool builders, and researchers. Many previous approaches to study Refactorings are based on comparing code snapshots, which is imprecise, incomplete, and does not allow answering research questions that involve time or compare manual and automated Refactoring. We present the first extended empirical study that considers both manual and automated Refactoring. This study is enabled by our algorithm, which infers Refactorings from continuous changes. We implemented and applied this algorithm to the code evolution data collected from 23 developers working in their natural environment for 1,520 hours. Using a corpus of 5,371 Refactorings, we reveal several new facts about manual and automated Refactorings. For example, more than half of the Refactorings were performed manually. The popularity of automated and manual Refactorings differs. More than one third of the Refactorings performed by developers are clustered in time. On average, 30% of the performed Refactorings do not reach the Version Control System.

  • ECOOP - A compositional paradigm of automating Refactorings
    ECOOP 2013 – Object-Oriented Programming, 2013
    Co-Authors: Mohsen Vakilian, Nicholas Chen, Stas Negara, Roshanak Zilouchian Moghaddam, Ralph E Johnson
    Abstract:

    Recent studies suggest that programmers greatly underuse Refactoring tools, especially for complex Refactorings. Complex Refactorings tend to be tedious and error-prone to perform by hand. To promote the use of Refactoring tools for complex changes, we propose a new paradigm for automating Refactorings called compositional Refactoring. The key idea is to perform small, predictable changes using a tool and manually compose them into complex changes. This paradigm trades off some level of automation by higher predictability and control. We show that this paradigm is natural, because our analysis of programmers' use of the Eclipse Refactoring tool in the wild shows that they frequently batch and compose automated Refactorings. We then show that programmers are receptive to this new paradigm through a survey of 100 respondents. Finally, we show that the compositional paradigm is effective through a controlled study of 13 professional programmers, comparing this paradigm to the existing wizard-based one.

  • ICSE - Drag-and-drop Refactoring: intuitive and efficient program transformation
    2013 35th International Conference on Software Engineering (ICSE), 2013
    Co-Authors: Yun Young Lee, Nicholas Chen, Ralph E Johnson
    Abstract:

    Refactoring is a disciplined technique for restructuring code to improve its readability and maintainability. Almost all modern integrated development environments (IDEs) offer built-in support for automated Refactoring tools. However, the user interface for Refactoring tools has remained largely unchanged from the menu and dialog approach introduced in the Smalltalk Refactoring Browser, the first automated Refactoring tool, more than a decade ago. As the number of supported Refactorings and their options increase, invoking and configuring these tools through the traditional methods have become increasingly unintuitive and inefficient. The contribution of this paper is a novel approach that eliminates the use of menus and dialogs altogether. We streamline the invocation and configuration process through direct manipulation of program elements via drag-and-drop. We implemented and evaluated this approach in our tool, Drag-and-Drop Refactoring (DNDRefactoring), which supports up to 12 of 23 Refactorings in the Eclipse IDE. Empirical evaluation through surveys and controlled user studies demonstrates that our approach is intuitive, more efficient, and less error-prone compared to traditional methods available in IDEs today. Our results bolster the need for researchers and tool developers to rethink the design of future Refactoring tools.

Javier Pérez - One of the best experts on this subject based on the ideXlab platform.

  • ICSM - Refactoring Planning for Design Smell Correction: Summary, Opportunities and Lessons Learned
    2013 IEEE International Conference on Software Maintenance, 2013
    Co-Authors: Javier Pérez
    Abstract:

    Complex Refactoring processes, such as applying big Refactorings or removing design smells are difficult to perform in practice. The complexity of these processes is partly due to their heuristic nature and to the constraints imposed by preconditions on the applicability of the individual Refactorings. Developers have to find out manually how to apply a complex Refactoring "recipe", from a Refactoring book, for each particular situation. In a PhD thesis, we developed an approach for tackling this problem. We described how to better write Refactoring "recipes" (Refactoring Strategies) and how to compute, from them, the precise Refactoring sequences for each particular situation (Refactoring Plans). Our proposal introduced, for the first time, the use of automated planning for this kind of software engineering problems. This paper presents a short summary of that PhD thesis and discuss the future work, open questions, new research opportunities arisen and the lessons learned from it.

  • WRT@ICSE - Computation of Refactoring plans from Refactoring strategies using HTN planning
    Proceedings of the Fifth Workshop on Refactoring Tools - WRT '12, 2012
    Co-Authors: Javier Pérez, Yania Crespo
    Abstract:

    Complex Refactoring processes, such as applying big Refactorings or removing design smells are difficult to perform in practice. The complexity of these processes is partly due to their heuristic nature and to the constraints imposed by preconditions on the applicability of the individual Refactorings. We introduce Refactoring strategies as heuristic-based, automation-suitable specifications of a complex Refactoring process. They allow us to specify correction strategies and big Refactorings more formally than it is done in current catalogues. Refactoring strategies can be instantiated, for each particular case, into Refactoring plans. We define Refactoring plans as sequences of Refactorings that are immediately applicable over the current system source code. We have developed an approach for instantiating Refactoring strategies into Refactoring plans that uses Hierarchical Task Network (HTN) planning. This paper describes this approach and presents a case study, in order to evaluate and characterise it.