19.07.2013 Aufrufe

Abschlussbericht

Abschlussbericht

Abschlussbericht

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

PTAH: Prototypen-Werkstatt Softwaredefinitionswerkzeuge für Anwender<br />

<strong>Abschlussbericht</strong> des Teilprojektes B<br />

"Schließen der pragmatischen Lücke durch aktive<br />

Systemgestaltung seitens der Anwender“<br />

Im Projekt<br />

„Implizite gesellschaftliche Anforderungen der Informatik an die<br />

partizipative Modellierung - technologischer Systeme und an Konzepte<br />

informationspädagogischer Aus- und Weiterbildung“<br />

1 Einführung<br />

Ulrik Schroeder<br />

Praktische Informatik<br />

Juli 2000<br />

Problemlösungsansätze zur Systemgestaltung innerhalb der Informatik fließen<br />

zunehmend in Bereiche des Lebens und die Arbeitsorganisation ein. Der Umgang mit<br />

dem PC, das Programmieren von Endgeräten wie Videorekorder oder Handy oder die<br />

Informationsbeschaffung über das Internet sind typische Beispiele dafür, wie<br />

Vorgehensweisen, die ursprünglich für Informatiker entwickelt wurden, heute zu<br />

Alltagshandlungen werden. Die in der Informatik erfolgreichen Konzepte basieren aber auf<br />

Voraussetzungen, die nicht immer ohne weiteres auf jede Person übertragbar sind, sei es<br />

aufgrund der zugrundeliegenden Denkweisen oder des vorausgesetzten<br />

Ausbildungsniveaus.<br />

Das interdisziplinäre Projekt untersucht die Übertragbarkeit der Informatikmodelle auf<br />

andere gesellschaftliche Bereiche, insbesondere die Einbettung in die Arbeitsorganisation<br />

sowie die Notwendigkeit einer Adaption der Pädagogik, um diese Übertragung zu<br />

ermöglichen.<br />

2 Einordnung des Teilprojektes in das Gesamtprojekt<br />

Das Projekt wird im Arbeitsbereich „Arbeit-Bildung-Technik“ vom Zentrum für<br />

interdisziplinäre Technikforschung gefördert. Der Förderungszeitraum für das gesamte<br />

Projekt läuft von Oktober 1999 bis März 2002 (ggf. verlängert bis Ende 2002).<br />

Das Teilprojekt B „Schließen der pragmatischen Lücke durch aktive Systemgestaltung<br />

seitens der Anwender“ der Praktischen Informatik lief von Oktober 1999 bis Juli 2000, mit<br />

06.09.00 1


Ulrik Schroeder Praktische Informatik, TU Darmstadt<br />

dem Ziel, an ausgewählten Beispielen eine neue Softwareentwicklungsmethodik zu<br />

demonstrieren, die Anwender von Softwaresystemen vom ersten Moment des Projektes<br />

an der Entwicklung aktiv beteiligt. Durch die sehr kurzfristige Mittelzuteilung war es nicht<br />

möglich, alle drei Teilprojekte zeitgleich zu initiieren. Stattdessen bot sich an, eine<br />

gestaffelte Bearbeitung der Teilprojekte durchzuführen, indem das vorliegende Teilprojekt<br />

die Vision der Prototypgestaltung seitens der Anwender anhand von Referenzbeispielen<br />

konkretisiert und die dabei ermittelten Anforderungen an den Arbeitsprozess und die<br />

informationstechnischen Voraussetzungen an die Anwender definiert. Die anschließenden<br />

Teilprojekte untersuchen die Realisierbarkeit der dargestellten Vision vom Standpunkt der<br />

Arbeitsgestaltung und der informationspädagogische Prozesse, um auf die neuen<br />

Herausforderungen geeignet vorzubereiten<br />

Das Teilprojekt wurde als Vorläufer vor Start der anderen Teilprojekte konzipiert, da es<br />

über die vorgeschlagene partizipative Software-Technik neue Herausforderungen an<br />

Nicht-Informatiker stellt. Das Teilprojekt A prüft, ob und wie diese Herausforderungen in<br />

betrieblichen Prozessen aufgegriffen werden können. Es soll die Anforderungen an den<br />

partizipativen Software-Entwicklungsprozess auf der Grundlage der kritischen<br />

Bildungstheorie erforschen und für die Umsetzung in Vorgehensmodellen für die<br />

Informatik, für die Gestaltung von Lernumgebungen und für die Erstellung von<br />

Entwicklungswerkzeugen aufbereiten.<br />

Das Teilprojekt C beschäftigt sich mit der Entwicklung von Konzepten<br />

informationspädagogischer Weiterbildung und berührt damit Fragestellung der Aus- und<br />

Weiterbildung für die Anwender der vorgeschlagenen Entwicklungswerkzeuge.<br />

3 Ziele des Teilprojektes B<br />

Aktuell sehen alle aktuellen Vorgehensmodelle für objektorientierte Softwareentwicklung<br />

als Ergänzung eine funktionale Definition der Systemanforderungen in Form von<br />

Anwendungsfällen (Use Cases [Jacobsen99] bzw. Stories im xP [Beck99]) vor. Erst daran<br />

schließen die eigentlich objektorientierten Methoden an, um die funktionalen Aspekte zu<br />

analysieren und die an der Funktionsrealisierung beteiligten Objekte zu identifizieren.<br />

Daraus resultieren die statischen Klassenmodelle, die die Funktionalität des Systems auf<br />

Klassen verteilen. Die Klassenstruktur ist die Ausgangsbasis für die Implementierung, die<br />

sich leicht auf viele Entwickler verteilen und getrennt entwickeln lässt.<br />

Ein Problem der Analysephase besteht darin, dass die in der Informatik üblichen<br />

Notationen ungeeignet sind, um die resultierenden Modelle adäquat mit den zukünftigen<br />

Anwendern des Systems zu diskutieren. Auf der anderen Seite sind Anwender die<br />

kompetentesten Vertreter der Anwendungsdomäne und müssen exakt Auskunft über die<br />

benötigte Funktionalität des Systems und den Einsatzkontext geben.<br />

Als Ausweg schlagen wir vor, die Use Cases bzw. ihre Konkretisierungen, die Szenarien<br />

oder Stories möglichst lebendig, in der dem Anwender bekannten Weise zu<br />

dokumentieren. Die „natürlichste“ Repräsentation eines Ablaufes wird durch seine<br />

Simulation als ausführbares Programm erreicht. Daher schlagen wir vor, Stories der<br />

Systemverwendung in Form einfacher aber ausführbarer Szenarioprototypen<br />

durchzuführen. Wir vertreten ferner die These, dass Anwender und Entwickler<br />

gleichermaßen aktiv bei der Entwicklung der Szenariomodelle beteiligt sein müssen.<br />

Bislang obliegt einzig dem Entwickler die Hoheit über alle Modelle, während Anwender als<br />

passive Befragte oder Rezeptoren der präsentierten Modelle fungieren. Um ein<br />

symmetrischeres Verhältnis zwischen Anwender und Entwickler zu ermöglichen, muss<br />

2


PTAH: Prototypen-Werkstatt Softwaredefinitionswerkzeuge für Anwender<br />

der Anwender ebenfalls in die Lage versetzt werden, Modelle des Systemablaufs aktiv zu<br />

gestalten.<br />

Als Fernziel für zukünftige Projekte kann weitergehend angestrebt werden, dass<br />

Anwender selbständig ausführbare Systemszenarien gestalten und Entwickler ganz ohne<br />

Kenntnis der Entwicklungsdomäne das System auf der Basis der ausführbaren<br />

Spezifikation sowie ihrer Expertise in Entwicklungsmethoden und Architektur, dem Einsatz<br />

domänenspezifischer Softwarekomponenten oder Frameworks das System entwickeln.<br />

Die bisher aufgestellte Forderung, dass Informatiker sich immer vollständig in die<br />

Anwendungsdomäne einarbeiten oder in einer Domäne spezialisieren, ist mit der<br />

zunehmen Diversifikation von Domänen, die IT-Technik einsetzen und dem damit<br />

verbundenen Engpass an IT-Spezialisten, die sowohl die Informatiktechnik beherrschen<br />

als auch Spezialisten in Anwendungsdomänen sind, nicht aufrecht zu halten.<br />

Die kühne These, dass Anwender Prototypen ihrer Anwendung selbständig gestalten und<br />

dabei ausführbare Programme graphisch interaktiver, reaktiver Anwendungen selbst<br />

programmieren, muss Widerspruch auslösen. Besteht doch gerade in der<br />

Programmierung graphischer Anwendungen ein hoher Aufwand. Noch vor wenigen<br />

Jahren ergab eine Studie von Myers und Rosson, dass ca. 50 % des Gesamtaufwandes<br />

eines Softwareprojektes alleine für die Programmierung der graphischen<br />

Benutzungsschnittstelle notwendig war [MyersRosson92]. Wir vertreten die These, dass<br />

der rasante Fortschritt der Informatikkonstruktionswerkzeuge bereits heute eine<br />

Gestaltung interaktiver Anwendungen mit graphischen Benutzungsschnittstellen seitens<br />

interessierter Anwender ermöglicht. In unserer Lehrveranstaltung „Einführung in das<br />

Software Engineering“ lernen Studierende anderer Fachbereiche nach einer kurzen<br />

Einarbeitung und wenigen Vorlesungen über die Denkweise der Objektorientierung in<br />

wenigen Tagen die Bedienung graphischer User Interface Builder (GUI builder) und sind<br />

damit in der Lage, graphische Bedienschnittstellen in wenigen Stunden zu<br />

programmieren.<br />

Das Projekt ermöglichte eine erste Machbarkeitsstudie der geschilderten Vision, die einen<br />

Antrag an andere Förderungen vorbereiten sollte. Dabei wurden folgende Fragen<br />

untersucht:<br />

• Welche Problemklassen kann man nach dieser Vision spezifizieren?<br />

• Welche Funktionalität müssen die Werkzeuge für den Anwender bieten?<br />

• Wie muss die Benutzerführung gestaltet werden, um vollständige Spezifikationen zu<br />

erhalten?<br />

• Wenn der Prototyp und die generierte formale Spezifikation vorliegt, kann der<br />

Entwickler das System dann ohne weiteres fachliches Wissen realisieren?<br />

Die Untersuchungen wurden anhand kleinerer Systeme durchgeführt, wobei das<br />

Verhalten fehlender Werkzeuge durch manuelle Ausprogrammierung simuliert werden<br />

musste. Anhand der dabei erarbeiteten Referenzsysteme können die<br />

arbeitswissenschaftlichen und pädagogischen Fragestellungen im Anschluss untersucht<br />

werden, z.B.:<br />

• Könnte der Anwender mit geeigneten Werkzeugen Prototypen selbst herstellen und<br />

damit die Anforderungsdefinition selbst übernehmen? Das betrifft<br />

• die (pädagogische und psychologische) Konzeption der Rollen und Prozesse für<br />

die Prototypentwicklung und<br />

06.09.00 3


Ulrik Schroeder Praktische Informatik, TU Darmstadt<br />

4<br />

• die erforderlichen Grundkenntnisse für die Werkzeugbenutzung.<br />

• Wie müssen die Werkzeuge gestaltet werden um für den Anwender mit<br />

entsprechender Grundausbildung geeignet zu sein?<br />

• Wie kann in einer Entwicklungsumgebung eine multimediale Lernumgebung integriert<br />

werden, um<br />

• die Konzepte, Denkformen und Methodik der durch den Anwender aktiv<br />

gesteuerten Softwareentwicklung anzuleiten?<br />

• des kontinuierlichen Lernens in den Prozess der Use-Case Spezifikation integriert<br />

werden?<br />

• Welche Vorbildung (IuK-Grundbildung oder doch Fachinformatiker) ist heute<br />

notwendig, um die Konzepte und Werkzeuge des Prototyping zu verstehen ?<br />

• Wie muss die Ausbildung in der Mathematik bzw. IuK-Grundbildung verändert werden,<br />

um den allgemeinen Zugang zu ermöglichen?<br />

• Wie kann das kontinuierliche (lebenslange?) Lernen im Umgang mit neuen Medien<br />

und IuK-Technolgien im Arbeitsprozess gefördert werden?<br />

• Welche Aufgaben verbleiben für den Moderationsprozess?<br />

4 Vorgehensweise<br />

Ausgangspunkt der Untersuchung bildete unsere These, dass die Funktionalität und<br />

Mächtigkeit heutiger Informatikentwicklungsumgebungen bereits ausreichen kann, um<br />

