Not logged in.

Contribution Details

Type Master's Thesis
Scope Discipline-based scholarship
Title Changelyzer: Learning Change Type Classifications for Software Evolution from Big Code on GitHub
Organization Unit
Authors
  • Sali Zumberi
Supervisors
  • Harald Gall
  • Jürgen Cito
Language
  • English
Institution University of Zurich
Faculty Faculty of Business, Economics and Informatics
Date 2018
Abstract Text Software needs to be adapted to its rapidly changing environment. A key issue in software evolution analysis is the identification of particular changes that occur across several versions of a program. In order to understand and analyse source code changes, it is crucial to make them tangible. While plain-text diffs are a straight-forward way of keeping track of changes in a software project, they are poorly suited for understanding those changes. Different semantic changes might be mixed together in a single diff and it is difficult to further process diffs using automated tools. Approaches like ChangeDistiller extract changes between two revisions based on abstract syntax trees (ASTs) instead of plain text source code. This allows them to recognize semantic changes. More specifically, whether certain elements (if conditions, classes, methods, etc.) have been added, removed, modified or even moved to other locations in the source code. However, change types identified by ChangeDistiller have been manually crafted by researchers. This thesis tries to extract common change types by applying big data analytics including clustering, word embeddings and topic modelling techniques on changes of over 500 projects (18.6 GB). We were able to find more than 70 common change types, use neural network to show similar changes, cluster similar changes into 55 clusters, then extract 35 topics with help of topic modelling and last but not least prove existence of change-groups within larger diffs by implementing a sophisticated algorithm. Finally, we propose tools and tasks based on provided data corpus.
Zusammenfassung Software muss kontinuierlich an ihre sich schnell verändernde Umgebung angepasst werden. Ein zentrales Thema in der Softwareevolutionsanalyse ist die Identifizierung bestimmter Änderungen, die über mehrere Versionen eines Programms hinweg auftreten. Um Software Veränderungen zu verstehen und zu analysieren, ist es entscheidend, sie greifbar zu machen. Während Plain-Text-Differenzen eine einfache weitverbreitete Möglichkeit sind, Änderungen in einem Softwareprojekt zu verfolgen, sind sie schlecht geeignet, diese Änderungen zu verstehen. Verschiedene semantische Änderungen können in einem einzigen Diff zusammengefasst werden, und es ist schwierig, Diffs mit automatisierten Werkzeugen weiterzuverarbeiten. Ansätze wie ChangeDistiller extrahieren Änderungen zwischen zwei Revisionen, die auf abstrakten Syntaxbäumen (ASTs) anstelle von Klartext-Quellcode basieren. So können sie semantische Veränderungen erkennen. Genauer gesagt, ob bestimmte Elemente (wenn Bedingungen, Klassen, Methoden usw.) hinzugefügt, entfernt, modifiziert oder sogar an andere Stellen im Quellcode verschoben wurden. Die vom ChangeDistiller identifizierten Änderungsarten wurden jedoch von den Forschern manuell erstellt. Diese Masterarbeit versucht, gängige Change-Typen mithilfe von Big Data Analyse zu extrahieren, unter anderem werden Clustering, Worteinbettungen und Themenmodellierungstechniken bei Änderungen von über 500 Projekten (18,6 GB) einsetzt. Wir konnten mehr als 70 gängige Change-Typen finden, neuronale Netze verwenden, um ähnliche Änderungen darzustellen, ähnliche Änderungen in 55 Clustern zusammenfassen, dann 35 Themen mit Hilfe von Themenmodellierung extrahieren und nicht zuletzt die Existenz von Change-Gruppen innerhalb grösserer Diffs durch die Implementierung eines ausgeklügelten Algorithmus nachweisen. Schliefllich schlagen wir Werkzeuge und Aufgaben vor, die auf dem bereitgestellten Datenkorpus basieren.
PDF File Download
Export BibTeX