PSlogo
homeicon uni sucheicon suche siteicon sitemap kontakticon kontakt
unilogo Universität Stuttgart
 

Institut für Softwaretechnologie

 

Seminar Moderne Programmanalysen zur Fehlererkennung

Thema

Im Seminar werden (statische) Programmanalysen zur Fehlererkennung behandelt. Solche Analysen werden z.B. im Compilerbau und in separaten Codeanalyse-Werkzeugen wie lint eingesetzt. Sie helfen, viele Fehler wie nicht initialisierte Variablen, Deadlocks und Division durch Null zu erkennen. Im Seminar besprechen wir, wie diese Analysen arbeiten. Vorkenntnisse in Compilerbau, Programmanalysen und Graphenalgorithmen sind nützlich, jedoch nicht zwingend.

Termin: Mo, 9:45-11:15 Ort: 1.212 (SunTrec)

Handout: [pdf]

Vorträge

Einführung in die Welt der Programmanalysen

Standardtechniken und Formalismen der statischen Programmanalysen:

  • Datenflussanalysen und monotone Frameworks
  • Abstrakte Interpretation
  • Constraint Based Analysis
  • Typ-Systeme, Inferenz-Algorithmen
Literatur: (NHH99), (HJ94), (Sch98)

Ausarbeitung: [PDF]
Bearbeiter: Wiltrud Kessler
Betreuer: Eduard Wiebe
Termin: 49. KW, 3.12.2007

Datenflussanalysen, Prüfen von Variablenverwendungen

Klassische Techniken, die auch im Compilerbau eingesetzt werden, um Zugriffe auf nicht initialisierte Variablen oder verbotene Werte (wie NULL für Zeiger oder eine Division durch 0) zu erkennen. Hierzu zählen: Live-Variable-Analysis, Zeigeranalysen, SSA-Form, Konstantenpropagierung, Out-Of-Bounds-Analyse.

Literatur: (ASU86,PS07,CFR$^+$91,Muc97,Hin01)

Bearbeiter: Roland Jacobson
Betreuer: Stefan Staiger
Termin: 50. KW, 10.12.2007 (Achtung, Vortrag fällt aus)

Fehlererkennung durch Mustersuche

Die meisten Programmierfehler sind trivial. Aus Erfahrungswerten lassen sich Muster für die häufigsten Probleme ableiten. Durch statische Analyse kann nach Instanzen dieser Muster in Quelltexten gesucht werden und somit bereits eine deutliche Verbesserung der Qualität und Korrektheit erzielt werden.

Literatur: (HP04,LRY$^+$04,HP,CJ03)

Ausarbeitung: [PDF]
Bearbeiter: Frank Schuh
Betreuer: Steffen Keul
Termin: 51. KW, 17.12.2007

Sicherheitslücken durch statische Analyse aufdecken

Durch eine Sicherheitslücke gelingt es einem Angreifer ein nicht-beabsichtigtes oder schädliches Programmverhalten auszulösen und so beispielsweise geheime Daten auszulesen oder zu löschen. Mit Hilfe von statischen Analysen können bestimmte Sicherheitslücken aufgedeckt werden. Wie funktionieren solche Werkzeuge und welche Fehler werden erkannt?

Literatur: (LL05,CW02,STFW01,CM04)

Ausarbeitung: [PDF]
Folien: [PDF]
Bearbeiter: Steffen Reimann
Betreuer: Gunther Vogel
Termin: 3. KW, 14.1.2008

Prüfung von Speicherzugriffen, Buffer Overflows

Zugriffe auf null-Zeiger können von modernen Betriebsystemen erkannt und unterbunden werden, sie führen jedoch üblicherweise sofort zu einem erzwungenen Programmende. Als weitaus schlimmer erweisen sich Zugriffe auf beliebigen Speicher durch den die Konsistenz des Programmzustands zerstört wird. In Buffer Overflow-Attacken versucht ein Angreifer gezielt Programmierfehler auszunutzen und den Programmzustand nach seinen wünschen zu manipulieren.

Literatur: (GJC$^+$03,WFBA00,HSP06)

Bearbeiter: Huang Jinhui
Betreuer: Steffen Keul
Termin: 4. KW, 21.1.2008 (Vortrag fällt aus)

Verifikation von Sequenzbeschränkungen

Verwendungen von Software-Komponenten und APIs unterliegen im allgemeinen bestimmten Sequenzbeschränkungen, so genannten Protokollen. Wie können solche Anforderungen statisch überprüft und Abweichungen aufgedeckt werden?

Literatur: (DCCN04,ECH$^+$01,DLS02,OO92)

Bearbeiter: Shaojun Zhang
Betreuer: Gunther Vogel
Termin: 5. KW, 28.1.2008 (Vortrag fällt aus)

Bei Fragen wenden Sie sich bitte an die Betreuer aus der Abteilung Programmiersprachen und Compilerbau: Prof. Erhard Plödereder , Steffen Keul , Stefan Staiger , Gunther Vogel , Eduard Wiebe

Organisatorisches

Am 19. Juli 2007 findet um 14 Uhr eine Vorbesprechung im Raum 1.212 statt, zu der alle Teilnehmer erscheinen müssen.

Richtlinien

Die Ausarbeitungen werden hier verfügbar sein, sobald sie uns in der endgültigen Fassung vorliegen. Die Abgabe einer vorläufigen Ausarbeitung ist eine Woche vor dem Vortrag notwendig.

Die endgültige Ausarbeitung muss uns eine Woche nach dem Vortrag vorliegen, sowohl in ausgedruckter als auch elektronischer Form (Orginaldokument und PDF).

Die Ausarbeitung sollte unbedingt von einem Kommilitonen vor Abgabe auf Rechtschreibfehler etc. geprüft werden.

Die Ausarbeitungen müssen dem zweispaltigen IEEE-Format für Konferenzbeiträge genügen und einen Umfang von 12 Seiten haben. Unter den folgenden Links gibt es entsprechende Vorlagen.

Generelle Hinweise zu Vorträgen und Ausarbeitungen findet man hier.

Literatursuche