© TRAC Optische Computer Sensorik, Stuttgart 2002, em@il: trac@n.zgs.de
Eine wichtige Komponente vieler Programme ist die Benutzerschnittstelle. Über diese Schnittstelle kann der Anwender Daten eingeben und Resultate ablesen.
Das natürliche Kommunikationsmedium der Menschen ist die Sprache. Aus technischen Gründen ist jedoch heute noch keine Kommunikation mit Programmen in natürlicher Sprache möglich - moderne Spracherkennungssysteme kombiniert mit KI - Systemen könnten dies in naher Zukunft jedoch ändern.
Gegenwärtig können wir wir mit den Computerprogrammen über Befehlszeilen, Eingabedateien, Bildschirmmasken oder mausgesteuerten Fenstersysteme wie das von MS-Windows kommunizieren. Die programmtechnische Realisierung dieser Schnittstellen erweist sich als äußerst anspruchsvoll. So müssen Benutzerschnittstellen:
Fehlbedienungen selbständig erkennen und dem Anwender anzeigen
weitgehend tolerant gegenüber der Ausdrucksweise des Anwenders sein
möglichts selbsterklärend und optisch ansprechend auf den Anwender wirken
Die Gestaltung der Benutzerschnittstelle hat maßgeblichen Einfluß auf den Erfolg eines Softwaresystems. Im Internet kann man viele Softwareperlen zum Nulltarif downloaden. Ihr oft einziger Makel, der ihnen einen Erfolg am Markt verwehrt, sind ihre Benutzerschnittstellen. Meist handelt es sich um kryptische Befehlszeilen analog der von MS- DOS, einem veralteten Konzept aus der Computersteinzeit.
Wenn der Anwender Eingaben an der Benutzerschnittstelle tätigt, dann kann dies als »Unterhaltung« zwischen Benutzer und Programm in einer Spezialsprache betrachtet werden. Dabei beschreibt der Anwender Aufgabenstellungen in der Spezialsprache, das Computerprogramm analysiert die Aufgabenstellung, berechnet eine Lösung und formuliert diese in der Spezialsprache für die Ausgabe an den Benutzer.
Diese Spezialsprachen können aus bestimmten Folgen von Mausklicks, Befehlswörtern oder Datensätzen bestehen. Sie haben eine einfache Grammatik, die wiederum von einfach konstruierten Maschinen, den Automaten beherrscht wird. In der Informatik und Linguistik werden diese Spezialsprachen als Formale Sprachen bezeichnet.
Der Automat nimmt die Eingaben entgegen und prüft, ob sie grammatikalisch richtig aufgebaut sind. Ist dies nicht der Fall, dann weist er die Eingabe mit einer Fehlermeldung an den Benutzer zurück. Korrekte Eingaben bewirken, daß der Automat die gewünschte Funktion der Software mit den vom Anwender übergebenen Parametern aufruft. Automaten sind damit das »Herzstück« einer Benutzerschnittstelle.
Im Folgenden werden wir den Aufbau und die Wirkungsweise der für die altägliche Programmierpraxis wichtigsten Automaten kennenlernen.
Als endlicher Automate (engl. Finite State Machines) wird eine Automatenklasse mit folgendem Aufbau bezeichnet:
Der Automat hat eine endliche Menge von Zuständen, die die Zustandsmenge Z bilden.
Alle Eingaben am Automaten setzen sich aus Zeichen ei der Eingabemenge E zusammen.
Alle Ergebnisse, die der Automat ausgibt, sind Elemente der Ausgabemenge A
Der Automat besitzt eine sogenannte Zustandsüberführungsfunktion ZÜ: Z x E ---> Z.
Diese Funktion kann wie folgt erklärt werden: Für jeden Zustand zi des Automaten definiert die Funktion für jede Eingabe, die ein Zeichen aus E ist, den Folgezustand zj, in den der Automat nach der Eingabe springt.
Der Automat besitzt eine Ausgabefunktion AF: Z ---> A.
Diese Funktion legt für jeden Zustand eine Ausgabe fest, die erfolgt, sobald der Automat in diesen Zustand springt.
Anhand einiger Beispiele wollen wir die abstrakte Automatendefinition mit Leben füllen.
Ein Ort, an dem endliche Automaten lauern, ist das Freibad der Stadt Fellbach. Der Zutritt wird durch ein Drehkreuz gesichert. Dieses läßt den Badegast nur dann passieren, wenn er zuvor eine Magnetkarte einwirft, die man für 5 DM kaufen muß. Hat man das Drehkreuz passiert, dann blockiert dieses wieder und gewährt nur dann weiteren Zutritt, wenn eine weitere Magnetkarte für 5 DM eingeworfen wird.
Das habgierige Drehkreuz ist ein endlicher Automat mit den zwei Zuständen »zu« und »auf«. Ich stelle ihn durch einen Graphen dar, ein übliches Verfahren für endliche Automaten. Die Zustände sind durch Kreise dargestellt. Pfeile zwischen den Kreisen bezeichnen die Zustandsüberführungsfunktionen. Sie sind mit den Eingabesymbolen bezeichnet, die diese Zustnandsübergänge auslösen. Die Ausgabe an jedem Zustand ist viereckig umrahmt.