Ausgangssituation
Saros ist ein
PlugIn für Eclipse, welches Entwickler bei der Umsetzung von Paarprogrammierung unterstützt. Es ermöglicht den Austausch sowie die gleichzeitige Bearbeitung von Programmcode und Änderungen können verfolgt oder selbst vorgenommen werden. Um diese Änderungen allen beteiligten Entwicklern bereitzustellen, werden die Dateien regelmäßig synchronisiert. Für eine bessere Kommunikation bietet Saros eine Chatfunktion sowie ein Whiteboard.
Saros war ursprünglich für Eclipse entwickelt worden und besteht aus mehreren Modulen unter anderem dem Saros-Core und der Saros-UI. Im Core sind alle Funktionen zusammengefasst, die unabhängig der IDE benötigt werden, wie zum Beispiel das Monitoring der Dateien oder die Verbindung zwischen den Teilnehmern.
Um den Einsatz von Saros außerhalb von Eclipse in andere Entwicklungsumgebungen zu ermöglichen, musste eine Anpassung der GUI erfolgen, andernfalls hätte diese für Eclipse und
IntelliJ separat implementiert werden müssen, da unterschiedliche Technologien für die GUI verwenden. Um dies zu verhindern, hat Christian Cikryt 2015 in seiner Masterthesis den Einsatz eines Browser als GUI evaluiert und mit Hilfe von HTML, CSS und
JavaScript implementiert. Bastian Sieker optimierte mit seiner Masterthesis diese Schnittstelle.
Problem
Durch den kombinierten Einsatz von Java und
JavaScript ist der Programmcode schwieriger statisch zu überprüfen und die Einarbeitung in den Quellcode wird ebenfalls erschwert. Des Weiteren müssen einige Klassen und Funktionen in Java und
JavaScript implementiert werden, was den Quellcode ohne weiteren Nutzen vergrößert.
Ziel
Das Ziel der Bachelorarbeit ist die Schnittstelle zwischen Saros-GUI und Saros-Core mit einer Technologie zu überbrücken, die es ermöglicht Java oder JVM-Bytecode und
JavaScript auszugeben. Dies soll die Einarbeitung in den Quellcode erleichtern, welche aktuell durch die unklare Struktur zwischen Java und
JavaScript erschwert wird. Des
Weiteren soll die Größe des Quellcodes damit verringert und die statische Überprüfung erleichtert werden.
Umsetzung
Um dieses Ziel erfolgreich umzusetzen, erfolgt zuerst eine Einarbeitung in die aktuelle Saros-UI. Darauf folgt die Untersuchung, welche Technologien in Frage kommen und welche am besten dafür geeignet ist. Anschließend die Einarbeitung in die geeignete Technologie und abschlieÿend die Implementierung des Programmcodes und der
Tests.
Status
24.09.2018
Aktivitäten
- Anmeldung der Bachelorthesis
- Einarbeitung in das Thema
- notwendige Master-Thesen gelesen
Ergebnisse
Nächste Schritte
- Frameworks und Programmiersprachen suchen und auf Eignung prüfen
- Thesis-Webseite einrichten
01.10.2018
Aktivitäten
- Kotlin und Scala.js bieten sich für die Brücke an
- In den bestehenden Quellcode eingearbeitet
Ergebnis
- Kotlin und Scala.js bieten sich an
- Kotlin für die Implementierung der Brücke besser geeignet
- Problem: Website lies sich nicht einrichten
Nächste Schritte
- HTML-GUI unter Eclipse starten
- Einarbeitung in Kotlin
- ersten Zugriff von Frontend auf Kotlin implementieren
08.10.2018
Aktivitäten
- In Kotlin eingearbeitet
- Thesis-Webseite eingerichtet
- In den bestehenden Quellcode eingearbeitet
Ergebnis
- den bestehenden Programmcode in Kotlin implementiert
- Thesis-Webseite
- Probleme mit der HTML-GUI unter Ubuntu 18.04
Nächste Schritte
- HTML-GUI unter Eclipse starten
- ersten Zugriff von Frontend auf Kotlin implementieren
15.10.2018
Aktivitäten
- Problem HTML-GUI untersucht und gelöst
- Zugriff vom Frontend auf Kotlin nicht gelungen
Ergebnis
- HTML-GUI unter Ubuntu 18.04 nur mit Eclipse 4.4 möglich
- Kotlin muss wie Java in JS durch invoking verwendet werden
Nächste Schritte
- mehrfach Implementierung von z.B. Klassen und Funktionen dokumentieren und im UI-Package in Kotlin implementierieren
- Kotlin durch JS aufrufen, durch invoking in einem simplen Beispiel
23.10.2018
Aktivitäten
- Model-Klassen implementiert: Contact, State, ValidationResult
- Schwierigkeiten beim Verwendung von Kotlin-Klassen im Pico-Container
Ergebnis
- Ein Teil der Model-Klassen implementiert
Nächste Schritte
- Problem Kotlin-Klassen im Pico-Container untersuchen
07.11.2018
Aktivitäten
- Problem Kotlin-Klassen im Pico-Container untersucht
- weitere Klassen implementiert
Ergebnis
- Problem mit Pico-Container ist Bug des PlugIns → durch Update des Kotlin-PlugIns in Eclipse gelöst
- HTMLUIFactory, HTMLUIStrings, View sowie JavsScriptAPI in Kotlin implementiert
Nächste Schritte
- Reimplementierung fortsetzen
21.11.2018
Aktivitäten
- weitere Klassen in Kotlin implementiert
- Inhaltstruktur der Bachelorarbeit erstellt
Ergebnis
Nächste Schritte
- Rohfassung der Bachelorarbeit vorbereiten
- Implementierung abschließen
28.11.2018
Aktivitäten
Ergebnis
-
- Kotlin muss wie Java in JS durch invoking verwendet werden
Nächste Schritte
- Thread-Problem sowie die neu Implementierung der TypeRefinery und TypedJSFunction abschließen
- erste Version der ausformulierten Arbeit erstellen.