You are here: SE » ThesisHome » ThesisDPPXI

ThesisDPPXI: Einladungsprozess in Saros

(Bachelorarbeit)

Diese Arbeit bahandelt den Einladungsprozess (invitation process) bei Saros.

Antrittsvortrag

Der Antrittsvortrag hat am 30. Juli 2009 stattgefunden. Die Folien sind hier zu finden.

Ausarbeitung

Die Ausarbeitung ist hier zu finden.

Abschlussvortrag

Der Abschlussvortrag hat am 26. November 2009 stattgefunden. Die Folien sind hier zu finden.

Ziel

Überarbeitung bzw. Verbesserung des Einladungsprozesses

Planung

Woche KWSorted ascending Ziele Geschafft
1 KW32 Einarbeitung (Allgemein) Paar-Programmierung mit Christopher, PacketCollector und PacketListener verstanden, weiterhin XMPP Extensions und Handlers
Versionskonflikt wird auf der Klientenseite angezeigt
2 KW33 Einarbeitung (GUI), Arbeit anmelden Refactoring mit Christopher: XMPPChatCollector, XStreamPacketExtension
Arbeit angemeldet, Versionskonflikt auf Hostseite (Anfänge), Blink-Bug gefixt
3 KW34 Versionskonflikt, Testwoche Versionskonflikt leider nicht ganz geschafft, Tests als TM durchgeführt, 2 neue Testfälle erstellt
4 KW35 Konzept (Abbrechbarkeit, Nebenläufigkeit, Verfolgbarkeit) für den Einladungsprozess bzw. Programmierung: das neue Hauptkonstrukt muss stehen Der ganze Einladungsprozess wurde überarbeitet, Interfaces sind weggefallen, der Ablauf ist nun tatsächlich aus den zwei Klassen (Out/In-InvitationProcess) kontrolliert
5 KW36 Programmierung: das Konzept muss umgesetzt werden DataTransferManager greift auf die zwei Klassen (Out/In-InvitationProcess) nicht mehr zu, sondern alles wird über Collector-en und Packets abgehandelt (IncomingTransferObject - Sándor), Cancellation geändert
6 KW37 Nebenläufigkeit, Cancellation verbessern, Testen und Bug-Fixing MacRian Branch: Zusammenarbeit mit Sándor auf Abbrechbarkeit: CancellationException & IOException
7 KW38 Nebenläufigkeit Nebenläufigkeit Konzept + Implementierungsanfang
8 KW39 GUI Eclipse Jobs API
9 KW40 Testen und Bugs korrigieren Jobs und letzte Verbesserungen des Einladungsprozesses
10 KW41 Aufschreiben Email and Zweitgutachter, Latex-Vorlage, Aufteilung, Ausarbeitung des Kapitels "VersionManager", "Technik"
11 KW42 Aufschreiben Kapitel "Abbrechbarkeit", Outreach: Saros Übungszettel, Anschreiben von Veranstaltungen
12 KW43 Aufschreiben, Testszenario, Korrektur, Ausdruck, Abgabe Testszenario, Ausarbeitung: Einführung, Screenshots, Methodik

Anforderungen

Nicht funktionale Anforderungen an den Einladungsprozess:

  • EPNF1 - Abbrechbarkeit: In jedem Zustand abbrechbar sowohl durch Host, Client, technische Fehler auf Seite des Hosts und technische Fehler auf Seite des Clients.

  • EPNF2 - Progress: Klare Verfolgung des Prozesses auf beiden Seiten mittels Fortschrittsbalken (z.B. Erstellung des Archivs auf einer Seite muss bei der anderen nachverfolgbar sein).

  • EPNF3 - Parallele Ereignisse: Es muss damit umgegangen werden können, wenn andere Sitzungsteilnehmer außer dem Host und dem Eingeladene im Hintergrund am Projekt weiterarbeiten, z.B. mittels Nachsynchronisation oder aufheben aller Nachrichten während des Einladungsprozesses.

