deklaratives debugging (seminar software engineering) tim sender deklaratives debugging seminar...

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

Upload: magdalena-leidig

Post on 05-Apr-2015

114 views

Category:

Documents


1 download

TRANSCRIPT

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

Deklaratives Debugging (Seminar Software Engineering)

Tim Sender

Deklaratives Debugging

Seminar Software Engineering

Page 2: Deklaratives Debugging (Seminar Software Engineering) Tim Sender Deklaratives Debugging Seminar Software Engineering

2

Deklaratives Debugging (Seminar Software Engineering)

Tim Sender

Agenda

Grundlagen

Deklaratives Debugging

Anwendbarkeit

Fazit & Ausblick

Page 3: Deklaratives Debugging (Seminar Software Engineering) Tim Sender Deklaratives Debugging Seminar Software Engineering

3

Deklaratives Debugging (Seminar Software Engineering)

Tim Sender

Agenda

GrundlagenProgrammfehler

Debugging

Deklaratives Debugging

Anwendbarkeit

Fazit & Ausblick

Page 4: Deklaratives Debugging (Seminar Software Engineering) Tim Sender Deklaratives Debugging Seminar Software Engineering

4

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

FehlertypenSyntaktische Fehler

Semantische Fehler

Logische Fehler

Designfehler

Die Folgen von Programmfehlern können verheerend sein, daher Fehlerbehebung wichtig!

Programmfehler

Page 5: Deklaratives Debugging (Seminar Software Engineering) Tim Sender Deklaratives Debugging Seminar Software Engineering

5

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 PhasenReproduzieren

Vereinfachen

Fehler ermitteln

Fehler beseitigen

Debugging

Page 6: Deklaratives Debugging (Seminar Software Engineering) Tim Sender Deklaratives Debugging Seminar Software Engineering

6

Deklaratives Debugging (Seminar Software Engineering)

Tim Sender

Grundlagen

Verschiedene MethodenTrace Debugging

Delta Debugging

Program Slicing

Wissenschaftliches Debugging

Deklaratives Debugging

Debugging

Page 7: Deklaratives Debugging (Seminar Software Engineering) Tim Sender Deklaratives Debugging Seminar Software Engineering

7

Deklaratives Debugging (Seminar Software Engineering)

Tim Sender

Agenda

Grundlagen

Deklaratives DebuggingEinführung

Beispielprogramm

Ausführungsbaum

Suchalgorithmen

Problemgebiete

Anwendbarkeit

Fazit & Ausblick

Page 8: Deklaratives Debugging (Seminar Software Engineering) Tim Sender Deklaratives Debugging Seminar Software Engineering

8

Deklaratives Debugging (Seminar Software Engineering)

Tim Sender

Ablauf des deklarativen Debugging

Ursprung1982 von Shapiro als algorithmisches Debugging für logische Programmierparadigmen entwickelt

Verfahren insb. für deklarative Programmierparadigmen geeignet

Bisherige Methoden unpassend für deklarative SprachenProgrammierstil: Was statt Wie

High-order Functions

Lazy Evaluation

FunktionsweiseErstellen des Ausführungsbaums

Fehlersuche in diesem durch Suchalgorithmus und Befragung eines Orakels

Einführung

Page 9: Deklaratives Debugging (Seminar Software Engineering) Tim Sender Deklaratives Debugging Seminar Software Engineering

9

Deklaratives Debugging (Seminar Software Engineering)

Tim Sender

Ablauf des deklarativen Debugging

(Fehlerhafter) Insertion Sort in Prolog

Beispiel

[Element|List]

Page 10: Deklaratives Debugging (Seminar Software Engineering) Tim Sender Deklaratives Debugging Seminar Software Engineering

10

Deklaratives Debugging (Seminar Software Engineering)

Tim Sender

Ablauf des deklarativen DebuggingAusführungsbaum

Page 11: Deklaratives Debugging (Seminar Software Engineering) Tim Sender Deklaratives Debugging Seminar Software Engineering

11

Deklaratives Debugging (Seminar Software Engineering)

Tim Sender

Deklaratives DebuggingSuchalgorithmen

Single Stepping

1 2

3 4

Page 12: Deklaratives Debugging (Seminar Software Engineering) Tim Sender Deklaratives Debugging Seminar Software Engineering

12

Deklaratives Debugging (Seminar Software Engineering)

Tim Sender

Deklaratives DebuggingSuchalgorithmen

Top Down

4

1

2

3

Page 13: Deklaratives Debugging (Seminar Software Engineering) Tim Sender Deklaratives Debugging Seminar Software Engineering

13

Deklaratives Debugging (Seminar Software Engineering)

Tim Sender

Deklaratives DebuggingSuchalgorithmen

Divide & Query

1

2

3

Page 14: Deklaratives Debugging (Seminar Software Engineering) Tim Sender Deklaratives Debugging Seminar Software Engineering

14

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

Page 15: Deklaratives Debugging (Seminar Software Engineering) Tim Sender Deklaratives Debugging Seminar Software Engineering

