Kurs "Debugging" SS2005
Dies ist die Veranstaltungsseite zum Kurs "Debugging" (Defektbehebung).
Beschreibung
Eine der häufigsten und zeitaufwendigsten Tätigkeiten beim Programmieren ist die Lokalisierung und Entfernung von Defekten, gemeinhin genannt Debugging.
Für die Methodik beim Debugging lassen sich Regeln aufstellen, deren Einhaltung dazu führt, dass die Suche zielstrebig, ausreichend effizient und möglichst zuverlässig zum Erfolg führt. Das Erlernen dieser Regeln steht im Mittelpunkt dieses Kurses. Interessanterweise sind genau die selben Regeln auch in ganz anderen Bereichen des Lebens (Häuser, Autos, Gesundheit, etc.) zur Fehleranalyse zu gebrauchen
Die Veranstaltung führt zuerst theoretisch (aber mit zahlreichen Beispielen)
die Regeln ein und geht dann in einen ausgedehnten Praxisteil über,
in dem anfangs der Umgang mit Debuggern
(gemeint sind die Softwarewerkzeuge, nicht die Menschen)
erlernt und geübt wird.
Als Hauptteil der Veranstaltung trainieren und reflektieren wir anschließend
die Anwendung der Regeln anhand einer Reihe realistischer Fallbeispiele.
Organisatorisches
Veranstalter
Voraussetzungen/Zielgruppe, Einordnung, Leistungpunkte etc.
Siehe den
Eintrag im KVV.
Anmeldung
Alle Teilnehmer müssen Mitglied in der Mailingliste
SE_K_DEBUG
sein.
(Dort bitte auch den vollen Vor- und Nachnamen angeben.)
Über diese Liste werden wichtige Informationen und Ankündigungen versendet.
Jede/r bitte selbst dort eintragen.
Termine
Die Veranstaltung findet dienstags 16-18 Uhr im Seminarraum 006
in der Takustr. 9 statt.
Prüfungsmodalitäten
Da in diesem Kurs ausschließlich methodisches Wissen erworben wird,
das mit den üblichen Verfahren nicht mit angemessenem Aufwand überprüft
werden kann, gibt es zu dieser Veranstaltung keine Prüfung.
Sie kann dennoch für das Studium angerechnet werden,
allerdings nur für Bachelor-Studierende:
nämlich im Rahmen des Bereichs
"allgemeine Berufsvorbereitung" (ABV)
mit 2 Leistungspunkten
(die Angabe im
KVV ist überholt, aber leider nicht mehr zu ändern).
Der zugehörige Schein ist unbenotet und wird dann vergeben,
wenn sich die betreffende Person im Laufe des Kurses kontinuierlich rege und hilfreich beteiligt hat.
Wer einen solchen Leistungsnachweis erwerben möchte,
muss sich im Lauf der ersten vier Wochen der Vorlesungszeit
auf der Liste im Sekretariat im Raum 013 (Frau Milde)
anmelden und im Kurs vor sich in jeder Stunde ein
Namensschild aufstellen.
Ansonsten gilt:
Die erzielte Verbesserung der eigenen Fähigkeiten als Programmierer
dürfte so erheblich sein, dass der Nutzen des Kurses
(selbst schon im Verlauf des Studiums, erst recht hinterher)
auch ohne einen formalen Zettel den Aufwand stark überwiegt.
Inhalt
Stoffplan
Die Foliensätze sind in englischer Sprache.
- Vorbesprechung:
- Einführung, Regeln 1,2,3:
Einstieg und Überblick; die Regeln sind bewährt und universell; Regel 1: Verstehe das System; Regel 2: Mach es versagen; Regel 3: Nicht denken, sondern hingucken
- Regeln 4,5,6,7:
Regel 4: Teile und herrsche; Regel 5: Ändere in jedem Schritt nur eine Sache; Regel 6: Protokolliere was Du tust; Regel 7: Ist wirklich der Stecker drin?;
- Regeln 8,9, Zusammenfassung, erste Übung:
Regel 8: Frag jemand anderes; Regel 9: Wenn Du es nicht repariert hast, ist es auch nicht repariert; Zusammenfassung der Regeln; Erste Übung: Der magische Staubsauger; Nochmal Zusammenfassung: Was ist schwierig bei der Anwendung der Regeln?
- Übung: Schaltuhr IVS 901 (Projektion von Kamera):
Zwölf Drucktaster, eine kleine LCD-Anzeige und eine Leuchtdiode. Es muss doch herauszufinden sein, warum das nicht funktioniert!
- Übung: Magischer Staubsauger
Warum geht beim Einschalten das Deckenlicht an, aber nicht der Staubsauger?
- Benutzung von Debugger-Programmen:
Grundkonzepte: Debugger, Haltepunkt, Inspektion, Handsteuerung; Vorführung; Benutzungsart 1: Postmortem-Analyse; Benutzungsart 2: allgemeines Programmverstehen; Benutzungsart 3: gezielte Prüfung von Vermutungen; methodische Tipps
- Logging und Ablaufverfolgung:
Debugging als Suche in Raum-Zeit; Vor- und Nachteile von Debuggern; die Rolle von Logging; java.util.logging; Einfügen von Logging-Anweisungen mittels Aspekten
- Übungen und Fallstudien: Übersicht, Einstieg:
Wie macht man realistische Debugging-Übungen in einem Kurs?; gewählter Ansatz: (a) kleine, fremde Programme, (b) größere reale Systeme mit Experte; Übersicht; erste kleine Übung: Bowling (Postmortem)
- "Kleine" Übung Pong
- "Kleine" Übung drahtlose optische Maus
- geplant: Übung Robocup-Roboter (Experte: N.N.)
- geplant: Übung embedded Webserver (Experte: Hartmut Ritter)
- geplant: Fallstudie Netzwerkproblem (Experte: Carsten Schäuble)
Änderungen von Jahr zu Jahr
- 2005: Kurs erstmalig durchgeführt.
Literatur
Weitere Literatur:
(Kommentare)