Webseiten-Werkzeuge

Benutzer-Werkzeuge


Vergleich textuelle und visuelle Programmiersprachen

Mit p2fSimply versuchen wir, die Benutzererfahrung von print2forms zu verbessern. Dabei liegt das Augenmerk auf Benutzer, die nur wenig Erfahrung im Umgang mit Programmiersprachen, regulären Ausdrücken und anderen Technologien, die bisher zur Konfiguration von print2forms benötigt wurden, haben.

Die visuelle Programmierumgebung von p2fSimply bietet dazu eben eine visuelle Programmiersprache an, die es ermöglicht Gateway-Skripte ohne eine klassische textuelle Programmiersprache wie Perl oder PHP zu erstellen.

Um nun visuelle Programmierung mit textueller Vergleichen zu können, muss zunächst geklärt werden, was eigentlich Benutzerfreundlichkeit ist. Das Deutsche Institut für Normung verwendet dazu den Begriff „Gebrauchstauglichkeit“ und definiert ihn als „Das Ausmaß, in dem ein Produkt durch bestimmte Benutzer in einem bestimmten Nutzungskontext genutzt werden kann, um bestimmte Ziele effektiv, effizient und zufriedenstellend zu erreichen“.

Wichtig ist also neben dem eigentlichen Ziel, in unserem Fall dem Programmieren eines Systems, auch der Kontext, in dem dieses Ziel erreicht werden soll. Das kann nicht nur Eigenschaften der Programmierumgebung selbst beinhalten, sondern beispielsweise auch das Umfeld, in dem die Software genutzt wird. Entwickelt man beispielsweise Mobiltelefone für den Einsatz auf Baustellen, ist es sinnvoll, diese besonders robust zu gestalten um der Umgebung des Nutzers Rechnung zu tragen. Die definierten Primärziele sind dagegen die Effektivität, Effizienz und Zufriedenstellung, die das Produkt zur Zielerfüllung beiträgt. Diese sind folgendermaßen definiert:


  • Effektivität: Die Genauigkeit und Vollständigkeit, mit der Benutzer ein bestimmtes Ziel erreichen.
  • Effizienz: Der im Verhältnis zur Genauigkeit und Vollständigkeit eingesetzte Aufwand, mit dem Benutzer ein bestimmtes Ziel erreichen.
  • Zufriedenstellung: Freiheit von Beeinträchtigung und positive Einstellung gegen- über der Nutzung des Produkts.

Neben diesen von der DIN definierten Kriterien gibt es aber noch weitere, die Nielsen in seinem Buch „Usability Engineering“ beschreibt:


  • Erlernbarkeit: Das System soll einfach zu erlernen sein, sodass der Benutzer das System schnell produktiv nutzen kann.
  • Erinnerbarkeit: Ein Benutzer braucht nicht das gesamte System neu erlernen, wenn er es nach längerer Zeit wieder benutzt.
  • Fehlertoleranz: Das Programm ist so gebaut, dass der Benutzer möglichst wenig Fehler machen kann. Wenn er doch welche macht, ist das Programm in der Lage angemessen mit diesen umzugehen und fortzufahren. Kritische Fehler dürfen nicht auftreten.
  • Zufriedenstellung: Das System soll angenehm zu Nutzen sein, sodass die Benutzer zufrieden mit dessen Nutzung sind; Sie mögen es.

Effektivität

Für die Effektivität und damit auch für die Gebrauchstauglichkeit, spielt der Funktionsumfang eines Produktes eine große Rolle. Man könnte nun also den Schluss ziehen, dass mehr Funktionsumfang immer die Effektivität eines Produktes erhöht, da sich dadurch die Vollständigkeit erhöht.

In seinem Buch „Software-Ergonomie“ stellt Herczeg jedoch fest, dass nur die Funktionalität entscheidend ist, die vom Benutzer über die Benutzerschnittstelle wahrnehmbar und steuerbar ist. Die Benutzeroberfläche muss dem Anwender das Vorhandensein von Funktionen also aktiv kommunizieren, sodass sie von diesem wahrgenommen werden kann. Weiterhin muss die Benutzeroberfläche ihn auch beim Verständnis und Einsatz, also der Steuerung, unterstützen. Setzt eine Benutzeroberfläche Teile dieser Konzepte nicht hinreichend um, kann sie im Sinne der Gebrauchstauglichkeit nicht effektiv genannte werden.

Das bedeutet auch, dass Funktionalität, deren bloße Existenz vom Nutzer erst durch das Studium von Literatur oder Dokumentation entdeckt werden kann, ebenfalls nicht als effektiv gelten kann. Nicht einmal dann, wenn die Funktionalität für den Nutzer sichtbar, aber eben nicht ohne weiteres begreifbar und anwendbar ist. Genau diese Situation trifft man bei textuellen Programmierumgebungen aber häufig an. Es gibt zwar Unterstützungsfunktionen wie Autovervollständigungen, diese machen die Funktionalität aber nur in kleinem Maße besser sichtbar. Der Programmierer muss noch immer ungefähr wissen, wonach er sucht.