15

Deklaratives Debugging (Seminar Software Engineering)

Tim Sender

Agenda

Grundlagen

Ablauf des deklarativen Debugging

AnwendbarkeitLazy-funktionale Programmierparadigmen

Imperative Programmierparadigmen

Fazit & Ausblick

Page 16: Deklaratives Debugging (Seminar Software Engineering) Tim Sender Deklaratives Debugging Seminar Software Engineering

16

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

Page 17: Deklaratives Debugging (Seminar Software Engineering) Tim Sender Deklaratives Debugging Seminar Software Engineering

17

Deklaratives Debugging (Seminar Software Engineering)

Tim Sender

Anwendbarkeit

Vergleich: Ausführungsbaum für das Beispielprogramm in Haskell:

Lazy-funktionale Programmierparadigmen

Page 18: Deklaratives Debugging (Seminar Software Engineering) Tim Sender Deklaratives Debugging Seminar Software Engineering

18

Deklaratives Debugging (Seminar Software Engineering)

Tim Sender

Anwendbarkeit

Vergleich: EDT für das Beispiel

Lazy-funktionale Programmierparadigmen

Page 19: Deklaratives Debugging (Seminar Software Engineering) Tim Sender Deklaratives Debugging Seminar Software Engineering

19

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 MechanismenDatenbank für bereits beantwortete Fragen

Testdatenintegration

Algorithmus zum Erkennen ähnlicher Aufrufe

Markieren von Funktionen als trusted

Imperative Programmierparadigmen

Page 20: Deklaratives Debugging (Seminar Software Engineering) Tim Sender Deklaratives Debugging Seminar Software Engineering

20

Deklaratives Debugging (Seminar Software Engineering)

Tim Sender

Anwendbarkeit

JDD – ein deklarativer Debugger für JavaEclipse-Plugin

ElementeComputation Tree

Node Inspector

BeispielprogrammHeapsort

Testarray: {2,4,1,3}

Imperative Programmierparadigmen

Page 21: Deklaratives Debugging (Seminar Software Engineering) Tim Sender Deklaratives Debugging Seminar Software Engineering

21

Deklaratives Debugging (Seminar Software Engineering)

Tim Sender

Anwendbarkeit

Heapsort für {2,4,1,3}

Imperative Programmierparadigmen

Heap

Page 22: Deklaratives Debugging (Seminar Software Engineering) Tim Sender Deklaratives Debugging Seminar Software Engineering

22

Deklaratives Debugging (Seminar Software Engineering)

Tim Sender

Anwendbarkeit

Heapsort für {2,4,1,3} - Fortsetzung -

Imperative Programmierparadigmen

Page 23: Deklaratives Debugging (Seminar Software Engineering) Tim Sender Deklaratives Debugging Seminar Software Engineering

23

Deklaratives Debugging (Seminar Software Engineering)

Tim Sender

Anwendbarkeit

Heapsort für {2,4,1,3} - Fortsetzung -

Imperative Programmierparadigmen

Page 24: Deklaratives Debugging (Seminar Software Engineering) Tim Sender Deklaratives Debugging Seminar Software Engineering

24

Deklaratives Debugging (Seminar Software Engineering)

Tim Sender

Anwendbarkeit

Fehlerhafter Heapsort für {2,4,1,3}

Imperative Programmierparadigmen

Heap

Page 25: Deklaratives Debugging (Seminar Software Engineering) Tim Sender Deklaratives Debugging Seminar Software Engineering

25

Deklaratives Debugging (Seminar Software Engineering)

Tim Sender

Anwendbarkeit

Fehlerhafter Heapsort für {2,4,1,3} - Fortsetzung -

Imperative Programmierparadigmen

Page 26: Deklaratives Debugging (Seminar Software Engineering) Tim Sender Deklaratives Debugging Seminar Software Engineering

26

Deklaratives Debugging (Seminar Software Engineering)

Tim Sender

Agenda

Grundlagen

Ablauf des deklarativen Debugging

Anwendbarkeit

Fazit & Ausblick

Page 27: Deklaratives Debugging (Seminar Software Engineering) Tim Sender Deklaratives Debugging Seminar Software Engineering

27

Deklaratives Debugging (Seminar Software Engineering)

Tim Sender

Fazit & Ausblick

VorteileInteressantes Verfahren, das vom eigentlichen Code in gewissem Maß abstrahiert

Steigende Popularität & Anwendbarkeit auf andere Programmierparadigmen

Effizientes Debugging der deklarativen Programmiersprachen möglich

NachteileOftmals 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

Page 28: Deklaratives Debugging (Seminar Software Engineering) Tim Sender Deklaratives Debugging Seminar Software Engineering

28

Deklaratives Debugging (Seminar Software Engineering)

Tim Sender

Fazit & Ausblick

AusblickFragenreduktion und -vereinfachung stehen im Vordergrund der aktuellen Forschung

Praktische Nachfrage sehr gering – Welche Gründe hat dies?

Praktische Eignung noch nicht empirisch erforscht