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.:

Technischer Rahmen

Referenzen