Deklaratives Debugging (Seminar Software Engineering) Tim Sender Deklaratives Debugging Seminar Software Engineering.

Slides:



Advertisements
Ähnliche Präsentationen
Algorithmen und Datenstrukturen
Advertisements

Fast Fourier Transformation
Matrixmultiplikation
Integrations- und Funktionstests im Rahmen des V-Modelles
Programmieren im Großen von Markus Schmidt und Benno Kröger.
Projekt 5 Prolog - Programmieren mit Logik
Das „Vorgehensmodell“
Einführung in Berechenbarkeit und Formale Sprachen
Standortfaktoren INTERN - Ausdrucksstark präsentieren.
Kapitel 4 Syntaktische Analyse: LR Parsing.
On a Buzzword: Hierachical Structure David Parnas.
Stefanie Selzer - Pascal Busch - Michael Kropiwoda
Klicke Dich mit der linken Maustaste durch das Übungsprogramm! Vereinfachung von Termen Ein Übungsprogramm der IGS - Hamm/Sieg © IGS-Hamm/Sieg 2006 Dietmar.
Universität Stuttgart Institut für Kernenergetik und Energiesysteme Aufgaben des Testens Vergleich des Verhaltens einer Software mit den an sie gestellten.
Java: Objektorientierte Programmierung
Sortierverfahren Richard Göbel.
Sortierverfahren Richard Göbel.
K-Modeler Engineering
WS Algorithmentheorie 05 - Treaps Prof. Dr. Th. Ottmann.
Seminar parallele Programmierung SS 2003
Agenda Einführung Haskell QuickCheck Zusammenfassung
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
Christian Schindelhauer
A. Zündorf, SE Group Reverse Engineering K2 1 Übersicht 1.Quelltextanalyse mit regulären Ausdrücken 2.Compilertechniken 3.Prozessanalyse 4.Dynamische Analyse.
-LABORPRAKTIKUM- SOMMERSEMESTER 2005
Einführung in Visual C++
Portierung von Java nach C
Die Skriptsprache Python im Kontext des Softwareentwicklungsprozesses
Ralf KüstersDagstuhl 2008/11/30 2 Ralf KüstersDagstuhl 2008/11/30 3.
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 5. Test-First Prinzip Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse.
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 5. Test-First Prinzip Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse.
Visualisierung funktionaler Programme
Spezifikation von Anforderungen
7.1 Externes Suchen Bisherige Algorithmen: geeignet, wenn alle Daten im Hauptspeicher. Große Datenmengen: oft auf externen Speichermedien, z.B. Festplatte.
Studie Einfluss der Sitzposition in den Vorlesungsräumen auf die studentische Leistung Jochen Jung, Larry Maus und Steffen Brünske.
University of Applied Sciences Übung Objektorientierte Programmierung II Dipl.-Inf. (FH) Markus Vogler.
? Was ist Informatik? Was ist Informatik? Alexander Lange
Kollektionen in Java Aufzählungstypen, Generische Typen
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Dateien Datei = File (engl.) Mögliche Inhalte einer Datei
1. Verhalten der Objekte: Operationen Werden in den Klassen definiert Werden (i.d.R.) auf einem Objekt aufgerufen Wird das Empfängerobjekt genannt Weitere.
Polynome und schnelle Fourier-Transformation
Telecooperation/RBG Technische Universität Darmstadt Copyrighted material; for TUD student use only Grundlagen der Informatik I Thema 16: Ausnahmebehandlung.
Auslegung eines Vorschubantriebes
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut.
… oder wie finde ich den Weg
Analyse von Ablaufdiagrammen
Archival and Discovery
Programmiersprachen Proseminar Grundlagen wissenschaftlichen Arbeitens
Algorithmen und Datenstrukturen Übungsmodul 8
J. Pichler Praktikum Software Engineering Werkzeug für Familien- und Stammbaumforschung Dienstag, 08:30 – 11:45, KHG02 Josef Pichler.
Ein Überblick über verschiedene Verfahren
Analyseprodukte numerischer Modelle
Schutzvermerk nach DIN 34 beachten 20/05/14 Seite 1 Grundlagen XSoft Lösung :Logische Grundschaltung IEC-Grundlagen und logische Verknüpfungen.
Pflanzenlernkartei 3 Autor: Rudolf Arnold. Pflanze 1 Gattung Merkmale Schädigung Bekämpfung.
Pflanzenlernkartei 2 Autor: Rudolf Arnold. Pflanze 1 Gattung Merkmale Schädigung Bekämpfung.
01-1-Anfang. 01a-1-Vortrag-Inhalt 14-4-Gründe-Masterplan.
Omniscient Debugging und Slicing für Java
Inhalt Einordnung und Funktion der lexikalische Analyse Grundlagen
Visuelles Debugging Vortrag im Seminar: „Software - Visualisierung“ SS 2002 Freie Universität Berlin Enrico Heine Prof. Löhr.
C# C-Sharp.
Strategy Pattern Teachlet Autor: Sven Wende Replay durch Stephan Schwake Konzepte objektorientierter Programmiersprachen, SS 2006.
© WZL/Fraunhofer IPT Entwicklung einer Profilbörse für Konfigurationen von Smartphones Vortrag der Seminararbeit von Patrick Posor Aachen, den
1. Betreuer: Prof. Dr. Jörg Striegnitz 2. Betreuer: Dr. Martin Schindler Kontextsensitive Autocompletion für Klassendiagramme in der UML/P Florian Leppers.
Rechen- und Kommunikationszentrum (RZ) Selektionsstrategien auf Graphstrukturen Sven Porsche Seminarvorträge Aachen.
XML-basierte Beschreibungssprachen für grafische Benutzerschnittstellen Seminarvortrag im Studiengang „Scientific Programming“ von Steffen Richter.
Seminar Softwareproduktlinien Domänenspezifische Sprachen Sascha Draffehn von.
C# LINQ Funktionen höherer Ordnung. Allgemein ● Language Integrated Query ● Verfahren von Microsoft zum Zugriff auf Daten ● Hauptentwickler Erik Meijer.
Objektorientierte Programmierung
Mögliche Stoffverteilung im Grundkurs
 Präsentation transkript:

