Skip to content
 
 
emo_fb12_progr.jpg
 
  Start  
 
You are here:» University » Mathematik und Informatik » Programming Languages and Software Engineering » Teaching » Sommersemester 2012 » Empirical Methods for Computer Scientists

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

  1. Teil 1: Motivation
  2. Teil 2: Performance Messen
  3. Teil 3: Vorgehen bei Empirische Forschung
  4. Teil 4: Qualitative Untersuchungen
  5. Teil 5: Quantitative Untersuchungen
  6. Teil 6: Kontrollierte Experimente
  7. Teil 7: Ethik
  8. Gastvorlesung Thorsten Berger
  9. 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

Paper 16: An experiment about static and dynamic type systems: doubts about the positive impact of static type systems on development time

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

Last modified: 06.07.2012 · kaestnec

 
 
 
Fb. 12 - Mathematik und Informatik

Programmiersprachen und Softwaretechnik, Hans-Meerwein-Straße, D-35032 Marburg
Tel. +49 6421/28-21513, Fax +49 6421/28-25419, eMail: dinklage@informatik.uni-marburg.de

URL dieser Seite: http://www.uni-marburg.de/fb12/ps/teaching/ss12/em

Legal | Privacy