Anwender Szenarioprototypen mitgestalten zu lassen. Allerdings gibt es heute noch kein<br />

geschlossenes Werkzeug, das die vorgeschlagene Entwicklungsweise unterstützen<br />

würde. Im Rahmen dieses kleinen Projektes konnte natürlich kein komplexes<br />

Entwicklungswerkzeug erschaffen werden. Stattdessen untersuchten wir existierende,<br />

kommerzielle, visuelle Modellierungsumgebungen und versuchten diese – zum Teil etwas<br />

zweckentfremdet – einzusetzen, um die Prototypspezifikation mit den verschiedenen<br />

Werkzeugen partiell abzudecken.<br />

Die kleinen Systeme, die wir als Referenzbeispiele ausgewählt haben, erlauben die<br />

Untersuchung wichtiger Fragestellungen. Die im Projekt verfügbaren Mittel wurden<br />

eingesetzt, um die manuellen Überbrückungen bei der Erstellung der Prototypen zu<br />

finanzieren und die Ergebnisse anschaulich zu dokumentieren. Dabei wurde identifiziert,<br />

welche Aktionen durch eine Szenario-Werkstatt integriert unterstützt werden müsste. In<br />

der parallel durchgeführten Lehrveranstaltung „Virtuelles Softwarelabor“ wurden<br />

Erweiterungen für einige der eingesetzten Werkzeuge entwickelt, die den Prototyp-<br />

Designprozess mit den heutigen Entwicklungsumgebungen besser unterstützen und<br />

nachweisen, dass eine Spezialisierung der Entwicklungsumgebungen die<br />

Gestaltungsvision realisierbar machen. Außerdem haben wir anhand der<br />

Referenzbeispiele die Grenzen der Vorgehensweise ausgelotet.<br />

Die im Rahmen des Projektes ausgewählten Software-Entwicklungsumgebungen, die<br />

auch Möglichkeiten zur visuellen Modellierung bieten, wurden in Hinsicht ihrer<br />

Anwendbarkeit für einen Analyseprozess seitens der Anwender bewertet. Die Werkzeuge


PTAH: Prototypen-Werkstatt Softwaredefinitionswerkzeuge für Anwender<br />

umfassen auch zwei visuelle Modellierungsumgebungen, die den UML-basiert<br />

Entwicklungsprozess unterstützen<br />

• Rational Rose for Java 2000 [RationalRose],<br />

• TogetherJ 3.2 [TogetherJ]<br />

sowie unterschiedliche Java-Programmierumgebungen, die u.a. die visuelle Gestaltung<br />

der Benutzungsschnittstellen ermöglichen:<br />

• IBM Visual Age for Java 3.02 Early Adopters Version for Java 2 Support,<br />

[VisualAge]<br />

• Inprise Jbuilder 3.0, [Jbuilder]<br />

• Sun JavaStudio 1.0 [JavaStudio]<br />

• Sun Forté for Java 1.0 Beta, [Forté]<br />

• Monasch University BlueJ 1.0.2 [BlueJ].<br />

Da die Entwicklungsumgebungen für unterschiedliche Zwecke entworfen sind, bieten sie<br />

zum Teil recht unterschiedliche Modellierungsmöglichkeiten, die sie auf der anderen Seite<br />

auch unterschiedlich stark in ihrer Ausdrucksmächtigkeit beschränken. Im Vorfeld muss<br />

festgehalten werden, dass natürlich keine der untersuchten Umgebungen, den avisierten<br />

anwenderbetriebenen Analyseprozess optimal unterstützt, da die Werkzeuge<br />

überwiegend für Informatiker und professionelle Softwareentwicklung konzipiert sind und<br />

dementsprechend hohe Anforderungen an die Vorkenntnisse der Anwender stellen. Uns<br />

ging es vielmehr darum nachzuweisen, dass existierende Konzepte vielversprechende<br />

Ansätze bieten, die aber noch integriert und aufeinander abgestimmt werden müssten.<br />

Um die Problemklassen interaktiver Softwaresysteme zu klassifizieren wurden mehrere<br />

Referenzbeispiele erarbeitet.<br />

• Taschenrechner (kleines Beispiel eines Windows Tools) [Rechner]<br />

• Bibliotheksverwaltung [Bibliothek]<br />

• Finanzdienstleistungen (Aktientransaktionsmanagement), [Broker]<br />

• Gebäudeautomation (Steuerung multimedialer Konferenzräume) [ConGo]<br />

• Unfallaufnahme der Polizei [Unfallaufnahme]<br />

• Lernumgebung für Mathematikunterricht am Gymnasium [Imat]<br />

Die Realisierung der Referenzbeispiele konnte mithilfe der kommerziellen<br />

Entwicklungswerkzeuge nur unvollständig erfolgen. Daher mussten fehlende Bestandteile<br />

in Java ausprogrammiert werden. Der größte Aufwand entstand bei der Modellierung<br />

funktioneller Prototypen mit den rein visuellen Programmierumgebungen, da ihre<br />

Ausdrucksmächtigkeit zu stark beschränkt ist, sowie vor allem bei der anschaulichen<br />

Dokumentation der Ergebnisse.<br />

Die Dokumentation sollte die heute noch ungewöhnliche Vorgehensweise als Prozess der<br />

Erstellung der Szenarioprototypen nachvollziehbar machen. Daher wurde sie als<br />

06.09.00 5


Ulrik Schroeder Praktische Informatik, TU Darmstadt<br />

Hypertext entworfen und enthält Animationen der resultierenden Prototypen und Verweise<br />

auf die erstellten Javaprogramme. Im folgenden sind die Ergebnisse auch statisch in<br />

diesem Dokument dargestellt, eine bessere Nachvollziehbarkeit ist aber durch die online<br />

Version gegeben [ptah] 1 .<br />

Aus pädagogischer Sicht ist im folgenden zu untersuchen, welche Informatikgrundbildung<br />

für die selbständige Modellierung von Use-Case Prototypen gestellt werden muss und<br />

welcher Lernaufwand dann während der Modellierung entsteht. Dazu sollten die<br />

Einarbeitungszeiten in die Werkzeuge und das Vorgehen zur Modellierung von<br />

Anwendungsfall-Prototypen gemessen und protokolliert werden.<br />

5 Ergebnisse<br />

5.1 Kriterien für die Auswahl visueller Modellierungswerkzeuge<br />

Unsere Ausgangsthese besagt, dass das visuelle Komponieren graphischer<br />

Benutzungsschnittstellen mit modernen Informatikmodellierungswerkzeugen bereits heute<br />

derart automatisiert ist, dass das Erstellen ohne weitergehende Programmierkenntnisse<br />

erfolgen kann. Insofern haben wir die für die Referenzbeispiele ausgesuchten<br />

Entwicklungsumgebungen in erster Linie aufgrund ihrer graphischen<br />

Benutzungsschnittstellen-Editoren ausgewählt.<br />

Als schwierigste Frage war zudem zu untersuchen, welches Modell für die Spezifikation<br />

der Prototyp-Semantik herangezogen werden konnte. Daher entschieden wir uns für<br />

verschiedene Werkzeuge, die<br />

• das rein graphische Modellieren im Sinne einer Verschaltung von Grafikkomponenten<br />

(JavaStudio),<br />

• das Verbinden von Komponenten mit anschließender Auswahl der Bedeutung der<br />

Verbindung (VisualAge) und schließlich<br />

• das Ausprogrammieren der Reaktionen auf von Anwender ausgelöste Ereignisse<br />

(Forté for Java) .<br />

Als Nebenbedingung haben wir die Werkzeuge auf diejenigen beschränkt, die Java Code<br />

erzeugen, damit Anteile der Prototypen in den verschiednen Umgebungen gleichmäßig<br />

per Hand weiterentwickelt werden konnten und hierfür nicht verschiedene Ausdrucksmittel<br />

herangezogen werden mussten. Diese Werkzeugauswahl ermöglicht eine Diskussion der<br />

verschiedenen Erstellungsmöglichkeiten hinsichtlich<br />

• der Erlernbarkeit des Vorgehens,<br />

• der Realisierung der Prototypen und damit auch<br />

• der Grenzen der Ausdrucksmächtigkeit der verschiedenen Ansätze.<br />

Um die für eine ausführbare Szenario-Prototyprealisierung notwendigen<br />

Modellierungsschritte zu dokumentieren und das Vorgehen an konkreten Beispielen zu<br />

1 http://www.pi.informatik.tu-darmstadt.de/ptah-zit/<br />

6


PTAH: Prototypen-Werkstatt Softwaredefinitionswerkzeuge für Anwender<br />

demonstrieren, haben wir unterschiedliche Referenzbeispiele ausgewählt und mit den<br />

verschiedenen Werkzeugen realisiert. Zusätzlich wurden die Beispiele in UML modelliert<br />

[RationalRose und TogetherJ], um die Übergänge der Ausführung der Szenarioprototypen<br />

zu den Sequenzdiagrammen der UML zu demonstrieren.<br />

5.2 Die PTAH 2 Entwicklungsmethodik<br />

Die folgenden Referenzbeispiele demonstrieren das anwendergesteuerte und<br />

validationsgetriebene Entwickeln interaktiver Anwendungen mit graphischer<br />

Benutzungsschnittstelle. Die Beispiele haben unterschiedliche Komplexität. Zunächst<br />

besprechen wir das Vorgehen und der Vergleich der Werkzeuge an einem einfachen<br />

Beispiel [Rechner], um anschließend an komplexeren Beispielen die Grenzen des<br />

Vorgehens und die Vor- und Nachteile der unterschiedlichen Entwicklungsmodelle<br />

darzustellen.<br />

Im folgenden stellen wir lediglich einen Teil der Entwicklungsschritte des jeweiligen<br />

Beispiels vor, um die anhand dieses Beispiels erarbeiteten und demonstrieren<br />

Untersuchungsergebnisse zu besprechen. Die vollständige Dokumentation der Beispiele<br />

ist wesentlich besser anhand der Projekt-Website [ptah] zu verfolgen, da dort auch<br />

Animationen zur Simulation der Programme und ihrer Entwicklungsschritte sowie<br />

Verweise auf die in Java realisierten Beispielkomponenten in verschiednen<br />

Entwicklungsstufen integriert sind.<br />

Als erstes Beispiel untersuchen wir anhand eines Taschenrechners, der die<br />

Grundrechenarten als einfache Windows-Anwendung realisiert, wie ein Anwender<br />

selbständig einen ausführbaren Prototypen für exemplarische Anwendungen des<br />

Programms erstellen kann. Der Taschenrechner wird als Postfix-Rechner realisiert, da<br />

sich die Angabe des anzuwendenden Operators auf die zuvor eingegebenen Operanden<br />

einfacher realisieren lässt, als der heute übliche Infix-Rechner, der ein komplizierteres<br />

internes Speichermodell benötigt.<br />

Abbildung 1 Postfix-Taschenrechner als graphisch-interaktive Windowsapplikation<br />

Als einfache Bedienelemente verwenden wir die Tastatur für die Zahleneingabe und als<br />

aktive Bedienelemente die Enter-Taste, um den im Display eingegebenen Operanden<br />

einzugeben sowie die Knöpfe +, -, * und /, die die jeweilige arithmetische Operation auf<br />

die beiden zuletzt eingegebenen Operanden anwenden und das Ergebnis der<br />

Rechenoperation im Fenster anzeigen. Im Laufe der Entwicklung des Taschenrechners<br />

hat es sich als praktisch erwiesen, zusätzlich einen Operandenzähler neben der Enter-<br />

Taste einzuplanen, um dem Anwender anzuzeigen, wie viele Operanden derzeit für<br />

Rechenoperationen zur Verfügung stehen. Die weiteren Ausbaustufen des Rechners<br />

deaktivieren zudem die derzeit nicht anwendbaren Funktionstasten, z.B. die + Taste,<br />

wenn kein oder nur ein Operand eingeben wurden.<br />

2 PTAH ist kein Akronym, sondern einer der drei Hauptgötter im „neuen Reich“ des alten<br />

Ägypten (neben Amun und Ra). Nach der Lehre des Ptah-Hotep steht Ptah für das Prinzip<br />

der Formgebung, der Schaffung all der mannigfachen, unendlich differenzierten Körper<br />

und Gebilde, die die Schöpfung hervorbringt<br />

06.09.00 7


Ulrik Schroeder Praktische Informatik, TU Darmstadt<br />

Dieses Beispiel ist zugeschnitten auf die Ausdrucksmöglichkeiten von JavaStudio und<br />

wird zum Vergleich ebenfalls in Forté und VisualAge realisiert. Dieses Beispiel nutzen wir,<br />

