In diesem Abschnitt wird der technische Prozeß skizziert, der der Entwicklung einer multimedialen Anwendung zugrundeliegt. Grundlage sind die Ausführungen in Kapitel 3.
Die Gesamtentwicklung einer multimedialen Anwendung kann in mehrere Phasen zerlegt werden, in denen verschiedene Personengruppen mit geeigneten Werkzeugen bestimmte Teilaufgaben bearbeiten. Diese Zusammenhänge werden in Abbildung 11.1 graphisch dargestellt und im folgenden analysiert.
Die Entwicklung einer multimedialen Anwendung erfolgt in mehreren Phasen, die jedoch im allgemeinen nicht sequentiell durchlaufen werden, sondern denen ein iterativer Entwurfsprozeß zugrundeliegt (siehe auch Abbildung 11.1):
Medienobjekterzeugungsphase Eine multimediale Präsentation besteht aus einer Menge von elementaren Informationseinheiten, die zueinander in Beziehung gesetzt werden. In der Medienobjekterzeugungsphase werden die elementaren Medienobjekte, d.h. Zeichnungen, Texte, Musikstücke, Videosequenzen oder auch spezielle Interaktionsobjekte, wie konkrete Menüs, Buttons oder Hotspots, entweder neu erzeugt oder aus bereits existierenden Bibliotheken kopiert. Es wird eine Sammlung von Medienobjekten erstellt, zwischen denen noch keinerlei Beziehungen existieren. Diese Sammlung wird Medienobjektsammlung oder auch Präsentationsmenge genannt. Fehlen in späteren Entwicklungsphasen konkrete Informationseinheiten, muß in die Medienobjekterzeugungsphase zurückgesprungen werden, um die Erzeugung nachzuholen.
Verbindungsphase Die Verbindungsphase besteht aus den drei Teilphasen Layout-Phase, Strukturierungsphase und Test-Phase, die in einem engen Zusammenhang zueinander stehen.
Layout-Phase Medienobjekte repräsentieren eine bestimmte Information. Diese wird aber nicht nur aus dem gebildet, was präsentiert werden soll; vielmehr ist auch die Art, wie der Inhalt dargestellt wird, von Bedeutung. So kann der Informationsgehalt eines Musikstückes, das leise vorgespielt wird, ein anderer sein, als wenn dasselbe Musikstück laut widergegeben wird. Graphik-Objekte können beispielsweise in Liniendicke, Hintergrundfarbe oder der Position eines Rechtecks innerhalb des gesamten Objektes variieren. Das Präsentationsbild einzelner Medienobjekte setzt also durch ihren eigentlichen Inhalt sowie den aktuellen Werten bestimmter Attribute, die derartige Eigenschaften repräsentieren, zusammen.
Im folgenden sollen dabei Attribute, deren Werte in der Medienobjekterzeugungsphase festgelegt wurden und anschließend nicht mehr zugreifbar sind, unterschieden werden von Attributen, die auch in späteren Phasen noch gelesen und/oder geändert werden können. Erstere werden Informationsattribute,Informationsattribut letztere GestaltungsattributeGestaltungsattribut genannt. In der Layout-Phase werden (initiale) Werte für die Gestaltungsattribute definiert. Im Prinzip dient die Layout-Phase damit der Definition von Initialisierungsbeziehungen. Gestaltungsattribute sind häufig zum Beispiel das Fenster, in dem ein Objekt dargestellt werden soll, und die Position und Größe des Objekts im Fenster oder auch die Lautstärke eines Audio-Objekts. Welche Attribute eines bestimmten Medientyps Informationsattribute und welche Gestaltungsattribute sind, wird vom sogenannten Medientypintegrator festgelegt (siehe Unterabschnitt 11.2.3.5).
Der Vorteil der Unterscheidung zwischen Informationsattributen und Gestaltungsattributen liegt darin, daß ein und dasselbe Medienobjekt der Medienobjektsammlung mehrfach in der Anwendung benutzt werden kann, und zwar mit unterschiedlichen Ausprägungen. Falls die Position auf dem Bildschirm Gestaltungsattribut des Medientyps Graphik ist und ein Graphikobjekt existiert, das einen Ball darstellt, ließe sich mit diesem einen Objekt beispielsweise eine Animationssequenz ,,hüpfender Ball`` realisieren. Die Medienobjekte der Medienobjektsammlung sind also über die Gestaltungsattribute parametrisierbar.
Strukturierungsphase Während in der Layout-Phase die einzelnen Medienobjekte noch getrennt voneinander behandelt werden, werden in der Strukturierungsphase Beziehungen zwischen den Objekten definiert. Von besonderer Bedeutung sind dabei die zeitlichen Beziehungen, da sie das Ablaufverhalten der Präsentation bestimmen. Grundlage für die Definition von Beziehungen mit gestalterischen Bedingungen bzw. gestalterischen Auswirkungen sind die Gestaltungsattribute der betroffenen Medienobjekte. Gestalterische Bedingungen können dabei charakterisiert werden als Aussagen über die Werte der Gestaltungsattribute oder über Eigenschaften dieser Werte. Gestalterische Auswirkungen lassen sich interpretieren als Zustandsänderungen von Gestaltungsattributen. Auch die Definition von Interaktionsbeziehungen, d.h. die Festlegung von Auswirkungen einer Benutzerinteraktion ist der Strukturierungsphase zuzuordnen.
Test-Phase Die Test-Phase stellt eine Art Debugging-Phase dar. In der Test-Phase kann sich der Entwickler bereits erstellte Teilausschnitte der Gesamtpräsentation anschauen und damit überprüfen, ob die Präsentation seinen Vorstellungen entspricht. Falls dies nicht der Fall ist, kann er unmittelbar Änderungen am Layout oder der Beziehungsstruktur vornehmen.
Das Resultat der Verbindungsphase ist ein Beziehungsnetzwerk zwischen Medienobjekten, bei denen nun auch die Gestaltungsattribute konkrete Initialwerte besitzen.
Generierungsphase Aufbauend auf dem Beziehungsnetzwerk wird in der Generierungsphase editierbarer Programmcode erzeugt. Bei der Transformation können Fehler und Inkonsistenzen entdeckt werden, die einen Rücksprung in eine vorhergehende Phase zur Folge haben.
Programmierphase In der Verbindungsphase werden häufig graphisch-interaktive Werkzeuge eingesetzt, mit denen sich im allgemeinen nicht alle Eigenschaften einer multimedialen Anwendung spezifizieren lassen. In der Programmierphase kann der in der Generierungsphase erzeugte Programmcode editiert und die multimediale Anwendung durch die Programmierung in einer textuellen Programmiersprache in ihre endgültige Form gebracht werden. Der geänderte Code wird anschließend in ein ausführbares Programm übersetzt.
Präsentationsphase Die Präsentationsphase beinhaltet die Ausführung der entwickelten Anwendung. Die multimedialen Informationen werden präsentiert, wobei ein Benutzer die Präsentation an den vom Entwickler festgelegten Stellen interaktiv beeinflussen kann. Die Präsentationsphase stellt dabei nur eine Entwicklungsphase einer multimedialen Anwendung im weiteren Sinne dar. Im Prinzip ist der eigentliche Entwicklungsvorgang bereits abgeschlossen. Allerdings ist denkbar, daß aufgrund von Benutzerwünschen oder -kritiken (Stichwort: Benutzer-Evaluation) oder aus Gründen einer späteren Aktualisierung der präsentierten Informationen eine Redefinition bestimmter Teile der Anwendung erforderlich ist, wodurch wieder in den eigentlichen Entwicklungsprozeß eingestiegen werden muß. Daher soll die Präsentationsphase als Teilphase des Entwicklungsprozesses angesehen werden.
Werkzeugerweiterungsphase Für die Entwicklung einer Anwendung wird eine Reihe von Werkzeugen benötigt. Der Begriff ,,Werkzeug`` soll hierbei als Sammelbegriff für Softwarebibliotheken, spezielle Editoren, Interpreter oder auch Compiler verwendet werden. Es kann vorkommen, daß in den einzelnen Entwicklungsphasen bestimmte Konzepte oder Ideen nicht verwirklicht werden können, weil entsprechende Werkzeuge entweder ganz fehlen oder unvollständig sind. In diesem Fall muß ein Sprung in die Werkzeugerweiterungsphase erfolgen. Hier muß dann das Werkzeug entweder ganz neu erstellt oder es müssen Änderungen bzw. Erweiterungen an einem existierenden Werkzeug vorgenommen werden.
In den einzelnen Entwicklungsphasen einer multimedialen Anwendung werden bestimmte Aufgaben ausgeführt. Zur Erledigung dieser Aufgaben werden verschiedene Werkzeuge eingesetzt:
Die Beziehungen der Werkzeuge zu den verschiedenen Entwicklungsphasen werden in Abbildung 11.1 verdeutlicht.
Medienobjekterzeugungswerkzeug Zur Erzeugung von elementaren Medienobjekten werden je nach Medientyp unterschiedliche Werkzeuge benötigt. Zur Spezifikation von Graphiken und Textobjekten dienen im allgemeinen bestimmte Graphik- bzw. Texteditoren, mit denen die Objekte erzeugt und die Werte ihrer Informationsattribute festgelegt werden können. Eine andere Möglichkeit zur Erzeugung von Graphikobjekten bietet die Programmierung mit Hilfe von Graphikbibliotheken, wie GKS oder PHIGS, oder User-Interface Toolkits. Bei den Werkzeugen zur Erstellung von Videos bzw. Audios können Primär- und Sekundärwerkzeuge unterschieden werden. Primärwerkzeuge, die in diesem Zusammenhang nicht weiter betrachtet werden sollen, sind beispielsweise Kassettenrecorder oder Videokameras. Die hiermit erzeugten Daten werden digitalisiert und können mit Hilfe von Sekundärwerkzeugen, wie speziellen Editoren, nachträglich manipuliert werden.
Charakteristisch für die meisten Medienobjekterzeugungswerkzeuge ist, daß sie eine Speicherung der erzeugten Objekte in externe Dateien ermöglichen. Die Daten werden dort in einem speziellen Format abgelegt und können später wieder geladen werden. Damit unterstützen die Werkzeuge die Persistenz von Objekten, d.h. die Lebenszeit der Objekte wird über die Ausführungszeit der Werkzeuge hinaus verlängert.
Layout-Werkzeug Layout-Werkzeuge werden in der Layout-Phase zur Festlegung der Initialwerte der Gestaltungsattribute eingesetzt. Verwendet werden können hier zum Beispiel spezielle Editoren, in denen der Entwickler die Werte in textueller Form eingibt oder sie aus Menüs auswählt. Layout-Werkzeuge werden daher auch als Attributeditoren bezeichnet.Attributeditor Da es sich bei den Gestaltungsattributen meistens um Attribute für die Bildschirmgestaltung handelt, kann die Spezifikation der Attributwerte häufig auch direkt-manipulativ erfolgen; beispielsweise könnte zur Festlegung der Position eines Textes dieser bei gedrückter Maustaste an die gewünschte Stelle verschoben werden.
Strukturierungswerkzeug Strukturierungswerkzeuge dienen zur Definition von Beziehungen zwischen Medienobjekten. Grundsätzlich können dabei zwei verschiedene Typen von Strukturierungswerkzeugen unterschieden werden. Ein Ansatz besteht darin, das zugrundeliegende Beziehungsnetzwerk ganz oder teilweise vor dem Entwickler zu verbergen. In speziellen Editoren legt der Entwickler Eigenschaften der Präsentation fest, ohne daß ihm dabei bewußt ist, daß aufgrund seiner Spezifikationen intern vom System ein Graph erzeugt wird. Timeline-Editoren zur Definition zeitlicher Beziehungen stellen Strukturierungswerkzeuge dieses Typs dar. Beim anderen Ansatz wird das Beziehungsnetzwerk in speziellen Grapheditoren explizit vom Entwickler erstellt.
Das Beziehungsnetzwerk wird intern meistens in Form einer Zwischenrepräsentation abgelegt. Mit Hilfe von Mechanismen zum Speichern und Laden der Zwischenrepräsentation können persistente komplexe Medienobjekte realisiert werden. Damit kann man die Strukturierungswerkzeuge quasi beiläufig zugleich auch als Medienobjekterzeugungswerkzeuge ansehen, die die Erzeugung wiederverwendbarer komplexer Medienobjekte ermöglichen. Die komplexen Objekte können wie elementare Medienobjekte in die Medienobjektsammlung aufgenommen und mehrfach sowohl in derselben als auch in anderen Anwendungen benutzt werden. Auch Parametrisierungen komplexer Objekte über Gestaltungsattribute sind denkbar. Beispielsweise könnte die Anzahl an Iterationen ein Gestaltungsattribut eines komplexen Objekts sein, das ein ihm untergeordnetes Komponentenobjekt nach dessen Ende immer wieder direkt startet.
Interpreter Für die Test-Phase wird ein Interpreter benötigt, der die Ausführung der Präsentation aufgrund des bereits existierenden Beziehungsnetzwerks ermöglicht. Der Interpreter muß so flexibel sein, daß die Ausführung an beliebigen Stellen der Gesamtpräsentation gestartet werden kann und jederzeit unterbrechbar ist. Eine wichtige Aufgabe des Interpreters besteht in der Ausgabe von Warnungen bzw. Fehlermeldungen, wenn er während der Ausführung Inkonsistenzen im Beziehungsnetzwerk entdeckt. Der Interpreter ermöglicht einen unmittelbaren Wechsel vom Spezifikations- in den Ausführungsmodus und unterstützt damit eine Entwicklung einer multimedialen Präsentation im Sinne des Rapid Protoyping.
Codegenerator In der Generierungsphase wird ein Compiler eingesetzt, der als Eingabe das erstellte Beziehungsnetzwerk enthält und als Ausgabe editierbaren Programmcode liefert. Der Codegenerator muß Fehler bzw. Inkonsistenzen im Beziehungsnetzwerk erkennen und darauf entsprechend reagieren. Die verwendete Programmiersprache kann eine konventionelle Programmiersprache oder eine spezielle konkret für multimediale Anwendungen konzipierte Programmiersprache sein. Voraussetzung für seine weitere Bearbeitung ist die Erzeugung von strukturiertem und gut lesbarem Code.
Programmierumgebung Für die Programmierphase müssen Werkzeuge einer üblichen Programmierumgebung zur Verfügung stehen, wie Editoren, Debugger und Compiler. Eine Anforderung an den Compiler ist, daß er Code für verschiedene Maschinen erzeugen können sollte, der darüberhinaus auch unabhängig vom Entwicklungswerkzeug ausführbar ist. Dadurch kann eine Anwendung als sogenanntes Stand-Alone-ProgrammStand-Alone-Programm auf unterschiedlichen Rechnern präsentiert werden.
Präsentationswerkzeug Als Werkzeuge der Präsentationsphase können insbesondere die Hardware-Ressourcen angesehen werden, die zur Ausführung einer Anwendung notwendig sind. Sind für die Präsentation spezielle Aus- bzw. Eingabegeräte vorgesehen, wie beispielsweise ein Touch-Screen, eine Maus oder sogar ein Datenhandschuh, müssen diese sowie die konkreten Device-Treiber zur Verfügung stehen.
An der Entwicklung multimedialer Anwendungen sind bestimmte Personenkreise beteiligt, die in den einzelnen Entwicklungsphasen mit den entsprechenden Werkzeugen die jeweiligen Teilaufgaben der Gesamtentwicklung erledigen:
Dabei ist es nicht ausgeschlossen, daß ein und dieselbe Person mehreren Entwicklergruppen zugeordnet werden kann, d.h. unterschiedliche Teilaufgaben bearbeitet. Zusammenhänge zwischen Entwicklungsphasen, Entwicklungswerkzeugen und Entwicklergruppen sind Abbildung 11.1 zu entnehmen.
Medienobjektkreierer Ein Medienobjektkreierer ist eine Person, die mit geeigneten Medienobjekterzeugungswerkzeugen bestimmte Informationseinheiten erzeugt, d.h. ein Medienobjektkreierer legt den Inhalt und die Werte der Informationsattribute eines Medienobjektes fest. In größeren Projekten wird diese Arbeit meistens durch Spezialisten erledigt: Kameraleute erzeugen Filme, Toningenieure stellen Musikstücke zusammen, Graphiker und Designer entwerfen Zeichnungen und Bilder. Im allgemeinen handelt es sich bei den Medienobjektkreierern also nicht um Programmierer.
Regisseur Ein Regisseur ist für die Gestaltung der Gesamtpräsentation einer multimedialen Anwendung zuständig. Er legt das endgültige Layout der einzelnen Medienobjekte fest, definiert die Kontrollstruktur und andere Beziehungen zwischen den Objekten und bestimmt Zeitpunkte, Form und Auswirkungen von Interaktionen, die ein Benutzer während der Präsentation durchführen kann. Damit ist der Regisseur an allen drei Teilphasen der Verbindungsphase beteiligt. Als Grundlage seiner Arbeit dient die Medienobjektsammlung. Bei fehlenden Informationseinheiten muß er einen Medienobjektkreierer mit der Erzeugung entsprechender Objekte beauftragen. Sind die in der Verbindungsphase anfallenden Aufgaben erledigt, ruft der Regisseur den Codegenerator auf.
Darüberhinaus kann ein Regisseur aber auch selbst als Medienobjektkreierer angesehen werden, der komplexe Medienobjekte erstellt. Nicht immer muß ein Regisseur die Absicht haben, eine komplette Anwendung zu entwickeln. Vielmehr kann seine Aufgabe auch darin bestehen, aus existierenden Medienobjekten bestimmte komplexe Medienobjekte zu bilden und diese anderen Regisseuren für andere Anwendungen in Form einer Sammlung zur Verfügung zu stellen. In diesem Fall entfallen die Generierungs-, die Programmier- und die Präsentationsphase.
Heutige Werkzeuge ermöglichen im allgemeinen auch einem Nicht-Programmierer, die Rolle des Regisseurs zu übernehmen, sofern die zu entwickelnde Anwendung nicht allzu komplex ist. Dazu werden insbesondere Konzepte der visuellen Programmierung genutzt.
Programmierer Durch die Editierung des generierten Programmcodes kann ein Programmierer die Anwendung um Eigenschaften ergänzen, die mit den Werkzeugen der Verbindungsphase nicht spezifizierbar sind. Der Programmierer bringt die Anwendung damit in ihre endgültige Form. Mit Hilfe eines Compilers erzeugt er ausführbaren Code.
Endbenutzer Endbenutzer stellen den Personenkreis dar, der sich eine multimediale Präsentation anschaut. Je nach Einsatzbereich sind Endbenutzer zum Beispiel Kunden eines Geschäfts an einer Point-Of-Sale-Station, Besucher eines Museums, die sich mit Hilfe eines Computers über Einzelheiten einer Ausstellung informieren möchten, oder Lernende, die eine Anwendung im Bereich des Computer-Based-Trainings nutzen. Endbenutzer können an den vom Regisseur vorgesehenen Stellen der Präsentation Eingaben vornehmen und damit beispielsweise den weiteren Präsentationsverlauf bestimmen oder das Layout ihren Vorstellungen entsprechend anpassen.
Medientypintegrator Die Aufgabe von Personen, die der Werkzeugerweiterungsphase zugeordnet sind, besteht generell in der Änderung bzw. Erweiterung der Werkzeuge, die in den einzelnen Entwicklungsphasen benutzt werden. Für die weiteren Betrachtungen im Rahmen dieser Arbeit ist jedoch nur der Aspekt der Integration neuer Medientypen in die Entwicklungswerkzeuge von Bedeutung. Personen, die diese Aufgabe ausführen, sollen Medientypintegratoren genannt werden. Hierbei handelt es sich im allgemeinen um Programmierer. Will ein Regisseur beispielsweise Animationen in seine Anwendung einbauen und wird dieser Medientyp durch die zur Verfügung stehenden Werkzeuge nicht unterstützt, so muß er einen Medientypintegrator mit der Integration eines entsprechenden Typs beauftragen. Die Aufgabe eines Medientypintegrators umfaßt dabei im allgemeinen viele Teilaufgaben. Dabei soll im folgenden davon ausgegangen werden, daß die Schnittstelle zwischen Medienobjektkreierer und Regisseur eine Dateischnittstelle ist, d.h. daß die erzeugten Medienobjekte über eine Dateischnittstelle in die Werkzeuge der Verbindungsphase geladen werden. Die wichtigsten Teilaufgaben sind:
In existierenden Entwicklungswerkzeugen sind die unterstützten Medientypen meist so fest in die Werkzeuge der Verbindungsphase integriert, daß eine Erweiterung praktisch unmöglich ist, und wenn, dann nur von denjenigen Personen durchgeführt werden kann, die diese Werkzeuge realisiert haben. Eine alternative Lösung bietet hier die Verwendung einer objektorientierten Programmiersprache schon beim Entwurf der Basiswerkzeuge. Indem der Werkzeugentwickler vorgefertigte Komponenten zur Verfügung stellt und über abstrakte Basisklassen abstrakte Schnittstellen definiert, kann auch eine andere Person als er als Medientypintegrator fungieren, indem sie mittels objektorientierter Mechanismen, wie der Komposition oder der Spezialisierung, neue Medientypen in die Werkzeuge integriert, ohne dessen komplexe Strukturen im einzelnen verstehen oder sogar ändern zu müssen.
Anzumerken ist in diesem Zusammenhang, daß durchaus mehrere Formen eines Medientyps integriert werden können. So ist vorstellbar, daß zwei verschiedene Audio-Medientypen existieren, die unterschiedliche Audio-Formate laden können. Denkbar ist auch, daß sich zwei Typen nur in der Menge ihrer Gestaltungsattribute unterscheiden. Ein Medientyp Text könnte beispielsweise die Gestaltungsattribute Font und Größe definieren, während ein zweiter Medientyp Text auch den zu repräsentierenden Text als Gestaltungsattribut vorsieht.
Falls Medienobjekte aus Source-, Sink- und Filter-Objekten bestehen können, ist ein Medientypintegrator auch für deren Komposition und die Definition von konfigurellen Beziehungen zwischen den Teilobjekten zuständig (siehe Abschnitt 3.2.8). Ein Medientyp Live-Video beinhaltet beispielsweise ein Source-Objekt, das Daten von einer Video-Kamera erhält, während das Source-Objekt eines Medientyps File-Video die Daten aus einer Datei liest.
Existierende Entwicklungswerkzeuge für multimediale Anwendungen verwenden häufig Metaphern, um ihren Benutzern das Verständnis ihrer Benutzerschnittstelle zu erleichtern. So werden in HyperCard (siehe Kapitel 12.2.1.1) Karten auf Stapel gelegt, in ToolBook (siehe Kapitel 12.2.1.1) fertigt der Autor Seiten an, die zu Büchern zusammengebunden werden, und in MacroMind Director (siehe Kapitel 12.2.1.2) bestehen Filme aus Szenen und Einzelbildern, wobei die Medienobjekte als Darsteller betrachtet werden. Eine geeignete Analogie zur Entwicklung einer interaktiven multimedialen Anwendung aufgrund der oben vorgestellten Sichtweise stellt die objektorientierte Programmierung dar:
Durch Spezialisten (Medienobjektkreierer) werden Basisfunktionen (elementare Medienobjekte) definiert und in Softwarebibliotheken (Medienobjektsammlungen) zusammengefaßt. Bestimmte Spezialisten programmieren dabei beispielsweise Funktionen für die Gestaltung einer Benutzungsoberfläche, andere erzeugen mathematische Libraries. Ein Anwendungsprogrammierer (Regisseur) benutzt die Funktionen der Libraries, um seine konkrete Anwendung zu entwickeln. Während er nicht auf die lokalen Variablen der Funktionen (Informationsattribute) zugreifen kann, hat er über Funktionsparameter (Gestaltungsattribute) die Möglichkeit, das Verhalten (Layout) der einzelnen Funktionen zu beeinflussen. Der Anwendungsprogrammierer stellt Beziehungen zwischen den Funktionen her, indem beispielsweise der gelieferte Wert einer Funktion als Parameter einer anschließend aufgerufenen Funktion übergeben wird (Strukturierungsphase). Mit Hilfe von Debuggern und anderen Werkzeugen moderner Entwicklungsumgebungen kann er bereits in der Entwicklungsphase Programmteile austesten (Test-Phase). Als Endprodukt wird mittels eines Compilers ein Programm generiert, das ein Anwender (Endbenutzer) ausführen kann.11.1 Eine Alternative besteht für einen Anwendungsprogrammierer darin, kein fertiges Anwendungsprogramm zu erstellen, sondern mit Hilfe der Funktionen der existierenden Libraries komplexere Funktionen (komplexe Medienobjekte) zu bilden, die er wiederum in Form von Bibliotheken eventuell anderen Programmierern zur Verfügung stellt. Fehlen in einer objektorientierten Umgebung bestimmte Typen bzw. Klassen, kann ein Komponentenprogrammierer (Medientypintegrator) diese mittels objektorientierter Konzepte, wie der Spezialisierung, definieren (Werkzeugerweiterungsphase).
Multimediale Anwendungen werden, wie die Anwendungsfelder in Kapitel 2 zeigen, häufig von Werbefachleuten oder auch Designern entworfen, die kaum Programmierkenntnisse besitzen. Diesen Personen müssen daher Werkzeuge zur Verfügung gestellt werden, die die Entwicklung von Anwendungen ohne die Verwendung von textuellen Programmiersprachen sondern beispielsweise mit Hilfe der visuellen Programmierung ermöglichen. Derartige graphisch-interaktive Werkzeuge werden in der Literatur als AutorenwerkzeugeAutorenwerkzeug oder AutorensystemeAutorensystem bezeichnet. Dementsprechend nennt man die Entwickler, die mit diesen Werkzeugen arbeiten, auch AutorenAutor und für den Entwicklungsprozeß wird der Begriff AuthoringAuthoring verwendet (siehe auch [EHV93]). Ausführlich wird in Kapitel 12.2 auf Autorenwerkzeuge eingegangen.
Ausgehend von der im vorangehenden Abschnitt vorgenommenen Analyse des Entwicklungsprozesses einer multimedialen Anwendung sollte ein Autorenwerkzeug graphisch-interaktive Layout-Werkzeuge, graphisch-interaktive Strukturierungswerkzeuge, einen Interpreter und einen Codegenerator zur Verfügung stellen.
Die Bereitstellung eigener Medienobjekterzeugungswerkzeuge durch ein Autorenwerkzeug ist nicht dringend notwendig. Wichtiger ist, daß externe Medienobjekterzeugungswerkzeuge über Schnittstellen mit dem Autorenwerkzeug gekoppelt werden können. Die universellste Kopplungsmöglichkeit ist die Kopplung über Dateien. Dabei muß ein Medienobjekterzeugungswerkzeug erstellte Medienobjekte in einem bestimmten Format in einer Datei abspeichern können, aus der sie sich in der Verbindungsphase vom Autorenwerkzeug wieder laden lassen. Eine andere Möglichkeit ist die Implementierung eines interaktiven Copy-Paste-Mechanimusses, den sowohl das Medienobjekterzeugungswerkzeug als auch das Autorenwerkzeug unterstützen müssen. Die Medienobjekte werden im Medienobjekterzeugungswerkzeug erstellt und mit Hilfe einer bestimmten Tastenkombination ins Autorenwerkzeug geladen.
Ein Autorenwerkzeug ist in die gesamte Verbindungsphase und die Generierungsphase involviert. Es unterstützt den Regisseur (gleichbedeutend mit Autor) bei allen seinen Teilaufgaben. Die Funktionalität eines Autorenwerkzeugs sollte aber nicht allein auf die Entwicklung kompletter Anwendungen beschränkt sein. Auch die Erstellung persistenter komplexer Medienobjekte, die eventuell anderen Autoren zur Verfügung gestellt werden können, sollte ermöglicht werden.
Eine wichtige Anforderung an Autorenwerkzeuge ist ihre Erweiterbarkeit um neue Medientypen. Sie sollten derart konzipiert sein, daß Medientypintegratoren auf einfache Art und Weise Erweiterungen vornehmen können. Objektorientierte Konzepte bieten hier gewisse Vorteile.
Die meisten Autorenwerkzeuge unterstützen nicht die Generierung editierbaren Programmcodes. Stattdessen wird direkt ausführbarer Code erzeugt. Häufig wird jedoch eine speziell für das Autorenwerkzeug definierte Programmier- oder Skriptsprache zur Verfügung gestellt und die Programmierphase in die Verbindungsphase aufgenommen. Das bedeutet, daß ein Regisseur Programmierkenntnisse besitzen muß, was der eigentlichen Motivation von Autorenwerkzeugen, daß mit ihrer Hilfe auch Nicht-Programmierer multimediale Präsentationen entwicklen können, widerspricht. Die Ausgliederung der Programmierphase aus der Verbindungsphase, wie oben geschildert wird, hat beispielsweise im Bereich von Werbeagenturen den Vorteil, daß ein Werbefachmann mit Hilfe graphisch-interaktiver Layout- und Strukturierungswerkzeuge ohne Programmierkenntnisse einen Prototyp der multimedialen Anwendung erstellen und mit Hilfe des Interpreters bereits testen kann. Anschließend kann er editierbaren Code erzeugen und einen Programmierspezialisten mit dem letzten ,,Feinschliff`` der Anwendung beauftragen.
Die größten Unterschiede zwischen existierenden Autorenwerkzeugen sind im Bereich der Strukturierungswerkzeuge zu finden. Wie bereits erwähnt, kann hier eine Klassifikation vorgenommen werden, je nachdem, ob der Autor die Beziehungen explizit oder implizit spezifizieren muß. Neben der Definition von Initialisierungsbeziehungen -- meistens implizit mit Hilfe von Layout-Werkzeugen -- ermöglichen existierende Autorenwerkzeuge hier im allgemeinen nur die visuelle Modellierung zeitlicher Beziehungen. Alle anderen Beziehungstypen, insbesondere die Interaktionsbeziehungen, lassen sich entweder gar nicht definieren oder müssen in der Verbindungsphase explizit mit Hilfe einer integrierten Programmier- bzw. Skriptsprache programmiert werden.
Inwieweit existierende Autorenwerkzeuge die Entwicklung multimedialer Präsentationen unterstützen und den hier gestellten Anforderungen gerecht werden, wird in Kapitel 12.2 untersucht. Dort wird auch auf die Integration von Interaktionsobjekten sowie die Verwendung von Mechanismen der visuellen Programmierung eingegangen.
Autorenwerkzeuge werden häufig mit Hilfe von Multimedia-Toolkits (Toolkits zur Entwicklung multimedialer Benutzerschnittstellen) implementiert (siehe auch Kapitel 12.1). Derartige Toolkits stellen Softwarebibliotheken dar, die Basiskomponenten und Konstruktionsmechanismen für die Programmierung mit kontinuierlichen Medien definieren und hardwarespezifische Eigenschaften kapseln. Durchgesetzt haben sich hier weitgehend objektorientierte Ansätze aufgrund der einfachen Erweiterbarkeit und Wiederverwendbarkeit objektorientierter Software. Multimedia-Toolkits werden häufig dadurch realisiert, daß in bereits existierende Toolkits zur Entwicklung graphischer Benutzerschnittstellen -- die sogenannten User-Interface Toolkits -- kontinuierliche Medien integriert werden. In [Vos93] werden die Toolkits Comet [AC91], MODE [BHL91], Ttoolkit [GCA92], MMV [HK92], QuickTime [APP92b] und Gibbs Multimedia Framework [Gib91] beschrieben. Weitere multimediale Anwendungen unterstützende Toolkits sind ET++ ([WGM89], [Ack93]), das MME-Toolkit [Din93], eine Erweiterung des User-Interface Toolkits Theseus++, sowie das Apple Media Tool Programming Environment (siehe auch Kapitel 12.2.1.3). Das XFantasy-UIT (siehe Kapitel 12.1.5) stellt ebenfalls ein Multimedia-Toolkit dar.
Prinzipiell könnten Multimedia-Toolkits auch direkt zur Entwicklung multimedialer Präsentationen eingesetzt werden. Neben ihrer Unterstützung von Nicht-Programmierern bieten Autorenwerkzeuge aber gegenüber der Verwendung von Toolkits als weitere Vorteile unter anderem eine kürzere Einarbeitungszeit, eine kürzere Entwicklungszeit und eine niedrigere Fehlerrate bei der Erstellung multimedialer Anwendungen. Als Nachteil muß jedoch der Verlust an Mächtigkeit gegenüber den Toolkits angeführt werden: Nicht alles was textuell programmierbar ist, läßt sich auch visuell programmieren.