Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Magdalena Leidig Geändert vor über 10 Jahren
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
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.