Universität Stuttgart
Permanent URI for this communityhttps://elib.uni-stuttgart.de/handle/11682/1
Browse
Search Results
Item Open Access A methodology and initial exploration of personality traits of GitHub Developers as expressed in GitHub issues(2019) Greinert, FlorianSoftware engineering as a collaborative task relies on the fact that people work together. This work can be influenced by personalities of the participating developers and because projects can fail because of individual differences it becomes more important to understand the human side of software engineering. This work will look at the question of GitHub issues can be used to study the personality of its authors and which, if any, constraints may apply. Using LIWC a methodology will be developed to facilitate that research with a firm grounding in personality theory and it’s practical usage within the domain of software engineering using the Five Factor Model to construct a personality profile of the type of users on GitHub who open up and comment in issues.Item Open Access Evaluating the Effectiveness of Proposed Service-based Maintainability Metrics for Microservices(2019) Szidlovszky, MarcelDie Wartung von Softwaresystemen ist ein kritischer Prozess in der Entwicklung. Obwohl die Kosten der Wartung auf 60-80% des Softwareentwicklungslebenszyklus geschätzt wird, kommt es trotzdem häufig vor, dass in der Entwicklung die Wartbarkeit an letzter Stelle gesetzt und man den Fokus mehr auf andere Komponenten legt. Dies bekommen, dann die Entwickler, die aus präventiven, korrektiven, adaptiven oder perfektiven Gründen die Software warten müssen, zu spüren. Um eine aufwändige Wartung richtig planen zu können, das heißt den Kosten- und Zeitaufwand zu schätzen, muss man als erstes bestimmen wie wartbar eine Software ist. Dafür werden vor allem Statische-Code und Runtime-Daten Analysen verwendet, welche sich unter anderem auch auf Software Metriken beziehen. Für die herkömmlichen Monolithische Architekturen gibt es bereits eine Menge Literatur, die die Wirksamkeit von Wartbarkeitsmetriken bewertet und nachweist. Da es aber in den letzten Jahren, vor allem bei großen Enterprise Systemen und Software As A Service (SAAS) einen Wechsel von Monolithischen Architekturen zu Microservice Architekturen gab, müssen wir uns anpassen. Weltbekannte Webservices wie Netflix und Amazon zeigen uns dabei wie erfolgreich dieser relativ neuer Architekturtyp sein kann. Diese Systeme folgen dem SAAS Modell und haben somit einen konstanten Wartungsprozess, wobei eine effektive Wartbarkeitsmessung, sehr von Vorteil wäre. Mit diesem Paper wollen wir die Lücke in der Literatur füllen und evaluieren ob Service-basierte Wartbarkeitsmetriken effektiv für Microservices benutzt werden können. Spezifisch sollen bisher noch nicht evaluierte Service-basierten Metriken untersucht werden. Um dieses Ziel zu erreichen wurde als erstes eine aktuelle Liste von vorgestellten Service-basierten Wartbarkeitsmetriken erstellt und eine Menge von Beispielsystemen zusammengestellt, anhand deren wir die Messbarkeit und Effektivität evaluieren können. Die Effektivität wurde dabei über die Messbarkeit und der Aussagekraft der untersuchten Metriken bestimmt. Die Aussagekraft wurde mithilfe folgender Evaluationsmethoden evaluiert: Zum einen wurde eine Korrelation zwischen Metriken und Expertenbewertungen, basierend auf den Wartbarkeitseigenschaften: Größe, Kopplung und Kohäsion, für Beispielsysteme aufgestellt und nach signifikanten Übereinstimmungen untersucht. Der zweite Teil der Evaluation beinhaltet eine Szenario-basierte Analyse, in der qualitativ Evaluiert wurde, wie Metriken im Verhältnis zu theoretischen Reaktionen von Architekturen stehen. Dabei wurde analysiert ob sie den geschätzten Aufwand und die Verschiedenheiten, der Reaktionen von den verschiedenen Architekturen, vorhersagen konnten. Das Ergebnis der Evaluationen zeigt, dass sowohl die untersuchten Kopplungsmetriken, als auch Größenmetriken, sehr effektiv sein können um die Wartbarkeit zu bestimmen. Allerdings konnte keine Aussage über die untersuchte Kohäsionsmetrik getroffen werden, da sich herausgestellt hat, dass die, für die Evaluation benutzten Beispielsysteme, möglicherweise ungeeignet waren.Item Open Access Automatische Extraktion von Funktionen aus klassifizierten E-Mails(2019) Tiessen, AlexanderIn vielen kleinen und großen Unternehmen hat die Zahl der eintreffenden E-Mails ein hohes Niveau erreicht. Die Bearbeitung dieser E-Mails ist mit einem hohen Zeit- und Kostenaufwand verbunden. Um diesen Aufwand zu reduzieren, wurde ein System entwickelt, das in zwei Teilschritten arbeitet. Zunächst findet eine Klassifikation statt, in der die E-Mails nach der Absicht des Senders klassifiziert werden. Hierfür wurden mehrere Klassifikatoren des maschinellen Lernens miteinander verglichen, um ein bestmögliches Ergebnis zu erreichen. Im zweiten Schritt wurden für geeignete Klassen Parameter definiert, die die Absicht des Senders genauer beschreiben. Die Werte der Parameter werden dann aus den E-Mails extrahiert. Dies wurde mit Hilfe von Natural-Language-Processing- Methoden in Verbindung mit regelbasierten Ansätzen gelöst. In dieser Arbeit wurde ein selbst erstellter E-Mail-Korpus aus ca. 1.500 E-Mails verwendet.Item Open Access Integration Model for Automated Model Generation from Source Code Based on AUTOSAR(2019) Kaiser, ShomaNowadays software development in automotive industry plays an important role. In- creasing networking between vehicle systems and large number of software components lead to high complex systems. A modern high-end car has up to 100 Million lines of code [GTD15]. To master this complexity in the automotive industry, model-driven software development has been introduced. A model is an abstraction of the software. It can be applied on different abstraction levels from different viewpoints. Models are necessary to simplify and develop software. Besides that, in the automotive industry AUTOSAR has been introduced too. The main goal of AUTOSAR is to improve the complexity management of vehicles integrated E/E architectures through increased reuse and exchangeability of software modules. In reality the model-driven software development is not continuously introduced yet. The software development process is just used partly so that components of the development process are incomplete and inconsistent. This leads to the risk of information loss, errors, missing transparency and overall to lose against the complexity. That is because software changes are implemented in source code but not into the corresponding models. Thus, a part of software diagrams in the model-driven software development process are not consistent and model-driven software development not realized continuously. This thesis aims to develop an integration model which applies reverse engineering with modifications to generate software models based on source code. In this integration model AUTOSAR should be considered too. Main goal of the integration model is to automatically generate software architecture models. Goal of these models is to increase source code readability, improve software quality and yield advantages for software engineers. The models should guarantee no information loss, correctness and a good transparency for further software development. Therefore, the practical aspects of the generated models will be considered and evaluated. This integration model will be applied with an example from the software development at Daimler AG. Finally the integration model will be applied as prototype on internal source code.Item Open Access A Validation of Cognitive Complexity as a Measure of Source Code Understandability(2019) Muñoz Barón, MarvinDas Verstehen von Quellcode ist ein wesentlicher Bestandteil des Softwareentwicklungsprozesses. Es hat bereits zahlreiche Versuche gegeben, Quellcodemetriken zu beschreiben, die mit der Verständlichkeit korrelieren, aber nur wenige werden empirisch ausgewertet und diejenigen, die es sind, zeigen keine bedeutsame Unterstützung für ihren Zweck. Eine neuere Anstrengung ist Cognitive Complexity, ein Maß, das speziell als Metrik für die Verständlichkeit beschrieben wird. Das primäre Ziel dieser Studie war es, Beweise für die Bestimmung der Validität von Cognitive Complexity als Maß für die Verständlichkeit von Quellcode zu finden. Um dies zu erreichen, haben wir eine systematische Literaturrecherche geplant und durchgeführt, um Quellcode-Schnipsel zu finden, die in früheren Studien hinsichtlich ihrer Verständlichkeit bewertet wurden. Die Cognitive Complexity dieser Schnipsel wurde dann mit den in den Studien verwendeten Maßen der Verständlichkeit korreliert. Die Literaturrecherche identifizierte Daten aus 14 Studien, die 324 Code-Schnipsel und ungefähr 24.400 individuelle menschliche Auswertungen umfassten und in der Korrelationsanalyse verwendet wurden. Die Ergebnisse zeigen, dass die Cognitive Complexity bei den meisten Maßen aus bestehenden Studien signifikant mit der Verständlichkeit des Quellcodes korreliert. Der Mittelwert der signifikanten Korrelationen betrug 0,654 für die Zeit zum Verstehen und 0,411 für die subjektive Bewertung der Verständlichkeit, Lesbarkeit und der Zuversicht der Studienteilnehmer. Die Korrelation mit der Korrektheit der Veständnisaufgaben zeigte gemischte Ergebnisse, mit einigen signifikanten positiven und einigen signifikanten negativen Korrelationen. Insgesamt zeigen die in dieser Studie gesammelten Beweise eine signifikante Unterstützung für die Validität von Cognitive Complexity. Nach unserer Kenntnis ist Cognitive Complexity die erste rein codebasierte Metrik, die in bedeutsamer Weise mit der Verständlichkeit von Quellcode korreliert.Item Open Access Assessing resilience of software systems by the application of chaos engineering : a case study(2019) Kesim, DominikModern distributed systems more and more frequently adapt the microservice architectural style to design cloud-based systems. However the prevalence of microservice architectures and container orchestration technologies such as Kubernetes increase the complexity of assessing the resilience of such systems. Resilience benchmarking is a means to assess the resilience of software systems by leveraging random fault injections on the application- and network-level. Though current approaches to resilience benchmarking have become inefficient. Chaos engineering is a new, yet, evolving discipline that forces a change in the perspective of how systems are developed with respect to their resilience. The key idea is to apply empirical experimentation in order to learn how a system behaves under turbulent conditions by intentionally injecting failures. Solving the errors found by this approach in addition to repeating the same experiments, allows the system to build up an immunity against failures before they occur in production. In the scope of an industrial case study this work provides means to identify risks and hazards by applying three hazard analysis methods known from engineering safety-critical systems to the domain of chaos engineering, namely i) Fault Tree Analysis as a top-down approach to identify root causes, ii) Failure Mode and Effects Analysis as a component-based inspection of different failure modes, iii) and Computational Hazard and Operations as a means to analyze the system’s communication paths. A dedicated number of the identified hazards are then implemented as chaos engineering experiments in Chaostoolkit in order to be injected on the application-platform-level, i.e., Kubernetes. In total, four experiments have been derived from the findings of the hazard analysis whereas three experiments have been executed and analyzed by applying non-parametric statistical tests to the observations. This work provides a generic approach to assessing the resilience of a distributed system in the context of chaos engineering illustrated by an industrial case study.Item Open Access Experimentelle Untersuchung der Auswirkung von räumlicher Trennung von Teammitgliedern auf das Lösen von Logikaufgaben(2019) Heim, TimoZiel dieser experimentellen Untersuchung ist es die Auswirkungen von räumlicher Trennung auf das Kommunikationsverhalten von Teammitgliedern zu untersuchen. Dabei ging es besonders um die Höhe der Hemmschwelle telefonischen Kontakt aufzubauen. Es wurden 27 Studenten beauftragt Logikaufgaben zu lösen. Bei einigen Aufgaben fehlten Informationen oder waren Fehler enthalten, sodass diese nur nach telefonischem Kontakt zum Versuchsleiter lösbar waren. Dabei wurden sowohl Anzahl, als auch Zeitpunkt der Kontaktaufnahmen erfasst und den Daten einer Vergleichsgruppe gegenübergestellt. Bei dieser zweiten Gruppe war der Versuchsleiter im Raum anwesend und somit ein persönlicher Kontakt jederzeit möglich. Zudem wurden die gegebenen Antworten der Teilnehmer ausgewertet und auf einen Zusammenhang zwischen Kontaktart und Korrektheit der Lösungen untersucht. Die Auswertung zeigt, dass der Teilnehmer den telefonische Kontakt im Vergleich zum persönlichen seltener und später aufbaut und mehr unternimmt, um den Kontakt zu vermeiden. Eine Auswirkung auf die Korrektheit der gegebenen Antworten konnte nicht gezeigt werden.Item Open Access Automatische Durchführung von Refactorings durch Kommentare in GitHub-Pull-Requests(2019) Basaric, StefanUm das Refactoring von JAVA-Projekten automatisieren zu können, wurde der sogenannte Refactoring-Bot entwickelt. Der Refactoring-Bot ist ein JAVA-Projekt, welches in der Lage ist Bots zu konfigurieren, welche sich Daten einer statischen Codeanalyse eines GitHub-Projekts holen, um anschließend die in der Analyse gefundenen Code-Smells automatisiert zu beheben. Der angepasste Code wird zum Schluss den Projektbesitzern in Form eines Pull-Requests vorgeschlagen. In dieser Arbeit wurde der Refactoring-Bot um die Implementierung eines kommentargesteuerten Refactorings erweitert. Dieses soll den GitHub-Projektverantwortlichen ermöglichen, den Refactoring-Bot mittels Kommentaren anzuweisen, seine Pull-Requests nachträglich zu bearbeiten. Zusätzlich wurde eine qualitative Studie durchgeführt, bei welcher Testpersonen die neue Funktionalität auf einem Beispielprojekt testen konnten, welches auf GitHub gehosted ist. Das Ergebnis der Studie zeigt, dass das kommentargesteuerte Refactoring, trotz einiger Mängel, überwiegend positiv bei den Testpersonen angekommen ist.Item Open Access Technologierecherche zu Verzeichnisdiensten in der Produktion(2019) Steinacker, DanielDiese Arbeit dient als Literaturrecherche zu Technologien, die als Verzeichnisdienste in Produktionsnetzwerken verwendet werden können. Diese stammen dabei aus der Informationstechnologie(IT) oder der Produktion. Anschließend findet ein Vergleich einiger Technologien statt, die bei der Recherche gefunden wurden. Diese sind OpenLDAP, Active Directory, die Gelben Seiten der Industrie 4.0, OPC UA .Net-GDS, jabberd2, COM/DCOM, Bonjour und Avahi. Für den Vergleich wird ein Punktesystem eingeführt, dass die einzelnen Merkmale (Verbreitung, Aktualität, Reife der Entwicklung, Quellcodeverfügbarkeit, unterstützte Betriebssysteme, Sicherheit, Kosten, Standardisierung und Einsatzzweck) in Relation zueinander setzt. Die Ergebnisse sind in Tabelle 5.1 dargestellt. Mit 116 von 140 möglichen Punkten ergibt sich OpenLDAP als Empfehlung, weswegen diese Technologie zusammen mit OPC UA für die Machbarkeitsanalyse verwendet wird. Für diesen Proof of Concept werden mittels Python Daten zwischen den beiden Open Source Projekten transferiert.Item Open Access Algorithms for Efficient Chaos Experiment Selection in Microservice Architectures(2019) Kammhoff, NiklasChaos Engineering is an approach to resilience benchmarking for distributed architectures. Existing approaches for experiment selection include random fault injections and lineage driven fault injection, however, while quite exhaustive, they do lack in the area of efficiency. The ORCAS project introduces a new approach to resilience benchmarking for microservice architectures by leveraging knowledge about the architecture, as well as the simulation of experiments outside of the production environment. By prioritizing certain experiments, instead of choosing at random, the goal is to provide an efficient alternative to the existing approaches. As one of the main components of the ORCAS project, the decision engine is responsible for experiment selection based on the inputs of the architecture and previous experiment results. An outline for integrating the results into this framework is presented. This thesis explores algorithms suitable for efficient experiment selection in the decision engine, and evaluates these algorithms. Algorithms presented are based on Bayesian networks, reinforcement learning, artificial neural networks, and multilevel feedback queues. For evaluation, the algorithms are evaluated based on their efficiency and fault detection rate. For this, five versions of an example architecture have been used. The five architectures are grouped into three equivalence groups, based on their level of resilience. One candidate of each group is then used for evaluation. The results show that reinforcement learning is a suitable approach for the problem of efficiently selecting fault injections, since it does not require a training phase. In any case, almost all algorithms improve on the results of random fault injection selection.