Bitte benutzen Sie diese Kennung, um auf die Ressource zu verweisen: http://dx.doi.org/10.18419/opus-13353
Autor(en): Hauser, Marius
Titel: Machine Learning frameworks in open-source software : an exploratory study on code and project smells
Erscheinungsdatum: 2023
Dokumentart: Abschlussarbeit (Master)
Seiten: vii, 55
URI: http://nbn-resolving.de/urn:nbn:de:bsz:93-opus-ds-133724
http://elib.uni-stuttgart.de/handle/11682/13372
http://dx.doi.org/10.18419/opus-13353
Zusammenfassung: Machine Learning (ML) gained an increasing amount of interest in recent years. The widespread use of ML systems raises questions regarding technical debt and the utilisation of good software engineering practices. ML systems are complex systems which are faced with additional challenges, compared to traditional software systems. These additional challenges are among others facilitated in the areas of dependency management and data versioning which can lead to an increased susceptibility to technical debt. To address those new challenges, this study investigates how the choice of a ML library is associated with types and frequency of code and project smells. This study additionally acquires the distribution of application areas in open-source projects that use Machine Learning libraries. In this study repository mining is performed, followed by a large-scale analysis of code and project smells using SonarQube and mllint. SonarQube is used to find code smells in python source code and project smells are tracked using a score calculated by mllint. A lower mllint score corresponds to more project smells. All mined repositories are categorised in domain categories using an automated classifier and in exploratory found topics using Latent Dirichlet Allocation. This study analyses 6,840 open-source software repositories which use the ML libraries "Tensor-Flow", "Scikit-learn", "Transformers", "Keras", "PyTorch", "Keras", and "Keras & TensorFlow". Violations of naming conventions, commented-out code sections, and high cognitive complexity of source code sections are the most prominent code smells found among all repositories. Several correlations between projects using ML libraries and the frequency of code and project smells have been found. Statistical analysis revealed that using TensorFlow as ML library is associated with ~12.6% more code smells per 1,000 LoC than using Transformers. Using Scikit-learn is correlated with a ~25% higher mllint score compared to TensorFlow and a ~44% higher mllintscore than using PyTorch. Regarding project smells this study revealed that using Transformers is correlated with a ~13% higher average mllint score than using TensorFlow. Application areas of Machine Learning libraries are for the most part in line with the areas advertised by their publishers. This is, among other reasons, due to the general application of their libraries as stated by their publishers. Based on this study, future work can investigate causal relationships between ML libraries which are associated with a higher frequency of code and project smells than other ML libraries. Furthermore, an investigation of practitioners, maintainers, and developers working with ML libraries can reveal differences in the types of users and formulate best practices to reduce code and project smell
Machine Learning (ML) hat in den letzten Jahren immer mehr an Popularität gewonnen. Der weit verbreitete Einsatz von ML-Systemen wirft Fragen zur technical debt und zur Anwendung guter Softwareentwicklungspraktiken auf. ML-Systeme sind komplexe Systeme, die im Vergleich zu traditionellen Softwaresystemen mit zusätzlichen Herausforderungen konfrontiert sind. Diese zusätzlichen Herausforderungen liegen unter anderem in den Bereichen Abhängigkeitsmanagement und Datenversionierung, die zu einer erhöhten Anfälligkeit für technische Schulden führen können. Um diesen neuen Herausforderungen zu begegnen, wird in dieser Studie untersucht, wie die Wahl einer ML-Bibliothek mit der Art und Häufigkeit von Code- und Projekt-Smells zusammenhängt. Darüber hinaus wird in dieser Studie die Verteilung der Anwendungsbereiche in Open-Source- Projekten, die Machine Learning-Bibliotheken verwenden, erfasst. In dieser Studie wird ein Repository Mining durchgeführt, gefolgt von einer groß angelegten Analyse von Code- und Projekt-Smells mit SonarQube und mllint. SonarQube wird verwendet, um Code-Smells im Python-Quellcode aller analysierten Repositories zu finden. Projektgerüche werden anhand der mllint-Punktzahl verfolgt. Eine niedrigere mllint-Punktzahl entspricht mehr Projekt-Smells. Alle untersuchten Repositories werden in Domänenkategorien und mithilfe von Latent Dirichlet Allocation in explorativ gefundene Themen kategorisiert. Diese Studie analysiert 6.840 Open-Source-Software-Repositories, die die ML-Bibliotheken "TensorFlow", "Scikit-learn", "Transformers", "Keras", "PyTorch", "Keras" und "Keras & TensorFlow" verwenden. Verstöße gegen Namenskonventionen, auskommentierte Codeabschnitte und eine hohe kognitive Komplexität von Quellcodeabschnitten sind die auffälligsten Code-Smells, die in allen Repositories gefunden wurden. Es wurden mehrere Korrelationen zwischen Projekten, die ML-Bibliotheken verwenden, und der Häufung von Code- und Projekt-Smells. Die statistische Analyse ergab, dass die Verwendung von TensorFlow als ML-Bibliothek mit ~12,6% mehr Code-Smells pro 1.000 LoC verbunden ist als die Verwendung von Transformers. Die Verwendung von Scikit-learn korreliert mit einem ~25% höheren mllint-Wert im Vergleich zu TensorFlow und einem ~44% höheren mllint-Wert als die Verwendung von PyTorch. Im Bezug auf Projekt-Smells hat diese Studie ergeben, dass die Verwendung von Transformers, im Vergleich zur Verwendung von TensorFlow, mit einer ~13% höheren durchschnittlichen mllint-Punktzahl korreliert. Anwendungsbereiche von Machine Learning-Bibliotheken stimmen weitgehend mit den von ihren Herausgebern beworbenen Bereichen überein. Dies ist unter anderem auf die von den Herausgebern angegebene allgemeine Anwendbarkeit der Bibliotheken zurückzuführen. Auf der Grundlage dieser Studie können künftige Arbeiten kausale Zusammenhänge zwischen ML-Bibliotheken untersuchen, die mit einer höheren Häufigkeit von Code- und Projekt-Smells verbunden sind als andere ML-Bibliotheken. Darüber hinaus kann eine Untersuchung von Anwendern, Betreuern und Entwicklern, die mit ML-Bibliotheken arbeiten unterschiede in den Benutzertypen aufdecken und Best Practices zur Reduzierung von Code- und Projekt-Smells formulieren.
Enthalten in den Sammlungen:05 Fakultät Informatik, Elektrotechnik und Informationstechnik

Dateien zu dieser Ressource:
Datei Beschreibung GrößeFormat 
msc-thesis_marius-hauser.pdf4,11 MBAdobe PDFÖffnen/Anzeigen


Alle Ressourcen in diesem Repositorium sind urheberrechtlich geschützt.