Jazz ist eine skalierbare und erweiterbare Plattform für die Teamzusammenarbeit, die Tasks im gesamten Softwarelebenszyklus nahtlos integriert.

Gründe für die Entwicklung der Jazz-Plattform

Die Entwicklung von Software in einem Team ist in vielerlei Hinsicht mit dem Spielen eines Instruments in einem Orchester vergleichbar. Jeder Musiker muss seine Stimme spielen, gleichzeitig aber im Takt (also mit den anderen Musikern synchron) bleiben. Die Mitglieder müssen sich auf einen Kommunikationsweg einigen und auf die Signale der anderen achten, damit die Ausführung nicht im Chaos endet. Enge Kooperation und Kreativität des Einzelnen sind also gleichermaßen erforderlich. Ähnlich verhält es sich bei Softwareentwicklern: Sie müssen sich darauf konzentrieren, qualitativ hochwertigen Code zu schreiben, und ihre Aktivitäten koordinieren, damit alle Einzelkomponenten zusammenpassen.

Integrierte Entwicklungsumgebungen (Integrated Development Environment - IDE) wie beispielsweise Eclipse haben die Produktivität des Einzelnen verbessert. Entwickler sind jedoch genauso intensiv mit der Zusammenarbeit in ihren Teams wie mit dem Schreiben des Codes beschäftigt. Dies ist der Ansatzpunkt der Jazz-Plattform, denn sie stellt nicht mehr nur die Produktivität einzelner Teammitglieder, sondern die Produktivität des gesamten Teams in den Mittelpunkt.

Schwerpunktwechsel

Als Beispiel soll hier der Aufwand dienen, der in einem Team bei der Verfolgung und Korrektur eines Programmfehlers entsteht. Die Arbeit an der Korrektur des Programmfehlers wird innerhalb des Teams weitergeleitet, vom Benutzer A, der den Fehler erkannt und gemeldet hat, über Benutzer B, der eingehende Berichte über Programmfehler prüft und dem Benutzer C die Arbeit zuordnet, an Benutzer C, der den Programmfehler korrigiert, und schließlich wieder zur Prüfung zurück an Benutzer A. Auch die Fehlerkorrektur selbst wird innerhalb des Teams weitergeleitet, nämlich von Benutzer C, der den Fehler im Codedatenstrom korrigiert, an Benutzer A, der die Korrektur im entsprechenden Build prüft.

Fluss von Programmfehlern

Diese Flüsse können instabil sein. Die Flüsse in einem Team werden beispielsweise unterbrochen, wenn eine Korrektur ohne Aktualisierung des Programmfehlerberichts eingecheckt wird oder wenn es keinen Link gibt, der die Korrektur mit einem bestimmten Codedatenstrom und einem bestimmten Build verbindet. Diese Unterbrechungen können zu Verwirrungen im Team führen und den Fortschritt behindern. Noch komplizierter wird es, wenn eine Unterbrechung nicht sofort durch ein Teammitglied erkannt wird oder erkannt werden kann. Außerdem sind domänenbezogene Arbeiten (z. B. das Schreiben von Code für das Softwareprodukt) mit Arbeitsvorgängen verzahnt, die primär der Koordinierung im Team dienen (z. B. das Markieren von Programmfehlern als korrigiert).

Auch wenn in der IDE mehrere Tools integriert sind, muss ein Großteil der wiederholten Dokumentierungsaufgaben doch manuell durch den Entwickler erledigt werden; eine Arbeit, die nicht nur für die effiziente Zusammenarbeit im Team unabdingbar ist, sondern auch leicht vergessen oder nicht ordnungsgemäß ausgeführt wird. Viel besser wäre es, wenn Benutzer C einfach der IDE mitteilen könnte, dass er gegenwärtig an der Korrektur eines bestimmten Programmfehlers arbeitet. Anschließend könnte er nach Beendigung der Korrektur und des Testfalls mitteilen, dass die Arbeit erledigt ist. Das System könnte dann ohne weitere Maßnahmen durch Benutzer C die geänderten Dateien festschreiben und dem Programmfehlerbericht zuordnen, die Buildhinweise aktualisieren und den Programmfehlerbericht als geschlossen markieren. Bei einer auf diese Weise automatisierten Dokumentierung durch die Tools könnte das Team effizienter arbeiten, denn durch dieses Verfahren wäre sichergestellt, dass die wichtigen Verbindungen zwischen Programmfehlerberichten und Code-Check-ins zuverlässig sind. Gleichzeitig würde die Automatisierung von mühsamen und fehlerträchtigen Dokumentierungsaufgaben auch die Effizienz der einzelnen Teammitglieder verbessern.

Lückenschluss durch Jazz-Plattform

Jazz ist eine Plattform für die Onlinezusammenarbeit im Team, die den gesamten Softwarelebenszyklus abdeckt und die nahtlose Integration von Tasks in allen Phasen des Softwarelebenszyklus unterstützt (das zuvor beschriebene Szenario behandelte einige allgemeine Tasks in der Mitte des Zyklus). Dank ihrer Konzeption kann die Jazz-Plattform sowohl auf dem Client als auch auf dem Server erweitert werden, was ihre Skalierung für sehr kleine Teams bis hin zu Installationen in Großunternehmen ermöglicht. Sie setzt das Konzept der durch Tools unterstützten Prozesssteuerung um, bei der die Tools den Entwicklungsprozess des Teams erkennen und die Teammitglieder bei der Befolgung dieses Prozesses unterstützen, ohne ihnen in die Quere zu kommen.

Die Jazz-Plattform soll nicht nur vorhandene Einzeltools integrieren, sondern außerdem eine Plattform bilden, auf der sehr viel mehr integrierte Lebenszyklustoolfunktionen gebuildet werden können, als bislang möglich war. Eine derartige Integration von Entwicklungstools in den Lebenszyklus eröffnet durch eine Reihe von verknüpften Einzellösungen bislang unvorstellbare Möglichkeiten. Solche integrierten und durchgängigen Tools können die Effizienz von Teams bei Softwarebuilds steigern und die Softwareentwicklungsaktivitäten interessanter machen.

Jazz - eine prozessbewusste Plattform

Die Konzeption der Jazz-Plattform ermöglicht während des gesamten Softwareentwicklungszyklus eine umfassende Unterstützung. Ein Thread, der während aller Phasen eines Projekts aktiv ist, ist der Prozess, auf dessen Befolgung sich die Teammitglieder geeinigt haben. Weil die Jazz-Plattform Kenntnis von diesem Prozess hat, kann sie das Team auf prozessspezifische Weise unterstützen. Diese Prozessunterstützung wird in vielfältiger (und unbegrenzter) Form bereitgestellt und kann von der Regelüberprüfung während der Verarbeitung über die Bereitstellung von Onlinehilfetexten für den Prozess (beispielsweise über die Taste F1) bis hin zur automatisierten Dokumentierung reichen. Die Jazz-Plattform unterstützt Prozesse folgendermaßen:

Die Jazz-Plattform wurde für die folgenden Aufgaben konzipiert und erstellt:

Die Jazz-Plattform soll hauptsächlich Toolautoren praxistaugliche Mechanismen und befolgbare Regeln zur Verfügung stellen, die zu nahtlos integrierten Lebenszyklustools führen. Diese Mechanismen werden über klar strukturierte APIs zugänglich gemacht. Außerdem bietet die Jazz-Plattform nützliche Bausteine und Frameworks, die die Entwicklung neuer Tools vereinfachen.