Die Flagge des Marasek

Dekostreifen

English

Aktuell Texte Der Comic Impressum Kalender Suche PHP-Klassen Container-Wizard main.s21

Kategorien

Buch
Computer
Computerspiele
Film
Geschichte
Gesellschaft
Idee
Kunst
Natur
Persönlich
Politik
Programmieren
Religion & Philosophie
Weblog
Weltpolitik
Weltsicht
{{login}}

Dialogschnittstelle

Permalink
Vorheriger: Der Hobbit auf BluRayNächster: Hintertüren: Schlechte Idee
Eingeordnet in: Programmieren

Ich habe eine sicherlich im normalen Alltag als überkommen geltende Benutzerschnittstelle für mich entdeckt: die Dialogschnittstelle. Diese findet sich vereinzelt noch in Kommandozeilenumgebungen und kann als Bindeglied zwischen reiner Kommandozeile und Grafischer Oberfläche dienen. Denn anders als ein reines Kommandozeilenprogramm ist eine Anwendung mit Dialogschnittstelle interaktiv. Dies sei an einem Beispiel verdeutlicht:

0 Benutzer anlegen
1 Benutzer ansehen
x Verlassen

Wählt der Benutzer nun 0, bekommt er folgenden interaktiven Dialog:

Vorname:
Hadanite
Nachname:
Marasek
Geschlecht (m/f):
männlich
Falsches Geschlecht, bitte m oder f eingeben
m
Vorname:    Hadanite
Nachname:   Marasek
Geschlecht: Männlich
Möchten Sie diese Daten speichern? (J/n)

Daten gespeichert.
Weiteren Datensatz eingeben? (J/n)
n

Danach kehrt das Programm auf die Hauptebene zurück.

Im Programmablauf sind hier Default-Werte, wie z. B. das J in J/n vorgegeben, was man dementsprechend auch mit z. B. Datumswerten machen kann. Auch Verzweigungen sind denkbar, dass z. B. nach dem Geschlecht frauenspezifische Themen abgefragt werden. Vor allem letzteres zu implementieren ist bei Webanwendungen ein Krampf.
Auch wenn man heutige Benutzer damit eher verschreckt, ist das Konzept - wenn man es im Vergleich zu reinen Kommandozeilenanwendungen, grafischen Oberflächen oder Webanwendungen betrachtet - durchaus reizvoll:

Kommandozeile

  • eignet sich gut zur automatische Stapelverarbeitung (lässt sich von einem anderen Programm aufrufen, akzeptiert Eingabe von anderen Programmen)
  • bildet Verzweigungen schlecht ab - man muss letzlich auf widersprüchliche Eingaben prüfen
  • man kann nur eine Aufgabe erledigen, es gibt keine oder nur wenig Interaktion (die bekannte "Möchten Sie das wirklich tun (j/N)"-Abfrage geht ja schon in Richtung dialogorienter Anwendung)
  • mehrere Eingaben von Hand sind mitunter langwierig - letzten Befehl zurückholen, editieren, neu ausführen
  • Default-Werte sind möglich, für den Benutzer aber nur mittels Anleitung ersichtlich
  • eine Authentifizierung kann man sehr gut an das Betriebssystem delegieren. Wer sich anmelden und das Programm ausführen darf, hat Zugriff

