Not logged in.

Contribution Details

Type Master's Thesis
Scope Discipline-based scholarship
Title Refactorizer: Detecting Refactorings with Evolizer
Organization Unit
Authors
  • Jef Van Loon
Supervisors
  • Harald Gall
  • Michael Würsch
  • Emanuel Giger
Institution University of Zurich
Faculty Faculty of Economics, Business Administration and Information Technology
Date 2009
Abstract Text Software systems have to evolve continually to meet their changing requirements. Refactorings are systematic, behavior-preserving changes to software systems intended to improve their inter- nal structure. Today, refactoring is considered a state of the art technique in software develop- ment. Refactorings have a positive impact on the understandability and maintainability of a software system. Another important property is that their catalogued names capture the intent of the underlying changes and provide an accurate vocabulary for communicating changes at a much higher level of abstraction than the insertion or removal of individual lines of code. A similar property has been attributed to the design patterns of Gamma et al.; giving mean- ingful names not only reveals the intent and structure of a pattern but also allows for efficient communication of design concepts. It is not only crucial to understand what changes have hap- pened but also what changes need to be made in order to maintain the understandability and extensibility of a software system. Therefore, another goal of refactoring research is to develop approaches for anticipating and suggesting possible refactorings to developers—which requires understanding past changes and refactorings. Based on the EVOLIZER framework, which offers advanced modeling and data extraction fa- cilities, and FAMIX, a meta model for modeling the structure of object-oriented software systems, this thesis presents the approach, implementation and evaluation of REFACTORIZER, a prototype tool for detecting refactorings in the development history of a software system. The main goals of the approach are to be intuitive and light-weight. This means that the ap- proach builds on the vocabulary and understanding of a software developer about how programs are composed and uses a simple representation of the structure of a software system to formulate intuitive FAMIX-based heuristics.
Zusammenfassung Software-Systeme müssen laufend angepasst werden, um den ändernden Anforderungen gerecht zu werden. Refactorings sind systematische, verhaltens-bewahrende Änderungen an Software- Systemen mit dem Ziel, deren interne Struktur zu verbessern. Refactoring ist heutzutage eine etablierte Arbeitstechnik in der Software-Entwicklung. Refactorings verbessern nicht nur die Verständlichkeit und erleichtern die Wartung von Soft- ware-Systemen, sondern stellen auch ein Vokabular für eine effiziente Kommunikation bereit. Eine ähnliche Eigenschaft wird auch den Entwurfsmustern von Gamma et al. zugeordnet: Aussagekräftige Namen beschreiben nicht nur die Absicht und Struktur von Entwurfsmustern, sondern erlauben eine effiziente Kommunkation von Entwurfskonzepten. Allerdings ist nicht nur das Verständnis von bereits erfolgten Änderungen nötig, sondern auch dasjenige von Änderungen, die in Zukunft nötig sein werden, um die Verständlichkeit und Wartbarkeit eines Systems sicherzustellen. Ziel der Refactoring-Forschung ist, Verfahren zu ent- wickeln, mit denen nötige Refactorings frühzeitig erkannt und vorgeschlagen werden können. Dies setzt jedoch das Verständnis von vergangenen Änderungen und Refactorings voraus. Basierend auf dem EVOLIZER-Framework, welches umfangreiche Modellierungs- und Daten- extraktions-Möglichkeiten bereitstellt, und FAMIX, einem Metamodell, welches die Modellierung der Struktur von objektorientierten Software-Systemen ermöglicht, stellt diese Arbeit den Ansatz, die Implementierung und die Auswertung von REFACTORIZER vor, einem Prototypen zur Extrak- tion von Refactorings aus der Entwicklungsgeschichte eines Softwareprojekts. REFACTORIZER ist ein intuitiver und leichtgewichtiger Ansatz, welcher beim Verständnis von Softwareentwicklern betreffend des Aufbaus von Programmen ansetzt und eine einfache Reprä- sentation der Struktur eines Software-Systems verwendet, um intuitive FAMIX-basierte Heuris- tiken zu formulieren.
Export BibTeX