Brosch, F. (2015). Mining software repositories : implementing a light-weight tool in the MSR area by applying NLP methods [Diploma Thesis, Technische Universität Wien]. reposiTUm. http://hdl.handle.net/20.500.12708/78470
-
Number of Pages:
124
-
Abstract:
Mining Software Repositories (MSR) beschaeftigt sich mit der Analyse von Software Repositories wie Issue Tracker, Mailing Lists und Versionskontrollsysteme auf Basis von Data Mining und empirischen Studien. Arbeiten in diesem Feld verwenden Techniken wie Machine Learning, die Analyse von Quellcode und Knowledge Discovery zur Untersuchung von Aufgabenstellungen in Software Engineering und Software Evolution, sowie zur automatischen Erkennung von Fehlern. Dabei greifen MSR und Medizinische Informatik partiell auf dieselben Techniken zurueck, wie z.B. Machine Learning, Classification und Data Mining. Zusaetzlich spielt Software Engineering und Evolution eine wichtige Rolle in modernen Gesundheitssystemen. Diese Arbeit dokumentiert und praesentiert die Entwicklung und Planung eines neuen Frameworks fuer Repository Mining, welches sich auf Software Evolution spezialisiert und die Analyse von natuerlicher Sprache in Source Code Repositories und Issue Tracker in den Mittelpunkt stellt. Dazu gehoert die automatische Klassifikation von Commits und gemeldeten Bugs anhand ihrer Beschreibungen, das Aufspueren von Beziehungen zwischen gemeldeten Bugs und Commits, Verbindungen zwischen verschiedenen Accounts von realen Personen und die automatische Bewertung von Sentiment ("Stimmung") in Diskussionen. Zusaetzlich bietet das Framework eine konfigurierbare Benutzeroberflaeche, welche die gesammelten Daten mithilfe von beschreibender Statistik visualisiert und erlaubt mit diesen zu interagieren. Die Oberflaeche bietet verschiedene Sichtweisen: Projekte, einzelne Personen und Personengruppen. Dabei koennen diese Sichtweisen ueber Konfigurationsdateien nach Bedarf um verschiedene Diagramme erweitert werden. Zusaetzlich wird der Commit-Klassifikator analysiert. Dabei wird das Ergebnis der automatischen Klassifikation mit einer haendisch-erstellten Referenz verglichen. Die Evaluierung zeichnet sich besonders durch die Quelle der Referenz aus. Waehrend diese ueblicherweise von verschiedenen externen Entwicklern bereitgestellt werden, basiert die vorgenommene Analyse auf einer Umfrage unter erfahrenen Projektleitern und Kernentwicklern sechs erfolgreicher quelloffener Projekte. Die Referenz wurde zusaetzlich innerhalb der International Working Conference on Mining Software Repositories 2015 publiziert. Die Analyse beinhaltet eine genaue Aufschluesselung von Klassifikationsfehlern und diskutiert moegliche Verbesserungsmoeglichkeiten. Die Analyse zeigt, dass Textklassifikation mit einem Kappa von 0.343, einer Sensitivity von 0.579 und einer Precision von 0.613 eine ernstzunehmende Alternative zur Klassifikation von Source Code-Aenderungen darstellt. Weiters zeigt diese, dass die Qualitaet des Klassifikators stark von Eigenschaften wie Issue Tracker-Referenzen und den verwendeten Dokumentmodellen abhaengt. Die Kennwerte sind signifikant geringer als bei der urspruenglichen Evaluierung, basierend auf externen Entwicklern. Dies weist auf die Signifikanz von kontextabhaengigen Informationen bei der Erstellung der Ground Truth hin, die nur projektinternen Entwicklern zur Verfuegung stehen.
Mining Software Repository (MSR) is the field of applying data mining techniques to software repositories such as issue trackers, mailing lists and version control systems to study changes or to ease the development process based on empirical studies. Researchers in this field use techniques including machine learning, source code analysis and knowledge discovery to study topics from software engineering, software evolution and defect predictions. The field of MSR relates to health care informatics as both share basic techniques including machine learning, classification and data mining, while software engineering and evolution play an important role in modern health care systems. This thesis implements a flexible framework for repository mining that focuses on software evolution by analysing natural language in software repositories, including version control systems and issue trackers. It uses text classification techniques to analyse the type of code modifications or tracked issues, interlinks users between both repositories, detects relations between software changes and reported tickets. It analyses the sentiment of and between users in natural language on sentence level by rating each. The framework provides a configurable user interface that visualises mined data and allows interacting with it. It presents data in different views, including a project-view, user view and a user group view. It enables researchers to re-arrange it and to define what to show. In addition, we evaluate the code modification classifier based on high-quality data by comparing automatic classification with a hand-labelled corpus. These labels are usually applied by external developers who lack insight in a project. To overcome this limitation, we collected ground truth based on a survey among maintainers and experienced core developers of six successful open source projects. We analysed all classification errors in detail and proposed improvements based on our findings. We published an intersection of the ground truth in MSR 2015 to support the broader community. Our evaluations show that text classification is sufficient to classify commits with an average kappa of 0.343, sensitivity of 0.579 and precision of 0.613. Furthermore, we demonstrate that the per- formance of our classifier is highly dependent on features such as issue tracker references and the lack of a concept of phrases. Determined values are significant lower than for the original evaluation based on external developers and a different set of projects. This indicates that contextual information not known by external developers play a significant role when collecting ground truth.
en
Keywords:
Mining Software Repositories; Data Mining; Bug Mining; Issue Tracker Mining; Software Evolution; Sentinent Analysis; Bug Classification; Commit Classification; Data Interlinking