*

Diplomarbeit

Extraktion statischer Traces unter Berücksichtigung von Points-To-Informationen zur Konnektorerkennung und -beschreibung

Hintergrund

Das Projekt Bauhaus beschäftigt sich mit der Wiedergewinnung der Software-Architektur von Systemen. Die Software-Architektur eines Systems besteht aus dessen Komponenten, d.h. deren Berechnungseinheiten, und den Konnektoren, d.h. den Kommunikationsmitteln zwischen den Komponenten, sowie aus den mit Komponen-ten und Konnektoren verbundenen Einschränkungen.

Die Erkennung atomarer Komponenten im Projekt Bauhaus ist weitestgehend abgeschlossen. Zur Analyse von Protokollen liegt bereits eine Trace-Extraktion vor, die allerdings Points-To-Informationen vernachlässigt. Die Wiedergewinnung von Informationen über Konnektoren ist noch nicht implementiert. Aus Sicht eines Benutzers atomarer Komponenten und Konnektoren ergibt sich ihre Verwendungsweise als Sequenz von Aktionen aus der Schnittstelle der atomaren Komponenten und Konnektoren. Aktionenaus der Schnittstelle sind alle Zugriffsoperationen, aber auch Zugriffe auf öffentliche globale Variablen oder Record-Komponenten der atomaren Komponente. Die Sequenzinformation wird das Protokollder Komponente bzw. des Konnektors genannt.

Hinweise auf das Protokoll einer Komponente bzw. eines Konnektors können sogenannte Traces liefern. Ein dynamischer Trace eines Objekts ist die tatsächliche Folge von Objektaktionen, deren Argument das Objekt ist, bezüglich einer Programmausführung. Eine Objektaktion ist entweder der Aufruf eines Unterprogrammes aus der Schnittstelle des Objekts oder das Lesen oder Setzen von öffentlichen Attributen des Objekts. Ein statischer Trace ist die statisch abgeleitete mögliche Folge von Objektaktionen. Im Gegensatz zu dynamischen Traces können statische Traces Alternativen enthalten, die sich durch bedingten Kontrollfluß ergeben. In die Extraktion statischer Traces sollen die Ergebnisse der Points-To-Analyse einbezogen werden.

Aufgabenstellung

Die erste Teilaufgabe dieser Arbeit ist die Extraktion statischer inter- und intraprozeduralen Traces aus dem Quellcode unter Berücksichtigung der Points-To-Information. Die Traces werden in Form endlicher Automaten extrahiert. Eine entsprechende Datenstruktur zur Darstellung existiert bereits, die eventuell angepasst werden kann. Die Extraktion findet auf unserer Zwischendarstellung (IML) statt. Die Abbildung von C-Quellcode in diese Zwischendarstellung existiert bereits. Die Zwischendarstellung ist außerdem um Kontroll- und Datenflußinformation in Form eines Aufrufgraphen, eines Grundblockgraphen mit Dominanzinformation sowie der Static Single Assignment Form, die die Points-To-Information reflektiert, ergänzt. Da wir wegen uneingeschränkten Gotos in C sowie möglicher Zyklen im Call-Graphen nicht die Reduzierbarkeit des Graphen voraussetzen können, muss der Algorithmus von nichtreduzierbaren Graphen ausgehen.

Die atomaren Komponenten können als gegeben vorausgesetzt werden.

Die zweite Teilaufgabe besteht darin, die semiautomatische Konnektorerkennung durch Anbindungen an unser graphisches Front-End (Rigi) zu ermöglichen. Der Benutzer soll Trace-Extraktionen anstoßen sowie die Ergebnisse beurteilen und kombinieren können. Der von uns verwendete Resource Flow Graph soll entsprechend zur Speicherung von Konnektorinformationen erweitert werden.

Ein Konnektor im Sinne dieser Diplomarbeit ist die Verwendung einer oder mehrerer atomaren Komponenten als Übermittler von Information zwischen anderen atomaren Komponenten. Konnektoren können aggregiert sein, d.h. zwei bereits erkannte Konnektoren können zu einem umfassenderen Konnektor kombiniert werden. Um aggregierte Konnektoren zu erkennen ist es notwendig, die Protokolle zweier Konnektoren zu vereinigen (also einen gemeinsamen Trace auf mehreren Objekten abzuleiten).

Darüberhinaus ist zu klären, inwiefern Datenflussinformationen benötigt werden, um zwei Konnektoren überhaupt zu aggregieren.

Nach ungefähr der Hälfte der Bearbeitungszeit ist ein Zwischenvortrag zu den Konzepten und Implementierungsideen zu halten. Am Ende der Diplomarbeit wird ein Vortrag zur Präsentation der Ergebnisse gehalten.

Werkzeuge

Gnu-Ada-Compiler, Infrastruktur des Bauhauses

Voraussetzungen

Ada-Kenntnisse, Kenntnisse in Compilerbau

Betreuer

Thomas Eisenbarth und Rainer Koschke


Valid HTML 3.2! Last modified: Thu Oct 25 10:56:15 MET DST 2001
admin@droste.informatik.uni-stuttgart.de