05 Fakultät Informatik, Elektrotechnik und Informationstechnik
Permanent URI for this collectionhttps://elib.uni-stuttgart.de/handle/11682/6
Browse
2 results
Search Results
Item Open Access Exploring the adoption of Java version features and their relationship to software quality on GitHub(2023) Abajirov, DanielDie Fortschritte in der Softwareentwicklung haben die kontinuierliche Evolution von Programmiersprachen vorangetrieben, wobei Java ein Beispiel mit seinen vielen Hauptversionen seit 1996 ist. Mit jeder neuen Version werden Leistung, Benutzerfreundlichkeit und Robustheit verbessert, um den Herausforderungen der modernen Softwareentwicklung gerecht zu werden. Es gibt jedoch, obwohl ein Verständnis für die Verbesserungen, die jede Version mit sich bringt, vorliegt, einen Mangel an moderner Forschung über die praktischen Vorteile und Auswirkungen dieser Funktionen auf die Softwarequalität sowie die Adoptionsrate dieser Versionsfunktionen. Unsere Forschung nutzte eine Kombination aus umfangreichen Data-Mining-Techniken und einem quantitativen Umfrageansatz. Wir analysierten 2.167 GitHub-Repositories, die drei wichtige Java-LTS-Versionen (8, 11, 17) umspannen. Um unsere Ergebnisse zu ergänzen, führten wir eine Umfrage mit 47 Entwicklern mit unterschiedlichen Berufsjahren durch, wobei wir geschlossene Fragen verwendeten, um quantitative Erkenntnisse abzuleiten, die mit unseren primären Forschungsergebnissen verglichen werden konnten. Wir beobachteten eine überraschende Unterbenutzung von Java-eigenen Methoden. Im Durchschnitt wurden nur 1,03 Methoden pro KLOC verwendet. Interessanterweise wurde eine geringere Nutzung in den Versionen 8 bis 17 beobachtet, während Java 6 eine signifikante Methodenadoption zeigte. Diese Ergebnisse stehen im Gegensatz zu den Umfrageergebnissen, in denen Entwickler eine hohe Nutzung von Java-eigenen Methoden berichteten. Darüber hinaus fanden wir heraus, dass die Auswirkungen auf die Softwarequalität, gemessen an der Anzahl von Bugs und Code Smells pro KLOC, minimal waren. Die Auswahl des Anwendungsgebiets scheint auch keinen signifikanten Einfluss auf die Verwendung von Java-eigenen Methoden zu haben. Die Diskrepanz zwischen den Praktiken in Open-Source-Projekten auf GitHub und den Wahrnehmungen der Entwickler weist auf eine geschichtete Komplexität in den Softwareentwicklungspraktiken hin. Unsere Studie unterstreicht die Notwendigkeit eines erhöhten Bewusstseins und gezielter Strategien, um die sich entwickelnden Fähigkeiten von Java-Versionen voll auszuschöpfen.Item Open Access Does functional programming improve software quality? : an empirical analysis of open source projects on GitHub(2021) Abajirov, DanielNowadays, there are not many studies that have empirically analyzed the effect of functional programming on software quality. Through the era of microservices and cloud-based systems, functional programming is experiencing a growing usage. This is due to the features that this paradigm offers and the benefits that follow. With this study we want to find out if there is a correlation between functional programming language and software quality. To determine the impact of functional programming on software quality, we conducted an empirical study. This study was inspired by the lack of empirical evidence of this impact. To address this lack, we have collected a large dataset from GitHub (eight programming languages, four functional and four imperative, 400 projects, 200 using a functional languages and 200 using an imperative one) that we will analyze to gather information on various aspects of software quality such as maintainability, reliability and further to test our hypotheses. Several tools and techniques were used for the analysis. For maintainability, we used a static analysis tool, SonarQube. For reliability, we analyzed the commit history of each project looking for bugs and categorized them. To determine the domains of each project, we implemented a classification algorithm in Python. As input for this algorithm, we used the information in each project’s “README.md” to obtain a list of possible topics. With this list we were able to classify each project to its domain performing a manual classification. We also categorize bugs from the commit history into eight categories. Above all, it seems that functional programming languages provide good reliability compared to imperative languages. In general, it cannot be said that functional languages have a positive influence on software quality, since for maintainability there is not enough evidence to show that functional programming languages have less code smells that imperative programming languages. The results also indicate that for domains such as applications, databases, and libraries, the use of a functional language could decrease the frequency of programming bugs.