um die PTAH-Vorgehensweise ausführlich zu beschreiben und abschließend einige von<br />

uns im Projekt entwickelte Hilfsmittel vorzustellen.<br />

5.2.1 PTAH Vorgehensweise bei der Erstellung des Rechners<br />

Schritt 1 der Entwicklung des Taschenrechners besteht darin, sich über die gewünschten<br />

Funktionen des Programms klar zu werden. Dazu listet der Anwender zunächst<br />

ungeordnet auf, was mit dem Programm durchgeführt werden kann. Im Fall des<br />

Taschenrechners beschreibt er, dass er Zahlen eingeben und mit diesen rechnen möchte.<br />

Als Rechenoperationen denken wir zunächst nur an die Addition, Subtraktion,<br />

Multiplikation und Division. Zu einem späteren Zeitpunkt können weitere<br />

Rechenoperationen (Trigonometrie, Quadrieren, Wurzelziehen, Logarithmen etc.)<br />

hinzugefügt werden.<br />

Schritt 2: Um die nur grob und informal skizzierten Rechnerverwendungen zu<br />

konkretisieren, zeichnen wir ein Bild, wie die Bedienung funktionieren soll.<br />

Schritt 3: Jetzt gehen wir daran, die funktionalen Anforderungen an das Programm zu<br />

strukturieren. Dazu überlegt sich der Anwender typische Verwendungsfälle des<br />

gewünschten Programms. Die erste Verwendung besteht darin, zwei Zahlen zu addieren.<br />

Als konkretes Beispiel legen wir fest, dass die Eingabe der Zahl 2 gefolgt von der Eingabe<br />

der Zahl 3 und anschließendem Auslösen der Addition den Wert 5 als Resultat der<br />

Addition in der Taschenrechneranzeige ergeben soll. Eine derart konkrete Beschreibung<br />

eines typischen Anwendungsfalls bezeichnen wir als Szenario, in diesem Fall das<br />

Additions-Szenario.<br />

Schritt 4: Diese textuelle Beschreibung des Anwendungsszenarios setzen wir als<br />

ausführbaren Prototypen um. Dazu erstellen wir mit JavaStudio zunächst eine<br />

Benutzungsschnittstelle, die die für dieses Szenario benötigten Bedienelemente enthält.<br />

Die Erstellung dieser prototypischen GUI kostete in JavaStudio ca. 3 Minuten Aufwand,<br />

da lediglich Standardelemente per Mausklick auf dem Fenster platziert und direkt bei ihrer<br />

Anordnung mit der Eingabe der Eigenschaften (z.B. Text der Beschriftung der Knöpfe)<br />

konfiguriert werden. Genaugenommen ist die GUI bereits „überdimensioniert“, da sie<br />

8


PTAH: Prototypen-Werkstatt Softwaredefinitionswerkzeuge für Anwender<br />

bereits Bedienelemente für die Subtraktion, die Multiplikation oder das Löschen der<br />

Anzeige enthält.<br />

Die visuelle Konstruktion beginnt mit der Konfiguration des Hauptfensters, in dem der<br />

Rechner laufen soll. Jegliche Anpassung der graphischen Elemente erfolgt in einem<br />

geführten Dialog und benötigt keine Programmierkenntnisse.<br />

Für das Fenster kann dessen Größe, Farbe, Titel etc. festgelegt werden. Während der<br />

Konstruktionsphase kann man sich ein Raster einblenden, an dem sich die auf dem<br />

Fenster platzierten Elemente ausrichten lassen. Als nächstes wählt der Anwender aus<br />

den bereitgestellten Bedienelementen eine „TextArea“ aus, die die Anzeige des<br />

Taschenrechners realisieren wird.<br />

Diese wird per Maus auf dem Hauptfenster platziert und wieder per Menü konfiguriert.<br />

Als weitere Eigenschaften werden Größe, Schriftart und Farbe der Anzeige festgelegt.<br />

06.09.00 9


Ulrik Schroeder Praktische Informatik, TU Darmstadt<br />

Nach diesen Aktionen besteht unser Taschenrechner aus einem Hauptfenster mit<br />

Anzeigefeld in den festgelegten Größen und Farben.<br />

Als nächstes wählt der Benutzer eine Taste oder Knopf, den er unterhalb der Anzeige<br />

anordnet und mit enter beschriftet. Dabei lassen sich weitere Eigenschaften des<br />

Knopfes festlegen.<br />

Für die weiteren Bedienelemente reicht es, den bereits angeordneten enter-Knopf zu<br />

kopieren und beim Anordnen mit anderer Beschriftung („+“ und „C“) zu konfigurieren.<br />

10


PTAH: Prototypen-Werkstatt Softwaredefinitionswerkzeuge für Anwender<br />

Als Andeutung, dass weitere Bedienelemente für diesen ersten Szenarioprototyp nicht<br />

realisiert werden bringen wir zusätzlich die Beschriftung „etc“ an.<br />

Schritt 5: Jetzt sieht der Prototyp bereits so aus, wie der Taschenrechner, verhält sich<br />

aber noch nicht, wie erwünscht, da die Knöpfe noch keine Funktionalität aufweisen.<br />

Genau in der Art, wie die Semantik der Systeme beschrieben wird, unterscheiden sich die<br />

Entwicklungsumgebungen. In unserer ersten Realisierung mit JavaStudio definieren wir<br />

die Wirkung des Drückens des enter-Knopfes und des Additionsknopfes, indem die<br />

betroffenen Komponenten in einer Art Schaltung miteinander verbunden werden.<br />

JavaStudio bietet dafür ein Design-Fenster, in dem alle auf dem Hauptfenster<br />

angebrachten Komponenten per Icon und Beschriftung repräsentiert werden. Je nach Art<br />

der Komponente hat das Icon verschiedene Anschlussstücke, die miteinander verbunden<br />

werden können. Ein Ausgangsanschlussstück eines Icons löst zum Beispiel beim Drücken<br />

eines Knopfes ein Ereignis aus, das durch die Verbindung zu dem Eingang des<br />

Anzeigefeldes den dargestellten Text setzen kann.<br />

06.09.00 11


Ulrik Schroeder Praktische Informatik, TU Darmstadt<br />

Da wir keine echte Rechnersemantik spezifizieren müssen, sondern lediglich das<br />

Verhalten des abgesprochenen Szenarios (2 + 3 = 5), reicht es, beim Drücken des enter<br />

-Knopfes die Anzeige zu löschen (in der im ersten Fall die 2, danach die 3 per Tastatur<br />

eingetragen wird) und beim Drücken des Additionsknopfes in der Anzeige den Wert 5<br />

erscheinen zu lassen. Dafür reicht es, den Ausgang des enter und des C-Knopfes<br />

zusammenzufassen und auf den „clear text“-Eingang der Anzeige zu schalten. Der<br />

Ausgang des Additionsknopfes wird mit dem Auslöseeingang einer Konstante (nicht<br />

visuelle Komponente) verbunden, deren Wert beim Auslösen durch Verbinden ihres<br />

Ausgangs mit dem „set text“-Eingang des Anzeigefeldes dargestellt wird.<br />

Mit diesem in ca. 5 Minuten produzierten Prototypen lässt sich das Szenario 2 + 3 = 5 (als<br />

Stellvertreter einer Testspezifikation für die einfache Arithmetik mit 2 Operanden) sofort<br />

durchspielen, ohne einen Compiler aufrufen zu müssen. In der Online-Dokumentation<br />

dieses Beispiels sieht man den Szenario-Prototypen in Aktion als eine Animation sowie<br />

den Prototypen als Applet zum Selbstdurchspielen des Szenarios.<br />

Schritt 6: Der Szenario-Prototyp zusammen mit den Verwendungsdaten (was muss der<br />

Benutzer eingeben und welche Ergebnisse erwartet er als Reaktion auf die Interaktion)<br />

spezifiziert genau das folgende Sequenzdiagramm, das aus dem Prototypen generiert<br />

werden kann<br />

12


PTAH: Prototypen-Werkstatt Softwaredefinitionswerkzeuge für Anwender<br />

Bedienung verdeutlicht, wie schnell man an die Grenzen der Semantikbeschreibung mit<br />

dem JavaStudio-„Verdrahtungsmodus“ stößt. Daher zeigen wir im folgenden das gleiche<br />

PTAH-Vorgehen unter Verwendung einer professionellen Java-Entwicklungsumgebung<br />

mit GUI-builder.<br />

Die ersten Schritte verlaufen analog zur PTAH-Spezifikation mit JavaStudio. Wir erstellen<br />

für jedes der gewünschten Szenarien zunächst GUI-Prototypen, die die für das Szenario<br />

benötigten Bedienelemente enthalten. Im folgenden betrachten wir bereits eine<br />

weiterentwickelte Version des Taschenrechners, der bereits alle Komponenten der<br />

endgültigen GUI enthält (und damit gleichzeitig für alle Szenarien dient). Das Auswählen,<br />

anordnen und konfigurieren der Bedienelemente erfolgt ähnlich wie in JavaStudio.<br />

5.2.2.1 Semantikspezifikation<br />

Wenn wir uns zunächst auf die einfache Version des Rechnerszenarios "2 + 3 = 5"<br />

beschränken, lässt sich der Prototyp innerhalb von ca. 5 Minuten realisieren. Allerdings<br />

muss in Forté die Reaktion auf das Aktivieren eines der Bedienelemente über den<br />

Eigenschaftseditor eingegeben werden. Zunächst wählen wir dazu im Layout-Editor die zu<br />

konfigurierende Komponente aus und gibt im assoziierten Eigenschaftseditor als Methode<br />

für die reaktion auf das Auslösen des Knopfes einen Methodennamen an.<br />

Um den auszuführenden Code zu programmieren, wechseln wir in der Programmiereditor<br />

und geben an, dass das Betätigen des enter-Knopfes die Anzeige des Rechners löscht<br />

(setText( null ) ).<br />

Da wir als Semantikspezifikation den Übergang zur Programmiersprache benötigen, liegt<br />

es nahe, anstelle der Konstanten für das Verhalten des Prototypen Ausdrücke für das<br />

Rechnen anzugeben. Dazu wählen wir bei der erweiterten Version des Rechners wieder<br />

die Komponente, für deren Aktivierung wir die Semantik in Java angeben wollen<br />

06.09.00 15


Ulrik Schroeder Praktische Informatik, TU Darmstadt<br />

In diesem Moment erhalten wir den Eigenschaftseditor in einem zweiten Fenster. Mithilfe<br />

dieses Editors können wir Tabellengesteuert die Eigenschaften des Add-Knopfes<br />

verändern. Auf diese Weise geben wir dem Element z.B. seine Beschriftung " + " oder den<br />

Text, der erscheinen soll, wenn die Maus auf dem Knopf verweilt (ToolTipText).<br />

Allerdings muss man die Bedeutung der Eigenschaften kennen (also fast die<br />

Repräsentation der Komponente in Java kennen).<br />

Den gleichen Editor verwenden wir weiter, um die Semantik des Knopfes anzugeben.<br />

Dazu wählen wir den Reiter „Events“ und wählen den ersten Eintrag<br />

„actionPerformed“ (wieder aufgrund unserer Kenntnis, dass genau dieses Ereignis<br />

beim Drücken des Knopfes ausgelöst wird).<br />

16


PTAH: Prototypen-Werkstatt Softwaredefinitionswerkzeuge für Anwender<br />

Wir tragen als Reaktion auf das Drücken des Add-Knopfes den Namen einer Methode ein,<br />

die aufgerufen wird, sobald das Ereignis während der Programmausführung durch den<br />

Benutzer ausgelöst wird. Forté generiert den notwendigen Code, um die Methode beim<br />

Knopf anzumelden, damit dieser Aufruf immer automatisch erfolgt. Außerdem generiert<br />

Forté den Rahmen für diese Methode. Der Inhalt (also der Code der schließlich<br />

ausgeführt wird), muss aber noch in Java eingegebene werden. Durch Klicken des<br />

soeben eingegebenen Methodennamens im Eigenschaftseditor öffnet sich der<br />

Programmiereditor an der mit der Methode assoziierten Stelle. Die generierten und damit<br />

für den Spezifizierer unveränderlichen Code-Stellen werden ausgegraut dargestellt. Ein<br />

Kommentar weist darauf hin, an welcher Stelle der Code für die Reaktion programmiert<br />

werden muss.<br />

Um die Addition der zuletzt auf dem Stack gespeicherten Operanden durchzuführen,<br />

holen wir die Operanden vom Stack (pop( )-Operation), wandeln sie in eine<br />

