Laufzeitanalysen mit Hilfe der Aspektorientierten ... - Feldschmid
Laufzeitanalysen mit Hilfe der Aspektorientierten ... - Feldschmid
Laufzeitanalysen mit Hilfe der Aspektorientierten ... - Feldschmid
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
4 Entwurf eines prototypischen<br />
Werkzeugs<br />
In diesem Abschnitt wird das von uns implementierte prototypische Werkzeug kurz<br />
vorgestellt.<br />
Gerade beim Profiling beziehungsweise <strong>der</strong> Analyse von Methodenlaufzeiten, muss viel<br />
Wert auf Performance und Skalierbarkeit gelegt werden, da<strong>mit</strong> ein möglichst unverfälschtes<br />
Ergebnis erzielt werden kann. Die von uns implementierten Aspekte sowie die erstellte<br />
Architektur wurden nicht speziell auf einen performanceorientierten o<strong>der</strong> gar skalierbaren<br />
Ansatz optimiert. Die erstellte Lösung ist also eher als ”<br />
Prototyp“ o<strong>der</strong> ”<br />
Proof of<br />
Concept“ zu verstehen – die generierten Ausgaben können als Richtwerte herangezogen<br />
werden, sind aber auf jeden Fall kritisch zu hinterfragen.<br />
4.1 Architektur des Programms / Entscheidungen<br />
Um die Architektur des Programms verstehen zu können, ist es wichtig die Grundzüge<br />
Aspektorientierter Programmierung zu verstehen – siehe dazu Kapitel 1.<br />
Bei <strong>der</strong> Analyse <strong>der</strong> Architekturanfor<strong>der</strong>ungen an unser Programm wurde schnell klar,<br />
dass eine <strong>der</strong> Hauptanfor<strong>der</strong>ungen die Interoperabilität ist, also die Möglichkeit unser<br />
Werkzeug ohne große Anpassungen auf ein beliebiges Java-Projekt anwenden zu können.<br />
Diese Funktion wird durch AspectJ und so<strong>mit</strong> von den verschiedenen Aspekten von<br />
Haus aus bestens Unterstützt – wir mussten also nur noch darauf achten beim Sammeln,<br />
Verwalten und Ausgeben <strong>der</strong> Daten keine projektspezifischen Abhängigkeiten zu<br />
generieren.<br />
Um die Informationen, die von den einzelnen Aspekten gesammelt werden auswerten<br />
und eventuell darstellen zu können, muss eine Ausgabe stattfinden. Dies könnte nun<br />
per Ausgabe in eine Datei, Schreiben in eine Datenbank, auf einen Socket o<strong>der</strong> eine<br />
MessageQueue realisiert werden. Wir entschieden uns <strong>der</strong> Einfachheit halber für eine<br />
simple Ausgabe in eine Datei. Dabei entschieden wir uns für eine Ausgabe im XML-<br />
Format. Auch dafür musste eine – soweit überhaupt möglich – gemeinsame Struktur<br />
festgelegt werden. Einer <strong>der</strong> Gründe für das XML-Ausgabeformat war die Möglichkeit<br />
das erzeugte XML-Dokument <strong>mit</strong>tels XSLT in verschiedene an<strong>der</strong>e Formate (z.B. CSV,<br />
SVG, XHTML usw.) transformieren zu können.<br />
20