Grundlegende Analysen & Zwischendarstellungen

Slides:



Advertisements
Ähnliche Präsentationen
Blue J.
Advertisements

ER-Modell: Objekte und Klassen
Datenbankdesign mit ACCESS.
Motivation Bisher: Codes mit möglichst kurzer Codelänge.
Inhalt Saarbrücken,.
Konzepte objektorientierter Systeme
Informatik 12 | DAES Compilerbau Wintersemester 2010 / 2011 Dr. Heiko Falk Technische Universität Dortmund Lehrstuhl Informatik 12 Entwurfsautomatisierung.
Technische Universität Dortmund
Frame-Logik Eine Einführung Andreas Glausch.
Imperative Programmierung
Ziele der Analyse sozialer Netzwerke in den Sozialwissenschaften
Das Entity-Relationship-Modell
Design Patterns- Entwurfsmuster
Konzeption und Implementation visueller Editoren zur Bearbeitung von SPS-Schrittketten mit dem Editorgeneratorsystem DEViL Dennis Klassen Höxterstraße.
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Objektorientierter Entwurf (OOD) Teil 3: Qualitätsmodell
FH-Hof Einbindung von JavaScript Anweisungen
Java: Objektorientierte Programmierung
Algorithmentheorie 04 –Hashing
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Praxis-Repetitorium JAVA zusätzliche, ergänzende Lehrveranstaltung
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Programm besteht aus mehreren Bestandteilen: Schlüsselwörter Sonderzeichen Bezeichner Kommentare Texte.
Zusammenfassung Vorwoche
Semantische Fehler Seminar im Grundstudium WS2002/2003:
Software-Engineering
Explizite und editierbare Metainformationen für Software Muster.
A. Zündorf, SE Group Reverse Engineering K2 1 Ziele Heute Compilerbau Nachlese Ausnutzung von Laufzeittypinformation.
A. Zündorf, SE Group Reverse Engineering K2 1 Ziele Heute Compilerbau Nachlese Ausnutzung von Laufzeittypinformation.
Diskussion Dezimalklassifikation - Expertendiskussion Seminar I-Prax: Inhaltserschließung visueller Medien, Spree WS 2006/76 Diskusion Woran.
XML – Grundlagen und Anwendungen Teil 6: Verarbeitung von XML-Dokumenten: XSLT Prof. Dr. Michael Löwe, FHDW Hannover.
UML Begleitdokumentation des Projekts
Forschungszentrum Informatik, Karlsruhe Objektorientierte Systeme unter der Lupe Markus Bauer Oliver Ciupke.
Programmiersprachen II Integration verschiedener Datenstrukturen
Entitäten Extraktion Einführung
Prof. Dr. Gerhard Schmidt pres. by H.-J. Steffens Software Engineering SS 2009Folie 1 Objektmodellierung Objekte und Klassen Ein Objekt ist ein Exemplar.
Christian Schulz, Marc Thielbeer, Sebastian Boldt
Minh Bui 14. März 2013 Mobile Visualization in SenseDroid Diplomarbeit Minh Bui, # 1 of 16 Aufgabensteller: Prof. Dr. Andreas Butz Betreuer:
Efficient Alias Set Analysis Using SSA Form Proseminar Programmanalyse WS 11/12 André Hunke.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
1. Entwicklungsumgebung 2. Kontextmenü 3. Compile 4. Objekt 5. Attribut 6. Klasse 7. Deklaration 8. Intialisierung.
Allgemeines zu Datenbanken
UML-Kurzüberblick Peter Brusten.
Paradigmenwechsel in der Unternehmensmodellierung Prof. Dr. Wolfgang Voigt Dipl.-Ing. Päd. Alexander Huwaldt UML Extrakt UML Seminar, Chemnitz
Thread Synchronisation in JAVA
Java Programmierung.
Relationale Datenbanken
Die Idee hinter Copying Garbage Collection (1) Aufteilung des Heaps in zwei Teile: To-Space und From-Space Nutzung eines Teiles durch das Programm Ist.
Code-Optimierung Philipp Bergener Seminar „Übersetzung künstlicher Sprachen“
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation III Vorlesung 1 WS 2001/02 Punkt-in-Landkarte I (Streifenkarte)
Paul, Morten, Yannick Blue J. Entwicklungsumgebung  versteht Java Programmcode  Für die Entwicklung eigener Software  Durch die Programmierung.
Inf K1/2 Sj 13/14 GZG FN W.Seyboldt 1 SFZ FN Sj. 13/14 Python Klassen und Objekte.
Analyse der Laufzeit von Algorithmen
Omniscient Debugging und Slicing für Java
Struktur-Funktions-Modelle von Pflanzen - Sommersemester Winfried Kurth Universität Göttingen, Lehrstuhl Computergrafik und Ökologische Informatik.
Kapitel 5Strukturen Information aus der realen Welt werden in einem informationsverarbeitenden System als Daten abgelegt. Diese stellen also eine (vereinfachte)
Paul, Morten, Yannick Blue J. Entwicklungsumgebung  versteht Java Programmcode  Für die Entwicklung eigener Software  Durch die Programmierung.
Christos, Kornelia, Jan Christos, Kornelia, Jan Entwicklungsumgebung Versteht unseren Java Programm Code Versteht unseren Java Programm.
Zwischenüberschrift (max. 85 Zeichen pro Zeile) Dies ist ein Fließtext mit 750 Zeichen pro Textfeld. Dies ist ein Fließtext mit 750 Zeichen pro Textfeld.
Zwischenüberschrift (max. 85 Zeichen pro Zeile) Dies ist ein Fließtext mit 750 Zeichen pro Textfeld. Dies ist ein Fließtext mit 750 Zeichen pro Textfeld.
Vortrag Einführung in AspectJ. Gliederung 1 Einleitung 2 Querschnittsfunktionalitäten in AspectJ 2.1 Sprachelemente 3 Beispiel 4 Join Point Modell 5 Weaving.
Clusteranalyse Wege und Arten Entstanden im Rahmen der Seminararbeit für WS09/10 Betreuer: Prof. Jobst Hoffmann Dr. Tim Hiddemann Aachen, Januar 2010.
Einführung in die Programmierung
Implementieren von Klassen
 Präsentation transkript:

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

