Code Repository Mining (Sommersemester 2020)
Dozent:
Prof. Dr. Robert Hirschfeld
(Software-Architekturen)
,
Dr. Jens Lincke
(Software-Architekturen)
,
Toni Mattis
(Software-Architekturen)
,
Stefan Ramson
(Software-Architekturen)
Allgemeine Information
- Semesterwochenstunden: 4
- ECTS: 6
- Benotet:
Ja
- Einschreibefrist: 06.04.2020-22.04.2020
- Lehrform: Projekt / Seminar
- Belegungsart: Wahlpflichtmodul
- Lehrsprache: Deutsch
- Maximale Teilnehmerzahl: 15
Studiengänge, Modulgruppen & Module
- OSIS: Operating Systems & Information Systems Technology
- HPI-OSIS-K Konzepte und Methoden
- OSIS: Operating Systems & Information Systems Technology
- HPI-OSIS-T Techniken und Werkzeuge
- OSIS: Operating Systems & Information Systems Technology
- HPI-OSIS-S Spezialisierung
- SAMT: Software Architecture & Modeling Technology
- HPI-SAMT-K Konzepte und Methoden
- SAMT: Software Architecture & Modeling Technology
- HPI-SAMT-T Techniken und Werkzeuge
- SAMT: Software Architecture & Modeling Technology
- HPI-SAMT-S Spezialisierung
- CODS: Complex Data Systems
- HPI-CODS-K Konzepte und Methoden
- CODS: Complex Data Systems
- HPI-CODS-T Techniken und Werkzeuge
- CODS: Complex Data Systems
- HPI-CODS-S Spezialisierung
Beschreibung
Damit Programmierer ihre Software besser verstehen, ausbauen und warten können, ist eine belastbare Datengrundlage hilfreich. Zu deren Nutzung werden Werkzeuge benötigt, die diese Daten aufgabenspezifisch verfügbar machen, sowie Vorhersagen und Empfehlungen unterstützen. Dies könnte beispielsweise eine Entwicklungsumgebung leisten, die Problemlösungen direkt am Code vorschlägt; eine grafische Darstellung von Metriken, anhand derer Programmierer Defizite erkennen und gegensteuern können; oder historische Einsichten in den Entwicklungsprozess, die beim Programmverständnis helfen.
Mit moderner Open-Source-Entwicklung, die häufig auf öffentlichen Plattformen wie GitHub oder TravisCI stattfindet, steht uns eine umfangreiche Datenbasis zur Verfügung. Der gesamte Ablauf vieler Softwareprojekte ist durch Versionsverwaltung, Ticketsysteme und "Continuous Integration" (CI) 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 weltweiten Beobachtungen verglichen und kalibriert werden.
Im Rahmen der Veranstaltung entwerfen und implementieren die Teilnehmer Verfahren und Werkzeuge zur Datenbeschaffung, Datenaufbereitung, Auswertung und Entscheidungsfindung im Kontext unterschiedlich großer Mengen von Code und Projektdaten. 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, Datenstrukturen, Implementierungsdetails von Git, …)
- Datenaufbereitung und -exploration (Statistiken über Rohdaten, Outlier, Duplikate, Verknüpfen verschiedener Quellen, …)
- Statistische Modelle zum Beschreiben, in Bezug setzen und Vorhersagen von Entwicklungsprozessen und -artefakten. (Codemetriken, Hypothesentests, Korrelation, Regression, Einbettung, Topic Models, Klassifikatoren, …)
- Werkzeuge und deren Integration in vertraute Umgebungen (Diagramme, Codevervollständigung, Versionsverwaltung, APIs, Such- und Empfehlungssysteme, …)
Neben technischer Qualität der Software, formaler Sorgfalt bei der Nutzung mathematischer Modelle und Benutzbarkeit der Schnittstellen spielen insbesondere im Bereich des maschinellen Lernens und Data Minings auch Reproduzierbarkeit, Replizierbarkeit und Erklärbarkeit von Analysen, Modellen und Vorhersagen eine wichtige Rolle bei allen bearbeiteten Themen.
Voraussetzungen
Vertiefende Kenntnisse in mindestens einer Programmiersprache (Empfohlen: Smalltalk, JavaScript, Python, und/oder SQL)
Themenspezifische Empfehlungen werden bei der Themenvorstellung bekanntgegebenen.
Literatur
Themenspezifisch
Lern- und Lehrformen
Seminar mit Projektarbeit
Wichtige Hinweise zum Online-Seminar:
Das Seminar wird bis auf weiteres ohne Präsenzveranstaltungen stattfinden. Die Live-Teilnahme an Veranstaltungsterminen setzt die Software Zoom voraus. Zur Vermeidung von Missbrauch werden nur Accounts mit Klarnamen oder vorheriger Anmeldung per E-Mail an die Dozenten zugelassen.
Zur Kommunikation der Teilnehmer untereinander und mit den Betreuuern wird Slack eingesetzt. Alle notwendige oder vertrauliche Kommunikation erfolgt auch weiterhin (zusätzlich) per E-Mail.
Links zu den Veranstaltungen werden unter "Termine" und im jeweiligen Materialienverzeichnis/Foliensatz bekanntgegeben.
Leistungserfassung
Mit sechs benoteten Leistungspunkten wird angerechnet:
• Vorträge mit Diskussionen (20% Zwischenstands-, 20% Abschlussvortrag)
• Implementierung mit Dokumentation (40%)
• Mitarbeit in den Seminar- und Konsultationsterminen (20%)
Jeder Seminarteilnehmer bearbeitet eines der gestellten Seminarthemen. Das bearbeitete Thema wird in zwei Vorträgen präsentiert, an die sich jeweils eine Diskussion anschließt.
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 oder als Git-Repository 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
• Beispieldaten und Tests
• Dokumentation, in der
○ Annahmen,
○ Vorgehensweise,
○ Konzepte und verwendete Literatur,
○ Architektur des Softwareartefakts,
○ Wichtige Implementierungsdetails,
○ Schritte und Artefakte zum Reproduzieren der Ergebnisse,
○ eine grobe Diskussion der Ergebnisse
○ und Einschränkungen/Grenzen des gewählten Ansatzes
kurz und übersichtlich strukturiert dargelegt werden.
Auf Reproduzierbarkeit der Ergebnisse und Wiederverwendbarkeit der Artefakte wird besonderen Wert gelegt.
Termine
- Dienstag, 21.04.2020: Einführungsveranstaltung via Zoom (Ab 15 Uhr verfügbar, Beginn 15:15)
- (Deadline) Sonntag, 26.04.2020: Themenwünsche
- Priorisierte Liste mit 3+ Themen an Betreuer
- Dienstag, 28.04.2020: Themenzuweisung, Server-Onboarding
Zurück