22
Grundlegende Analysen & Zwischendarstellungen Aus: Programmverstehen und statische Analysetechniken, Kapitel 5 Seminar 3D-Visualisierung von objektorientierten Codestrukturen , WS 06/07 Prof. Dr. E.-E. Doberkat, Dr. A. Fronk Priv.-Doz. Dr. G. Rinkenauer, Dr. D. Gude Jasper Lauterbach

Grundlegende Analysen & Zwischendarstellungen Aus: Programmverstehen und statische Analysetechniken, Kapitel 5 Seminar 3D-Visualisierung von objektorientierten

Embed Size (px)

Citation preview

Page 1: Grundlegende Analysen & Zwischendarstellungen Aus: Programmverstehen und statische Analysetechniken, Kapitel 5 Seminar 3D-Visualisierung von objektorientierten

Grundlegende Analysen & Zwischendarstellungen

Aus: Programmverstehen und statische Analysetechniken, Kapitel 5

Seminar 3D-Visualisierung von objektorientierten Codestrukturen, WS 06/07Prof. Dr. E.-E. Doberkat, Dr. A. Fronk

Priv.-Doz. Dr. G. Rinkenauer, Dr. D. Gude

Jasper Lauterbach

Page 2: Grundlegende Analysen & Zwischendarstellungen Aus: Programmverstehen und statische Analysetechniken, Kapitel 5 Seminar 3D-Visualisierung von objektorientierten

Einführung

• Worum geht es?– Techniken aus dem Compilerbau, die das

Programmverstehen unterstützen sollen.

• Welche Techniken sind das?– Grundlegendes wie lexikalische u.

syntaktische Analyse.– Zusätzliches wie Kontroll- und

Datenflussanalyse.

Page 3: Grundlegende Analysen & Zwischendarstellungen Aus: Programmverstehen und statische Analysetechniken, Kapitel 5 Seminar 3D-Visualisierung von objektorientierten

Lexikalische Analyse

• Fasst einzelne Zeichen zu Lexems zusammen.

• Unterstützt Programmverstehen durch– Hervorheben von Schlüsselwörtern,

Variablen, etc.

‚w‘, ‚h‘, ‚i‘, ‚l‘, ‚e‘ while-Schlüsselwort.

Page 4: Grundlegende Analysen & Zwischendarstellungen Aus: Programmverstehen und statische Analysetechniken, Kapitel 5 Seminar 3D-Visualisierung von objektorientierten

Syntaxanalyse

• Liefert Struktur des Programms (Syntaxbaum).

• Unterstützt Programmverstehen durch– Formatierung des Codes,– Hervorheben von Variablen, Klassen,

Sichtbarkeit, etc.

Page 5: Grundlegende Analysen & Zwischendarstellungen Aus: Programmverstehen und statische Analysetechniken, Kapitel 5 Seminar 3D-Visualisierung von objektorientierten

Symbolanalyse

• Erstellt Verknüpfungen im Syntaxbaum.– Z. B. Deklaration einer Variablen mit ihrer

Benutzung.

• Unterstützt Programmverstehen durch Darstellung dieser Verknüpfungen.

Page 6: Grundlegende Analysen & Zwischendarstellungen Aus: Programmverstehen und statische Analysetechniken, Kapitel 5 Seminar 3D-Visualisierung von objektorientierten

Kontrollflussanalyse

• Untersucht das Zusammenwirken funktionaler Einheiten wie– Basisblöcken (intraprozedural) und– Prozeduren (interprozedural). read(x)

a = 0

x > max

x < min

x = maxa = 1

x = mina = 1

print(x)print(a)

ft

f

t

Page 7: Grundlegende Analysen & Zwischendarstellungen Aus: Programmverstehen und statische Analysetechniken, Kapitel 5 Seminar 3D-Visualisierung von objektorientierten

Kontrollflussanalyse (Forts.)

• Unterstützt das Programmverstehen– durch grafische Darstellung (statt Text)– durch „Übersichtsinformation“ („Wo wird diese

Methode überall benutzt?“; „Wo wird diese Klasse verwendet?“)

Page 8: Grundlegende Analysen & Zwischendarstellungen Aus: Programmverstehen und statische Analysetechniken, Kapitel 5 Seminar 3D-Visualisierung von objektorientierten

Datenflussanalyse

• Baut auf den Knoten des Kontrollflussgraphen auf.

• Zeigt Abhängigkeiten in derVariablenbenutzung auf.

= Datenabhängigkeit

f

ft

t

print(x)print(a)

read(x)a = 0

x > max

x < min

x = maxa = 1

x = mina = 1

Page 9: Grundlegende Analysen & Zwischendarstellungen Aus: Programmverstehen und statische Analysetechniken, Kapitel 5 Seminar 3D-Visualisierung von objektorientierten

Datenflussanalyse (Forts.)

• Beantwortet Fragen wie– „An welchen Stellen wird der an Stelle X

gesetzte Wert verwendet?“– „Welche möglichen Werte kann eine Variable

einnehmen?“– „Welche Variablen sind für Abschnitt Y

relevant?“

• Dadurch Unterstützen des Programmverstehens.

Page 10: Grundlegende Analysen & Zwischendarstellungen Aus: Programmverstehen und statische Analysetechniken, Kapitel 5 Seminar 3D-Visualisierung von objektorientierten

Slicing

• Berechnet einen Teilbereich des Codes– Wähle eine zu betrachtende Zeile und– blende alle irrelevanten Zeilen aus.

Was wird durch diese Zuweisung beeinflusst?