Einführung Worum geht es? Welche Techniken sind das? 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.

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.

Syntaxanalyse Liefert Struktur des Programms (Syntaxbaum). Unterstützt Programmverstehen durch Formatierung des Codes, Hervorheben von Variablen, Klassen, Sichtbarkeit, etc.

Symbolanalyse Erstellt Verknüpfungen im Syntaxbaum. Z. B. Deklaration einer Variablen mit ihrer Benutzung. Unterstützt Programmverstehen durch Darstellung dieser Verknüpfungen.

Kontrollflussanalyse Untersucht das Zusammenwirken funktionaler Einheiten wie Basisblöcken (intraprozedural) und Prozeduren (interprozedural). read(x) a = 0 x > max x < min x = max a = 1 x = min print(x) print(a) f t

Kontrollflussanalyse (Forts.) Unterstützt das Programmverstehen durch grafische Darstellung (statt Text) durch „Übersichtsinformation“ („Wo wird diese Methode überall benutzt?“; „Wo wird diese Klasse verwendet?“)

Datenflussanalyse Baut auf den Knoten des Kontrollflussgraphen auf. Zeigt Abhängigkeiten in der Variablenbenutzung auf. f t print(x) print(a) read(x) a = 0 x > max x < min x = max a = 1 x = min = Datenabhängigkeit

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.

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?

Slicing (Forts.) Forward Slice Backward Slice

Slicing (Forts.) Unterstützt Programmverstehen durch Ausblendung von irrelevantem Code bzgl. einer bestimmten Frage.

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.

Darstellende Verfahren Aus: Programmverstehen und statische Analysetechniken, Kapitel 6

Einführung Wie sucht man nach Architekturmustern (od. architektonischen Stilen), Entwurfsmustern (design patterns) und Idioms? Daraus: Weitere Möglichkeiten zur Darstellung von Code.

Struktursuche Das Composite-Muster: Modelliert zusammengesetzte Objekte. Zusammengesetzte Teile sollen wie Einzelteile behandelt werden können. Beispiele Menüs mit Menü-Punkten und Untermenüs Zusammengesetzte und einfache Elemente in einem Grafikprogramm. Component Leaf Composite

Struktursuche (Forts.) Aufgabe: Suche das Composite-Muster. Mögliche Vorgehensweise: Mittels lexikalischer Informationen, anhand eines relationalen Modells des Systems sowie durch Metriken.

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“

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);

Relationales Modell (Forts.) Höhere Genauigkeit, aber rechenintensiv. Rolle im Programmverstehen: Durch Finden von Strukturen oder Visuelle Darstellung der Relationen.

Metriken Analyse des Codes durch Rolle im Programmverstehen: 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.

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?