Implementierung und Evaluierung von Performanceoptimierungen am Ticketanalyse Werkzeug RiVER

Hintergrund

Durch immer komplexere Software ist Softwareentwicklung ohne einen sinnvoll strukturierten Prozess nicht mehr möglich. Für die Strukturierung solcher Prozesse wurden verschiedene Vorgehensmodelle und diese unterstützende Tools entwickelt, wobei die Vielfalt solcher Softwaretools der Vielfalt der verschiedenen Vorgehensmodelle entspricht. Die Komplexität der Tools variiert dabei sehr stark. Es gibt einfache Ticketing-System bis hin zu Lösungen, welche alle Phasen der Softwareentwicklung inklusive Wartung unterstützen und weit mehr Funktionalität als das verwalten von Tickets bieten. Drei prominente und weit verbreitete Vertreter sind z.B. Jira, Trac und Redmine.
Während der Entwicklung entstehen je nach Tool eine große Menage an Daten, welche nicht nur Informationen über die einzelnen Schritte enthalten, sondern auch dazu verwendet werden können Prozesses zu optimieren indem Fehler, Engpässe, etc. identifiziert werden. Die Schwierigkeit ist dabei die Informationen bzw. Metadaten aus allen gesammelten Daten zu extrahieren, so dass dieses sinnvoll interpretiert werden können.
Ein Tool (RIVER) welches solche Daten graphisch aufbereiten kann ist vom SWC an der RWTH im Rahmen einer Diplomarbeit entstanden. Es benötigt dafür die Metadaten aller Tickest zu einem Projekt und rendert anhand von diesen übersichtliche Graphiken. Allerdings ist RIVER dabei nur bis zu einer bestimmten Anzahl zu visualisierenden Datenpunkten effizient. Ist die Datenmenge zu groß, so können die gewünschten Informationen nicht in einem angemessenen Zeitraum von RIVER gerendert werden.

Aufgabe

Hauptaufgabe dieser Bachelorarbeit ist die bestehenden performance Probleme von RIVER zu lösen, also die dafür nötigen Erweiterungen und Änderung an RIVER zu konzeptionieren und zu implementieren.
Dafür müssen zuerst die Komponenten identifiziert werden, welche für die schlechte Performanz bei großen Datenmengen verantwortlich sind. Nachdem diese identifiziert sind, wird eine Entkoppelung der Komponenten durch Einführen neuer Technologien und Änderung in der Architektur vorgenommen, um einen Austausch von diesen zu vereinfachen.
Der Fokus wird auf der Optimierung und Anpassung der Datenbanken liegt, da diese vermutlich eine der Ursachen der schlechten Performance ist. Hierfür wird eine Umstrukturierung des Kerns nötig sein.
In einem weitern Schritt soll der Client vom Backend getrennt werden und der Import von Projektdaten neu konzipiert und implementiert werden.
Nachdem Abschluss der Implementierung, werden die optimierten Komponenten mit den ursprünglichen verglichen und die schriftliche Ausarbeitung abgeschlossen.