Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


Präsentation zum Thema: "Deklaratives Debugging (Seminar Software Engineering) Tim Sender Deklaratives Debugging Seminar Software Engineering."—  Präsentation transkript:

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

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

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

4 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

5 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

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

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

8 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

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

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

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

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

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

14 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

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

16 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

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

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

19 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

20 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

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

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

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

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

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

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

27 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

28 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


Herunterladen ppt "Deklaratives Debugging (Seminar Software Engineering) Tim Sender Deklaratives Debugging Seminar Software Engineering."

Ähnliche Präsentationen


Google-Anzeigen