Verbesserung und Erweiterung der Core-Bestandteile von Saros

bearbeitet von David Sungaila

Überblick

In dieser Bachelorarbeit wird die vorangehende Arbeit Refaktorisierung des Eclipse Plugins Saros für die Portierung auf andere IDEs von Arndt Lasarzik fortgeführt. Die Refaktorisierung der Eclipse- und IntelliJ-Plugins wurde nicht vollständig abgeschlossen, was an der Größe und Komplexität des Saros-Projektes lag. Diese Aufgabe wird fortgesetzt, um den Entwicklungsprozess (z.B. von zukünftigen neuen IDE-Plugins) und die Wartung bisheriger Plugins zu vereinfachen.

Anforderungen

  • Verschiebung von Codeduplikaten, welche offensichtlich in den Core gehören
  • Abstraktion von Code, welcher editorspezifische Logik enthält
  • Ggf. Nachimplementierung von Funktionen in Saros/I, die durch Refaktorisierung einhergehen
  • Implementierung von Core-Facaden für die HTMLUI

Verwandte Arbeiten

Aktueller Status (Stand 21.07.2016)

Die Bachelorarbeit wurde am 15.04.2016 eingereicht. Der Abschlussvortrag fand am 14.07.2016 im Rahmen vom Seminar "Beiträge zum Software Engineering" statt.

Meilensteine und Planung

Past daysSorted ascending CW Goals target accomplished wrench
DONE 2015‑10‑29 44 Erster Gerrit Patch (kleine Refaktorisierung) Ja, aber abgelehnt worden
DONE 2015‑11‑05 45 Suche nach Code-Duplikaten, Überblick über Abhängigkeiten, Suche nach Abhängigkeits-Blättern, Vorläufiger Name für Bachelorarbeit, diese Wikiseite erstellen Ja
DONE 2015‑11‑12 46 Zwei Klassen nach Core verschieben Ja
DONE 2015‑11‑20 47 Watchdog package nach Core verschieben Nein, nicht fertig
DONE 2015‑11‑26 48 CoreContextFactory refaktorisieren, SarosLifecycle implementieren, Watchdog package weiter refaktorisieren Nein, zeitlich nicht geschafft
DONE 2015‑12‑03 49 CoreContextFactory refaktorisieren, Rundmail zu SarosLifecycle verschicken, SarosLifecycle implementieren, Watchdog package weiter refaktorisieren Ja, fast alles geschafft
DONE 2015‑12‑10 50 SarosLifecycle hochladen, WatchdogClient überarbeiten Ja
DONE 2015‑12‑17 51 SarosLifecycle vervollständigen, WatchdogHandler refaktorisieren Ja
DONE 2016‑01‑14 2 SarosLifecycle weiter entwickeln, WatchdogHandler weiter refaktorisieren, Bachelorarbeit als LaTeX-Dokument angelegen Ja
DONE 2016‑01‑21 3 SarosLifecycle fehlerbereinigen, WatchdogHandler Review-Feedback umgesetzen, Bachelorarbeit als LaTeX-Dokument angelegen Ja
DONE 2016‑01‑28 4 Context factories für watchdogs anpassen, Entwicklungsumgebung für HTML UI aufsetzen Ja
DONE 2016‑02‑04 5 SarosLifecycle verbessern, über HTML UI sprechen Ja
DONE 2016‑02‑11 6 SarosLifecycle weiter nachbessern, Facaden für HTML UI überprüfen Ja
DONE 2016‑02‑18 7 SarosLifecycle Review anstoßen Ja
DONE 2016‑03‑03 9 Neues Reviewfeedback für SarosLifecycle bearbeiten Ja
  2016‑03‑24 12  

Wöchentlicher Status

Woche 18 (KW 9; 03.03.2016)

Aktivitäten

Ergebnisse

Probleme

  • einwöchige Erkrankung verschob Meeting von 25.02. auf 03.03.

Nächste Schritte

Woche 16 (KW 7; 18.02.2016)

