Blind mit UML arbeiten
Inhaltsverzeichnis |
Blind mit UML arbeiten
Worum geht's genau
Die Unified Modeling Language (UML) hat sich als Standard im Bereich der Softwareentwicklung und Softwaredesigns durchgesetzt. Systeme oder Teile davon werden in UML beschrieben und von dort aus in die Programmierung überführt. Allgemein wird unter UML eine grafische Notation verstanden, die blinden Menschen so nicht zugänglich ist. Das bedeutet, sie können an allen Prozessen nicht teilnehmen, bei denen UML-diagramme verarbeitet werden müssen. Bei dem allgemeinen Verständnis von UML als grafische Notation geht verloren, dass die Konzepte hinter UML rein abstrakt sind und durchaus gut blind verstanden und angewendet werden können.
Die Lösung in Kurzform
Eine Lösung des Problems findet sich in der freien Anwendung PlantUml [[1]]. Das Programm verarbeitet eine textuelle Notation und erstellt daraus ein Bild in UML-Notation. Man kann allso blind ein Modell auf Basis dieser textuellen Notation erstellen und es den sehenden als Diagramme präsentieren. Kollegen können umgekehrt ein Modell in dieser textuellen Notation abfassen, mit dem Programm verifizieren und dem blinden Kollegen zur Verarbeitung übergeben. Es ist auch möglich, aus einem Verzeichnis mit Java-Klassen, Klassendiagramme generieren zu lassen - in textueller Notation und damit blindenkompatibel.
Das ganze im Detail
Hintergrund und Motivation
Ich arbeite seit zehn Jahren als Softwareentwickler. Projekte in der professionellen Softwareentwicklung ohne Usecases und detailliertes Design sind heutzutage eigentlich zum Scheitern verurteilt und werden zumindest bei uns in der Praxis nicht mehr gelebt. Kurzum: Bei jedem Projekt ist ein Entwickler, auch wenn er nur programmiert, immer mit Designs, Usecases und damit mit UML umgeben. Vergleichbar ist das wohl am besten mit dem Musiker, der keine Noten kann. Er kann sicher auch gut spielen, aber wenn er in einem Orchester mitspielen möchte, kommt er um Noten einfach nicht herum. Nun sind es meine Kollegen gewohnt, dass ich viel des Designs im Kopf habe, dem ganz gut folgen kann und meine Gedanken textuell - allso in kryptischem Prosa darlegen kann. Das funktioniert dann nicht mehr, wenn man in vielen Projekten gleichzeitig arbeitet, oder schnell sich in ein Design einarbeiten soll, ohne dass es einem jemand erklärt.
Durch die Berufserfahrung und meine Ausbildung bin ich aber andererseits gut geeignet, um mich mehr um die Architektur von Projekten zu kümmern und damit fließend UML verwenden zu müssen. In diesem Dilemma nimmt der Druck, eine Lösung für das Problem zu finden massiv zu - man könnte sagen, das meine berufliche Weiterentwicklung blockiert war.
Der Weg
Das Problem begann damit, dass es keine geeigneten Schulungen, Bücher oder andere Unterlagen über UML gab, die ich verwenden konnte. Die Konzepte hinter UML kann man zwar verstehen - denn diese sind alles andere als grafisch, aber "Noten" kann ich deswegen immer noch nicht - nur die Theorie. Es ist mir nach wie vor nicht gelungen, auch nur ein Buch aufzutreiben, in dem UML inkl. der grafischen Notation wirklich für blinde Menschen erklärt wird. Damit meine ich die gesamte UML und nicht ein Detail wie Klassendiagramme. Wie oben erwähnt, wird die Arbeit letztendlich auf Basis einer textuellen Notation ablaufen, aber wie soll man ein System wirklich lernen, wenn die Bilder nicht wenigstens einmal richtig erläutert und Feinheiten aufgezeigt werden? Das zweite Problem bestand darin, ein Werkzeug zu finden, mit dem ich meine Gedanken in UML abfassen kann - allso grafisch darstellen kann. Eine Suche bei Google liefert in der Tat viele Ergebnisse und man solte meinen, dass es bei der Fülle von Anwendungen kein unlösbares Problem sein sollte. In der Praxis sind aber alle bis auf das o.g. PlantUml gescheitert. Hier ein kurzer Abriß:
- TextUml ist eine Eclipse-Erweiterung, mit der man UML quasi programmieren kann. Allerdings scheiterte der Einsatz daran, dass bislang nur Klassendiagramme unterstützt werden. Das ist für die praktische Softwareentwicklung nicht genug! Es werden meiner Erfahrung nach mind. Usecase- Aktivitäts- und Sequenzdiagramme gebraucht.
- Metauml ist eine auf metapost basierende Erweiterung für Latex, mit der man UML-Diagramme setzen kann. Zum einen muss man recht viel Layout vorgeben, was in der Praxis blind recht schwer sein dürfte. Zum anderen ist das Resultat eine Metapostscript-Datei, die nicht ohne Weiteres in z.B. Word-Dokumente integriert werden kann. Es scheiterte allso an der Einbindung in unsere Prozesse und Problemen bei der praktischen Anwendung. Außerdem wird das Paket seit 2006 nicht mehr gepflegt.Zur erinnerung: ich will und muss in einem Orchester mitspielen und nicht als solist auftreten.
- Andere LateX-Pakete unterstützen nur Sequenz- und Klassendiagramme. Beides nicht ausreichend für den praktischen Einsatz.
- Andere reine textuelle Notationen sind recht komplex in der Syntax und es gibt keinen Parser oder Anwendungen, die den Code in Bilder umwandeln oder sie zumindest validieren könnten. Sie wären allso eher das notwendige Übel, als eine gute Lösung gewesen.
Die vorläufige Lösung
PlantUml bietet die folgenden Funktionen, auf die sich meine Lösung stützt:
- Eine einfache textuelle Notation mit nur grundlegenden Layoutmöglichkeiten bzw. die Notwendigkeit diese zu verwenden.
- Unterstützung für alle notwendigen Diagrammtypen, die in der Praxis gebraucht werden.
- Eine Integration in Word, sodass Text und Bild parallel in einem Dokument verwendet werden können.
Wir erstellen allso Design-Dokumente in Word und binden einmalig das Makro ein. Anstatt die Diagramme von Modeling-Programmen wie Enterprise Architect erstellen zu lassen, schreibe ich - oder wenn ich irgendwie beteiligt bin - diese Diagramme in PlantUml-Notation. Die Syntax ist so übersichtlich, dass sich jeder Programmierer, der UML kennt, schnell zurecht findet. PlantUml bietet dabei auch die Feinheiten aus UML, sodass auch komplexere Diagramme auch optisch ansprechend erstellt werden können. Das Makro scannt eigenständig das Worddokument und führt zwei Schritte durch:
- Der PlantUml-Code wird mit einer speziellen Formatvorlage markiert.
- Der Text wird auf Wunsch versteckt - kann aber jederzeit wieder angezeigt werden.
- Erstellt eine Grafik, die direkt hinter dem Code in das Dokument eingefügt wird.
Die Notation scheint nach der bisherigen Evaluation gut geeignet, Bilder in Büchern über UML zu kodieren. Das mühsame Umschreiben entfällt in vielen Fällen oder ist zumindest auf Besonderheiten beschränkt. Damit könnte man allso mit etwas aufwand einen kundigen Studenten o.ä. daransetzen, ein UML-Buch mit akzeptablem Aufwand wirklich zugänglich zu machen. Ich vermeide hier Code-Beispiele - davon gibt es reichlich in der wie ich finde sehr guten und übersichtlichen Dokumentation. Ich kenne das Tool seit nicht mal 48 Stunden und konnte es schon produktiv bei einem aktuellen Design interaktiv mit einer Kollegin einsetzen!
Erkennen von Fehlern im PlantUML-Code
In den ersten Versionen wurden Fehler, die bei der Erzeugung der Grafiken von PlantUML gemeldet wurden, anstatt der Grafik, aber als Bild in Word angezeigt. Nach Rücksprache mit dem Author, ist es nun möglich, auf dem System eine Umgebungsvariable plantuml_logdata zu definieren, die auf eine Datei verweist. in dieser Datei (sie wird bei bedarf angelegt) schreibt PlantUML das Ergebnis der Ausgabe und z.B. Syntaxfehler.
Teilumsetzung des Buchs UML2 Glasklar
Mittlerweile sind die vier wichtigsten Kapitel des Buchs UML2 Glasklar in PlantUml-Notation umgesetzt worden. Dabei wurden diverse Schwachstellen in PlantUml aufgedeckt. Allerdings wurde damit die vorläufige Lösung weiter gefestigt: Trotz Schwachstellen bleibt PlantUml eine gute Lösung auch für komplexe Diagramme. Die Umsetzung wird von mehreren Zentren weiter vorangetrieben und später über Studienzentren angeboten, die bereits Literatur für blinden und sehbehinderte bereitstellen. Dadurch wird gewährleistet, dass weder Copyrights verletzt werden noch die Daten in falsche Hände geraten. Die Diagrammbeschreibung werden dabei außerhalb des Buchs in einer Art Begleitdokument abgefasst, sodass der Buchtext unangetastet bleibt. In diesem Dokument werden dann auch die Defizite von PlantUml aufgelistet und notwendige Zusatzerklärungen zu den Diagrammen gegeben.
Verwendung in Studienzentren
An allen Unis, an denen blinde oder sehbehinderte Menschen Informatik studieren, müssen UML-Diagramme zugänglich gemacht werden. Hier kommt mehr und mehr PlantUml parallel zum Ausdruck der taktilen Grafiken zum Einsatz. Dort wurden auch andere Notationsformen z.B. tabellarische Darstellungen erprobt und sind Gegenstand aktueller Forschung.
Ausblick
Die einfache PlantUml-Notation sollte es prinzipiell ermöglichen, eine automatische Konvertierung nach und von XMI zu schreiben. Zumindest die Umwandlung in XMI - dass ist das Austauschformat für viele Modeling-Anwendungen wie der o.g. EA - sollte möglich sein. Evtl. könnte man auch den einen oder anderen Hersteller dazu überreden, einen Export in PlantUml anzubieten. Eine solche Hin- und Rückkonvertierung würde dann die vollständige Integration blinder Menschen in den Designprozess mit anderen Kollegen bedeuten, ohne dass händisch irgendetwas umgesetzt werden muss. Ein anderer Ansatz könnte eine modifizierte OCR sein, die UML-Symbole erkennt und daraus PlantUml-Notation erstellt. Das würde dann auch das Verwenden von Designs aus anderen Anwendungen erlauben, die nur als Grafik vorliegen. Falls der Aufwand zur Umsetzung eines Buches getrieben wird, dürfte das bei der Ausbildung blinder Fachinformatiker etc. einen großen Schritt nach vorne bedeuten. UML ist auch hier schon lange etabliert.
Fazit
Mit PlantUml ist meiner Meinung nach der entscheidende Baustein gefunden, um die so lange bestehende Barriere bei der Verwendung von Uml für blinde Softwareentwickler zu beseitigen. Leider war das Interesse unter blinden und sehbehinderten IT-Fachleuten bislang sehr gering, dass auch teilweise an der zögerlichen Haltung gegenüber dem Thema geschuldet ist. Nachdem nun allso eine Lösung gefunden ist, sollten sich diese Dinge in neuem Licht betrachten lassen. Noch eine Anmerkung: Ich habe keinerlei Beitrag an der Entwicklung von PlantUml geleistet - den Lob hat allso jemand anders verdient. Ich habe lediglich die Lösung im Web gefunden und sie praktisch erprobt.