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 |
KW |
Ziele |
Geschafft |
3 |
KW34 |
Versionskonflikt, Testwoche |
Versionskonflikt leider nicht ganz geschafft, Tests als TM durchgeführt, 2 neue Testfälle erstellt |
12 |
KW43 |
Aufschreiben, Testszenario, Korrektur, Ausdruck, Abgabe |
Testszenario, Ausarbeitung: Einführung, Screenshots, Methodik |
2 |
KW33 |
Einarbeitung (GUI), Arbeit anmelden |
Refactoring mit Christopher: XMPPChatCollector, XStreamPacketExtension Arbeit angemeldet, Versionskonflikt auf Hostseite (Anfänge), Blink-Bug gefixt |
1 |
KW32 |
Einarbeitung (Allgemein) |
Paar-Programmierung mit Christopher, PacketCollector und PacketListener verstanden, weiterhin XMPP Extensions und Handlers Versionskonflikt wird auf der Klientenseite angezeigt |
7 |
KW38 |
Nebenläufigkeit |
Nebenläufigkeit Konzept + Implementierungsanfang |
6 |
KW37 |
Nebenläufigkeit, Cancellation verbessern, Testen und Bug-Fixing |
MacRian Branch: Zusammenarbeit mit Sándor auf Abbrechbarkeit: CancellationException & IOException |
11 |
KW42 |
Aufschreiben |
Kapitel "Abbrechbarkeit", Outreach: Saros Übungszettel, Anschreiben von Veranstaltungen |
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" |
8 |
KW39 |
GUI |
Eclipse Jobs API |
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 |
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:
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
- Ü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.. )
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
- 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)