Einführung in empirische Methoden für Informatiker (Empirical Methods for Computer Scientists)
Vorlesungs- und Uebungstermine:
Montags 16:15-17:45 SR XII 03C52
Mittwochs 16:15-17:45 HS V A4
Bei Bedarf wird auch der Computerraum in A4 benutzt.
Planung:
11.4 Faellt aus
16.4 05D09 Motivation und Organisatorisches
18.4 04A24 Performance-Benchmarks 1 (Praxis)
23.4 03C52 Performance-Benchmarks 2
25.4 04A24 Performance-Benchmarks 3 & Erste Schritte mit R & Experiment 1
30.4 03C52 Performance-Benchmarks 4
02.5 HS V Performance-Benchmarks 5 & Experiment 2
07.5 04A24 Performance-Benchmarks 6 (+Praxis)
09.5 HS V Fallstudie Performance-Benchmark & Die wissenschaftliche Methode
14.5 03C52 Qualitative Untersuchungen 1 & Besprechung Paper 1
16.5 faellt aus (Sport Dies). Aufgaben siehe unten
21.5 03C52 Besprechung Paper 2-4
23.5 HS V Qualitative Untersuchungen 2
30.5 HS V Qualitative Untersuchungen 3
04.6 03C52 Besprechung Paper 7-10
06.6 HS V Metriken (siehe Paper 12 unten)
11.6 03C52 Quantitative Untersuchungen 1 ( Gastvortrag von Thorsten Berger)
13.6 HS V Quantitative Untersuchungen 2
18.6 03C52 Quantitative Untersuchungen 3
20.6 HS V Besprechung Paper 13-15
25.6 03C52 Mining Software Repositories 1
27.6 HS V Mining Software Repositories 2
02.7 03C52 Kontrollierte Experimente 1 ( Gastvortrag von Janet Feigenspan)
04.7 HS V Kontrollierte Experimente 2
09.7 03C52 Ethik und Diskussion Paper 16
11.7 HS V Ueberblick und Pruefungsvorbereitung
Themen:
- Performance-Messungen, Benchmarks
- Fallstudien, Frageboegen, Interviews
- Guetekriterien von erhobenen Daten, Validitaet
- Messen, Metriken, Precision/Recall, Zeitreihenanalysen, Mining Software Repositories
- Kontrollierte Experimente
- Die wissenschaftliche Methode, Vorgehen
- Berichten von Ergebnissen
- Statistische Auswertung mit R
- Ethik
Hingergrund:
Neue Ergebnisse in der Informatik (und insbesondere in der
Softwaretechnik) haben oft zum Ziel, dass ein System bessere Qualität
hat, geringere Kosten verursacht, schneller ist, wartbarer ist, oder
von Entwicklern besser verstanden wird. Oft werden solche Vorteile
Vorlesungen, in Abschlussarbeiten oder wissenschaftlichen Publikationen
behauptet.
Aber wie lassen sich solche Behauptungen belegen oder
prüfen? Lässt sich Qualität formal beweisen? Müssen wir auf
Behauptungen der Autoren vertrauen? Reicht Plausibilität? Vertrauen wir
auf Fragebögen und die Aussagen weniger Testpersonen? Reicht es einen
Benchmark zu konstruieren und 10-mal laufen zu lassen, oder 500-mal?
Was misst dieser dann eigentlich? Und wie misst man überhaupt
Wartbarkeit? Was können wir aus Erfahrungsberichten aus der Industrie
lernen? Was wissen wir beispielsweise wirklich ueber den Nutzen von
UML?
Mit empirischen Studien lassen sich Unterschiede
zwischen Methoden und Werkzeugen wissenschaftlich belegen oder
widerlegen. Dazu gehört eine große Bandbreite unterschiedlicher
empirischer Methoden, deskriptiv wie experimentell, quantitativ wie
qualitativ. Die Bandbreite reicht von Fallstudien,
über Benchmarks, über Metriken zur
Analyse von Daten aus Softwarerepositories, über
Fragebögen, bis hin zu kontrollierten
Experimenten mit Menschen, jeweils mit dazugehöriger
statistischen Methoden zur Analyse und Darstellung der Daten.
Die Vorlesung gibt einen Überblick über empirische Methoden,
zugeschnitten auf Informatiker. Es werden verschiedene Ansätze
vorgestellt (insb. Fallstudien, Benchmarks, Mining Software
Repositories, und kontrollierte Experimente), die grundlegenden
Techniken und Werkzeuge vermittelt und auf typische Fehler hingewiesen.
Wir ermuntern explizit zum Zweifeln an und
Hinterfragen von Behauptungen. Statistische Grundlagen
werden nur soweit wie zur Auswertung und Bewertung nötig eingeführt.
Schwerpunkte können auch in Absprache mit den Teilnehmern gesetzt
werden. Die Vorlesung verwendet eine Reihe wissenschaftlicher
Veröffentlichungen aus dem Bereich Softwaretechnik um die Konzepte zu
illustrieren und mit Leben zu füllen.
Themen der Vorlesung (Auszug):
- Wann und wozu empirische Methoden? Die wissenschaftliche Methode. Theorie und Beweise vs. Konstruktion vs. Beobachtungen und Messen. Wie gesichert sind Behauptungen in der Softwaretechnik? (z.B. Welche Belege gibt es tatsächlich dass sich Programme durch Modularität besser verstehen und entwickeln lassen?)
- Entwurf und Durchführung von Fallstudien; Bewertung der Aussagekraft (z.B. Warum Fallstudien wenn’s doch letztlich nur ein einzelner beeinflussbarer Datenpunkt ist?)
- Entwurf, Durchführung und statische Auswertung von
Vergleichstests/Benchmarks (z.B. Wie oft muss ich denn messen?)
- Untersuchung von Softwarerepositories (z.B. Hat die Verteilung von Entwicklerteams einen Einfluss auf Fehler im Quelltext oder Produktivität? Was kann ich nachträglich aus einer Versionsverwaltungs-Historie lernen, ohne dass ich ein Experiment entwerfen muss?)
- Entwurf, Durchführung und Auswertung von kontrollierten Experimenten mit Entwicklern (z.B. Wie baue ich einen Versuch auf, wenn ich mit Studentengruppen messen will ob Test-Driven-Development vorteilhaft für die Softwarequalität ist oder ob funktionale Programmiersprachen oder graphische Modellierung vorteilhaft für die Entwicklungsgeschwindigkeit sind?)
In der Übung werden empirische Untersuchungen diskutiert (z.b.
Anhand bestehender Veröffentlichungen), neue entworfen und
durchgeführt; für statische Analyse und Darstellung werden Grundlagen
der Software R eingeführt und praktisch angewendet. In Gruppen wird
jeder Teilnehmer selber eine empirische Evaluierung durchfuehren.
Am Ende der Vorlesung koennen Sie empirische Studien verstehen
und bewerten und kennen die Grundlagen die zur Durchführung eigener
empirischer Studien notwendig sind.
Beispiele und Anwendungsszenarien kommen weitgehend aus dem
Gebiet der Softwaretechnik (Bewertung von Methoden, Werkzeugen oder
Sprachen). Die Grundlagen empirischer Forschung sind aber auch auf
andere Forschungsrichtungen der Informatik übertragbar.
Zielgruppe:
- Alle die Konzepte kritisch hinterfragen wollen (z.B. Ist das wirklich besser? Welche Belege gibt es? Wie könnte man es Belegen? Gibt es ueberhaupt Beweise? Wie können wir uns von Meinungen und Beweis-durch-Autorität lösen?)
- Studenten die in Abschlussarbeiten ihre eigenen Vorschlaege evaluieren muessen
- Forscher die Konzepte, Werkzeuge und Ideen für wissenschaftliche Publikationen evaluieren wollen
- Entscheider die sich zwischen verschiedenen Methoden, Werkzeugen oder Sprachen entscheiden müssen (z.B. Lohnt es sich in einer Firma Agile-Softwareentwicklung einzuführen? Sollen wir von C auf Embedded-Java wechseln?)
Vorlesungsfolien
- Teil 1: Motivation
- Teil 2: Performance Messen
- Teil 3: Vorgehen bei Empirische Forschung
- Teil 4: Qualitative Untersuchungen
- Teil 5: Quantitative Untersuchungen
- Teil 6: Kontrollierte Experimente
- Teil 7: Ethik
- Gastvorlesung Thorsten Berger
- Gastvorlesung Janet Feigenspan
Aufgaben
- Bis 14.5: Paper 1 lesen
- Bis 21.5 (wg. Sport Dies):
- Lesen Sie eine der drei Publikationen (Paper 2, 3, oder 4; Gruppeneinteilung in Vorlesung) und bereiten Sie sich auf eine Praesentation und Diskussion vor. Praesentations Richtlinien.
- Lesen Sie Abschnitt 5.5 von Paper 5. Identifizieren sie einzelne Threats to Validity. Bereiten Sie sich auf eine kurze Praesentation und Diskussion vor.
- Recherchieren Sie die Hintergruende zu denen im Comic http://xkcd.com/882/ thematisierten Problem. Warum ist es ein Problem? Wie kann man es vermeiden?
- Leseempfehlung (Optional): Kapitel 1 von Bortz und Doering "Forschungsmethoden...".
- Bis 4.6:
- Lesen Sie eine der vier Publikationen (Paper 7, 8, 9 oder 10; Gruppeneinteilung in Vorlesung) und bereiten Sie sich auf eine Praesentation und Diskussion vor. Praesentations Richtlinien.
- Ab 6.6: Verbleibende Punkte von Paper 12 lesen
- Bis 20.6:
- Lesen Sie eine der drei Publikationen (Paper 13, 14 oder 15; Gruppeneinteilung in Vorlesung) und bereiten Sie sich auf eine Praesentation und Diskussion vor. Praesentations Richtlinien.
- Bis 9.6: Lesen Sie Paper 16 und bereiten Sie sich auf eine Gruppendiskussion vor. Wir werden im wesentlichen Experimentaufbau, Stoervariablen und Threads to Validity diskutieren.
Materialien
Paper 1: Generalized
Just-In-Time Trace Compilation using a Parallel Task Farm in a Dynamic
Binary Translator
Paper 2: What can the
GC compute efficiently?: a language for heap assertions at GC time
(Gruppe 1)
Paper 3: A
Comprehensive Evaluation of Object Scanning Techniques (Gruppe
2)
Paper 4:
STABILIZER: Enforcing Predictable and Analyzable Performance
(Gruppe 3)
Paper 5:
An Empirical Comparison of Java Remote Communication Primitives for
Intra-Node Data Transmission
Paper 6:
Looking back on the language and hardware revolutions: measured power,
performance, and scaling
Paper 7: Exploiting the map metaphor in a tool for software evolution. (Gruppe 1)
Paper 8: ArchJava: Connecting Software Architecture to Implementation (Gruppe 2)
Paper 9: A Case Study of Open Source Software Development: The Apache Server (Gruppe 3)
Paper 10: Let’s Go to the Whiteboard: How and Why Software Developers Use Drawings (Gruppe 4)
Paper 11: Splitting the Organization and Integrating the Code: Conway’s Law Revisited.
Paper 12: Software Engineering Metrics: What Do They Meaure and How do We Know?
Paper 13: How program history can improve code completion (Gruppe 1)
Paper 14: Learning from examples to improve code completion systems (Gruppe 2)
Paper 15: An evaluation of the strategies of sorting, filtering, and grouping API methods for Code Completion
Bortz und Döring. Forschungsmethoden und Evaluation: für Human- und Sozialwissenschaftler. Kapitel 1, Springer, 2006.
Bortz und Schuster. Statistik für Human- und Sozialwissenschaftler. Kapitel 1, Springer, 2010.
Jedlitschka, et al. Reporting Experiments in Software Engineering. In Advanced Topics in Empirical Software Engineering, Springer, 2007.
Informationen zu Projektarbeit und Pruefung.
Anmeldungsnummer fuer die Pruefung (Master): 12881220

