Bibliography | Abajirov, Daniel: Does functional programming improve software quality? An empirical analysis of open source projects on GitHub. University of Stuttgart, Faculty of Computer Science, Electrical Engineering, and Information Technology, Bachelor Thesis No. 31 (2021). 52 pages, english.
|
Abstract | Nowadays, 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.
|