GUI

  • ordentliches Layout ist oft sehr schwierig
  • Verzweigung kann gut über ausgegraute Felder abgebildet werden, Bestätigungen gut über Dialogboxen, Default-Werte können gut vorgegeben werden
  • Manuelle Eingabe geht schnell bei guter, tastaturfreundlicher Bedienung (navigieren mit <Tab>, Cursor geht nach dem Speichern wieder ins Anfangsfeld
  • es kann sehr gut bei der Eingabe validiert werden
  • man kann sehr gut Eingabehilen wie Kalender oder "Spinner" für Wertbereiche anbieten
  • keine Stapelverarbeitung möglich
  • eine Authentifizierung kann man sehr gut an das Betriebssystem delegieren. Wer sich anmelden und das Programm ausführen darf, hat Zugriff

Webanwendung

  • einfacher zu layouten
  • Serverseitige Validierung bei jedem Schritt erforderlich
  • Benutzer bekommt Fehler nach dem Senden oder man validiert zusätzlich per JavaScript und macht sich die Arbeit doppelt
  • Verzweigung über JavaScript möglich oder über einen mehrstufigen Assistenten, dann ist aber Datenhaltung im Hintergrund erforderlich
  • man sollte verhindern, dass der Benutzer die Dateneingabe über Vor/Zurück/Reload stört, dafür sind aber aufwändige Konstruktionen erforderlich.
  • man hat ein hohes Potential für Sicherheitslücken
  • Default-Werte können gut abgebildet werden, Eingabehilfen müssen meist mehr oder minder aufwändig mit JavaScript realisiert werden
  • generell gilt: benutzerfreundliche und sichere Webanwendungen sind sehr, sehr aufwändig
  • Stapelverarbeitung bedingt möglich
  • Eingabe von Hand mitunter langsam (Speichern/neu laden kostet Zeit)
  • benötigt meist zusätzliche Authentifizierung

Dialogorientierte Anwendung

  • durch die begrenzte Umgebung muss weniger Aufwand ins Layout gesteckt werden, dafür hat man wenig Platz, was bei grösseren Datenmengen schwierig wird
  • Anwendung ist interaktiv und kann gut verzweigen
  • man kann Default-Werte vorgeben, interaktive Eingabehilfen sind nicht möglich (man kann Hilfsdialoge anbieten)
  • eine Authentifizierung kann man sehr gut an das Betriebssystem delegieren. Wer sich anmelden und das Programm ausführen darf, hat Zugriff
  • Eingabekorrekturen sind im laufenden Dialog für vorhergehende Werte nicht möglich
  • Stapelverarbeitung ist bedingt möglich: da es aus Sicht des Computers egal ist, ob die Eingabezeile aus der Tastatur oder der Zwischenablage kommt, kann man ihn mit grossen Datenmengen füttern, sofern diese der Logik des Programms sklavisch folgen.
  • sie eignen sich sehr gut, um eine Liste abzuarbeiten, etwa bei 1000 Datensätzen nachträglich einen zusätzlichen Wert einzupflegen. Das typische "durchklicken" oder die Nachladerei entfällt

Dialogorientierte Anwendungen haben aber einen gigantischen Vorteil, weshalb ich sie gerne für interne, eigene Anwendungen verwende: der Entwicklungsaufwand ist drastisch reduziert, bei einem deutlichen Vorsprung in der Anwenderfreundlichkeit gegenüber einem reinen Kommandozeilenprogramm.
Ein grosses Hemmnis für eine neue GUI/Webanwendung stellt für mich der unproduktive Vor- bzw. Nebenaufwand. Bei Webanwendungen sind das CSS-Dateien, HTML-Dateien, die Positionierung von Formularen, id-Tags für JavaScripte, Validierungsschemata für ganze Gruppen von Daten, sinnvolle Fehlermeldungen usw. usf.
Bei GUI-Anwendungen ist die Situation ähnlich gelagert, hier erinnere ich mit Grausen an Positionierungsbefehle oder ähnliches.

Bei einer Dialoganwendung habe ich eine Idee bzw. einen Bedarf und lege los. Sofort. Dabei kann eine Anwendung aus ein paar imperativen Anweisungen bestehen, die hintereinander runtergeschrieben sind, oder wunderschöner objektorientierter Programmierung. Der Aufwand folgt ziemlich nah der Aufgabe bzw. dem Umfang der Anwendung. Auf diese Weise habe ich mir für viele Aufgaben Miniskripte geschrieben, die ansonsten nicht automatisiert worden wären.

Insofern kann man gelegentlich auch den User für solche Lösungen gewinnen, wenn er nämlich ein einfaches Programm für eine Aufgabe bekommt, die er ansonsten von Hand machen muss.

Kommentieren

Bitte beachten: Kommentare sind nicht sofort sichtbar, sondern werden erst nach einer kurzen Prüfung freigegeben, sofern keine rechtliche Beanstandung vorliegt.
Rechtlich bedenkliche Inhalte werden entweder entschärft oder nicht veröffentlicht.

* Titel  
* Nickname  
* Kommentar