Kurs "Debugging" SS2006

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 montags 14-16 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.

  1. Vorbesprechung:
  2. 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
  3. 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?;
  4. 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?
  5. Ü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!
  6. Übung: Magischer Staubsauger
    Warum geht beim Einschalten das Deckenlicht an, aber nicht der Staubsauger?
  7. 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
  8. 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
  9. Übung Debugging im Paar:
    Übungsblatt, JUnit.zip
  10. Ü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)
  11. "Kleine" Übung Pong
  12. "Kleine" Übung drahtlose optische Maus

Änderungen von Jahr zu Jahr

Literatur

Weitere Literatur:

(Kommentare)