Aktivitäten

  • SarosLifecycle Reviews anstoßen und bearbeiten

Ergebnisse

  • HTML Facaden weiter entwickelt

Probleme

Nächste Schritte

  • SarosLifecycle weiter anpassen nach neuem Review

Woche 15 (KW 6; 11.02.2016)

Aktivitäten

  • SarosLifecycle weiter entwickeln
  • HTML: Facaden für Invitation überprüfen

Ergebnisse

  • SarosLifecycle weiter angepasst
  • HTML: Accept und Cancel Invitation begonnen

Probleme

  • Weiterhin Defekt bei SarosContext

Nächste Schritte

  • Neue SarosLifecycle Reviews anstoßen

Woche 14 (KW 5; 04.02.2016)

Aktivitäten

  • SarosLifecycle überarbeiten
  • Über HTML UI sprechen

Ergebnisse

  • SarosLifecycle angepasst
  • watchdog package vollständig verschoben

Probleme

  • SarosContext durch fremdverschulden defekt → erschwert Entwicklungsprozess

Nächste Schritte

  • HTML Facaden für Starten und Fortschritt von Sitzungseinladung überprüfen
  • SarosLifecycle reparieren und gefundene Testfälle prüfen

Woche 13 (KW 4; 28.01.2016)

Aktivitäten

  • WatchdogHandler und context factories anpassen
  • HTML UI aufsetzen

Ergebnisse

  • WatchdogHandler ist verschoben und damit gesamtes watchdog-package (endlich!)
  • HTML UI aufgesetzt

Probleme

  • HTML UI wird auf Arbeitsrechner nicht angezeigt (bekanntes Problem mit Windows 10)

Nächste Schritte

  • Neustes Feedback zu SarosLifecycle bearbeiten
  • Über Aufgaben zur HTML UI sprechen

Woche 12 (KW 3; 21.01.2016)

Aktivitäten

  • SarosLifecycle weiter entwickeln
  • kleinere Probleme mit WatchdogHandler package-info beheben
  • Bachelorarbeit anmelden

Ergebnisse

  • WatchdogHandler muss noch ein letztes Mal reviewed werden
  • SarosLifecycle wieder verbessert
  • Bachelorarbeit offiziell angemeldet smile

Probleme

Nächste Schritte

  • Context Factories anpassen, nachdem alle watchdogs verschoben
  • HTML UI aufsetzen und testen

Woche 11 (KW 2; 14.01.2016)

Aktivitäten

  • SarosLifecycle weiter entwickeln
  • WatchdogHandler weiter refaktorisieren
  • Dokument der Bachelorarbeit anlegen

Ergebnisse

  • WatchdogHandler noch nicht gut genug
  • Es sind noch Fehler im SarosLifecycle vorhanden
  • LaTeX-Dokument der Bachelorarbeit angelegt

Probleme

  • Feedback zu WatchdogHandler unklar; Problematik nicht verstanden

Nächste Schritte

  • WatchdogHandler nach Kritik reparieren
  • Fehler in SarosLifecycle beheben
  • Formular ausfüllen zur Anmeldung der Bachelorarbeit

Woche 7 (KW 51; 17.12.2015)

Aktivitäten

  • SarosLifecycle vervollständigen
  • WatchdogHandler refaktorisieren