Gleitpunktzahl um ( doubleValue( ) ) und speichern das Ergebnis der Addition in der<br />

Variable sum. Diesen neu errechneten Wert speichern wir als nächstes auf dem Stack<br />

(push( ) ). Damit ist das Resultat zugleich der nächste zur Verfügung stehende<br />

Operand für folgende Rechenschritte. Wenn nicht mehr zumindest zwei Operanden zur<br />

Verfügung stehen, werden die Knöpfe für die Rechenoperationen abgeschaltet. Am Ende<br />

zeigen wir das Ergebnis in der Anzeige des Taschenrechners an.<br />

06.09.00 17


Ulrik Schroeder Praktische Informatik, TU Darmstadt<br />

An dieser Beschreibung wird deutlich, dass zur Realisierung dieser Operation das Modell<br />

des Rechners und die Namen all seiner Komponenten bekannt sein müssen, damit ich die<br />

Rechensemantik spezifizieren kann. Der resultierende Rechnerprototyp ist damit aber ein<br />

voll funktionstüchtiger Taschenrechner und nicht nur für die zuvor genannten Szenarien<br />

nützlich. Eine "Fehlbedienung" kann entsprechend abgefangen werden. Der Prototyp und<br />

eine Animationssequenz seiner Bedienung ist in der Online-Version [ptah] 3 dieses<br />

Berichtes einzusehen.<br />

5.2.3 PTAH-Rechnerspezifikation mit VisualAge<br />

Forté erzwingt die rein programmiersprachliche Angabe der Semantik des<br />

Szenarioprototypen. VisualAge bietet eine Zwischenversion der Spezifikationsmöglichkeit.<br />

Ähnlich zu JavaStudio lässt sich zumindest ein großer Teil der Semantik visuell durch<br />

Verbinden von Komponenten angeben. Allerdings gibt es wesentlich weitergehende<br />

Auswahlmöglichkeiten, welche Bedeutung eine Verbindung von Komponenten haben soll.<br />

Allerdings erfordert das Ausnutzen der unterschiedlichen Ausdrucksmöglichkeiten<br />

erheblich weitergehende Vorstellungen von Ablauf der Ereignisbehandlung in Java, da sie<br />

in VisualAge auf professionelle Java-Programmierer zugeschnitten ist.<br />

Die ersten Schritte verlaufen analog zur PTAH-Spezifikation mit JavaStudio oder Forté<br />

Wir erstellen für jedes der gewünschten Szenarien zunächst GUI-Prototypen, die die für<br />

das Szenario benötigten Bedienelemente enthalten. Für das Additionsszenario erstellen<br />

wir angeleitet durch den Class-Wizard und anschließend per Drag and Drop im visuellen<br />

GUI-Erstellungsmodus den Rechnerprototypen<br />

3 http://www.pi.informatik.tu-darmstadt.de/ptah-zit<br />

18


Ulrik Schroeder Praktische Informatik, TU Darmstadt<br />

Als letzter Schritt der „actionPerformed“-Verbindung zwischen enter-Knopf und<br />

Anzeigefeld erfolgt die Auswahl, welche Aktion des Anzeigefeldes ausgelöst werden soll.<br />

Aus den verfügbaren Optionen wählen wir das Setzen des angezeigten Textes. Welcher<br />

Text im Anzeigefeld gesetzt werden soll, lässt sich wieder per Menü eintragen. Der Wert<br />

muss allerdings als Resultat einer Methode (enterAction_Value( ) ) eingetragen<br />

werden.<br />

Der rein visuell spezifiziert Additionsszenarioprototyp realisiert das gewünschte Verhalten.<br />

Allerdings muss für das Setzen des Wertes 5 entweder als Resultat der Addition der Wert<br />

im generierten Java Code der Methode plusAction_Value( ) eingetragen werden<br />

oder durch Doppelklick der Verbindung und Auswahl „Set parameters ...“ der Wert per<br />

Dialog spezifiziert werden. In beiden Fällen ist das Vorgehen nicht genauso einfach, wie<br />

die reine Verdrahtung bei JavaStudio, dafür aber entsprechend ausdrucksstärker.<br />

20


PTAH: Prototypen-Werkstatt Softwaredefinitionswerkzeuge für Anwender<br />

Analog zum Vorgehen mit Forté ist auch in VisualAge der Übergang zum Programmieren<br />

in Java fließend. Daher lässt sich gemischt visuell und programmiersprachlich der<br />

gesamte Rechnerprototyp realisieren. Für das einfache Additionsszenario müssen<br />

allerdings mindestens zwei "Speicherplätze" für die beiden Operanden angegeben<br />

werden, um deren Werte beim Drücken des Additionsknopfes aufzuaddieren und im<br />

Anzeigefeld darzustellen. Bereits diese Aktion erfordert beim visuellen Programmieren<br />

mehr Aufwand, als das Ausprogrammieren in Java, da man sich ein Modell überlegen<br />

muss, wie die Operanden gespeichert werden, die in der anschließend ausgelösten<br />

Rechenoperation verarbeitet werden. Beim Ausprogrammieren in Java, steht dem<br />

Programmierer für diesen Zweck die Standardklasse java.util.Stack zur Verfügung.<br />

5.2.4 Entwicklung des Taschenrechners mit BlueJ<br />

BlueJ ist eine Java-Programmierumgebung für Lernende der Programmiersprache Java<br />

und unterstützt die Erstellung und das Verstehen von Java Klassenstrukturen. BlueJ<br />

erlaubt die graphische Darstellung und das Editieren von Klassenstrukturen. Das<br />

Ausprogrammieren der generierten Klassenrahmen erfolgt im integrierten Texteditor und<br />

verlangt Java-Programmierkenntnis. Für PTAH ist das interaktive Austesten der Klassen<br />

interessant, nicht die Art der Erstellung der Anwendung. Im Gegensatz zu den<br />

Entwicklungsumgebungen JavaStudio, Forté und VisualAge eignet sich BlueJ daher nicht<br />

direkt als unterstützendes Werkzeug für die PTAH-Entwicklungsmethodik. Wir haben<br />

dennoch das Rechnerbeispiel in BlueJ entwickelt, um andere Übergänge, die das<br />

Verstehen von Informatiksystemen erleichtern zu demonstrieren und dabei zu diskutieren,<br />

welche Aspekte in eine PTAH-Entwicklungsumgebung integriert werden müssten.<br />

5.2.4.1 Das Rechnerbeispiel<br />

Angenommen die Klassenstrukturen der gewünschten Anwendung wurden durch die<br />

PTAH-Prototypen ermittelt. Als Resultat generieren unsere Werkzeuge UML-<br />

Sequenzdiagramme und damit auch die in der Anwendung benötigten Klassendefinitionen<br />

(lediglich die Schnittstellen und die durch die Sequenzdiagramme spezifizierte Semantik<br />

der Methoden). Dann kann BlueJ die resultierenden Klassenstrukturen darstellen und<br />

erlaubt das interaktive, fragmentarische Austesten der Klassen.<br />

Wir verzichten in diesem Beispiel auf die graphisch-interaktive Benutzungsschnittstelle<br />

des Taschenrechners und vereinfachen damit unsere Anwendung auf eine einzige<br />

06.09.00 21


Ulrik Schroeder Praktische Informatik, TU Darmstadt<br />

Klasse, die die Rechnerfunktionalität realisiert. Um die Darstellung der Klassenstrukturen<br />

zu demonstrieren, haben wir zusätzlich die Schnittstellenspezifikation dieser Funktionalität<br />

als StackrechnerInterface programmiert.<br />

BlueJ stellt beide Klassen in UML Notation im Klasseneditor grafisch dar: Die Klasse<br />

Stackrechner erbt von der Schnittstellendefinition StackrechnerInterface.<br />

Nachdem diese Klassenstruktur angegeben wurde, kann man die generierten Klassen<br />

(bislang ohne Methoden) ausprogrammieren. Anschließend lassen sich die Klassen ohne<br />

zusätzliche Einbindung in ein Hauptprogramm oder eine grafische Bedienoberfläche<br />

austesten. Dazu erzeugt man sich ein Objekt des Stackrechners per Mausklick.<br />

Auf diesem Stackrechner-Objekt lassen sich alle in der Klasse implementierten<br />

Methoden aufrufen. Auf diese Weise kann man z.B. das Additionsszenario per Hand<br />

durchspielen.<br />

22


PTAH: Prototypen-Werkstatt Softwaredefinitionswerkzeuge für Anwender<br />

Ein anschließender Aufruf der Methode top( ) liefert das gewünschte Resultat.<br />

BlueJ demonstriert, wie das interaktive Austesten bestehender Applikationen graphisch<br />

unterstützt werden kann. Im Gegensatz zum hier gewählten Ansatz wollen wir in der<br />

PTAH-Umgebung Objekte nicht als Ovale darstellen, sondern stattdessen ihr durch die<br />

GUI-Prototypen spezifizierten Darstellungen repräsentieren. Außerdem ist es notwendig,<br />

die Beziehungen zwischen Objekten zu visualisieren, um ein Szenario durch das Aufrufen<br />

der Methoden nachzuspielen.<br />

5.2.5 Zusammenfassung der PTAH Vorgehensweise<br />

Am Beispiel der Entwicklung eines Taschenrechners wurde die PTAH Vorgehensweise<br />

der Spezifikation der Software durch den Anwender demonstriert:<br />

1. Der Anwender überlegt sich typische Verwendungsfälle und konkretisiert diese<br />

exemplarisch<br />

2. Er zeichnet Skizzen des Ablaufs für jedes der Szenarien und beschreibt das<br />

Systemverhalten informell<br />

06.09.00 23


Ulrik Schroeder Praktische Informatik, TU Darmstadt<br />

24<br />

3. Anschließend realisiert er diese Skizzen als GUI-Prototypen mit einem grafischen<br />

Konstruktionseditor (Visual GUI Builder) durch Platzieren der benötigten<br />

Steuerungselemente in einem Fenster<br />

4. Dann spezifiziert er die Semantik für genau diesen Anwendungsfall mit konkreten<br />

Daten ebenfalls visuell, durch Verbinden und konfigurieren der grafischen<br />

Bedienoberflächenelemente sowie Verwendung bereitgestellter vorgefertigter<br />

Komponenten (GUI und Logik)<br />

5. Ggf. kommentiert er den Prototypen durch Anbringen von Annotationen auf gelben<br />

Zetteln (PostItBean), die er genau wie andere grafische Komponenten per Maus<br />

auf dem Fenster platzieren kann.<br />

6. Ggf. ergänzt er die Szenarien mit der schrittweisen Kommentierung jedes<br />

Durchführungsschritts, das auch den Kontext des Systemeinsatzes beschreibt<br />

(StateDisplayBean)<br />

7. Schließlich führt er das Szenario mit konkreten Werten mit seinem Prototypen aus<br />

und nimmt den Ablauf durch das Capture&Replay-Framework GUITesting auf<br />

8. Die Szenarioprototypen liefert er zusammen mit den Logdateien des Capture-<br />

Frameworks und den informellen Beschreibungen der Szenarien an das<br />

Entwicklungsteam aus<br />

In der Regel werden diese 8 Schritte durch den Anwender nicht alleine durchlaufen,<br />

sondern bereits von Entwicklern begleitet, die auf Bedarf beim Design der Prototypen<br />

helfen (aber vor Ort und zusammen mit dem Anwender) und insbesondere neue<br />

Komponenten für die grafische Komposition bereitstellen, falls diese nicht in der PTAH<br />

Komponentenbibliothek noch nicht existieren. Auf diese Wiese sollen nach und nach<br />

weitere nützliche Komponenten zur visuellen Prototypspezifikation entstehen.<br />

Insbesondere wäre zu untersuchen, ob domänenspezifische Spezifikationsbibliotheken<br />

entwickelt werden können, die große Teile der zu erstellenden Benutzungsoberflächen<br />

und der Anwendungslogik<br />

Zur Unterstützung dieser Vorgehensweise haben wir das Testspezifikationsgenerierungs-<br />

Framework GUITesting und eine Reihe PTAH-Komponenten zur visuellen Spezifikation<br />

entwickelt, die im im Zusammenhang mit den folgenden Referenzbeispielen beschrieben<br />

werden.<br />

5.3 Dokumentation weiterer Referenzbeispiele<br />

5.3.1 Bibliotheksverwaltung<br />

Die Bibliotheksverwaltung ist ein deutlich komplexeres Anwendungsbeispiel, das vor<br />

einigen Jahren als Software Engineering Projekt im Praktikum der Praktischen Informatik<br />

von einer Gruppe von 6 Studierenden über ein Jahr entwickelt wurde. Anhand dieses<br />

