Please use this identifier to cite or link to this item: http://dx.doi.org/10.18419/opus-11233
Authors: Stadelmaier, Niko
Title: Using software-performance-antipatterns and profiling traces to perform code-refactorings
Issue Date: 2020
metadata.ubs.publikation.typ: Abschlussarbeit (Master)
metadata.ubs.publikation.seiten: xvii, 104
URI: http://elib.uni-stuttgart.de/handle/11682/11250
http://nbn-resolving.de/urn:nbn:de:bsz:93-opus-ds-112501
http://dx.doi.org/10.18419/opus-11233
Abstract: Today, usability, user satisfaction, as well as enterprise adoption of a software application, are highly influenced by the performance of the software application. Therefore, it is required to resolve performance issues as early as possible during the development of the software. Many issues can be resolved during the planning and design phase by integrating a model-based antipattern detection. Such approaches can be easily integrated with continuous development and integration pipelines, which are often used in modern software development following an agile development methodology. The focus of this thesis is to develop an approach that can automatically detect performance antipatterns and suggest refactorings for the found problems. In contrast to model-based approaches, the intention is to detect the problems on the code-level. To tackle the problem, we make use of profiling traces that record the execution of an application. After the initial research on antipatterns in Go, we introduce the identified code-based antipatterns. We then present the benchmark application, where we implemented the problems. This benchmark is then used to generate the profile traces. Now, we analyze how the problems can be detected in the profiles. We then extract our novel code- and profile-patterns from the profiling information. These patterns are then used by our detection tool to identify the problems in the profiles and suggest the respective refactorings. Our results show that our approach can automatically detect performance antipatterns in the profiling data. However, more tests need to be conducted to conclude if the approach can detect antipatterns in the data of other systems.
Heutzutage spielen die Gebrauchstauglichkeit, Kundenzufriedenheit und Adaption der Software in der Industrie eine wichtige Rolle. Diese werden stark von der Leitung, in Bezug auf die Geschwindigkeit der Software beeinflusst. Daher ist es notwendig Probleme mit Leistung der Software bereits in der Entwicklung zu finden und zu lösen. Dazu gibt es Werkzeuge, wie model-basierte Antipattern-Detection Tools, welche sich in den Entwicklungsprozess einbinden lassen. Das Hauptaugenmerk der Arbeit ist die Entwicklung eines Prozesses, welcher automatisiert „performance antipatterns“ auffinden und Vorschläge zur deren Lösung machen kann. Im Gegensatz zu modellbasierten Methoden, entwickeln wir einen Prozess, der auf der Quelltextebene arbeitet. Dazu nutzen wir sogenannte Profiler Daten. Nach der initialen Untersuchung der Antipatterns in Go, stellen wir diese vor. Danach zeigen wir die entwickelte Benchmark Anwendung, welche die Anti Pattern implementiert. Diesen Benchmark nutzen wir, um die Profiler Daten zu erzeugen. Anschließend extrahieren wir unsere so genannten code- und profile patterns aus den Daten und stellen diese vor. Die Patterns werden nun in der automatisierten Antipattern-Erkennung verwendet, um diese zu identifizieren und Lösungsvorschläge anzubieten. Unsere Ergebnisse zeigen, dass der automatisierte Erkennungsprozess funktioniert und Antipatterns aus den Profiler Daten filtern kann. Es ist jedoch notwendig weitere Tests durchzuführen, um festzustellen, ob der entwickelte Prozess auch für andere Systeme und Daten funktioniert.
Appears in Collections:05 Fakultät Informatik, Elektrotechnik und Informationstechnik



Items in OPUS are protected by copyright, with all rights reserved, unless otherwise indicated.