Hasso-Plattner-Institut
Hasso-Plattner-Institut
  
Login
  • de
 

Code Repository Mining (Wintersemester 2017/2018)

Dozent: Prof. Dr. Robert Hirschfeld (Software-Architekturen) , Toni Mattis (Software-Architekturen) , Stefan Ramson (Software-Architekturen) , Patrick Rein (Software-Architekturen) , Johannes Henning (Software-Architekturen) , Jens Lincke (Software-Architekturen)

Beschreibung

Die an einem Entwicklungsprozess beteiligten Parteien müssen ständig kleine und große Entscheidungen treffen. Beispielsweise müssen Programmierer über den Namen einer Variablen oder die Notwendigkeit eines Refactorings entscheiden oder Manager über die Einführung einer neuen Technologie oder das Angebot einer Mitarbeiterfortbildung.

Damit solche Entscheidungen nicht nur intuitiv, und damit schwer nachvollziehbar getroffen werden, ist eine belastbare Datengrundlage von Vorteil. Darüberhinaus werden Werkzeuge benötigt, die diese Daten aufgabenspezifisch und unmittelbar verfügbar machen. Für den Programmierer könnte dies eine Entwicklungsumgebung sein, die Problemlösungen direkt am Code vorschlägt, oder für Manager eine grafische Darstellung von Prozessmetriken, anhand derer sie Defizite erkennen und gegensteuern können.

Mit moderner Open-Source-Entwicklung, die häufig auf öffentlichen Plattformen wie GitHub oder BitBucket stattfindet, steht uns eine umfangreiche Datenbasis zur Verfügung. Der gesamte Ablauf vieler Softwareprojekte ist durch Versionsverwaltungssysteme komplett erfasst und kann durch Methoden der statistischen Datenanalyse und des maschinellen Lernens aufbereitet werden. So können Entscheidungen nicht nur mit lokal vorhandenen Daten unterstützt, sondern mit globalen Beobachtungen verglichen werden.

Im Rahmen der Veranstaltung entwerfen und implementieren die Teilnehmer Verfahren und Werkzeuge zur Datenaufbereitung, Auswertung und Entscheidungsfindung im Kontext unterschiedlich großer Mengen von Code und Versionshistorien. Dabei spielt eine Vielzahl von Aspekten eine wichtige Rolle, unter anderem:

  • Technische Lösungen zum Verarbeiten großer Mengen von Quelltext und Metadaten (Parser, Parallelisierung, Programmierkonzepte, Datenstrukturen, …)
  • Datenaufbereitung und -exploration (Statistiken über Rohdaten, Outlier, Duplikate, …)
  • Statistische Modelle zum Beschreiben, in Bezug setzen und Vorhersagen von Entwicklungsprozessen und -artefakten (Hypothesentests, Korrelation, Regression, Topic Models, Language Models, …)
  • Werkzeuge für den Nutzer und Werkzeugintegration in vertraute Umgebungen (Diagramme, Codevervollständigung, Versionsverwaltung, APIs, …)

     

Voraussetzungen

  • Vertiefende Kenntnisse in mindestens einer Programmiersprache
  • Themenspezifische Empfehlungen werden bei der Themenvorstellung bekanntgegebenen.

     

     

     

     

Literatur

Themenspezifisch

Lern- und Lehrformen

Seminar mit Projektarbeit

Leistungserfassung

Vorträge, Diskussionen, Implementierung, Dokumentation und Mitarbeit in den Seminar- und Konsultationsterminen werden mit sechs benoteten Leistungspunkten angerechnet.

Jeder Seminarteilnehmer bearbeitet eines der gestellten Seminarthemen. Das bearbeitete Thema wird in zwei Vorträgen zu je 15 - 30 Minuten Dauer präsentiert, an die sich jeweils eine Diskussion anschließt. Der erste Vortrag soll einen Zwischenstand präsentieren und dabei Kontext, Problemstellung, in Betracht gezogene Werkzeuge/Datenquellen und Literatur einführen. Der zweite Vortrag soll Design- und Implementierungsentscheidungen sowie abschließende Ergebnisse vorstellen und eine Vorführung entwickelter Softwareartefakte (Demo) enthalten.

Spätestens eine Woche vor dem jeweiligen Vortragstermin bespricht jeder Teilnehmer eine Vorversion seiner Vortragsunterlagen mit einem der Betreuer. Um einen Termin für diese Vorbesprechung kümmern sich die Teilnehmer selbstständig. Die Vortragsunterlagen sind einen Tag vor dem Vortrag per E-Mail einzureichen. Sie bestehen für beide Vorträge aus

  • den Dokumentquellen der im Vortrag verwendeten Präsentationsunterlagen,
  • einer PDF-Version derselben

    und

  • für den zweiten Vortrag zusätzlich aus

    • Rohdaten, Zwischen- und Endergebnissen (oder einem Verweis auf ihren serverseitigen Speicherort)
    • Quelltexten und Installationsanleitung der präsentierten Softwareartefakte
    • Demo-Videos/Screencasts

Die endgültigen Versionen von Implementierung und Ergebnissen sind spätestens zum Ende des Vorlesungzeitraums per E-Mail einzureichen oder, falls angebracht, auf dem bereitgestellten Server zu hinterlegen. Diese bestehen aus:

  • Quelltexten mit Installationsanleitung
  • Falls mit Daten gearbeitet wurde: Rohdaten, Zwischen- und Endergebnisse in maschinenlesbarer Form
  • Dokumentation, in der

    • Annahmen,
    • Vorgehensweise,
    • verwendete Literatur,
    • Schritte und Artefakte zum Reproduzieren der Ergebnisse,
    • eine Diskussion der Ergebnisse
    • und Einschränkungen/Grenzen des gewählten Ansatzes

    kurz dargelegt werden

Auf Reproduzierbarkeit der Ergebnisse und Wiederverwendbarkeit der Artefakte wird besonderen Wert gelegt.

Termine

  • 19.10. Vorstellung der Seminarthemen
  • 26.10. Themenvergabe und technische Einführung (Datenbankzugang, Werkzeuge)
  • Danach wöchentlich nach Absprache: Besprechung des Projektfortschritts in kleinen Gruppen

Vortragstermine werden in Abhängigkeit der Teilnehmerzahl bekanntgegeben.

Allgemeine Information

  • Semesterwochenstunden : 4
  • ECTS : 6
  • Benotet : Ja
  • Einschreibefrist : 27.10.2017
  • Programm : IT-Systems Engineering MA
  • Lehrform : P/S
  • Belegungsart : Wahlpflicht
  • Maximale Teilnehmerzahl : 16

Module

  • ITSE-Analyse
  • ITSE-Entwurf
  • ITSE-Konstruktion
  • ITSE-Maintenance
  • SAMT-Konzepte und Methoden
  • SAMT-Spezialisierung
  • SAMT-Techniken und Werkzeuge
  • OSIS-Konzepte und Methoden
  • OSIS-Spezialisierung
  • OSIS-Techniken und Werkzeuge

Zurück