Außerdem hilft sie eben nur bei der Exploration benannter Funktionen und Variablen, nicht aber bei der Schwierigkeit der Formulierung der Semantik eines konkreten Problems in die Syntax einer formalen Programmiersprache. Visuelle Programmierumgebungen sind dagegen in der Lage ihre Funktionen als Bibliothek von visuellen Elementen zur Verfügung zu stellen, sodass der Benutzer diese durchsuchen kann, ohne eine textuelle Dokumentation zu Rate ziehen zu müssen. In visuellen Programmiersprachen ist es daher leichter, dem Nutzer die gesamte Funktionalität auch zugänglich zu machen.  

Effizienz

Die Effizienz für textuelle Programmiersprachen allgemein zu beschreiben ist sehr schwer, da sich der benötigte Aufwand für ein bestimmtes Ziel schon durch die eingesetzte Programmiersprache stark ändern kann. Dies ist vor allem den starken Unterschieden in den Abstraktionsstufen der Programmiersprachen geschuldet. Java oder C# bietet dem Programmierer eine sehr hardwareferne Semantik an, die bei Problemen auf hohen Abstraktionsebenen in der Regel schneller zum Ziel führen, als bei Sprachen wie C oder C++.

Des Weiteren ist die Effizienz auch von den Anwendern abhängig: Wie geübt sind sie mit dem Produkt? Sind sie vertraut mit der bei textuellen Programmiersprachen eingesetzten Syntax und gewohnt an Recherche in Dokumentationen? Ist dies alles der Fall, kann die Genauigkeit und Vollständigkeit im Sinne der Effektivität sehr hoch sein. Daher ist dann auch die Effizienz sehr hoch.

Wenig überraschend lautet das Fazit also, dass geübte Programmierer mit Programmiersprachen sehr effizient arbeiten können. Wie sieht es aber mit Einsteigern oder „Gelegenheitsnutzern“, also solchen Benutzern, die skriptbasierte Konfiguration verwenden möchten und nach der Initialkonfiguration nur hin und wieder Anpassungen vornehmen möchten? Für solche Nutzer besteht zum einen ein sehr hoher Initialaufwand und zum anderen müssen sie bei jeder Änderung erneut in Dokumentationen nachschlagen. Visuelle Programmierung hingegen bietet in der Regel eine geringere Genauigkeit und Vollständigkeit. Wenn die visuelle Programmierumgebung richtig gestaltet ist, ist dafür aber aufgrund der besseren Effektivität auch der eingesetzte Aufwand kleiner.

Bei sehr großen Programmen läuft die visuelle Programmierung allerdings Gefahr, wieder mehr Aufwand als Nutzen zu bieten, gerade wenn die Programmierumgebung keine Möglichkeiten einer Modularisierung bietet, nehmen bereits mittelgroße Programme schnell viel Platz auf dem Bildschirm ein. Der Entwickler kann dann schnell den Überblick verlieren und der Aufwand steigt.

p2fSimply ist daher ideal zum Einstieg in print2forms. Dies ist vor allem dann der Fall, wenn Sie wenig oder kaum Erfahrung mit Programmiersprachen haben. Aber auch als Programmierer kann p2fSimply den Einstieg in print2forms erleichtern: Schreiben Sie einige kleine Skripte mit p2fSimply, schauen Sie sich den generierten Code an und lernen Sie so print2forms-Gateway-Skripte schneller kennen.  

Zufriedenstellung

Eine positive Einstellung zum Produkt kann auf verschiedene Arten erreicht werden. Grundvoraussetzung ist natürlich, dass der Nutzer das Ziel, mit dem er das Produkt verwendet, überhaupt erreichen kann. Die Software muss also vollständig genug sein, damit der Einsatz des Produkts für einen Benutzer überhaupt Sinn ergibt.

Ist dies allerdings gegeben, werden zur Produktverbesserung Aspekte der Ergonomie, und hier vor allem auch die Zufriedenstellung, immer wichtiger. Dies gilt besonders, wenn das Produkt viele Konkurrenten hat. Die Ästhetik und besonders der erste Eindruck einer Software ist also oft genauso wichtig, wie dessen Funktionalität. Macht die Software neugierig oder verschreckt die Oberfläche oder Komplexität neue Nutzer sogar? Hier kann ein entscheidender Vorteil bei den visuellen Programmiersprachen gesehen werden.  

Erlernbarkeit

Die Erlernbarkeit gibt an, wie lange ein Benutzer braucht, um ein gewisses Verständnis und Effektivität im Umgang mit dem Softwaresystem zu erlangen. Jedes System muss von neuen Benutzern zunächst erlernt werden, daher ist die Erlernbarkeit einer der fundamentalsten Aspekte der Benutzbarkeit.