Beispiels, das aufgrund der allgemeinen Verständlichkeit der Anwendung (Verwalten von<br />

Büchern und Leihvorgängen etc.) ebenfalls ohne ausführliche Einführung und<br />

Dokumentation von jedem Leser verstanden und überschaut wird, können wir die<br />

Möglichkeiten und Grenzen der Entwicklungsumgebungen deutlich herausarbeiten.


PTAH: Prototypen-Werkstatt Softwaredefinitionswerkzeuge für Anwender<br />

In dem "Suchen"-Fenster kann der Benutzer links die Suchkriterien ausfüllen. Als Kriterien<br />

gibt es Autor, Titel, Stichwörter und Kategorie. Wenn der Benutzer auf "Suchen" drückt,<br />

werden auf der rechten Seite die Suchergebnisse angezeigt.<br />

Es kann ein Buch ausgewählt und durch Drücken von "Ausleihen" ausgeliehen werden.<br />

Es wird dann eine Meldung angezeigt, ob die Ausleihe erfolgreich war.<br />

Szenario 2: Der Login-Vorgang ist derselbe wie bereits beschrieben. Jedoch wird anstelle<br />

des "Suchen"-Fensters das Fenster zum "Stöbern" angezeigt (das muss dann vorher<br />

ausgewählt werden können oder man hat Konfigurationseinstellungen für das Programm).<br />

In diesem Fenster gibt es nur eine Liste mit den verfügbaren Kategorien. Durch<br />

Auswählen einer Kategorie werden die enthaltenen Unterkategorien bzw. die enthaltenen<br />

Bücher angezeigt. Dieses Fenster bietet ebenfalls die Funktion "Ausleihen" und zusätzlich<br />

die Funktion "Information":<br />

06.09.00 27


Ulrik Schroeder Praktische Informatik, TU Darmstadt<br />

Die skizzierten Szenarien haben wir vergleichend mit JavaStudio, Forté und VisualAge als<br />

Szenarioprototypen visuell entworfen. Die Einzelschritte der Entwicklung und die<br />

animierte Darstellung der Verwendung der Prototypen sind auf der PTAH-Website<br />

ausführlich dokumentiert. Insbesondere diskutieren wir dort die unterschiedlichen Modi<br />

der visuellen Semantikspezifikation. Anhand des Beispiels konnten wir die in den<br />

folgenden Abschnitten dokumentierten Beobachtungen machen und<br />

Entwicklungsergebnisse erzielen.<br />

5.3.1.1 Bibliotheksszenarien mit JavaStudio<br />

Das Login zum System kann in anderen Systemen leicht wiederverwendet werden. Wir<br />

speichern den visuell „programmierten“ Login-Dialog als neue Komponente, die sich in<br />

anderen Anwendungen ohne weitere Programmierung direkt einbinden lässt. Um die<br />

notwendigen Anpassungen vorzunehmen, gibt es für diese Komponente die Möglichkeit,<br />

menügeführt z.B. den Titel des Fensters, dessen Größe oder Farben oder die<br />

Beschriftung der Knöpfe anzupassen.<br />

Die Semantik benötigt keine weiteren Angaben, da die Komponenten Textfeld und Knopf<br />

ihr Verhalten selbst mitbringen<br />

Der einfache Erstellungsmodus begrenzt die Anwendbarkeit von JavaStudio für<br />

Szenarien, die mehrere Fenster involvieren. Das Drücken eines Knopfes kann kein<br />

anderes Fenster öffnen. Dies muss in JavaStudio daher über mehrere voneinander<br />

unabhängige Prototypen simuliert werden, deren Übergang außerhalb des Prototypen<br />

kommentiert werden muss.<br />

28


PTAH: Prototypen-Werkstatt Softwaredefinitionswerkzeuge für Anwender<br />

5.3.1.2 Bibliotheksszenarien mit Forté<br />

Die Realisierung der Szenarien mit Forté erforderte für die Spezifikation der Semantik<br />

wieder den Übergang zur Java-Programmierung. Allerdings unterstützt die<br />

Entwicklungsumgebung den Übergang vom visuellen zum textuellen Programmieren sehr<br />

gut, da für jede Komponente, z.B. ein Knopf, zunächst mit der Maus angegeben werden<br />

kann, dass man eine Reaktion auf das Drücken des Knopfes angeben möchte. Daraufhin<br />

wird eine Methode in der richtigen Klasse generiert und auch der Aufruf dieser Methode in<br />

der Anwendung automatisch verankert. Durch Klicken der Komponente führt die<br />

Umgebung den Anwender an die richtige Stelle in der Klassendefinition und ein<br />

Kommentar weist daraufhin, an welcher Stelle schließlich die Semantik eingegeben<br />

werden muss. Diese Angabe erfolgt dann aber in der Programmiersprache Java.<br />

Diese Unterstützung nimmt dem Anwender bereits den größten Teil des<br />

Programmierverstehens ab, da die Schwierigkeit eher darin liegt zu erlernen, wie man<br />

Reaktionen auf Ereignisse in das Programm einbindet. Es ist erheblich leichter, nur das<br />

Öffnen eines anderen Fensters oder eines Datei-Auswahldialoges in Java<br />

aufzuschreiben, als die Konventionen der Ereignisbehandlung zu kennen.<br />

Zunächst wählen wir dazu im Layout-Editor die zu konfigurierende Komponente aus und<br />

geben im assoziierten Eigenschaftseditor als Methode für die Reaktion auf das Auslösen<br />

des Knopfes einen Methodennamen an.<br />

Um den auszuführenden Code zu programmieren, wechseln wir in der Programmiereditor<br />

und geben an, dass das Betätigen des enter-Knopfes die Anzeige des Rechners löscht<br />

(setText( null ) ). Der Editor führt und zumindest genau an die Stelle, an der der Code<br />

eingegeben werden muss und die für die Schnittstelle benötigten Angaben sind<br />

unveränderlich. Lediglich der Java-Code für die Reaktion auf das Auslösen des Knopfes<br />

muss noch in Java angegeben werden.<br />

In diesem Beispiel haben wir als Unterstützung der Kommunikation zwischen Anwender<br />

und Entwickler eine Komponente entwickelt, die es dem Anwender ermöglicht, an<br />

beliebigen Stellen seiner Anwendung Kommentare anzubringen. Diese PostItBean<br />

(benannt nach der analogen Verwendung der gelben Zettel) lässt sich wie die<br />

06.09.00 29


Ulrik Schroeder Praktische Informatik, TU Darmstadt<br />

Komponenten grafischer Benutzungsschnittstellen mit der Maus auf dem Fenster der<br />

Anwendung platzieren.<br />

5.3.1.2.1 Komponente "Gelber Zettel" zum Anbringen von Notizen<br />

Die Komponente (JavaBean) realisiert so etwas wie einen gelben Zettel, auf dem Notizen<br />

angebracht werden können und der an der GUI befestigt werden kann. Diese<br />

Komponente gehört nicht zum eigentlichen Programm, sondern liefert Informationen über<br />

den GUI Prototypen. Gelbe Zettel können genutzt werden, um zu notieren, das bestimmte<br />

Aspekte im Prototypen weggelassen wurden oder nicht in der Form realisiert werden<br />

konnte, wie eigentlich vorgesehen. Gelbe Zettel können auch genutzt werden, um nichtfunktionale<br />

Anforderungen am Prototypen anzubringen oder um generelle Anregungen,<br />

Wünsche etc. anzubringen. Sie können außerdem die Diskussion der Prototypen<br />

zwischen verschiedenen Anwendern und/oder Entwicklern unterstützen.<br />

Beim Durchspielen des Szenarios fällt unser Anwenderin Anne z.B. auf, dass sie die<br />

Informationen zur Verfügbarkeit der Bücher nicht sofort wahrgenommen hat. Sie öffnet<br />

den bereits an der GUI platzierten gelben Zettel, um eine Notiz über zu verbessendes<br />

Layout anzubringen. Der Zettel signalisiert ihr, dass bereits 2 Anmerkungen zum<br />

Programm bestehen.<br />

Im Kommentierdialog kann Anne die bestehenden Anmerkungen lesen und/oder selbst<br />

Ihre Anmerkungen aufnehmen. Alle Anmerkungen werden mit Kürzel und Datum<br />

abgelegt. Die Komponente kann noch weiterentwickelt werden, um z.B. verschiedene<br />

Filter für die Anzeige der Kommentare zu definieren oder verschiedene Sortierkriterien<br />

oder auch Strategien (darf jeder alle Kommentare ändern/löschen oder nur seine eigenen)<br />

anzugeben.<br />

5.3.1.3 Bibliotheksszenarien mit VisualAge<br />

Anhand des mit VisualAge modellierten Beispiels erläutern wir in der Online-Version<br />

ausführlich die Vorgehensweise des Implementierens der Semantik durch Verbinden<br />

30


Ulrik Schroeder Praktische Informatik, TU Darmstadt<br />

Um weitere Aktien ins Depot einzukaufen soll eine Liste verfügbarer Wertpapiere (gewählt<br />

nach Börsenplatz, Filter, ...) dargestellt werden. Zu jedem ausgewählten Wertpapier kann<br />

die zu erwerbende Stückzahl angegeben werden. Das Programm ermittelt daraus die<br />

Gesamtkosten. Umgekehrt kann auch der Gesamtpreis eingegeben werden und das<br />

Programm ermittelt daraus die zu erwerbende Stückzahl.<br />

Um Teile aus dem Depot zu verkaufen, muss der entsprechende Posten im Depot<br />

ausgewählt (markiert) werden und über die Funktion verkaufen ein Folgedialog initiiert<br />

werden, in dem die Stückzahl, ggf. der Börsenplatz und weitere Daten ausgewählt werden<br />

können. Hierfür fertigt der Anwender eine weitere Skizze an:<br />

34


PTAH: Prototypen-Werkstatt Softwaredefinitionswerkzeuge für Anwender<br />

Diese Szenarien wurden im Projekt wieder vergleichend mit JavaStudio und VisualAge<br />

entwickelt. Bei der JavaStudio-Lösung, die im Rahmen der Lehrveranstaltung „Virtuelles<br />

Softwarelabor“ als Abschlusspraktikum realisiert wurde, zeigte sich wieder deutlich, dass<br />

der Verdrahtungsmodus zwar schnell erlernbar ist, um kleine Interaktionsmöglichkeiten zu<br />

realisieren, dass realisitische Anwendungen auf diese Weise aber nur sehr umständlich<br />

zu simulieren sind.<br />

Während der Entwicklung der PTAH-Prototypen für die Broker-Anwendung mit VisualAge<br />

haben wir einige hilfreiche Spezifiktaionskomponenten entwickelt, die wir im<br />

Zusammenhang diese Beispiels vorstellen wollen.<br />

5.3.2.1 Das Daten-Bean<br />

Eigentlich reicht es für Szenarioprototypen, die im Ablauf vorkommenden Werte fest in<br />

den Prototypen einzuprogrammieren. Schwierigkeiten bereitet allerdings das Anzeigen<br />

von Listen. In unserem Beispiel wollen wir die im Depot verwalteten Wertpapiere in einer<br />

Liste (Textfeld mit mehreren Zeilen) anzeigen.<br />

Wir haben uns zur Erleichterung der schrittweisen Beispielentwicklung ein Daten-Bean<br />

geschrieben, dass die Namen und die Werte aller Aktien als Konstanten vorhält. Dieses<br />

Beispiel zeigt, wie die Konfiguration in einem Szenario darzustellender Werte über die<br />

Eingabe in Eigenschaftseditoren hinaus für Anwender erleichtert werden kann, indem<br />

Daten in einer Klasse beschrieben werden, die dann durch Verbindung mit der<br />

Darstellungskomponente den entsprechneden Wert zur Anzeige zur Verfügung stellt.<br />

Alternativ können auch Verbindungsbeans zu Datenbanken oder Tabellenkalkulationsdaten<br />

hergestellt werden können. Auf diese Weise können Anwender bei der Spezifikation<br />

ihrer Szenarien die Beispieldaten mit ihren gewohnten Werkzeugen (Texteditor, ...)<br />

angeben und aus dem Prototypen heraus ansprechen, indem sie lediglich Verbindungen<br />

zwischen dem DatenBean und der Anzeigkomponente herstellen.<br />

Dabei werden anstelle der fest einprogrammierten Aktiennamen die Texte aus<br />

entsprechenden Attributen des Datenobjektes ersetzt.<br />

06.09.00 35


Ulrik Schroeder Praktische Informatik, TU Darmstadt<br />

