Ptt17 Assignment4

Mining Software Data

Aufgabe

Verwenden Sie die Daten aus dem 101simplejava Repo.

Bearbeiten Sie die Aufgabe gemäß Ihrer zugewiesenen Option.

Modalitäten:

Sie müssen in der Regel genau eine Hausaufgabe.pdf und ein Projekt abgeben.

PDF
  • Je nach Option variiert der Inhalt.
  • Zusätzlich können Sie sinnvolle Abbildungen wie Klassendiagramme hinzufügen.
  • Die PDF-Datei sollte maximal 3 Seiten bei Schriftgröße 12 inklusive Abbildungen und Code-Beispielen haben.
Projekt
  • Sie dürfen zwischen Python und Java entscheiden.
  • Geben Sie das komplette Projekt ab. Verwenden Sie dabei entweder ein Buildmanagement-Tool wie Maven, Gradle oder Ant oder fügen Sie die benötigten Abhängigkeiten (In der Regel .jar-Dateien bei Java-Projekten) in ein Ordner des Projektes hinzu.
  • Kommentieren Sie ihren Code kurz (!) wo es sinnvoll erscheint.
  • Erstellen Sie ein oder mehrere Tests (Bei Java: JUnit4-Tests mit Quellcode-Datei Demo.java), welche die Funktionsweise des Systems mit allen Bestandteilen demonstrieren.
  • Code-Dateien müssen in Unicode codiert sein (etwa UTF-8).
Abgabeordner

Laden Sie die PDF-Datei und das Projekt in ihr Gruppenverzeichnis:
https://svn.uni-koblenz.de/softlang/ptt17/GRUPPENNAME/solutions/04/

Optionen

Option A: JavaParser

Das Ziel ist in einem bestehenden Projekt die Verwendung des Visitor Patterns zu erkennen.
In der Hausaufgabe.pdf sollten Sie mindestens folgende Punkte haben:

  • Kriterien des Visitor Patterns
  • Beschreibung der Implementation und der Ausgabedatei

Implementieren Sie mittels eines Java Parsers in der Sprache Java oder Python geschriebenen Detector für das Visitor Pattern.
Dabei sollen mindestens folgende Bestandteile ermittelt werden:

  • Pfade und Namen der Visitor Schnittstelle und der konkreten Visitor Klassen.
  • Alle relevanten Methodennamen mit Zuordnung zu den Klassen.
  • Pfade, Klassen- und Methodennamen in denen die relevanten Methoden aufgerufen werden.

Für jedes analysierte Projekt, dass ein Visitor Pattern enthält, soll eine geeignete Ausgabedatei erstellt werden. Die Ausgabedatei soll alle oben genannten Pfade und Namen enthalten.

Erstellen Sie eine Testdatei (Demo.java für Java-Implementation), wo Sie über alle Contributions (Projekte) des 101simplejava Repos iterieren und mithilfe des Detectors die Projekte mit Visitor Pattern erkennen. Die Ausgabedateien sollen im Projekt unter outputs/PROJEKTNAME.DATEIFORMAT gespeichert werden.

Option B: Regular Expression Matching

Das Ziel ist in einem bestehenden Projekt die Verwendung des Visitor Patterns zu erkennen.
In der Hausaufgabe.pdf sollten Sie mindestens folgende Punkte haben:

  • Kriterien des Visitor Patterns
  • Beschreibung der Implementation und der Ausgabedatei

Implementieren Sie mittels Regulärer Ausdrücke in der Sprache Java oder Python geschriebenen Detector für das Visitor Pattern.
Dabei sollen mindestens folgende Bestandteile ermittelt werden:

  • Pfade und Namen der Visitor Schnittstelle und der konkreten Visitor Klassen.
  • Alle relevanten Methodennamen mit Zuordnung zu den Klassen.
  • Pfade, Klassen- und Methodennamen in denen die relevanten Methoden aufgerufen werden.