Deklaratives Debugging (Seminar Software Engineering) Tim Sender Deklaratives Debugging Seminar Software Engineering

1 Deklaratives Debugging (Seminar Software Engineering) Tim Sender Agenda Grundlagen Deklaratives Debugging Anwendbarkeit Fazit & Ausblick

2 Deklaratives Debugging (Seminar Software Engineering) Tim Sender Agenda Grundlagen Programmfehler Debugging Deklaratives Debugging Anwendbarkeit Fazit & Ausblick

3 Deklaratives Debugging (Seminar Software Engineering) Tim Sender Grundlagen Was genau sind Programmfehler? Verschiedene Bezeichnungen/Definitionen existieren Abweichung des Ist-Verhaltens vom Soll-Verhalten Begriffsbeispiel: inkorrekter Programmcode & -verhalten Was für Programmfehler gibt es? Sehr häufig menschliches Versagen des Programmierers Fehlertypen Syntaktische Fehler Semantische Fehler Logische Fehler Designfehler Die Folgen von Programmfehlern können verheerend sein, daher Fehlerbehebung wichtig! Programmfehler

4 Deklaratives Debugging (Seminar Software Engineering) Tim Sender Grundlagen DeBUGging = Beseitigen von Bugs / Fehlern Wie können Fehler gefunden werden? Im Rahmen des Testens Durch Feedback der Kunden/Nutzer Verschiedene Phasen Reproduzieren Vereinfachen Fehler ermitteln Fehler beseitigen Debugging

5 Deklaratives Debugging (Seminar Software Engineering) Tim Sender Grundlagen Verschiedene Methoden Trace Debugging Delta Debugging Program Slicing Wissenschaftliches Debugging Deklaratives Debugging Debugging

6 Deklaratives Debugging (Seminar Software Engineering) Tim Sender Agenda Grundlagen Deklaratives Debugging Einführung Beispielprogramm Ausführungsbaum Suchalgorithmen Problemgebiete Anwendbarkeit Fazit & Ausblick

7 Deklaratives Debugging (Seminar Software Engineering) Tim Sender Ablauf des deklarativen Debugging Ursprung 1982 von Shapiro als algorithmisches Debugging für logische Programmierparadigmen entwickelt Verfahren insb. für deklarative Programmierparadigmen geeignet Bisherige Methoden unpassend für deklarative Sprachen Programmierstil: Was statt Wie High-order Functions Lazy Evaluation Funktionsweise Erstellen des Ausführungsbaums Fehlersuche in diesem durch Suchalgorithmus und Befragung eines Orakels Einführung

8 Deklaratives Debugging (Seminar Software Engineering) Tim Sender Ablauf des deklarativen Debugging (Fehlerhafter) Insertion Sort in Prolog Beispiel [Element|List]

9 Deklaratives Debugging (Seminar Software Engineering) Tim Sender Ablauf des deklarativen Debugging Ausführungsbaum

10 Deklaratives Debugging (Seminar Software Engineering) Tim Sender Deklaratives Debugging Suchalgorithmen Single Stepping

11 Deklaratives Debugging (Seminar Software Engineering) Tim Sender Deklaratives Debugging Suchalgorithmen Top Down

12 Deklaratives Debugging (Seminar Software Engineering) Tim Sender Deklaratives Debugging Suchalgorithmen Divide & Query

