You are here: SE » ThesesHome » XArbeitKontextRefactoring

Komplexität durch Refactoring im Kontext (Masterarbeit)

bearbeitet durch: Elmar Frerichs

Outline

Refactoring bezeichnet das Verbessern der Struktur von Code, ohne das beobachtbare Verhalten zu verändern. [Fowler 1999] Häufig sind solche Verbesserungen jedoch im Kontext einer Funktionsänderung anzutreffen: Als Nachbereitung, um offenbar gewordene Code Smells zu beheben, oder als Vorbereitung, um neue Funktionalität einfacher zu implementieren oder überhaupt erst möglich zu machen.

Ein Ansatz bei existierender Forschung zum Thema Refactoring ist die quantitativen Analysen der Änderungshistorie aus Versionsverwaltungssystemen. Diese enthalten neben einer Zuordnung zum ausführenden Entwickler und der Änderung selbst meist einen Kommentar, aus welchem sich im Idealfall die Intention des Entwicklers ableiten lässt. Zudem wurden Werkzeuge entwickelt, um automatisch Änderungen an der Klassenstrukur zu erkennen.

In dieser Arbeit untersuche ich die zugrunde liegenenden Daten, der Pull Requests und Commits, einer solchen quantitativen Studie genauer. Das Augenmerk liegt hierbei auf der zusätzlichen Betrachtung des jeweiligen Kontextes, um zusätzliche Signale und unterschiedliche Verhaltensweisen beim Umgang mit Refactorings aufzuzeigen. Dabei beachte ich Zusammenhänge in der Commit-Zeit, der ausführenden Personen sowie die Verknüpfung des geänderten Codes genauso wie verlinke Dokumentation in Github-Issues, Wikis und weitere Pull Requests.

Ich bestätige die Anmerkung aus früheren Studien, dass Refactoring sehr häufig im Kontext von neuen Funktionen oder Fehlerbehebungen zu finden ist. Zudem zeige ich Unterschiede in der Diskussion innerhalb des Pull Requests sowie den Einfluss anderer Entwickler auf die Durchführung von Refactorings. Zum Schluss zeige ich noch einige Sonderfälle auf, wie ein Refactoring, welches erst einige Monate nach lokaler Änderung vorgestellt und akzeptiert wurde.