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 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 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 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 Using Palladio network links to model multicore architecture memory hierarchies(2019) Gruber, PhilippThis thesis investigates the capabilities of Palladio to predict the performance of software/hardware systems. The Palladio simulations are accurate for systems which run on single core processors. Experiments showed that the predictions are not accurate for multicore systems. The parallelization of programs is complex. In addition a parallelized program executed on four cores is not automatically four times faster than the single core program. There are reasons for this on the software/code side (e.g. Amdahl's law) but also on the hardware side (e.g. memory bandwidth). The so called memory bandwidth is referring to the capacity limit of the memory bus, the bus from the CPU to the memory. The memory bandwidth is theoretically becoming a more important factor by an increasing degree of parallelization. More cores lead to the fact that more data is flowing in shorter time that bus. A consequence is that memory bandwidth becomes a bottleneck because of an over strained memory bus, which leads to idle CPU's. Due to the fact that they have to wait to load data from the memory. Such effects of multicore systems are not taken into account by Palladio. This thesis had the target to find out, if Palladio is able to model the memory bandwidth with existing elements from their component model and subsequently if this modeling leads to more accurate predictions. Our work showed on the basis of an experiment with a matrix multiplication that this is possible, but we are not able to reach the 100% accuracy with our approach. The achieved accuracy of approximately 90 % in average indicates the existence of more factors which contribute to the non-linear speedup of multicore processors. Examples are the synchronization of shared memory or the contention for these resources. In addition our experiments lacked in confidence to determine in which quantity the memory bandwidth was a bottleneck for our specific use-case. This should be the target of future work.Item Open Access Entwicklung und prototypische Umsetzung einer Strategie zur Ausführung von Tools zur Erstellung von Code-Qualitätsmetriken im Umfeld einer Continuous Delivery Umgebung(2019) Kovačić, MarkoKontinuierliche Softwareentwicklung ist ein Prozess, der es Unternehmen ermöglicht, neue Funktionalität schneller freizugeben. Während einer vorangegangenen Tätigkeit bei der Robert Bosch GmbH wurde dieser Prozess erstmals für die Entwicklung von Airbag-Software genutzt. Durch diese relativ neue Vorgehensweise und bedingt durch klassische Großkonzern-Strukturen konnten erste Probleme in der Anwendung beobachtet werden. Obwohl kontinuierliche Softwareentwicklung kein neues Thema in der Literatur ist, wurden dennoch keine Quellen gefunden, die eine Methode aufzeigen, um vorhandene Probleme in der Nutzung dieses Prozesses zu optimieren. Aus diesem Grund zielt diese Arbeit darauf ab, eine generelle und breit anwendbare Methodik zur Verbesserung einer bestehenden CI-Umgebung zu entwickeln. Anschließend wurde diese Methode anhand einer konkreten Fallstudie ausgeführt. Das Ziel dieser Anwendung war eine Verbesserung der CI-Umgebung in der Airbag-Softwareentwicklung bei der Robert Bosch GmbH. Durch die Entwicklung eines Prototypen und eine anschließende Evaluation, konnte gezeigt werden, dass dieses Ziel erreicht wurde.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.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.