13 Deklaratives Debugging (Seminar Software Engineering) Tim Sender Deklaratives Debugging Große Problematik: Komplexität und Anzahl der dem Orakel gestellten Fragen Reduktion durch modifizierte Suchalgorithmen Kombination mit anderen Methoden bzw. Mechanismen Lediglich der ein inkorrektes Resultat liefernde Berechnungsschritt wird identifiziert Problemgebiete

14 Deklaratives Debugging (Seminar Software Engineering) Tim Sender Agenda Grundlagen Ablauf des deklarativen Debugging Anwendbarkeit Lazy-funktionale Programmierparadigmen Imperative Programmierparadigmen Fazit & Ausblick

15 Deklaratives Debugging (Seminar Software Engineering) Tim Sender Anwendbarkeit Nur schwer von Ausführungsfehlern auf den Defekt schließbar Lazy Evaluation sorgt für teilweise komplexe Ausdrücke, zu denen das Orakel befragt werden muss Evaluation Dependency Tree (EDT) Reflektiert eher die Codestruktur anstatt der Ausführungsreihenfolge Komplexe Ausdrücke werden vereinfacht, wodurch die kognitive Belastung des Orakels reduziert wird Lazy-funktionale Programmierparadigmen

16 Deklaratives Debugging (Seminar Software Engineering) Tim Sender Anwendbarkeit Vergleich: Ausführungsbaum für das Beispielprogramm in Haskell: Lazy-funktionale Programmierparadigmen

17 Deklaratives Debugging (Seminar Software Engineering) Tim Sender Anwendbarkeit Vergleich: EDT für das Beispiel Lazy-funktionale Programmierparadigmen

18 Deklaratives Debugging (Seminar Software Engineering) Tim Sender Anwendbarkeit Insbesondere in objektorientierten Sprachen müssen vermehrt Daten bzw. Zustände berücksichtigt werden Seiteneffekte können auftreten und müssen berücksichtigt werden Bei der Portierung zusätzl. eingebrachte Mechanismen Datenbank für bereits beantwortete Fragen Testdatenintegration Algorithmus zum Erkennen ähnlicher Aufrufe Markieren von Funktionen als trusted Imperative Programmierparadigmen

19 Deklaratives Debugging (Seminar Software Engineering) Tim Sender Anwendbarkeit JDD – ein deklarativer Debugger für Java Eclipse-Plugin Elemente Computation Tree Node Inspector Beispielprogramm Heapsort Testarray: {2,4,1,3} Imperative Programmierparadigmen

20 Deklaratives Debugging (Seminar Software Engineering) Tim Sender Anwendbarkeit Heapsort für {2,4,1,3} Imperative Programmierparadigmen Heap

21 Deklaratives Debugging (Seminar Software Engineering) Tim Sender Anwendbarkeit Heapsort für {2,4,1,3} - Fortsetzung - Imperative Programmierparadigmen

22 Deklaratives Debugging (Seminar Software Engineering) Tim Sender Anwendbarkeit Heapsort für {2,4,1,3} - Fortsetzung - Imperative Programmierparadigmen

23 Deklaratives Debugging (Seminar Software Engineering) Tim Sender Anwendbarkeit Fehlerhafter Heapsort für {2,4,1,3} Imperative Programmierparadigmen Heap

24 Deklaratives Debugging (Seminar Software Engineering) Tim Sender Anwendbarkeit Fehlerhafter Heapsort für {2,4,1,3} - Fortsetzung - Imperative Programmierparadigmen

25 Deklaratives Debugging (Seminar Software Engineering) Tim Sender Agenda Grundlagen Ablauf des deklarativen Debugging Anwendbarkeit Fazit & Ausblick

26 Deklaratives Debugging (Seminar Software Engineering) Tim Sender Fazit & Ausblick Vorteile Interessantes Verfahren, das vom eigentlichen Code in gewissem Maß abstrahiert Steigende Popularität & Anwendbarkeit auf andere Programmierparadigmen Effizientes Debugging der deklarativen Programmiersprachen möglich Nachteile Oftmals Kombination mit anderen Methoden nötig Keine kommerziellen Produkte vorhanden, die meisten vorhandenen entstammen der Wissenschaft Seiteneffekte müssen berücksichtigt werden (tlw. ineffiziente Lösungen) Vorgestelltes Tool benötigt Einarbeitung

27 Deklaratives Debugging (Seminar Software Engineering) Tim Sender Fazit & Ausblick Ausblick Fragenreduktion und -vereinfachung stehen im Vordergrund der aktuellen Forschung Praktische Nachfrage sehr gering – Welche Gründe hat dies? Praktische Eignung noch nicht empirisch erforscht