\documentclass[a4paper,10pt]{article}
\usepackage{hyperref}

%opening
\title{Project description - Master thesis work at UiO}
\author{Erlend Kristiansen, erlenkr}

\begin{document}

\maketitle

\section*{Refactoring, Software Metrics and\\ Design Patterns}
Refactorings are a common tool of the trade for programming. In general, they are assumed to be equivalent transformations of a program, to improve the quality of the source code with regard to a concrete or subjective software metric, such as coupling.

To aid in this matter, many of the common IDEs (e.g. Eclipse, IntelliJ, NetBeans, MS Visual Studio) offer tool support for automated refactorings. While the support is satisfactory in many of these environments, they generally support mostly low level refactorings, such as the rename refactoring, the extract method refactoring, the extract class refactoring and so on.

To a certain degree, literature on the subject \cite{fowler99, kerievsky04} suggests a relationship between refactorings and design patterns \cite{gamma94}, in the sense that a design pattern may be the target of a series of refactorings. The aim of this project will be to pursue this relationship further. After finding a suitable tool I will try to implement one or more higher order refactorings (i.e. they are composed of lower level refactorings). If this succeeds, I will investigate the relationships between selected software metrics and design patterns, and whether this can be used to make tool support for refactoring toward patterns.

\section*{Schedule}

\paragraph{First couple of months}
Some background literature must be read. In addition to the literature that has already been referred to, the literature on software metrics may for instance include one or more of \cite{fenton98, lanza06, kan02, vogelsang10}. Initial work could also include looking in Open Source software repositories for examples where refactorings have been applied and classify them \cite{soares11}. It would also be natural to study existing approaches to describe execution of refactorings \cite{fleurey09, schaefer10, cornelio10, keeffe00, fokaefs12, groves00}.

Then a suitable tool need to be chosen for the implementation of the refactoring(s). Preferably one that has accessible lower level refactorings to build on. As part of this process, the ``extract-and-then-move-including-the-insertion-of-an-assertion method'' refactoring from the master thesis proposal ``Safer Refactorings'' \cite{stolz11} by Volker Stolz, should be used as an excercise to understand the refactoring support of the tool investigated, starting with the Eclipse JDT \cite{eclipse_ORG}.

\paragraph{Next five months (approx.)}
Performing implementations and experiments.

\paragraph{Last six months (approx.)}
Write research report. This work must be done partially in parallel with some of the more practical parts of the project.

\begin{thebibliography}{9}

  \bibitem{fowler99}
	Martin Fowler et al.,
	\emph{Refactoring: Improving the Design of Existing Code},
	1999.
  
  \bibitem{kerievsky04}
	Joshua Kerievsky,
	\emph{Refactoring to Patterns},
	2004.

 \bibitem{gamma94}
	Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides,\\
	\emph{Design Patterns: Elements of Reusable Object-Oriented Software},
	1994.

  \bibitem{fenton98}
	Norman E. Fenton, Shari Lawrence Pfleeger,
	\emph{Software Metrics: A Rigorous and Practical Approach, Revised},
	1998.
  
  \bibitem{lanza06}
	Michele Lanza, Radu Marinescu,
	\emph{Object-Oriented Metrics in Practice: Using Software Metrics to Characterize, Evaluate, and Improve the Design of Object-Oriented Systems},
	2006.

  \bibitem{kan02}
	Stephen H. Kan,
	\emph{Metrics and Models in Software Quality Engineering},
	2002.

  \bibitem{vogelsang10}
	Andreas Vogelsang, Ansgar Fehnker, Ralf Huuck, Wolfgang Reif,
	\emph{Software Metrics in Static Program Analysis},
	2010.

  \bibitem{fleurey09}
	Franck Fleurey, Øystein Haugen, Birger Møller-Pedersen, Gøran K. Olsen, Andreas Svendsen, Xiaorui Zhang
	\emph{A Generic Language and Tool for Variability Modeling},
	2009.

  \bibitem{schaefer10}
	Max Schaefer, Oege de Moor,
	\emph{Specifying and implementing refactorings},
	2010.

  \bibitem{cornelio10}
	Márcio Cornélio, Ana Cavalcanti,
	\emph{Sound refactorings},
	2010.

  \bibitem{keeffe00}
	Mark O'Keeffe, Mel Ó Cinnéide,
	\emph{Search-Based Refactoring: an empirical study},
	2000.

  \bibitem{fokaefs12}
	Marios Fokaefs, Nikolaos Tsantalis,
	\emph{Identification and application of Extract Class refactorings in object-oriented systems}
	2012.

  \bibitem{soares11}
	Gustavo Soares, Bruno Catao, Catuxe Varjao, Solon Aguiar, Rohit Gheyi, Tiago Massoni,
	\emph{Analyzing Refactorings on Software Repositories},
	2011.

  \bibitem{groves00}
	L. Groves,
	\emph{A formal approach to program modification},
	2000.

  \bibitem{stolz11}
	Volker Stolz,
	\emph{Thesis proposal: } \url{http://heim.ifi.uio.no/~stolz/Volker_Stolz_-_UiO/Project_Safer_Refactorings.html}
	2011.

  \bibitem{eclipse_ORG}
	Eclipse IDE: \url{http://www.eclipse.org}




\end{thebibliography}


\end{document}