Ergebnisse

  • SarosLifecycle steht zum Review bereit (#2982, [[http://saros-build.imp.fu-berlin.de/gerrit/#/c/2983/][#29823] und #2984)
  • WatchdogHandler refaktorisiert (#2980)

Probleme

  • WatchdogHandler ist noch nicht reif genug

Nächste Schritte

  • WatchdogHandler überarbeiten
  • Bachelorarbeit anlegen (Textdokument)
  • SarosLifecycle-Reviews bearbeiten
  • Arbeitspakete festlegen (statt Meilensteine)

Woche 6 (KW 50; 10.12.2015 [ausgefallen])

Aktivitäten

  • SarosLifecycle hochladen
  • WatchdogClient überarbeiten

Ergebnisse

  • SarosLifecycle als Entwurf hochgeladen (#2982)
  • WatchdogClient mit Änderungen Dritter refaktorisiert (#2979)

Probleme

  • Meeting aus Krankheitsgründen ausgefallen

Nächste Schritte

  • SarosLifecycle vollenden
  • WatchdogHandler verschieben

Woche 5 (KW 49; 03.12.2015)

Aktivitäten

  • CoreContextFactory refaktorisieren
  • Rundmail zu SarosLifecycle verschicken
  • Lokale Implementierung von SarosLifecycle

Ergebnisse

  • CoreContextFactory verschoben (#2971)
  • Rundmail verschickt
  • Lokal einen Entwurf für SarosLifecycle fertiggestellt

Probleme

  • WatchdogClient noch nicht überarbeitet; im Review mehrere Probleme festgestellt; Änderungen von Mitarbeiter abwarten für Überarbeitung

Nächste Schritte

  • WatchdogClient mit vorhergehenden Arbeit von Mitarbeiter überarbeiten
  • CoreContextFactory Reviewprozess durchlaufen lassen
  • Hochladen von SarosLifecycle

Woche 4 (KW 48; 26.11.2015)

Aktivitäten

  • Fehlerbehebungen an TextSelection vorgenommen
  • Verschieben von WatchdogClient nach Core
  • Lokale Implementierung von SarosLifecycle

Ergebnisse

  • TextSelection verbessert (#2947)
  • WatchdogClient nach Core verschoben(#2979)

Probleme

  • Im Reviewprozess wurden Fehler in TextSelection entdeckt; unerwartete Aktivität; Fehler in bestehendem Code entdeckt
  • WatchdogClient ist noch nicht gut genug
  • Rundmail zu SarosLifecycle noch nicht verschickt; CoreContextFactory noch nicht überarbeitet

Nächste Schritte

  • Weiter an Watchdog package arbeiten
  • CoreContextFactory refaktorisieren und Rundmail verschicken

Woche 3 (KW 47; 20.11.2015)

Aktivitäten

  • Versuch möglichst viel vom watchdog package in den Core zu verschieben

Ergebnisse

  • AwarenessInformationCollector verschoben (#2958)

Probleme

  • ConsistencyWatchdogClient und ConsistencyWatchdogHandler nicht ohne weiteres verschiebar
  • Alle bisherigen Patches abgelehnt, kritisiert oder nicht übernommen → schleichende Frustration und Demotivation

Nächste Schritte

  • CoreContextFactory refaktorisieren
  • Pläne zur Refaktorisierung von Saros-Context-Factory-Initialisierung über Mailinglist verteilen
  • Weiter an Watchdog package arbeiten

Woche 2 (KW 46; 12.11.2015)

Aktivitäten

  • Klassen in den Core verschieben
  • Diese Wikiseite erweitern

Ergebnisse

Probleme

  • Wusste nicht, wie neue Patch Sets angelegt werden können

Nächste Schritte

  • Eine komplexere Klasse zum refaktorisieren finden

Woche 1 (KW 45; 05.11.2015)

Aktivitäten

  • Übersicht über Codeduplikate geschafft
  • Eine Wikiseite für ThesesHome erstellen

Ergebnisse

  • Dokumente zur Übersicht über Codeduplikate erstellt
  • Diese Wikiseite erstellt

Probleme

  • Wege kreuzen sich mit anderer Arbeit, welche auch Refaktorisierung betreibt

Nächste Schritte

  • Klassenduplikate finden und in den Core verschieben

Woche 0 (KW 44; 29.10.2015)

Aktivitäten

  • Erstellung des ersten Gerrit-Patches
  • Erster Versuch einer Refaktorisierung

Ergebnisse

  • Gerrit-Patch erstellt (#2924)

Probleme

  • Die Refaktorisierung war nicht zielführend und wurde abgelehnt

Nächste Schritte

  • Überblick verschaffen: Codeduplikate und deren Abhängigkeiten
  • Diese Wiki-Seite erstellen

Ergebnisse (Gerrit-Patches)

Siehe alternativ das Suchergebnis aller Gerrit-Patches von mir.
Name Erstellt days Letzte Änderung days Zustand Kommentar
(API) Move IFollowModeChangesListener into core 2015‑10‑22 2015‑11‑18 abandoned Dies war eine Übung zum vertraut werden mit Gerrit und dem Reviewprozess. Inhaltlich nicht zu gebrauchen, daher zurückgezogen.
(API) Move LineRange to core 2015‑11‑12 2015‑12‑03 merged Eine neue platformunabhängige Klasse in Core angelegt. Vorbereitung zum Verschieben von RemoteEditorManager nach Core.
(API) Move TextSelection to core 2015‑11‑12 2015‑12‑08 merged Eine neue platformunabhängige Klasse in Core angelegt. Vorbereitung zum Verschieben von RemoteEditorManager nach Core.
(API) Move RemoteEditorManager to core 2015‑11‑12 2015‑12‑08 merged Platformunabhängige Klasse nach Core verschoben.
(API) Move AwarenessInformationCollector to core 2015‑11‑19 2016‑06‑16 abandoned Klasse nach Core verschoben, obwohl es nach UI gehört. Benötigt Überarbeitung.
(API) Move IsInconsistentObservable to core 2015‑11‑19 2015‑11‑20 abandoned Einzelne Klasse wurde nach Core verschoben. Zurückgezogen, da mein anderer Patch es besser tat.
(API) Move ConsistencyWatchdogClient to core 2015‑11‑26 2015‑12‑03 abandoned Eine Klasse samt dazugehörigen Referenzen nach Core verschoben. Wurde zurückgezogen, da ein anderer Mitarbeiter Verbesserungen vornahm und ich dessen Arbeit als Grundlage nehmen wollte. Neuer Patch ist #2979.
(API) Move WatchdogServer and DocumentChecksum to core 2015‑11‑19 2015‑12‑13 merged Teil der Verschiebung des gesamten watchdog packages nach Core.
(API) Move WatchdogClient to core 2015‑12‑09 2015‑12‑16 merged Teil der Verschiebung des gesamten watchdog packages nach Core.
(API) Move WatchdogHandler to core 2015‑12‑09 2016‑01‑13 abandoned Teil der Verschiebung des gesamten watchdog packages nach Core. Wurde verworfen, um auf einen anderen commit aufzubauen. Neuer Patch ist #2996.
(API) Move SarosCoreContextFactory to core 2015‑12‑03 2015‑12‑08 merged Die Klasse war nicht klar definiert und auch noch nicht im Core. Vorbereitung für SarosLifecycle.
(API) Create AbstractSarosLifecycle 2015‑12‑10 2016‑03‑03 merged Refaktorisierung von Initialisierung/Finalisierung von SarosContextFactories. Codeduplikate auf jeweiligen Plattformen entfernen und in diese abstrakte Klasse packen. Implementierungen in späteren Patches #2983 und #2984.
(API) Extend AbstractSarosLifecycle (IntelliJ) 2015‑12‑10 2016‑03‑29 merged Implementierung von AbstractSarosLifecycle für IntelliJ.
(API) Extend AbstractSarosLifecycle (Eclipse) 2015‑12‑11 2016‑03‑29 merged Implementierung von AbstractSarosLifecycle für Eclipse.
(API) Move WatchdogHandler to core and update core context 2016‑01‑13 2016‑01‑28 merged Teil der Verschiebung des gesamten watchdog packages nach Core. Außerdem wurden die context factories angepasst, da jetzt alle watchdogs im Core liegen.
(API)(HTML) IncomingSessionNegotiation UI preparation 2016‑02‑12 2016‑07‑02 open Vorbereitung des HTML UI backends für die Annahme einer Sitzungseinladung.