Alice Host lädt Bob ein, Carl ist schon in Sitzung und Driver.

  • EPNF4a - Nebenläufige Einladung für den Host
    • Prinzipiell nicht so schwer

  • EPNF4b - Nebenläufige Einladung für den Eingeladenen
    • Option 1: Es muss festgehalten werden, welche Version einer Datei der Eingeladene bekommen hat und alle Änderung ab diesem Zeitpunkt müssen bereits von Saros als Ereignisse aufgezeichnet werden um am Ende der Einladung noch ausgeführt werden. (Bisher wird der Benutzer immer am Ende des Einladungsprozesses dem Projekt hinzugefügt. Man könnten ihn gleich am Anfang hinzufügen, und die Activities sammeln, aber erst am Ende alle ausführen)
    • Option 2: Nachsynchronisieren mittels Consistency Watchdog (eine Liste der Dateien, die geändert wurden, zusammenstellen und am Ende alle abgleichen)
      • Nachteil: FolderActivities, FileActivities.moved sind potentiell kompliziert

  • EPNF5 - EinladungsIDs bzw. personalisierte SessionID: Verwendung von eindeutigen Einladungs-IDs, damit nicht Nachrichten aus alten Einladungsprozessen fälschlicherweise den Einladungsprozess verändern.

  • EPNF6 - Umgehen mit Auto-Building: WorkspaceModificationOperation

  • EPNF7: Dateien immer als Archiv versenden

  • EPNF8: Implementation should be conceptual easy to understand!

  • EPNF9: Ability to share partial projects
    • Set files to derived is a workaround

  • EPNF10: Ability to share several projects (Advanced)
    • Host: User interface for selecting projects / adding projects
    • Client: User interface for mapping remote project to local projects

  • EPNF11: Das Hinzufügen eines Nutzers muss synchronisiert werden über alle bisherigen Sitzungsteilnehmer

Interfaces, die Du benutzen kannst:

  • SuperSync.runCheck()

Einladungsverlauf

Host-Seite:

  • Peer akzeptiert
  • Alle Stoppen
    • Archiv aller Dateien wird erstellt
    • Benutzer zur Sitzung hinzufügen
  • Alle Starten
  • Archiv wird versandt
  • Parallel können alle arbeiten
  • Beim Peer ist der ActivitySequencer noch gestoppt
  • Archiv ist fertig, AS starten

Funktionale Anforderungen:

  • Riad und Christoph Diplomarbeiten herauzuziehen

  • Technische Überlegungen:
    • Vielleicht ist es besser, wenn nicht mittels Callback/Listenern gearbeitet wird, sondern immer nur Aufrufe auf die eins niedrigere Schicht durchgeführt werden. Dies würde aber ein paar Änderungen an der Architektur insbesondere der Netzkomponente erfordern (vgl. z.B. in Smack die PacketListeners und auf der anderen Seite gibt es PacketCollector).
    • Von der Seite des User Interfaces muss man nochmal getrennt überlegen, da wir die bestehenden Eclipsekomponenten ja nicht abändern können.

Durchführung

Die Arbeit wird von Tas Sóti durchgeführt und von Christopher Oezbek und Stephan Salinger betreut.

Treffen

  1. Überarbeitung der Anforderungen
    • Zeit: 04.08.2009, 10.00 - 11.00
    • Teilnehmer: Christopher Oezbek, Tas Sóti
    • Besprochen:
      • Anforderungsliste erweitert
      • Einladungsprozess basierend auf org.jivesoftware.smackx.ServiceDiscoveryManager.discoverInfo(...)
      • Wissenschaftlicher Teil der Arbeit noch offen. Möglichkeiten: Synchronization diskutieren (ConsistencyWatchdog vs. Activities sammeln und am Ende ausführen), Empirisch (Einladungsprozess testen lassen und auswerten), Outreach.

