HOME | ENGLISH | IMPRESSUM | KIT

Bachelor-/Studienarbeit (abgeschlossen): Konvertierung von Systemabhängigkeitsgraphen aus dem kommerziellen Tool CodeSurfer

CodeSurfer ist ein kommerzielles Tool zur Programmanalyse. Damit kann man ein bestehendes C Projekt über Methodengrenzen hinweg analysieren und sich z.B. anzeigen lassen welche Eingaben eine bestimmte Berechnung beeinflussen können, welche Auswirkungen eine if-Anweisung hat, usw.

Zu diesem Zweck erstellt CodeSurfer einen sogenannten Systemabhängigkeitsgraphen (System Dependence Graph - kurz SDG). Dieser bildet die Zusammenhänge im Projekt in Form eines Graphen ab. Dabei entsprechen die Knoten den einzelnen Anweisungen (Programmzeilen) und die Kanten zwischen den Knoten sind entsprechende Abhängigkeiten zwischen den Anweisungen.

void main() {
  int sum = 0;
  int i = 1;
  while (i < 11) {
     sum = add(sum, i);
     i = add(i, 1);
  }
  printf("sum=%d\n", sum);
  printf("i=%d\n", i);
}

static int add(int a, int b) { 
   return (a + b); 
}

=>

Systemabhängigkeitsgraph passend zum Programmbeispiel.

So kann eine Kante von int i = 1; zu while (i < 11) bedeuten, dass eine Datenabhängigkeit besteht, da die Bedingung der while-Schleife den Wert der Variable i liest, welcher in der anderen Anweisung zuvor gesetzt wurde. Neben Datenabhängigkeiten gibt es noch weitere Abhängigkeiten, wie etwa Kontrollabhängigkeiten, die in SDGs als Kanten dargestellt werden.

Im Rahmen unserer Forschungsarbeit haben wir bereits ein entsprechendes Konvertierungsplugin implementiert. Da inzwischen einiges an CodeSurfer verbessert und erweitert wurde, muss dieses Plugin entsprechend erweitert und optimiert werden.

Aufgabe:

  • Einarbeitung in das CodeSurfer Tool
  • Konvertieren des CodeSurfer SDGs Formats in unser SDG Format
  • Vergleich zwischen CodeSurfer und unserem SDG Tool Joana - welches Format ist besser?

Voraussetzungen

  • Interesse an Programmiersprachen, Kenntnisse in Java oder C
  • Kenntnisse in Programmanalyse/Compilerbau sind vorteilhaft, aber nicht notwendig

Literatur

Schlüsselworte

SDG, CodeSurfer, Joana, System Dependence Graph, Program Analysis, Converter, Evaluation 

Veröffentlichungen

Veröffentlichung
Konvertierung von Systemabhängigkeitsgraphen aus dem kommerziellen Tool CodeSurfer

Betreuer

Ehemalige Studenten
Tobias Blaschke
Ehemalige Mitarbeiter
Dr.-Ing. Jürgen Graf