\epigraph{\textit{Only human.}}{--- Agent Jones, \textit{The Matrix}}

\noindent Um die Arbeit abzuschließen, fasse ich zunächst in \autoref{sec:abschZusammen} das Vorgehen und die bisherigen Ergebnisse zusammen. Zum Schluss werden in \autoref{sec:abschWeiter} noch offene Fragen und mögliche Folgerungen aus dieser Arbeit präsentiert.

\section{Zusammenfassung}\label{sec:abschZusammen}
Im Rahmen meiner Arbeit habe ich eine Software entwickelt, welche die dynamische Analyse von Perl-Programmen mittels des \gls{kieker} Frameworks ermöglicht. Hierzu wurde ein in Perl implementiertes Modul erstellt, welches die benötigten Daten im Kontext des Perl-Interpreters sammelt und diese zur weiteren Bearbeitung an die, ebenfalls neu entwickelte, Kieker-Data-Bridge überträgt. Das Modul verfügt neben den benötigten Records auch über Methoden zur Traceverwaltung, wodurch der Kommunikationsaufwand reduziert wird.

Zur Instrumentierung von bestehendem Code wurde anschließend versucht eine statische Analyse durchzuführen, was jedoch aufgrund von diversen Verhaltensweisen der Programmiersprache Perl nicht erfolgreich durchgeführt werden konnte. Statt dessen konnte ein \gls{cpan}-Paket eingesetzte werden, dass zur Erzeugung von Routinen vor und nach der Ausführung von bestehendem Code dient. Mit diesem Verfahren konnten dann sowohl die Software EPrints als auch die Variante \gls{kielpr} mit \emph{\glspl{probe}} instrumentiert werden.

Mit diesen beiden Systemen wurde ein vergleichender Test durchgeführt um Unterschiede zwischen den Systemen zu lokalisieren. Hierbei wurde festgestellt, dass \gls{kielpr} bei selbem Datenbestand signifikant häufiger auf die Datenbank zugreift, worin ich die Ursache für die festgestellten Performanceprobleme vermute. Die Veränderungen im Verhalten deuten darauf hin, dass die Modifikationen in \gls{kielpr} einen Durchgriff durch die Schichtenarchitektur vornehmen. Auch wurde in diesem Kontext die Verwendung von veralteten Funktionen festgestellt, die auf absehbare Zeit zu einem Ausfall führen können, sollten die Funktionen in einer zukünftigen Version nicht mehr bereitgestellt werden.

Die ermittelten Daten des Vergleichstest können zur Zeit nur zur groben Lokalisierung der Probleme dienen, allerdings können die Daten auch noch detaillierter in Hinblick auf Abhängigkeiten oder Aufrufreihenfolge analysiert werden. Die hier präsentierten Auswertungen decken in dieser Hinsicht nur einen Teil ab. Als direkte Erkenntnis lässt sich allerdings bereits feststellen, dass in \gls{kielpr} darauf geachtet werden sollte, die von EPrints vorgesehene Skriptsprache zu verwenden und direkte Zugriffe auf die Datenbank zu vermeiden.

\section{Ausblick}\label{sec:abschWeiter}
Das im Rahmen dieser Arbeit realisierte Perl-Modul weißt zur Zeit nur einen eingeschränkten Funktionsumfang auf. Neben den implementierten drei Records unterstützt das \gls{kieker} Framework noch diverse weitere Recordtypen, die aufgrund der Zielsetzung dieser Arbeit bisher keinen Einzug in die Perl-Implementierung gefunden haben. 

Als weitere Verbesserung sollte eine signifikante Verringerung des Performance-Over-heads priorisiert werden. Dies kann vermutlich durch Modifikationen beim Schreiben der Records erreicht werden.
In der weiteren Entwicklung sollte dann adaptives Monitoring integriert werden, um selektiver das Monitoring steuern zu können. Diese Änderungen erfordern dann auch eine Erweiterung der Kieker-Data-Bridge um einen vollständigen Rückkanal von \gls{kieker} zu dem überwachten System.

Die Analyse der ermittelten Daten kann genutzt werden, um sowohl EPrints im Allgemeinen als auch \gls{kielpr} im Speziellen zu verbessern und bisher unerkannte Schwächen in den Systemen zu lokalisieren und zu beheben. In Abstimmung mit dem GEOMAR können hier noch weitere Analysen durchgeführt werden, um die Probleme weiter eingrenzen zu können und \gls{kielpr} wieder in einen Zustand zu versetzen, der einen Regelbetrieb für die gesamte Universität ermöglicht.

Auch EPrints kann von diesen Untersuchungen profitieren. Da die Software bereits seit vielen Jahren von verschiedenen Entwicklern programmiert und modifiziert wird, steht es zu erwarten, dass die Software unerwünschtes Verhalten an den Tag legt und eine Überprüfung des theoretischen Modells gegenüber der tatsächlichen Implementierung zu einer Verbesserung der Software führen kann. Hierzu ist in dieser Arbeit im Rahmen der Abhängigkeitsanalyse schon ein erster Ansatz geboten worden.