title: Software Complexity of a Monadic Style in Object-Oriented Programming
Creators: name: Kotrba, Julian
Publisher: name: TU Wien
Year: 2020
Subjects: subject: Software Komplexität
subject: Monaden
subject: Funktionale Programmierung
subject: Objektorientierte Programmierung
subject: Software Complexity
subject: Monads
subject: Functional Programming
subject: Object-Oriented Programming

description: Über die letzten Jahre hinweg konnte ein Trend in der Entwicklung von Multiparadigmen-Programmiersprachen und der Erweiterung von Programmiersprachen mit Features aus anderen Programmiersprachen oder Programmierparadigmen festgestellt werden.Die vorliegende Arbeit beschäftigt sich mit den Auswirkungen der Verwendung eines Konzeptes aus der funktionalen Programmierung, welches im Bereich der objektorientierten Programmierung angewendet wird. Im speziellen wurde die praktische Auswirkung eines monadischen Programmierstiles in der Datenzugriffsschicht auf die Softwarekomplexität in einer bestehenden, in Java programmierten, Android Anwendungssoftware untersucht. Die Ergebnisse wurden durch Messung der Komplexitätsmetriken Non-Comment Lines of Code, Cyclomatic Complexity und Halstead Difficulty vor und nach dem Umschreiben von Teilen des Quellcodes ermittelt.Um sicherzustellen, dass Komplexitätsänderungen nach dem Umschreiben des Quellcodes auf den monadischen Programmierstil zurückzuführen sind, um eine hohe Reproduzierbarkeit erreichen und mögliche Verzerrungen der Ergebnisse minimieren zu können, wurde zusätzlich im Rahmen dieser Arbeit ein umfangreiches Regelwerk für den Umschreibungsprozess definiert. Teile des Quellcodes wurden folglich unter Einhaltung dieser definierten Regeln adaptiert.Bei der Bewertung der Gesamtergebnisse konnte eine Diskrepanz zwischen den verwendeten Metriken zur Messung der Komplexität festgestellt werden. Eine detailliertere Analyse zeigte jedoch, dass unter bestimmten Umständen eine deutliche Verringerung (Verbesserung) der Komplexität erreicht werden konnte. Liegen diese Umstände nicht vor, wurde teilweise eine deutliche Verschlechterung beziehungsweise ein Gleichbleiben der Komplexität erzielt.
description: In recent years, a trend in developing multi-paradigm programming languages and the extension of programming languages with features from other programming languages or programming paradigms has been observed.This thesis researches the impact of the usage of a concept from the functional programming paradigm in the field of object-oriented programming. In particular, the practical impact of a monadic programming style in the data access layer on the software complexity of an Android application software programmed in Java was examined. The results were determined by the measurement of the complexity metrics Lines Of Code, Cyclomatic Complexity and Halstead Difficulty before and after rewriting parts of the source code.To ensure that changes in software complexity after rewriting the source code can be attributed to the monadic programming style, to achieve a high level of reproducibility and to minimize rewriting bias, an extensive set of rules for the rewriting process was also defined. The rewriting of parts of the source code was then conducted in compliance with the established rules.The evaluation of the overall results showed a disconnect between the used software complexity metrics. However, a detailed analysis showed that under certain circumstances, a significant reduction (improvement) of the software complexity could be achieved. Otherwise, the software complexity remained unchanged or has significantly increased.