Programmanalyse

Die Entwicklung, Weiterentwicklung und Wartung von Programmen und Software-Systemen ist -- neben der optimierenden Transformation in Übersetzern -- das wichtigste Anwendungsgebiet für Programmanalysen. Hier geht es darum, aus Programmen automatisch gewonnene Information so aufzubereiten, dass sie für den menschliche Entwickler eine Hilfe beim Verstehen von Programmen und eine Unterstützung für Modifikation und Weiterentwicklung darstellen.

Eine der Voraussetzungen für solche Programmanalysen sind aktuelle Analyseverfahren wie die Referenzziel-Analyse zur Bestimmung der Aufrufbeziehungen in objekt-orientierten Sprachen wie Java. Solche Verfahren haben wir in die Software-Infrastruktur PAULI eingebettet, die wir zur Analyse von Java-Klassendateien entwickeln. Die Anwendungsgebiete von PAULI sind vielfältig:

  • Im Java-Umfeld ergeben sich wegen des Ausführungsmodells und der Dynamik durch das Laden von Klassen zur Programmlaufzeit neue Herausforderungen und Chancen für die Programmanalyse. Dieses Themengebiet wird in unserer Gruppe derzeit im Kontext der Analyse großer Software-Bibliotheken der Sprache Java untersucht. Grundidee ist dabei die statische (Vor-) Analyse einzelner Java-Bibliotheken, die in speziell annotierten Bytecode-Dateien resultiert. Zur Verwendungszeit dieser Dateien durch die virtuelle Maschine können die darin enthaltenen statischen Analyse-Ergebnisse mit Analyse-Informationen der konkreten Anwendung kombiniert und zur dynamischen Programmoptimierung ausgenutzt werden. Dadurch wird eine Analysegüte erreicht, die der einer erschöpfenden statische Analyse des Quellprogramms entspricht, die im Java-Umfeld nicht mehr möglich ist.
  • Die automatische Verteilung mehrsträngiger Java-Programme ist ein weiteres Anwendungsfeld für Programmanalysen. Dazu müssen die Java-Programme für den Einsatz auf einem Rechner-Cluster aufbereitet werden. Außerdem muss das wahrscheinliche Kommunikationsverhalten ermittelt werden, um geschickte Verteilungsstrategien vorzubereiten.
  • Einen neuer Forschungsschwerpunkt bildet die Validierung von Dataflussergebnissen. Ziel ist es, vorberechnete Analyserergebnisse sicher verwendbar zu machen. Dazu ist es notwendig, Ergebnisse von Programmanalysen effizient daraufhin zu überprüfen, ob sie zum dazugehörigen Programm passen.

 

Impressum | Webmaster | Letzte Änderungen am : 16.10.2013