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