Adressat und Inhalt des Dokuments
Dieses Dokument richtet sich an alle TeilnehmerInnen der Veranstaltung
Techniken der Projektentwicklung (TdPE) im Sommersemester 2006. Es
spezifiziert die Aufgabenstellung des Gruppenprojekts mit dem
Arbeitstitel "Collaborate!".
Überblick
Gegenstand des Projekts "Collaborate!" ist die Unterstützung
effektiver Zusammenarbeit von Studierenden durch eine Anwendung, die
das gleichzeitige Arbeiten an gemeinsamen Inhalten ermöglicht. Da
Zusammenarbeit unterschiedlichste Formate betreffen kann (neben Texten
sind z.B. auch Skizzen denkbar), soll eine erweiterbare Architektur
geschaffen werden. Als Basisfunktionalität können an andere Nutzer
Nachrichten verschickt werden und es soll möglich sein, gemeinsam in
Echtzeit und parallel! Texte zu editieren. Dazu können die Anwender
eine Liste ihrer Bekannten verwalten und Collaborate! ermittelt
automatisch deren Präsenz und Verfügbarkeit für gemeinsame Arbeit.Collaborate! ist, anders als Chat-Programme wie ICQ oder GoogleTalk,
für eine Zusammenarbeit mit dauerhaftem Ergebnis gedacht. Der Anwender
kann daher leicht Daten zwischen den Komponenten austauschen,
z.B. Chat-Nachrichten in einen gemeinsamen Text kopieren (siehe
Beispielszenario). Anders als mit existenten kollaborativen Editoren
wie SubEthaEdit oder Gobby, funktioniert die Zusammenarbeit auch über
Netzwerkgrenzen und Firewalls hinweg, da die Nachrichten über das
XMPP-Protokolls vermittelt werden.Bei der gleichzeitigen Bearbeitung können natürlich verwirrende Situationen auftreten, z.B. wenn beide Partner an derselben Stelle schreiben. Um diese zu minimieren, bzw. sie reibungslos zu lösen,
kommt dem Feedback in der Benutzerschnittstelle eine besondere
Bedeutung zu. Collaborate! stellt dem Anwender unter anderem dar, an
welchen Stellen des Dokumentes gerade gearbeitet wird, auch wenn der
entsprechende Text gar nicht sichtbar ist. Es ist auch erkennbar,
welcher der Partner die letzte Änderung vorgenommen hat.
Anwendergeschichte
Dieser Abschnitt beschreibt, wie eine beispielhafte Anwenderin mit Collaborate! arbeitet. Der Einfachheit halber nennen wir die Person im Folgenden Alice.Beim ersten Start von Collaborate! wird Alice aufgefordert, sich am XMPP-Netzwerk anzumelden. Sie muss dazu einen Benutzernamen für sich erfinden, sowie ein Passwort wählen und bestätigen. Nachdem der Name vom Server akzeptiert wurde, wird das Anwendungsfenster angezeigt, das zunächst noch relativ leer ist.Alice kennt schon einige andere teilnehmende Studierende, und fügt deren Benutzernamen zu ihrer Liste von Bekannten hinzu. Das von Collaborate! benutzte XMPP-Netzwerk fragt im Hintergrund bei den betreffenden Benutzern, ob sie Alice gestatten wollen, ihre Präsenz zu sehen. Falls sie zustimmen, sieht Alice danach ihre Anwesenheit in der Benutzerliste von Collaborate!Nach der Einrichtung schaut sich Alice an, welche ihrer Bekannten online sind und sieht in der Liste Bob, mit dem sie ein Seminar zusammen besucht. Mit Collaborate! kann sie Bob eine Nachricht schicken und sieht natürlich auch seine Antworten. Diese Nachrichten werden von Collaborate! abgespeichert und Alice kann jederzeit sehen, was sie mit Bob in früheren Sitzungen besprochen hat.Später im Semester bereiten Alice und Bob gemeinsam einen Vortrag vor, schaffen es aber nur selten, sich zu treffen. Durch Collaborate! können sie aber trotzdem gemeinsam daran arbeiten: Alice öffnet dazu ein Editorfenster in Collaborate! und lädt den letzten Stand ihrer Datei. Dann wählt sie Bob als Partner und er erhält eine Anfrage, der Editiersitzung beizutreten. Tut er dies, bekommt auch er ein Editierfenster und beide können nun Änderungen vornehmen oder auch beobachten, was die Andere gerade schreibt. Alle Eingaben erscheinen dabei direkt, ohne Abspeichern oder Ähnliches, im Fenster des Partners. Collaborate! verwaltet dabei im Hintergrund die unterschiedlichen Änderungen und synchronisiert ständig die Sitzung zwischen den beiden Partnern.Während ihrer gemeinsamen Arbeit am Text können Alice und Bob nebenher weiter wie gewohnt miteinander chatten, um z.B. strittige Punkte erst zu diskutieren. Collaborate! erlaubt ihnen jederzeit, Inhalte aus dem Chat-Fenster in das Editorfenster zu übernehmen und gibt ihnen auch Zugriff auf ihre älteren Unterhaltungen, so dass sie ihre Notizen über das Semester hinweg einsehen können.
Funktionale Anforderungen
Anwendungsfälle
Allgemeine Hinweise
Wie bereits im Überblick eingeführt, ist die Benutzbarkeit von großer
Bedeutung. Hier ist einmal Kreativität gefragt: wie kann dem
Anwender eine besonders geschickte, einfache, reibungslose
Zusammenarbeit ermöglicht werden? Wie kann man dem Anwender deutlich
aber unaufdringlich Feedback über die Aktivitäten des Partners geben?
Die Ideen müssen aber natürlich auch in der Praxis erprobt werden und
zwar nicht erst am Ende des Projektes, denn dann wäre es zu spät die
Ergebnisse noch umzusetzen! Dem Usability Engineering wird
entsprechend bei diesem Projekt eine wichtige Rolle zukommen.Die Anwendergeschichte beschreibt der Klarheit halber nur die Sicht von Alice und geht außerdem davon aus, dass beide Partner jederzeit online sind. Davon ausgehend, dass beide Partner Collaborate! benutzen, muss natürlich auch der jeweils andere Part eingenommen werden können. Außerdem kann es gut vorkommen, dass nur ein Kommunikationspartner online ist, schon mit der Arbeit beginnt und der Andere erst später hinzukommt. Collaborate! soll auch weiter funktionieren, wenn die Netzwerkverbindung kurz oder länger ausfällt; dann natürlich ohne Kommunikationsfunktionen.Weiterhin wichtig ist die saubere Verwendung des XMPP-Protokolls: XMPP besteht aus einer Basis-Spezifikation und diversen Erweiterungen, von denen die zur Verfügung gestellt Bibliothek auch viele implementiert. Wir legen Wert darauf, dass das Programm diese Funktionalität in angemessener Art und Weise verwendet. Nicht zuletzt sollte auch eine grundlegende Kommunikation mit anderen XMPP-tauglichen Programmen möglich sein, insbesondere die Chat-Funktion und das Verwalten der Liste der Bekannten.Mit der Präsenzverwaltung und der XMPP-Kommunikation ist ein Rahmen
für weitere Komponenten geschaffen, von denen der Shared-Editor und
der Chat nur zwei Beispiele sind. Diese Komponenten haben neben ihren
Unterschieden in der Funktionalität auch viele Gemeinsamkeiten in
Kommunikation und Darstellung. Neben der Möglichkeit zukünftiger
Erweiterung ist eine klare Herausarbeitung dieser Gemeinsamkeiten, und
ihre Beschreibung durch Java-Interfaces, für die Architektur des
Programms insgesamt von Vorteil und wird daher gefordert.Für die Synchronisation des Zustands der Editoren schlagen wir den Jupiter-Algorithmus vor (siehe Referenzen), der bereits in anderen Programmen erfolgreich verwendet wird. In seiner Grundform unterstützt er nur die gleichzeitige Arbeit von zwei Personen, es gibt aber bereits vorgeschlagene Erweiterungen auf mehr Personen, die sich recht natürlich aus einer Abbildung in viele 1-1 Verbindungen ergeben.
Optionale Funktionen
Das bisher Beschriebene stellt die Basis für gemeinsame Arbeit zweier Personen an einem Text zur Verfügung. Denkbare Erweiterungen sind z.B.:
- Gleichzeitiges Editieren mit mehr als zwei Personen
- Multi-User-Chats
- Gemeinsame Zeichenfläche mit einfachen grafischen Elementen
Technischer Rahmen
- Implementierungssprache ist Java 1.5.
- Vollständig lauffähig im GZI.
- Bibliothek für das XMPP-Protokoll: Smack.
- Ein Jabber-Server wird zur Verfügung gestellt.
- Collaborate! soll, ggfls. eingeschränkt, auch mit öffentlichen Jabber-Servern funktionieren.
- Synchronisationsalgorithmus: Jupiter
Referenzen