CSC/ECE 517 Fall 2009/wiki1a 9 DS

From Expertiza_Wiki
Jump to navigation Jump to search

Reasearch in refactoring tools

Refactoring is defined as the technique by which the existing body of the code is restructured by changing the inner structure and without changing its external behavior. The tools which are used to achieve this purpose are commonly known as refactoring tools.

Overview

This deals with the academic underpinnings of refactoring starting from its evolution and the initiatives taken to improve the current generation of refactoring tools. It also throws lights up on the various books and papers on the topic of refactoring and also various conferences and workshops conducted.

Academic Underpinnings

Motivation

The first official thesis on the area of refactoring leads back to 1992 when Bill Opdyke finished his thesis on the topic "Refactoring Object-Oriented Frameworks". Bill Opdyke was working in Bill Laboratories developing electronic switching systems. When he started to pursue his doctoral studies he wanted it to be related to practical business application. That is when he narrowed down on this topic and lead to the official shaping of the cloud refactoring.

The Basic motivation behind the emergence of refactoring was the software re usability, cutting down cost involved in restructuring software later for various use. Thus refactoring leads to software reuse in future.

Though it might appear that refactoring began in research labs it actually emerged on ad-hoc basis when object-oriented programmers came across situations where they felt the need for change in object oriented software. Refactoring actually has its roots way back. Factoring was a key technique in Forth Language from its birth in 70’s. Absence of appropriate syntax made it not possible to extract the best use out of it. Ralph jhonson was the first person to use the name refactoring in print. Along with Bill Opdyke he published a paper on refactoring in 1990.

Etymology

The first known use of the term “refactoring” appeared in “Refactoring: An Aid in Designing Application Frameworks and Evolving Object-Oriented Systems” by Ralph Johnson and Bill Opdyke in 1990. But Refactoring as a function and as technique was almost certainly used before then.

More Works

Lot of work has been done on this area which includes the thesis work “Practical Analysis for refactoring” by Donald Bradley Roberts. It focuses on several ways to make a refactoring tool that is both fast enough and reliable enough to be useful. In another thesis work “Refactoring as Formal Refinements” by Márcio Cornélio throws light on algebraic technique that presents refactoring as behavior preserving transformation. For list of other thesis works and papers refer to the external links.

Books on Refactoring

Various books are available on the topic of refactoring these days. The initial list of books includes “Refactoring: Improving the Design of Existing Code“ by Martin Flower and Refactoring to Patterns, by Joshua Kerievsky and many more books on this topic. For listing of books refer to the external links on books on refactoring.


Initiatives taken to improve current generation of refactoring tools

Refactoring Tools

Refactoring tools are provided as Integrated Development Environment (IDE) features currently and are available for all popular programming languages. For instance, the common IDEs that provide the refactoring tools are IBM’s Eclipse, Sun’s Netbeans and IntelliJ’s IDEA. For further information, an academic thesis “Refactoring Tools and Complementary Techniques” focuses on the survey made on the comparison of refactoring tools usage in IDEs.

Web Portal

Various initiatives like conferences, workshops are conducted by Organizations like Institute of Electrical and Electronics Engineers (IEEE), Associate for Computing Machinery (ACM) to improve the current generation of refactoring tools. The first initiative taken to improve the current generation of refactoring tools is creating the refactoring research web portal ([1]). This research web portal includes a collection links and articles that provide the researchers and industrial engineers an up-to-date knowledge on refactoring.

Workshops and Conferences

The second initiative taken is, organizing workshops which serve as a forum to bring researchers and tool vendors together for collaborative efforts in developing the refactoring tools. This initiative has been taken with the motive to develop the tool support for refactoring efficiently by combining the state-of-the-art research with the challenges from real-time applications. The benefits of such workshops by collaborating the researchers and tool vendors are, to develop the tools in a short period of time and eliminating the redundant works by other researchers and tool vendors. The workshops on refactoring tools are being conducted annually at various places

The first workshop on refactoring tools was conducted on July 31st 2007 in conjunction with European Conference on Object-Oriented Programming (ECOOP) at Berlin. Various papers like automated refactoring for improved cohesion, reuse based refactoring tools, Engineering reusability for software refactoring tools and others were presented and discussed. The proceedings of the first workshop can be found as a TU Berlin Technical Report, ISSN 1436-9915.

The second workshop on refactoring tools was conducted on October 19th 2008 in conjunction with Object-Oriented Programming Systems, Languages and Applications (OOPSLA) at Nashville, Tennessee. Various papers that were accepted and discussed were Cross Language Refactoring for Eclipse plug-ins, Tool support for refactoring functional programs, Towards a Refactoring guideline using code clone classification and others. More accepted papers at the second workshop can be found at [2]. The interest in research in refactoring tools has increased to a greater extent that more papers were submitted and more researchers and tool vendors like JetBrains, Microsoft participated at the workshop.

The third workshop on refactoring tools is going to be held on October 25-29, 2009 in conjunction with Object-Oriented Programming Systems, Languages and Applications (OOPSLA) at Orlando, Florida. The papers have been invited for the topics which include language-independent transformation frameworks, language-independent analysis frameworks and analytical representations.