Für jedes analysierte Projekt, dass ein Visitor Pattern enthält, soll eine geeignete Ausgabedatei erstellt werden. Die Ausgabedatei soll alle oben genannten Pfade und Namen enthalten.

Erstellen Sie eine Testdatei (Demo.java für Java-Implementation), wo Sie über alle Contributions (Projekte) des 101simplejava Repos iterieren und mithilfe des Detectors die Projekte mit Visitor Pattern erkennen. Die Ausgabedateien sollen im Projekt unter outputs/PROJEKTNAME.DATEIFORMAT gespeichert werden.

Option C: Cosine similarity

Das Ziel ist die Ähnlichkeit zwischen Projekten zu ermitteln.

In der Hausaufgabe.pdf sollten Sie mindestens folgende Punkte haben:

  • Beschreibung der Implementation und der Ausgabedatei
  • Interpretation der Ergebnisse

Implementieren Sie mittels einer geeigneten API für Java oder Python die Berechnung der Cosine Similarity. Die zu vergleichende Vektoren sollen auf den TF-IDF Werten aus den Projekten basieren. Die Begriffe sollen aus allen Code-Dateien (z.B. .java-Dateien bei Java Projekten) extrahiert werden. Bevor Sie die TF-IDF Werte für die Begriffe berechnen müssen Sie geeignetes Preprocessing (Tokenizing, Stemming, stopwords) betreiben.

Interpretieren Sie ihre Ergebnisse, indem Sie mindestens zwei verglichene Projekte manuell vergleichen. Überprüfen und validieren Sie ihren eigenen Vergleich mit dem berechneten Ähnlichkeitswerten. Versuchen Sie ihre Beobachtungen zu deuten.

Erstellen Sie eine Testdatei (Demo.java für Java-Implementation), wo Sie über alle Contributions (Projekte) des 101simplejava Repos iterieren und mithilfe ihrer Implementation die Projekte vergleichen. Erstellen Sie eine geeignete Ausgabedatei pro Projekt. Die Ausgabedateien sollen im Projekt unter outputs/PROJEKTNAME.DATEIFORMAT gespeichert werden.

Option D: TF-IDF

Das Ziel ist Begriffe zu ermitteln, die ein Projekt charakterisieren.

In der Hausaufgabe.pdf sollten Sie mindestens folgende Punkte haben:

  • Beschreibung der Implementation und der Ausgabedatei
  • Interpretation der Ergebnisse

Implementieren Sie mittels einer geeigneten API für Java oder Python die Berechnung der TF-IDF Werte für alle Begriffe aus einem Projekt. Die Begriffe sollen aus allen Code-Dateien (z.B. .java-Dateien bei Java Projekten) extrahiert werden. Bevor Sie die TF-IDF Werte berechnen müssen Sie geeignetes Preprocessing (Tokenizing, Stemming, stopwords) betreiben. Stellen Sie die Werte in ein Ranking.

Interpretieren Sie ihre Ergebnisse, indem Sie mindestens fünf analysierte Projekte betrachten. Überprüfen und validieren Sie inwieweit charakterisierende Begriffe aus den Ergebnissen auszulesen sind. Versuchen Sie ihre Beobachtungen zu deuten.

Erstellen Sie eine Testdatei (Demo.java für Java-Implementation), wo Sie über alle Contributions (Projekte) des 101simplejava Repos iterieren und mithilfe ihrer Implementation die Projekte analysieren. Erstellen Sie eine geeignete Ausgabedatei pro Projekt. Die Ausgabedateien sollen im Projekt unter outputs/PROJEKTNAME.DATEIFORMAT gespeichert werden.

Gruppe-Option-Zuordnung

Optionen Gruppen
Option A uniform, whiskey, xray, yankee, zulu
Option B kilo, mike, november, oscar, quebec
Option C alpha, charlie, delta, echo, golf
Option D hotel, juliet, romeo, sierra, tango