5.3.2.2 Programmieren von Arithmetik in Java<br />

Analog lassen sich weitere Spezifikationsbeans einfach in VisualAge integrieren. In<br />

unserem Aktienbeispiel möchte der Anwender z.B. spezifizieren, dass sich der<br />

Gesamtpreis durch Multiplikation des aktuellen Preises mit der Stückzahl ergibt. Ohne<br />

Erweiterung müsste man hierfür den Übergang zur Java-Programmierung wählen. Bei<br />

derart einfachen Beziehungen ist dies auch zumutbar, da die Relation visuell spezifiziert<br />

und der dafür auszuführende Javacode von der Entwicklungszmgebung generiert wird.<br />

lediglich die Formel (Multiplikation der beiden als Funktionsargumente übergebenen<br />

Werte) müsste als Ausdruck in Java formuliert werden. Dies ist sehr leicht erlernbar, da<br />

die Formulierung von Ausdrücken der normalen mathematischen Schreibweise sehr<br />

ähnlich ist.<br />

In unserem Beispiel erstellen wir zunächst visuell die Verbindung zwischen dem Feld<br />

aktueller Preis und Gesamtpreis mit der Methode actionPerformed( ) (grüner Pfeil),<br />

die ausgelöst wird, wenn in das Aktuellpreisfeld ein Wert eingegeben wird. Als Argument<br />

der Methode spezifizieren wir den Wert, der im Textfeld Stückzahl steht (violette<br />

Verbindung zum grünen Pfeil). Analog gehen wir vor, um Änderungen im Feld Preislimit<br />

zu behandeln (zweite im Bild dargestellte Verbindung).<br />

36


PTAH: Prototypen-Werkstatt Softwaredefinitionswerkzeuge für Anwender<br />

5.3.3 Multimediaraumsteuerung: ConGo<br />

Das Multimedia-Konferenzraumsteuerungsprogramm ConGo wurde im Jahr 1998 im<br />

Rahmen des Software Engineering Praktikums der Praktischen Informatik von 7<br />

Studierenden im Auftrag der Instituts für Sicherheitstechnik SIT der GMD in Darmstadt<br />

entwickelt. Es handelt sich um ein relativ komplexes Anwendungsprogramm mit<br />

aufwendiger Architektur. Dieses Beispiel wurde gewählt, um nachzuweisen, dass auch<br />

aufwändige Beispiele, deren Analyse bei der realen Projektdurchführung von 7<br />

Studierenden fast ein halbes Jahr in Anspruch genommen hat, ebenfalls im PTAH-<br />

Vorgehen nachvollzogen werden kann. Allerdings erforderte die Bearbeitung mehr<br />

Einsatz als dies mit Projektmitteln möglich gewesen wäre, daher wurde das<br />

Referenzbeispiel wieder im Rahmen der Vorlesung und Übung „virtuelles Softwarelabor“<br />

als Abschlussarbeit realisiert.<br />

Die Aufgabe bestand darin, für einen Multimedia-Konferenzraum eine Steuerung zu<br />

entwickeln, die es Vortragenden ermöglicht, verschiedene Präsentationsmedien<br />

einzusetzen. Die Ansteuerung der Geräte soll für den Anwender transparent geschehen.<br />

Auch das Einbringen neuer Geräte soll vom Programm unterstützt werden. Wichtigstes<br />

Designkriterium ist die einfache Bedienung am besten vom eigenen Laptop des<br />

Vortragenden aus. Daher wurden verschiedene Szenarien definiert, die über grafische<br />

und geführte Bedienfolgen vom Congo Client unterstützt werden. Der Congo Server<br />

analysiert die verfügbaren Geräte und realisiert die Verschaltung.<br />

5.3.3.1 Typische Anwendungsfälle für Multimediaraumsteuerungen<br />

• Projizieren von Folien<br />

• Zeigen von Dias<br />

• Projizieren des Computerbildschirms (zum Beispiel für eine PowerPoint<br />

Präsentation)<br />

• Abspielen von Audiodaten<br />

• Zeigen eines Videos<br />

• Audiokonferenz mit externen Konferenzteilnehmern<br />

• Aufbauen einer Videoschaltung zu externen Konferenzteilnehmern<br />

• Audioprotokoll einer Konferenz<br />

• Videoprotokoll einer Konferenz<br />

Die Software Congo prüft für jedes Szenario, welche Geräte im Raum zur Verfügung<br />

(angeschlossen, betriebsbereit, ...) stehen und welche Ein- und Ausgabemedien für den<br />

Vortrag benutzt oder zusammengeschaltet werden können und bietet hierfür spezifische<br />

Formulare (geführte Dialoge) an. Auf diese Weise reduziert Congo den Funktionsumfang<br />

der Geräte auf die meistgenuzten Basisfunktionen und erlaubt deren einfache Bedienung<br />

via Maus von einem Rechner aus.<br />

Im folgenden besprechen wir hiervon lediglich den Anwendungsfall "Zeigen eines Videos".<br />

06.09.00 39


PTAH: Prototypen-Werkstatt Softwaredefinitionswerkzeuge für Anwender<br />

3. dort statt Mikrofon den Videorecorder auswählen<br />

4. im Nachbarfenster die Lautsprecher "Groß" auswählen<br />

5. Szenario aktivieren, um die Geräte zu reservieren und die gewählte Konfiguration<br />

anzusteuern<br />

06.09.00 41


Ulrik Schroeder Praktische Informatik, TU Darmstadt<br />

42<br />

6. Wiedergabe starten: das Video wird projiziert und über die Lautsprecher im Raum<br />

wiedergegeben<br />

7. auf Zwischenfrage: "Moment, ich konnte den letzten Satz nicht verstehen ..." die<br />

Vorführung anhalten<br />

8. Zurückspulen<br />

9. Lautstärke verstellen<br />

10. Testlauf, ob die Lautstärke jetzt o.k. ist<br />

11. Pause und Nachfrage<br />

12. Weiterabspielen<br />

13. Vorführung anhalten (fertig)<br />

14. Logout<br />

Das Szenario ist ein gutes Beispiel dafür, dass in Prototypen zusätzliche Semantik<br />

integriert werden muss. Es genügt nicht, allein die graphische Oberfläche zu modellieren:<br />

Wenn beispielsweise der "Play"-Knopf gedrückt wird, passiert auf der GUI überhaupt<br />

nichts. Der Anwender, der das System spezifizieren soll, muss hier zum Ausdruck bringen<br />

können: "jetzt läuft das Band". Genau für derartige Anforderungen haben wir das<br />

StateDisplayBean entwickelt, das in jeden Szenario-Prototypen intergriert werden<br />

kann, um jeden Schritt der Durchführung des Szenarios zu begleiten, dabei Erläuterungen<br />

des Einsatzkontextes zu geben und Anweisungen, welcher Schritt (Interaktion) als<br />

nächstes auszuführen ist.<br />

5.3.3.4 Die Kontexterläuterungskomponente StateDisplay<br />

In einer PTAH-Entwicklungsumgebung sollten dem Anwender Komponenten zur<br />

Erleichterung der visuellen Spezifikation in Form von Beans zur Verfügung stehen. Dies<br />

können insbesondere Funktionalitäts-Komponenten, etwa zum Modellieren sequentieller<br />

Abläufe, sein (dokumentiert im Beispiel IMAT).<br />

Wir haben den Prototyp des Referenzbeispiels ConGo! um eine Kommentar-Bean<br />

ergänzt, welche den aktuellen Status des Szenarios anzeigt. Daher haben wir sie auf den<br />

Namen StateDisplay getauft. Wie bereits im Abschnitt zur Erläuterung des<br />

Referenzbeispiels erwähnt, ist die Darstellung zusätzlicher Semantik in diesem Fall ein<br />

erhebliches Problem. Woran erkennt man beim Durchlaufen des Szenarios, das eine


PTAH: Prototypen-Werkstatt Softwaredefinitionswerkzeuge für Anwender<br />

Audiowiedergabe läuft oder dass jemand aus dem Publikum eine Frage stellt? Bei dem<br />

erweiterten Prototyp wird dies durch die StateDisplay-Bean folgendermaßen dargestellt.<br />

Die StateDisplay-Bean ist ein zusätzliches Fenster, das während des Ablaufs des<br />

Szenarioprototyps ständig angezeigt wird. Der aktuelle Zustand wird dabei im<br />

StateDisplay-Bean durch eine natürliche Zahl kodiert. Den Text, der in einem bestimmten<br />

Zustand angezeigt werden soll, kann man über die Methode setMessage(int, String)<br />

setzen. Dies wird für das ConGo!-Szenario in der initialize( )-Methode erledigt, also durch<br />

Java-Code. Für die PTAH-Entwicklungsumgebung müsste hier ein zusätzlicher Editor die<br />

textuell-grafische Spezifikation des Ablaufes unterstützen.<br />

Das Umschalten zwischen den Zuständen erfolgt visuell. Hierfür stellt die Bean zwei<br />

Methoden zur Verfügung. Mit goToStateIfNext( int ) wird in den durch die Integer-Zahl<br />

angegebenen Zustand gesprungen, falls sich die StateDisplay-Bean gerade in dem<br />

Zustand unmittelbar davor befindet. Ansonsten erfolgt keine Änderung.<br />

Beispielsweise ist von dem "+"-Knopf der Tonsteuerung aus eine Linie zur StateDisplay-<br />

Bean gezogen, durch die bei einem "actionPerformed" auf dem Knopf der Methodenaufruf<br />

