title: Microservices
title: Softwarearchitektur mit Einfluss auf Codequalität
titleType: Subtitle
Creators: name: Kainz, Hannes
Publisher: name: FH CAMPUS 02 (CAMPUS 02 Fachhochschule der Wirtschaft)
Year: 2023
Subjects: subject: 005 Computerprogrammierung, Programme, Daten

description: Der Fokus dieser Arbeit liegt auf dem Identifizieren und Verifizieren des Einflusses von Microservices auf die Codequalität von Softwareanwendungen. Im ersten Teil der Arbeit sind Definitionen und Architekturen der untersuchten Softwareapplikationen dargelegt. Dies beinhaltet die Definition von monolithischer Software und deren Architektur und die Definition von Microservices mit seinen Vorteilen (zum Beispiel die Skalierung durch automatisiertes Deployment) und Nachteilen (zum Beispiel höhere Komplexität durch die erhöhte Anzahl von Softwareteilen). Darauf folgt eine Analyse von den ähnlichen Softwarearchitekturkonzepten der serviceorientierten Architektur und den Self-contained Services. Der Theorieteil zu Microservices endet mit der Darstellung von Methoden zur Trennung von monolithischer Software in Microservices und wie diese Dienste wieder zu einer Gesamtanwendung zusammengeführt werden können. Zur Vervollständigung ist der aktuelle Forschungsstand auf dem Gebiet der Microservices angeführt und es wird ein Einblick in eine Auswahl an Softwaremetriken zur Erhebung von Softwarequalität gegeben. Im praktischen Teil der Arbeit wurden die theoretischen Erkenntnisse an einer Softwareapplikation angewandt. Von einem Monolithen wurden Microservices abgespalten und die resultierende Anwendung als auch der Monolith einer Softwarearchitekturanalyse unterzogen. Danach wurden Softwaremetriken für die Ausgangsapplikation und die Microservices berechnet, um festzustellen, ob sich die Codequalität verändert hat. Zum Abschluss wurde eine Analyse der Änderungsgeschwindigkeit in beiden Applikationen durchgeführt, gefolgt von Interviews mit Softwareentwicklern zu dem Qualitätsmerkmal Lesbarkeit von Quellcode. Die Ergebnisse zeigen eine Verringerung der Komplexität des entstandenen Quellcodes und eine Erhöhung der Lesbarkeit gegenüber der Ausgangsanwendung.
description: The main goal of this thesis was to identify and verify the influence of the microservices software architecture on code quality. To this end, the thesis first presents the current state of research in the field of microservices, as well as definitions and an architecture analysis of software with a monolithic design approach. The first part covers these monolithic applications and then defines microservices, including a discussion of their advantages (e.g. rapid scaling through automated deployment) and disadvantages (e.g. higher complexity due to incrased number of services in an application). Next, the similar software architectures of serviceoriented architecture and self-contained services are compared to microservices. The second part of the thesis then explains methods for separating a monolithic application into microservices and then integrating those services. The theory section concludes with a description of software metrics (with a focus on code quality) and how to calculate them. In the practical portion of the thesis, the theoretical knowledge was then applied to transform a monolithic application into a system containing microservices. The monolith and the resulting microservices were then examined and compared using a series of software architecture analysis methods. Software metric analysis was performed on the resulting applications in order to determine if microservices improved code quality. Next, the time developers needed to change those applications was determined, in order to document differences in development speed. In the final step, the developers were interviewed to obtain their opinions about the influence of microservices on code readability. The results show that the duration of application changes is not affected by the conversion from monolithic application to microservices. However, the other findings indicate that the complexity decreases and the readability improves.