Photo

Kommandozeile

Hat die Kommandozeile noch etwas verloren in modernen, GUI-basierten Line-of-Business-Anwendungen? Können wir ihre Effizienz in visuell reicheren Eingabeformen wieder einbringen?

Stärken und Schwächen

Was genau sind denn die Stärken der Kommandozeile? Wo bringt sie dem Anwender höhere Effizienz? Was sind ihre Schwächen?

Effiziente Auswahl

Eine gut gestaltete Kommandozeile erlaubt die sehr knappe Eingabe von komplexen Befehlen. Z.B. soll eine Flugauskunft eingeholt werden:

fa zrh lhr ad 2 ch 1 dep nd

was man lesen kann als

fa = flight availability
zrh = Zürich (origin)
lhr = London Heathrow (destination)
ad 2 = Adults: 2
ch 1 = Children: 1
dep nd = Departure: Next Day

Macht für den Anwender also 28 Tastaturanschläge (inkl. Enter).

Das ginge natürlich in einer Eingabemaske mit den entsprechenden Feldern sogar schneller, man nimmt dann einfach Tab statt Space und spart sich Kürzel wie ad. Gibt es jedoch einen Rattenschwanz von Beeinflussungs-Optionen für die Anfrage, dann sieht es anders aus. Beispiel:

Origin:      [ZRH            ]
Destination: [LHR            ]
Adults:      [2              ]
Children:    [1              ]
Departure:   [20.4.2003      ]
  Time:      [               ]
Arrival:     [               ]
  Time:      [               ]
.....
Non-smoking: [x]

Die Eingabe der obigen Daten verlangt nun entweder etliche Tabs nach dem Datum (ich nehme übrigens an, dass das Control automatisch nd zum nächsten Tagesdatum umwandelt nach der Eingabe), oder aber die Anwahl eines Hotkeys, z.B. Alt-N. Alt-N ist aber bereits weniger effizient als z.B. einfach ein ns an die Kommandozeile anzuhängen. Zudem ist es bei grosser Anzahl der Optionen schwer, für alle einen geeigneten Buchstaben für den Hotkey zu finden.

Fokussierung

Die Eingabe einer Kommandozeile gibt dem Benutzer einen sehr starken Fokus. Die Augen müssen wenig wandern (z.B. nach Anwahl des Menüpunkts Availability sich neu zur Maske orientieren), und es wird auch kein aktueller Bildschirm-Inhalt von einer allenfalls grossen Eingabemaske verdeckt.

Die Hände bewegen sich weder zur Maus, noch zu weiter weg liegenden Tasten wie etwa dem Cursor-Block.

Statt z.B. eine Antwortliste der Anfrage durchzuscrollen per Maus oder Cursor-Tasten, könnte man z.B. mit m einfach weitere Resultate anfordern, und per 1…n direkt die gewünschte Zeile auswählen.

1 08:15 ZRH LHR 09:30 BA  ...
2 09:55 ZRH LHR 10:10 BA  ...
(m for more)

Darauf kann man dann auch gleich mit

1 qu c

eine Preisanfrage, qu = “quote”, der Klasse Economy, c, anfordern.

Hoher Lernaufwand

Die klassische Kommandozeile verursacht einen hohen Lernaufwand, da der Anwender sämtliche Optionen kennen muss. Nachschlagen in der Hilfe macht die ganze gewonnene Effizienz nämlich wieder zunichte.

Allerdings könnte man mit modernen Techniken wie Auto-Complete dieses Problem schon stark entschärfen. Geht man weiter, so könnte Auto-Complete auch Eingabehilfen wie Kalender, Auswahllisten etc. analog zur in einem klassischen Eingabeformular gebotenen Funktionalität anbieten.

Schlechte Übersicht