Bestandteile der Bachelorarbeit

  • Features (Einladungsprozess)
  • Bug fixing
  • Wissenschaftlich
    • Outreach
    • Empirisch
    • Konzeptuell
  • Projekttests

Berichte

1. Woche

  • 04.08.2009
    • Besprechung mit Christopher
    • Einrichtung der technischen Umgebung (Eclipse, SVN, …)
    • Einarbeitung in den Code
    • DiscoveryManager
  • 05.08.2009
  • 06.08.2009
    • Einarbeitung in den Code
    • Erste Codeänderung: Versionskonflikt wird auf der Klientenseite Angezeigt
  • 07.08.2009
    • Versionskonflikt auf der Hostseite (noch nicht erledigt)
    • Erste Begegnungen mit Pico-Container
    • Pair-Programming mit Christopher (XMPPChatTransmitter wurde bereinigt und bisschen umgestellt, das Patch ist aber noch nicht ganz fertig)
Probleme, Schwierigkeiten:
  • Einarbeitungsaufwand höher als geschätzt (wer hätt's gedacht.. smile )

2. Woche

  • 10.08.2009
    • Einarbeitung (GUI)
    • Erste Lösung für den Blinken-Bug (Bug2832598)
  • 11.08.2009 Arbeit
  • 12.08.2009
    • Lösung für den Blinken-Bug überarbeitet
    • Bürokratische Sachen (Anmeldung von Bachelorarbeit)
    • XStream.patch - PacketCollectors ins Spiel bringen (Programmierung mit Christopher)
  • 13.08.2009
    • monster-patch2 reviewed mit Sándor
    • XStream-patch reviewed mit Sándor
    • IQ-Pakete-patch erstellt mit Christopher
  • 14.08.2009
    • Versionskonflikt auf Host-Seite anzeigen (mit PacketCollector) - nicht fertig

3. Woche

  • 17.08.2009
    • Einarbeitung: Threads
    • Versionskonflikt auf Host-Seite anzeigen - fertig
  • 18.08.2009 Arbeit
  • 19.08.2009
    • Versionskonflikt - Verbesserung
  • 20.08.2009 Testtag!!
  • 21.08.2009 Bug-Fixing
    • Versionskonflikt ausbessern - das hat leider nicht ganz geklappt, also dieses Feature ist in diesem Release nicht enthalten.

4. Woche

  • 24.08.2009
    • Umstellung des Einladungsprozesses: Anfänge
    • VersionCheck Bugfix
  • 25.08.2009
    • Umstellung des Einladungsprozesses: Invitation wird mit XStream abgeschickt
  • 26.08.2009 Arbeit
  • 27.08.2009

5. Woche

  • Überarbeitung des Einladungsprozesses

6. Woche

  • 7.9.2009
    • Cancellation
  • 8.9.2009 Arbeit
  • 9.9.2009
    • Exceptions mit Sándor abgesprochen
    • Branch für Sándor und mich aufmachen (macRIAN)
  • 10.9.2009
    • Releasen als RM
    • macRIAN gemerged mit meinem Patch
    • Cancellation
  • 11.9.2009
    • Releasen als RM
    • Bugs fixen

7. Woche

  • 14.9.2009 Arbeit
  • 15.9.2009
    • Konzept von Nebenläufigkeit weiterentwickeln
    • Besprechung&Planung mit Christopher, Stephan und Sándor
  • 16.9.2009 Persönliche Angelegenheit (nicht anwesend)
  • 17.9.2009
  • 18.9.2009
    • Kleines Refactoring vom Einladungsprozess
    • Einladungsprozess: Test und Bug-Fixing
    • Merge von MacRian und Trunk

8. Woche (siehe Tabelle)

9. Woche (siehe Tabelle)

10. Woche (siehe Tabelle)

11. Woche (siehe Tabelle)

12. Woche (siehe Tabelle)

Comments