Wie entsteht der Wert dieser Variablen?

Page 11: Grundlegende Analysen & Zwischendarstellungen Aus: Programmverstehen und statische Analysetechniken, Kapitel 5 Seminar 3D-Visualisierung von objektorientierten

Slicing (Forts.)

Forward Slice Backward Slice

Page 12: Grundlegende Analysen & Zwischendarstellungen Aus: Programmverstehen und statische Analysetechniken, Kapitel 5 Seminar 3D-Visualisierung von objektorientierten

Slicing (Forts.)

• Unterstützt Programmverstehen– durch Ausblendung von irrelevantem Code

bzgl. einer bestimmten Frage.

Page 13: Grundlegende Analysen & Zwischendarstellungen Aus: Programmverstehen und statische Analysetechniken, Kapitel 5 Seminar 3D-Visualisierung von objektorientierten

Bis hierher …

• Nutzung von grundlegenden Techniken des Compilers wie– Lexikalische, syntaktische und

Symbolanalyse sowie– Kontroll- und Datenflussanalyse.

• Visuelle Darstellung ihrer Ergebnisse, um Programmverstehen zu unterstützen.

Page 14: Grundlegende Analysen & Zwischendarstellungen Aus: Programmverstehen und statische Analysetechniken, Kapitel 5 Seminar 3D-Visualisierung von objektorientierten

Darstellende Verfahren

Aus: Programmverstehen und statische Analysetechniken, Kapitel 6

Page 15: Grundlegende Analysen & Zwischendarstellungen Aus: Programmverstehen und statische Analysetechniken, Kapitel 5 Seminar 3D-Visualisierung von objektorientierten

Einführung

• Wie sucht man nach– Architekturmustern (od. architektonischen

Stilen),– Entwurfsmustern (design patterns) und– Idioms?

• Daraus: Weitere Möglichkeiten zur Darstellung von Code.

Page 16: Grundlegende Analysen & Zwischendarstellungen Aus: Programmverstehen und statische Analysetechniken, Kapitel 5 Seminar 3D-Visualisierung von objektorientierten

Struktursuche

• Das Composite-Muster:– Modelliert zusammengesetzte Objekte.– Zusammengesetzte Teile sollen wie

Einzelteile behandelt werden können.– Beispiele

• Menüs mit Menü-Punktenund Untermenüs

• Zusammengesetzte undeinfache Elemente ineinem Grafikprogramm.

Component

Leaf Composite

Page 17: Grundlegende Analysen & Zwischendarstellungen Aus: Programmverstehen und statische Analysetechniken, Kapitel 5 Seminar 3D-Visualisierung von objektorientierten

Struktursuche (Forts.)

• Aufgabe: Suche das Composite-Muster.

• Mögliche Vorgehensweise:– Mittels lexikalischer Informationen,– anhand eines relationalen Modells des

Systems sowie– durch Metriken.

Page 18: Grundlegende Analysen & Zwischendarstellungen Aus: Programmverstehen und statische Analysetechniken, Kapitel 5 Seminar 3D-Visualisierung von objektorientierten

Lexikalische Suche

• Versucht, das Muster durch Suchen nach Schlüsselwörtern zu entdecken.

• Genauigkeit:– Hoch, falls passende Bezeichner vergeben,– sonst niedrig.

• Rolle im Programmverstehen:– Entdeckung von Mustern; keine wirkliche

Darstellung des Codes.

„Leaf“, „Composite“

Page 19: Grundlegende Analysen & Zwischendarstellungen Aus: Programmverstehen und statische Analysetechniken, Kapitel 5 Seminar 3D-Visualisierung von objektorientierten

Relationales Modell

• Erzeuge Modell des Systems mit– Entitäten und– Relationen dazwischen.

• Formuliere Anfragen daran, um das Composite-Muster zu finden.

Rel(Component, Composite, Leaf) := INHERITANCE(Composite, Component) ^ CONTAINMENT(Composite, Component) ^ INHERITANCE(Leaf, Component)

^ ! CONTAINMENT(Leaf, Component);

Page 20: Grundlegende Analysen & Zwischendarstellungen Aus: Programmverstehen und statische Analysetechniken, Kapitel 5 Seminar 3D-Visualisierung von objektorientierten

Relationales Modell (Forts.)

• Höhere Genauigkeit, aber rechenintensiv.

• Rolle im Programmverstehen:– Durch Finden von Strukturen oder– Visuelle Darstellung der Relationen.

Page 21: Grundlegende Analysen & Zwischendarstellungen Aus: Programmverstehen und statische Analysetechniken, Kapitel 5 Seminar 3D-Visualisierung von objektorientierten

Metriken

• Analyse des Codes durch– Zerlegung in Entitäten– Berechnung von Zahlenwerten

(z.B. Anzahl Member-Variable, Tiefe im Vererbungsbaum, etc.)

• Rolle im Programmverstehen:– Ebenfalls durch Finden von Strukturen /

Eigenschaften,– visuelle Darstellung der Metrik-Werte.

Page 22: Grundlegende Analysen & Zwischendarstellungen Aus: Programmverstehen und statische Analysetechniken, Kapitel 5 Seminar 3D-Visualisierung von objektorientierten

Zusammenfassung

• Compiler-Techniken zur Unterstützung des Programmverstehens.

• Alternative Darstellungen des Codes– durch Entitäten und Relationen– sowie durch Zahlenwerte an diesen,

berechnet durch Metriken.

• Ausblick: Welche dieser Möglichkeiten können wie genutzt werden?