Im Gegensatz zu einer sauber ausgestalteten Eingabemaske ist die Eingabe in eine Kommandozeile eher unübersichtlich, wenn viele Optionen angegeben werden. Es kann auch recht umständlich sein, den Ort für eine Korrektur nachträglich zu finden.

Aber: Bei wenigen Optionen ist die Information dafür wesentlich kompakter dargestellt und vom Auge vermutlich schneller erfassbar.

Eingabefehler möglich

Die Kommandozeile merkt Eingabefehler typischerweise erst sehr spät. Das stellt das Problem der nachträglichen Korrektur, wo inmitten eines langen Texts etwas nachgebessert werden muss.

Zudem ist die Fehlerwahrscheinlichkeit höher, da erwartete Datenformate und Abhängigkeiten unter den Eingaben (z.B. bedingte Muss-Eingaben) nicht visualisiert werden können.

Auch hier könnten moderne Code-Completion-Technologie, sowie Kontext-sensitive Hints etliches verbessern.

Was können wir lernen?

Ein wesentliches Element der Eingabe-Effizienz der Kommandozeile ist die Anwahl von Optionen per merkbarem Kürzel.

Kürzel in Masken

In Eingabemasken liesse sich dies auch umsetzen, man müsste aber klar zwischen der Daten-Eingabe und der Kürzel-Eingabe unterscheiden können. Die einfache Idee, mit einer Spezialtaste zwischen Daten- und Kürzel-Eingabe zu wechseln (wie z.B. im Property-Inspector von Delphi) reicht nicht. Diese Taste würde den Eingabefluss zu stark stören.

Hinweis: Ich gehe davon aus, dass nur die alpha-numerischen Tasten, sowie Tab, Enter und Space von einem geschulten Zehnfinger-Tipper wirklich effizient erreicht werden.

Kürzel- und Daten-Modus

Besser wäre es, wir würden nach den immer auszufüllenden Feldern automatisch in den Kürzel-Modus wechseln, und dann nach Eingabe einer Option auch immer wieder.

Die Maske könnte also so aussehen:

    Origin:       [ZRH            ]
    Destination:  [LHR            ]
ad   Adults:      [2              ]
ch   Children:    [1              ]
dep  Departure:   [20.4.2003      ]
det    Time:      [               ]
arr  Arrival:     [               ]
art    Time:      [               ]
    .....
ns   Non-smoking: [x]

Nach Tab aus dem Destination-Feld heraus käme man automatisch in den Kürzel-Modus. Eingabe des Kürzels und Tab oder Space führte einen dann in die entsprechende Option. Noch ein Tab wieder in den Kürzel-Modus. Bei Checkboxen könnte Kürzel und Space die Option gleich umschalten.

Diese Verbindung würde die Vorteile der Effizienz einer Kommandozeile mit der hohen Merkbarkeit eines Formulars verbinden. Zudem hätten wir wieder drin, dass wir im Formular Abhängigkeiten unter den Eingaben wieder sauber Visualisieren können.

Listen mit Direktwahl

Die Effizienz beim Scrollen und der Auswahl von Resultaten liesse sich einfach wieder erreichen, indem wir die Listendarstellungen auch mit den Kürzeln wie @m@ (more) oder @p@ (previous), sowie der Schnellauswahl per Zahleneingabe ausstatten würden.

Wir könnten als Folge der Schnellauswahl den Fokus auch gleich wieder auf eine Kürzel-Liste stellen und damit die Auswahl der auszulösenden Aktion auch wieder gleich effizient wie mit einer Kommandozeile gestalten.

Fazit

Wir sollten immer versuchen, Eingabemasken mit normalen, für die Benutzer gewohnten Mitteln auf effizienteste Bedienung hin zu gestalten.

Komplexität reduzieren

Die obigen Ideen könnten bei sehr komplexen Masken die Effizienz weiter steigern helfen. Vermutlich ist es aber in der Regel sinnvoller, die komplexe Maske in weniger komplexe einzelne Use Cases zu zerlegen.