"goToStateIfNext( 7 )" erfolgt. Wenn sich die Bean im Zustand 6 (Message: "Lautstärke<br />

erhöhen...") befindet und der "+"-Knopf gedrückt wird, so springt sie in den Zustand 7<br />

("Das sollte genügen. Wiedergabe erneut starten..."). Falls der "+"-Knopf zu einem<br />

anderen Zeitpunkt (in einem anderenn Zustand) gedrückt wird, hat dies dann keine<br />

Wirkung.<br />

Zusätzlich gibt es die Möglichkeit eines unbedingten Sprungs mit goToState( int ), wovon<br />

im Beispiel allerdings in unserem Referenzbeispiel kein Gebrauch gemacht wird. Die<br />

Abfolge der Zuständen mit den dazugehörigen Texten und den Übergangsereignissen ist<br />

für das Referenzbeispiel in dem folgenden Diagramm dargestellt.<br />

06.09.00 43


Ulrik Schroeder Praktische Informatik, TU Darmstadt<br />

Wie man sieht, können einzelne Ereignisse mehrere Zustandsübergänge auslösen. Vom<br />

Wiedergabe-Knopf etwa gehen drei Verbindungen zum StateDisplay-Bean aus. Wenn<br />

allerdings dieselbe Komponente zwei aufeinanderfolgende Übergänge auslösen soll,<br />

kommt es zu Problemen.<br />

5.3.4 Verkehrsunfallaufnahme<br />

Zurzeit laufendes Software Engineering Projekt, das im Auftrag der Firma tim (Traffic<br />

information management) in Kooperation mit der Hessischen Straßen- und<br />

Verkehrsverwaltung sowie der Polizei entwickelt wird. Es handelt sich um ein<br />

webbasiertes Programm zur Aufnahme von Unfallanzeigen durch die Polizei sowie der<br />

44


PTAH: Prototypen-Werkstatt Softwaredefinitionswerkzeuge für Anwender<br />

Visualisierung von Unfalldaten, das eingebettet ist in ein System zur Sicherheit im<br />

Straßenverkehr (stim - safety ) ist.<br />

Im Rahmen einer effizienten Verkehrssicherheitsarbeit wird es zukünftig verstärkt darauf<br />

ankommen, Verkehrs- und Unfalldaten zeitnah bereitzustellen und qualitativ hochwertig<br />

zu aggregieren. Im wesentlichen beinhaltet dies, straßen- und netzbezogene<br />

Verkehrssicherheitsdefizite zu identifizieren, auf Plausibilität zu prüfen, gezielt<br />

Bewertungsgrundlagen bereitzustellen und für Entscheidungsprozesse Informationen auf<br />

der Grundlage grafischer Darstellungen transparent aufzubereiten. Die Hauptziele eines<br />

derartigen Informationsmanagements lassen sich dahingehend zusammenfassen, bei<br />

aufgabenunabhängig variabler Informationstiefe und Informationsschärfe die Flexibilität<br />

bei der Bearbeitung zu erhöhen, Arbeitsabläufe zu verkürzen bzw. die Anzahl der<br />

Arbeitsschritte zu reduzieren und bei der Ergebnispräsentation Sachverhalte verständlich,<br />

überschaubar und eindeutig darzustellen. Durch eine öffentlichkeitsgerechte und im<br />

Internet verfügbare Aufbereitung sollen Verkehrsteilnehmer sensibilisiert werden.<br />

Bisher steht dafür nur ein unzureichendes Instrumentarium zur Verfügung. Für eine<br />

Bewertung des Unfallgeschehens bzw. die darauf aufbauende Visualisierung<br />

sicherheitsspezifischer Informationen müssen die Daten aufwendig und oft mit größerem<br />

Zeitverzug weiterverarbeitet werden. Infolge der technischen Randbedingungen und der<br />

Komplexität vieler Aufgabenstellungen (Verknüpfung mehrerer Datenbestände) ist eine<br />

online-Bearbeitung bisher nicht möglich. Es fehlen Konformität und Schnittstellen zur<br />

aktuellen Entwicklung der Straßeninformationsbank Hessen<br />

Für den Aufbau eines Informations- und Managementsystems zur Verarbeitung und<br />

Visualisierung von Unfalldaten ergeben sich insbesondere folgende Anforderungen:<br />

• Übernahme, Plausibilitätsprüfung und Abspeicherung der Unfalldaten in einer<br />

Datenbank einschließlich Fortführung und Korrekturmöglichkeiten.<br />

• Statistische Auswertung der Unfalldatenbank (Listen, Unfallkenngrößen,<br />

Berechnungen...) differenziert nach Anforderungen von Straßen- und<br />

Verkehrsverwaltung sowie Polizei.<br />

• Visualisierung des Unfallgeschehens (Unfalldiagramme, Unfallsteckkarten).<br />

• Geocodierung und Darstellung der Unfälle mit einem geografischen<br />

Informationssystem.<br />

• Konzeption zur Datensicherheit.<br />

• Internet-Technologie<br />

Aus diesen Anwendungsfällen haben wir uns einige Szenarien ausgesucht, die direkte<br />

Benutzerinteraktion erfordern (im Gegensatz zur Konsistenzanalyse der Daten in der<br />

Datenbank). Dies betrifft vor allem die Unfallaufnahme und Visualisierung der Unfalldaten.<br />

Das Layout des bisherigen Formulars für Verkehrsunfallanzeigen (Papierversion) soll<br />

dabei als Vorgabe übernommen werden. Aus diesen Verkehrsunfallanzeigen lassen sich -<br />

sofern diese vollständig ausgefüllt sind - Unfallort, Unfallzeitpunkt und Unfalltyp auslesen.<br />

Somit ist es möglich, Unfälle und Unfallhäufungspunkte (mit einem entsprechenden<br />

Mapping-Tool) auf einer Straßenkarte darzustellen, und durch Anklicken eines<br />

Unfallpunktes auf dieser Straßenkarte die entsprechenden Daten zum jeweiligen Unfall zu<br />

bekommnen.<br />

06.09.00 45


Ulrik Schroeder Praktische Informatik, TU Darmstadt<br />

Um sich zunächst einen Überblick über das zu realisierende System zu geben,<br />

beschreiben die Anwender typische Anwendungsfälle (Use Cases) mit den vier Aktoren<br />

Administrator, Benutzer, Polizist und Verkehrssachbearbeiter.<br />

Aus diesen Use Cases haben wir konkrete Szenarien mit skizziert und mit JBuilder<br />

realisiert<br />

46<br />

1. Ein Polizist nimmt eine neue Unfallanzeige auf<br />

2. Eine bestehende (unvollständige) Anzeige wird weiter bearbeitet<br />

3. Auswahl gespeicherter Unfallanzeigen anhand verschiedener Kriterien


PTAH: Prototypen-Werkstatt Softwaredefinitionswerkzeuge für Anwender<br />

4. Plausibilitätsprüfung während der Eingabe<br />

5. Kategorisierung von Unfällen (Verkehrssachbearbeiter)<br />

6. Benutzerverwaltung (Adminstrator)<br />

7. Anzeigen von Unfallsteckkarten<br />

8. Auswahl von Unfallanzeigen durch Klicken in der Karte<br />

Die einzelnen Entwicklungsstufen und Realisierung der Szenarien sind in der Online-<br />

Version nachzulesen. Das Beispiel erbrachte gegenüber den anderen Studien keine<br />

neuen Erkenntnisse, da die ursprünglich beabsichtigte Beteiligung realer Anwender<br />

06.09.00 47


Ulrik Schroeder Praktische Informatik, TU Darmstadt<br />

(Polizisten) bei der Erstellung der Prototypen aus Zeitgründen bei der Polizei nicht<br />

zustande kam.<br />

Die Beispiele wurden mit Jbuilder implementiert. Ähnlich wie bei dem Vorgehen mit Forté<br />

muss zur Angabe der Semantik Java-Code programmiert werden, der mithilfe eines<br />

Konfigurationsmenüs als Reaktion auf das Auslösen eines Ereignisses durch ein<br />

Interaktionselement, das grafisch erstellt werden kann, integriert wird.<br />

5.3.5 Mathematik-Lernprogramm IMAT<br />

Das Beispiel IMAT sollte die Möglichkeit ausloten, inwieweit Anwender selbständig nicht<br />

nur Szenarioprototypen entwickeln können, sondern das gesamte Softwaresystem nach<br />

der PTAH-Vorgehensweise selbständig realisieren. Als Beispiel haben wir den Fall eines<br />

Mathematiklehrers gewählt, der zur Unterstützung des Mathematikunterrichts ein<br />

Programm zur Definition, Analyse und Visualisierung mathematischer Funktionen<br />

benötigt.<br />

Wir haben diesen Fall gewählt, da<br />

• das Anwendungsgebiet mathematische Funktionen eine Spezifikation erfordert, die<br />

relativ nahe an den Ausdrucksmitteln heutiger Programmiersprachen liegt.<br />

• ein Mathematiklehrer im Umgang mit dem Rechner und den Ausdrucksmitteln und der<br />

Modellierung einigermaßen vertraut ist.<br />

Die Umsetzung des Beispiels erfolgte wiederum im Rahmen der Lehrveranstaltung<br />

„virtuelles Softwarelabor“. Während der Realisierung entwickelten wir weitere PTAH-<br />

Komponenten als Erweiterung der VisualAge-Programmierumgebung, um das rein<br />

visuelle Spezifizieren weitergehend zu unterstützen.<br />

5.3.5.1 Die Sequenzkomponente<br />

Häufig soll als Reaktion auf ein durch Benutzerinteraktion ausgelöstes Ereignis mehrere<br />

Aktionen des Programms folgen. Grundsätzlich kann man dies in VisualAge dadurch<br />

realisieren, dass von der Ereignisquelle – z.B. einem Menüpunkt „Integrate“ – mehrere<br />

Verbindungen zu anderen Komponenten – z.B. einem Anzeigefeld, der<br />

Statusanzeigezeile und einem neu zu öffnenden Fenster – hergestellt werden. Der<br />

Nachteil dieser Modellierung besteht darin, dass dabei nicht notwendigerweise die<br />

Sequenz, also die Reihenfolge, in der diese Aktionen ausgeführt werden sichtbar wird.<br />

48


PTAH: Prototypen-Werkstatt Softwaredefinitionswerkzeuge für Anwender<br />

Wenn man stattdessen die Reihenfolge explizit machen möchte, z.B. weil bestimmte<br />

Initialisierungen vor dem Öffnen eines neuen Fensters erfolgen müssen, benötigt man ein<br />

entsprechendes Ausdrucksmittel. Wir haben hierfür die Anweisungskomponente<br />

Pinstruction entwickelt, die eine Aktion auslöst und eine optionale Verbindung zur<br />

automatisch danach ausgelösten Interaktion anbietet. Die im oberen Diagramm<br />

dargestellte Interaktion mit der Anweisungskomponente macht die Reihenfolge der<br />

Ereignisbehandlung explizit:<br />

06.09.00 49


Ulrik Schroeder Praktische Informatik, TU Darmstadt<br />

5.3.5.2 Die bedingte Ausführungskomponente<br />

Eine weitere praktische visuelle” Programmierkomponente ermöglicht das Auslösen einer<br />

Reaktion auf eine Benutzerinteraktion in Abhängigkeit einer Bedingung. Welche Reaktion<br />

erfolgt wird entschieden, indem zunächst eine Bedingung ausgewertet und anschließend<br />

die reagierende Komponente bestimmt wird. Das PifThenElse haben wir verwendet,<br />

um im Prototypen einen geführten Dialog mit dem Anwender zu realisieren (Wizard), der in<br />

Abhängigkeit gesetzter Auswahlwerte (z.B. RadioButtons) unterschiedliche<br />

Folgedialoge auswählt. Um einen derartigen Wizard visuell zu spezifizieren, muss das<br />

Drücken des OK-Knopfes in Abhängigkeit der eingestellten Konfiguration unterschiedliche<br />

Folgeinteraktionen auslösen.<br />

50


PTAH: Prototypen-Werkstatt Softwaredefinitionswerkzeuge für Anwender<br />

Die IfThenElse-Komponente bietet zwei Eingänge (das Auslösen der Aktion und die<br />

dann auszuwertende Bedingung) und drei Ausgänge für die beiden alternativ<br />

auszulösenden Reaktionen und die optionale Folgeaktion.<br />

06.09.00 51


Ulrik Schroeder Praktische Informatik, TU Darmstadt<br />

5.3.5.3 Auswertung von Ausdrücken<br />

Es gibt zahlreiche Anwendungen bei der Erstellung von Szenario-Prototypen, bei denen<br />

ein Ausdruck ausgewertet werden muss, der dann z.B. als Argument für eine Methode,<br />

die auf ein Ereignis reagiert verwendet wird. Im Taschenrechnerbeispiel haben wir für<br />

bestimmte Szenarien z.B. die Resultatwerte als Konstanten für die Darstellung im<br />

Anzeigefeld eingesetzt, um uns die Realisierung echter Rechenoperationen zu ersparen.<br />

Im IMAT Szenarioprototyp sollen z.B. der Funktionsname und die Funktionsdefinition mit<br />

den Werten „f“ und „2x 2 - 2“ verglichen werden. Um diesen Vergleich visuell zu<br />

spezifizieren, benötigt man zum einen die Darstellung von Konstanten (im Bild StringF<br />

und StringX_2_2X) und zum anderen die visuell verwendbare Vergleichsoperation<br />

(PEquality). Wir haben mehrer solcher Ausdrucks-Komponenten realisiert, die das<br />

visuelle Rechnen mit arithmetischen und logischen Werten ermöglichen.<br />

52


PTAH: Prototypen-Werkstatt Softwaredefinitionswerkzeuge für Anwender<br />

5.3.5.4 Vorgefertigte GUI Komponenten<br />

Schließlich ist es iin einer PTAH Entwicklungsumgebung sinnvoll wiederverwendbare<br />

Dialog-Komponenten bereitzustellen. Diese können entweder zu komplexeren<br />

Benutzungsoberflächen zusammengesetzt werden (anlog zu den beritstehenden<br />

primitiven Grafikelementen) oder aber vollständig direkt als Szenarioprototyp verwendet<br />

werden, indem evtl. nur eine kleine Konfiguration zur Anpassung an den aktuellen Kontext<br />

erfolgt. Wir haben derartige Komponenten bereits für den Login-Dialog besprochen. Für<br />

das IMAT Beispiel haben wir eine „WizardBean“ entwickelt, die Anwender visuell in ihr<br />

Programm einbinden und per menügeführtem Dialog konfigurieren können. Die<br />

Darstellung dieser Komponente ist für die Papierfassung zu komplex und sollte online<br />

betrachtet werden.[IMAT]<br />

5.4 Zusammenfassung der Projektergebnisse<br />

Das Vorgehen, visuell programmierte Prototypen als Spezifikation für Szenarien zu<br />

entwickeln, hat sich bewährt. Anhand der Beispiele konnte nachgewiesen werden, dass<br />

die rein visuelle Modellierung von Szenarioprototypen machbar ist, allerdings mit den<br />

heutigen Werkzeuge auch auf Grenzen stößt.<br />

Die Grenzen lassen sich ausweiten, wenn wir die Entwicklungsmodelle von JavaStudio<br />

bis hin zu Forté und VisualAge stufenlos in einer Entwicklungsumgebung vereinigt<br />

werden. Als Einstieg für Anwender ist der einfache Verdrahtungsmodus von JavaStudio<br />

geeignet, um schnell einfache Prototypen zu erstellen. Sobald verfeinerte Szenarien<br />

ausgearbeitet werden sollen, empfiehlt sich der Übergang zu einem vereinfachten<br />

VisualAge Modus. Hierbei sollten im Gegensatz zum professionellen<br />

Entwicklungsunterstützung nur wenige Verbindungsmöglichkeiten per Menü ausgewählt<br />

werden können, die zudem in der Sprache der Anwender benannt werden müssen (nicht<br />

„actionPerformed“ wie bisher, sondern „Drücken des Knopfes löst aus ...“)<br />

Neben der Integration der unterschiedlichen Entwicklungsmodi müssen vor allem auch<br />

geeignete graphische Komponenten entwickelt werden, die sich als Ausgangsmaterial zur<br />

Anpassung in einer Komponentenbibliothek finden. Wenn bereits ganze<br />

Anwendungsfenster, z.B. organisiert nach Domänen, existieren, fällt die Erstellung von<br />

Prototypen umso leichter. Wir haben im Laufe der verschiedenen Studien zahlreiche<br />

derartige Komponenten entwickelt und nachgewiesen, dass diese zur visuellen<br />

Modellierung selbst in heutige Werkzeuge integriert werden können.<br />

Schließlich muss das Vorgehen durch Lektionen und Tutorien begleitet werden. Im<br />

Rahmen einer Diplomarbeit haben wir einen aktiven Assistente entwickelt, der den<br />

Anwender während der visuellen Modellierung begleitet und auf Nachfrage Hilfestellung,<br />

Erläutrungen oder Lernmöglichkeiten für die aktuelle Arbeitssituation bietet<br />

[Gleichmann99].<br />

In weiteren Projekten muss untersucht werden<br />

• Ob sich spezielle Komponenten für Szenenprototypen entwickeln lassen. Im<br />

Gegensatz zur derzeit untersuchten Komponententechnologie zielen die Komponenten<br />

nicht auf den Einsatz durch professionelle Softwareentwickler ab, die die Verbindungen<br />

in einer Programmiersprache ausprogrammieren, sondern müssen sich durch<br />

Metaphern wie Drag and Drop komponieren und in geführten Interaktionen anpassen<br />

lassen.<br />

• Welche Schlüsselqualifikationen müssen Anwender mitbringen, um im spielerischen<br />

Umgang anhand von Beispielfällen, Vorgänge ihrer Arbeit zu modellieren. Welche<br />

06.09.00 53


Ulrik Schroeder Praktische Informatik, TU Darmstadt<br />

54<br />

Vorkenntnisse im Umgang mit informatischen Werkzeuge sind notwendig und welche<br />

Denkweisen müssen verinnerlicht sein?<br />

6 Projektpräsentationen<br />

Ludwigsburg, 10.01.2000<br />

Ulrik Schroeder, Vorstellung der PTAH-Modellierungsmethodik im Rahmen eines<br />

Berufungsvortrags<br />

Oldenburg, 12.01.2000<br />

Ulrik Schroeder, Vorstellung der PTAH-Modellierungsmethodik im Rahmen eines<br />

Berufungsvortrags<br />

Dallas, 05.06.2000<br />

Ulrik Schroeder, Konferenzbeitrag „PTAH: Validation-Driven Design“, auf der<br />

World Conference for Integrated Design and Process Technology (IDPT 2000)<br />

University of Colorado in Boulder, August 2000<br />

Ulrik Schroeder: Eingeladener Fachvortrag im Center for Lifelong Learning and<br />

Design<br />

TU Darmstadt, WS 1999/2000<br />

Ulrik Schroeder: insgesamt 3 doppelstündige Vorlesungen über<br />

validationsgetriebene Anforderungsanalyse im Rahmen der Vorlesung „virtuelles<br />

Softwarelabor“<br />

Ulrik Schroeder: insgesamt 1 doppelstündige Vorlesungen über<br />

validationsgetriebene Anforderungsanalyse im Rahmen der Vorlesung „Software<br />

Engineering“<br />

Ulrik Schroeder: einführender Vortrag über validationsgetriebene<br />

Anforderungsanalyse im Rahmen des Praktikums der Praktischen Informatik<br />

7 Literatur<br />

[Andelfinger95] Andelfinger, Urs: Diskursive Anforderungsanalyse und Validierung.<br />

Ein Beitrag zum Reduktionsproblem bei Systementwicklungen in<br />

der Informatik. Dissertation, TU Darmstadt. Darmstadt, 1995.<br />

[Beck99] Beck, Kent: eXtreme Programming explained – Embrace Change,<br />

Addison Wesley, Reading MA, 1999.


PTAH: Prototypen-Werkstatt Softwaredefinitionswerkzeuge für Anwender<br />

[Burkhart97] Burkhardt, Rainer: UML – Unified Modeling Language. Addison<br />

Wesley, Reading MA, 1997.<br />

[Floyd89] Floyd, Christiane: Softwareentwicklung als Realitätskonstruktion. In:<br />

Lippe, Wolfram (Hrsg.): Software-Entwicklung: Konzepte, Erfahrung,<br />

Perspektiven, S. 1-20. Springer-Verlag, Berlin, Heidelberg, New<br />

York, 1989<br />

[Floyd94] Floyd, Christiane: Software-Engineering – und dann? Informatik-<br />

Spektrum, 17(1):29-38, 1994<br />

[Fischer98a] Fischer, Gerhard, Nakakoji K., Ostwald J. (1998): Domain-Oriented<br />

Design Environments – A New Understanding of Design and its<br />

Computational Support, MIT Press, 1998<br />

[Fraikin00] Fraikin, F., Leonhardt, Th. (2000): Top-Down Testen auf der Basis<br />

von Sequenzdiagrammen , Diplomarbeit, Praktische Informatik,<br />

Februar 2000.<br />

[Jacobson92] Jacobson, Ivar: Object Oriented Software Engineering. A Use Case<br />

Driven Approach. Addison Wesley Longman, Harlow, England,<br />

1992.<br />

[Jacobson99] Ivar Jacobson, Grady Booch, James Rumbaugh: The Unified<br />

Software Development Process. Addison Wesley Longman,<br />

Reading, Massachusetts 1999.<br />

[KeilSlawik94] Keil-Slawik: Software-Entwicklung. Die Gestaltung des<br />

Unsichtbaren. Paderborn, 1994.<br />

[MyersRosson92] B.A. Myers and M.B. Rosson; Survey on user interface<br />

programming. In SIGCHI’92: Human Factors in Computing Systems,<br />

May 1992.<br />

[OMG97] Object Management Group (OMG): UML Press Kit:<br />

http://www.omg.org/news/pr97.htm<br />

06.09.00 55


Ulrik Schroeder Praktische Informatik, TU Darmstadt<br />

[Owis99] http://www.otw.de/<br />

[Rational99] http://www.rational.com/products/rs/index.jtmpl<br />

[Schefe99] Schefe, Peter: Softwaretechnik und Erkenntnistheorie. Informatik-<br />

Spektrum 22, April 1999.<br />

[Schroeder00] Schroeder, Ulrik: PTAH: Validation Driven Software Design.<br />

Integrated Design & Process Technology, IDPT 2000, Dallas TX,<br />

Juni 2000.<br />

[Wirfs-Brock90] Wirfs-Brock, Rebecca and Wilkerson, Brian and Wiener Lauren<br />

(1990): Designing Object-Oriented Software, Prentice Hall; Juni<br />

1990, ISBN: 0136298257<br />

8 Eingesetzte Software<br />

[RationalRosel] http://www.rational.com/products/rs/index.jtmpl<br />

56<br />

Rational Rose 2000 for Java: Professionelles CASE Werkzeug zur<br />

visuellen Modellentwicklung für die objektorientierte<br />

Softwareentwicklung mittels UML<br />

[BlueJ] http://www.pscit.monash.edu.au/bluej/


PTAH: Prototypen-Werkstatt Softwaredefinitionswerkzeuge für Anwender<br />

1.02, Monash University<br />

Ausbildungsprogrammierumgebung für Java, die das Austesten<br />

einzelner Objekte ermöglicht und diese visualisiert<br />

[VisualAge] http://www.software.ibm.com/ad/vajava/<br />

[TogetherJ]<br />

Professionelle integrierte Softwareentwicklungsumgebung inklusive<br />

weitreichender CASE Funktionalität und Möglichkeit zur visuellen<br />

Programmierung von Benutzungsschnittstellen<br />

Professionelles CASE Werkzeug zur visuellen Modellierung<br />

objektorientierter Software und Reengineering von Java Klassen<br />

06.09.00 57


Ulrik Schroeder Praktische Informatik, TU Darmstadt<br />

[JavaStudio]<br />

[Forté]<br />

[Jbuilder]<br />

58<br />

objektorientierter Software und Reengineering von Java Klassen<br />

Experimentelle visuelle Entwicklungsumgebung mit graphischen<br />

Komponenten zur einfachen visuellen Komposition durch Nicht-<br />

Programmierer. Die Entwicklung seitens Sun ist eingestellt.<br />

http://java.sun.com/<br />

Professionelle integrierte Java Entwicklungsumgebung inklusive<br />

mächtigem GUI Builder zur visuellen Komposition graphischer<br />

Benutzungsoberflächen.<br />

http://www.borland.de/jbuilder/index.html<br />

Professionelle integrierte Programmierumgebung u.a. mit visueller<br />

Konstruktion von GUIs, aber keiner Unterstützung visuellen<br />

Programmierens zur Spezifikation der Semantik..


PTAH: Prototypen-Werkstatt Softwaredefinitionswerkzeuge für Anwender<br />

9 Online Material und Referenzbeispiele<br />

[ptah] Projekt-Website: http://www.pi.informatik.tu-darmstadt.de/ptah-zit/<br />

Enthält dynamische Darstellung der Projektergebnisse<br />

[Rechner] http://www.pi.informatik.tu-darmstadt.de/ptah-zit/bsp/rechner<br />

Ein graphisch bedienbarer Taschenrechner, wie er von einem<br />

Anwender selbständig visuell programmiert werden kann. Dieses<br />

erste kleine Beispiel, dient der Darstellung der resultierenden<br />

Testsequenzdiagramme, die in der Diplomarbeit [Fraikin00] als<br />

Beispiel zur Generierung einer Testumgebung verwendet wurde.<br />

Das Beispiel wurde mit JavaStudio, Forté, VisualAge und TogetherJ<br />

erstellt.<br />

[Bibliothek] http://www.pi.informatik.tu-darmstadt.de/ptah-zit/bsp/bibliothek<br />

Das Programm dient der Verwaltung von Buchbeständen, die<br />

ausgeliehen werden können.<br />

Modelliert wurde das Beispiel mittels RationalRose, Forté,<br />

VisualAge und JavaStudio.<br />

[Broker] http://www.pi.informatik.tu-darmstadt.de/ptah-zit/bsp/broker<br />

Javaprogramm zum matchen von Optionsangeboten und<br />

Nachfragen (Put/Call) sowie der Anzeige aktueller Depotbestände.<br />

Das Beispiel wurde in JavaStudio entwickelt und zeigt die starken<br />

Einschränkungen diese Modellierungsansatzes.<br />

[ConGo] http://www.pi.informatik.tu-darmstadt.de/ptah-zit/bsp/congo<br />

Programm zur Konfiguration und Steuerung eines Multimedia-<br />

Konferenzraums. Realisiert wurde das Szenario „Vorführen eines<br />

Videos zur Unterstützung eines Vortrags“.<br />

Das Programm wurde mit JavaStudio, VisualAge und Rational Rose<br />

modelliert. Für VisualAge wurde eine Komponente zur<br />

Unterstützung der visuellen Spezifikation der Semantik entwickelt,<br />

die in diesem Beispiel demonstriert wird.<br />

[Unfallanzeige] http://www.pi.informatik.tu-darmstadt.de/ptah-zit/bsp/Unfallanzeige/<br />

Programm zur webbasierten Aufnahme und Visualisierung von<br />

Unfalldaten durch die Polizei.<br />

Das Programm wurde mit Jbuilder und TogetherJ modelliert.<br />

[IMAT] http://www.pi.informatik.tu-darmstadt.de/ptah-zit/bsp/imat<br />

Programm, das von einem Mathematiklehrer zur Illustration und<br />

Einsatz im Schulunterricht entwickelt wurde. Das Beispiel wurde<br />

06.09.00 59


Ulrik Schroeder Praktische Informatik, TU Darmstadt<br />

60<br />

Einsatz im Schulunterricht entwickelt wurde. Das Beispiel wurde<br />

mittels VisualAge entwickelt und demonstriert die Erweiterungen<br />

des Modellierungswerkzeuges, um mächtigere visuelle<br />

Ausdrucksmittel zur Spezifikation der Semantik.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!