Aus den Betrachtungen der potenziellen Vorteile visueller Programmiersprachen bezüglich ihrer Effektivität kann direkt an die Erlernbarkeit angeknüpft werden. Da visuelle Programmierumgebungen in der Regel spezialisierte Ziele verfolgen, ist deren Funktionsumfang oft kleiner als bei einer universal einsetzbaren textuellen Programmiersprache. Allein dieser geringere Umfang verbessert bereits die Erlernbarkeit.

Dazu kommen noch die Möglichkeit, unmögliche Kombinationen von Funktionen per Design bereits auszuschließen. Hat eine visuelle Programmiersprache eine Menge von Funktionen, die miteinander inkompatibel sind, so können die visuellen Elemente, die diese Funktionen repräsentieren, visuell so gestaltet werden, dass offensichtlich wird, dass diese nicht zusammenpassen. Man stelle sich ein System vor, bei dem Funktionalität durch rechteckige Blöcke dargestellt wird. Jeder dieser Blöcke verfügt über kleine Nasen, an denen Verbindungen herausgezogen werden können, die auf Nasen anderer Blöcke gezogen werden können. Dadurch werden die Übergänge zwischen diesen Blöcken vom Benutzer spezifiziert und der Programmfluss vorgegeben. Diese Nasen könnten nun durch verschiedene Farben und Formen symbolisieren, dass zwischen diesen Verbindungen möglich sind. Kompatible Blöcke hätten also gleichfarbige und -förmige Nasen während inkompatible verschiedenfarbige und -förmige hätten.

Selbstverständlich muss ein Benutzer auch diese Symbolik zunächst erlernen. Dadurch, dass diese Informationen aber direkt in seiner Arbeitsumgebung integriert sind, steigt die Wahrscheinlichkeit, dass der Nutzer diese wahrnimmt, enorm. Bei textuellen Programmiersprachen ist solche Informationen hingegen häufig in Dokumentation verborgen  

Erinnerbarkeit

Generell lassen sich Benutzer in drei grobe Kategorien einteilen: Einsteiger, Gelegenheitsnutzer und Experten. Während für die Einsteiger die Erlernbarkeit besonders wichtig ist, sind Gelegenheitsnutzer solche Anwender, die das System zwar immer wieder verwenden, aber nicht in so kleinen Zeitabständen wie Experten es tun. Gelegenheitsnutzer befinden sich in der Situation, sich immer wieder neu zurechtfinden zu müssen, da vieles bei seltener Wiederholung schnell vergessen wird. Die Erinnerbarkeit einer Programmierumgebung kann durch visuelle Programmierung deutlich gesteigert werden. Einmal durch die Einschränkung der Menge an Funktionalität, aber auch dadurch, dass das menschliche Gehirn visuelle Eindrücke länger speichert. Die geringere Anzahl möglicher Kombinationsmöglichkeiten verschiedener Funktionsteile verringert ebenfalls die Menge an Informationen, die ein Anwender erneut abrufen muss.  

Fehlertoleranz

Bei textueller Programmierung kann der Anwender eine große Zahl an Fehlern machen. Je nach Programmiersprache und Entwicklungsumgebung werden diese früh oder spät erkannt. Skriptsprachen arbeiten beispielsweise oft mit dynamischer Typisierung, was die Programmierung zwar beschleunigt, aber auch dazu führt, dass ein großer Teil von Fehlern, die bei statischer Typisierung zu Kompilerfehlern führen, erst zur Laufzeit auftreten.

Generell sollten Fehler, wenn sie nicht vermieden werden können, so früh wie möglich auftreten, da dies die Kosten zur Fehlerbeseitigung senkt. In visuellen Programmiersprachen ist es möglich, inkompatible Elemente gar nicht erst kombinierbar zu machen. Dies kann durch verschiedene Verbindungen erreicht werden oder die Elemente springen beim Versuch, sie zu verbinden, wieder auseinander oder ähnliches. Die genaue Ausprägung der Implementierung hängt hier stark von der visuellen Programmiersprache selbst ab. Aber auch eine andere Klasse von Fehlern kann in visueller Programmierung elegant eliminiert werden: Syntaxfehler sind in textuellen Programmiersprachen allgegenwärtig. Der Benutzer muss sich beim Schreiben seines Programms sehr genau an die formalen Regeln der Sprache halten, damit das Programm beim Start nicht direkt mit einem Fehler abbricht.

In visuellen Programmiersprachen stellen die visuellen Elemente und ihre Verbindungen die Syntax dar. Unter der Voraussetzung, dass jedes visuelle Element an sich immer eine gültige Syntax in der visuellen Sprache darstellt, braucht die Programmierumgebung nur noch sicherstellen, dass es keine ungültigen Verbindungen zwischen den Elementen gibt, um zu jedem Zeitpunkt ein Programm mit gültiger Syntax zu garantieren.

print2forms/skripte/textuellvsvisuell.txt · Zuletzt geändert: 2018-02-21 15:10 (Externe Bearbeitung)