Detailseite
Repräsentation, Analysen und Transformationen von Komponentensystemen für Anpassung und Optimierung
Antragsteller
Professor Dr. Gerhard Goos (†)
Fachliche Zuordnung
Softwaretechnik und Programmiersprachen
Förderung
Förderung von 2002 bis 2006
Projektkennung
Deutsche Forschungsgemeinschaft (DFG) - Projektnummer 5366558
Komponenten sind wiederverwendbare Mengen von Klassen im objektorientierten Sinn, die zusammen einen oder mehrere Dienste erbringen. Die Dienste werden durch Methoden einer ausgezeichneten (Schnittstellen-)Klasse der Komponente definiert. Komponentensysteme sind Mengen von Komponenten, die gegenseitig ihre Dienste verwenden. Komponenten werden räumlich, zeitlich und personell getrennt von ihrer Systemumgebung entworfen. Da ihr Entwurf möglichst allgemeine Umgebungsanforderungen berücksichtigt, enthält er in der Regel überflüssigen Code für jede konkrete Systemumgebung. Optimierungen könnten von eingeschränkten Umgebungen profitieren. Trotzdem sind Komponenten oft nicht auf alle Umgebungsanforderungen eingerichtet, so dass Anpassungen notwendig werden. Unsere Arbeit soll einen Beitrag leisten zur Anpassung und Optimierung in Komponentensystemen. Wir sprechen von Anpassungen, wenn der Entwickler eines Systems die Komponente verändert, um die Passfähigkeit zu garantieren oder neuen Anforderungen zu genügen. Optimierungen nennen wir Änderungen der Komponente, die die Systemeffizienz erhöhen, und die automatisch von Werkzeugen vorgenommen werden können. In beiden Fällen werden Programmtransformationen durchgeführt. Anpassungen und Optimierungen müssen korrekt sein - Optimierungen sogar Verhaltensgleichheit mit der ursprünglichen Komponente zusichern. In jedem Fall benötigen wir Programmanalysen, die Entwickler oder Optimierer befähigen, die Korrektheit der Programmtransformationen nachzuweisen. Diese Analysen betrachten Komponentensysteme und ihr Ausführungsmodell und berechnen Aussagen über alle möglichen Programmläufe, i.a. pessimistische Abschätzungen davon. Aufwand und Speicherbedarf für die Analysen explodieren mit der Genauigkeit der Abschätzung. Man benötigt daher eine Darstellung der Komponentensysteme sowie der Zwischenergebnisse der Analyse, die effizient genug ist, um reale Systeme zu beherrschen. Das gelingt nur, indem man initial eine ungenaue Abschätzung berechnet und darauf aufbauend das System vereinfacht, um sich dann genauere Abschätzungen leisten zu können. Mit der Darstellung der Programme in SSA-Form (engl. Static Single Assignment) kennt die Forschung eine für die Optimierung objektorientierter Programme geeignete Programmrepräsentation; sie ist in einigen Forschungsübersetzern prototypisch implementiert. Offen hingegen ist bislang, wie große Systeme beherrscht werden können, wie unbekannte Komponenten (gegeben durch ihre Schnittstellen) behandelt werden können, wie die Analyseinformation dem Systementwickler verständlich gemacht werden kann und wie auf unterschiedlichen Abstraktionsebenen von Programmrepräsentationen gleichartige Analysen angewendet werden können. Hier sehen die Antragsteller den wissenschaftlichen Fortschritt der geplanten Arbeiten. Praktisches Ziel ist es, eine Bibliothek zur Konstruktion von SSA-Darstellungen von Komponenten und ihrer Umgebung zu entwerfen, um ein Rahmenwerk zur Konstruktion von Analysen auf dieser Zwischendarstellung zu ermöglichen. Da diese Implementierungen sehr aufwendig sind, werden bislang bei vielen theoretischen Arbeiten zu Anpassungen und Optimierungen die Kontrollexperimente gescheut. Ihre Verfügbarkeit hat somit auch Implikationen für die Qualität wissenschaftlicher Arbeiten in diesem Gebiet.
DFG-Verfahren
Sachbeihilfen