(22.07.05 09:05)

Gute Software, die den Anwender in seiner Arbeit unterstützt, setzt das Verständnis der Ziele des Anwenders voraus. Nicht die zu erfüllende Aufgabe steht im Vordergrund sondern das Ziel; was will der Anwender erreichen, ist hierbei die entscheidende Frage. Denn die zu erledigende Aufgabe ist alleine Mittel zum Zweck und nicht der Zweck selbst.

Dieser Unterschied mag zunächst sehr fein erscheinen, ist aber von grosser Wichtigkeit, wenn wir nützliche, zuvorkommende, fürsorgliche Anwendungen entwerfen wollen, die von Menschen für Menschen gemacht sind. Solche Programme sind für den Anwender da, leiten und unterstützen ihn in und bei seiner Arbeit. Sie sind echte Werkzeuge, die ihm helfen, seine Ziele effektiv und effizient zu erreichen. Damit das gelingt, müssen wir – wie gesagt – die Ziele der Anwender unserer Programme verstehen.

Ausgehend von dieser Erkenntnis, liegt es auf der Hand, warum die Aufgabenanalyse, bei der die von einem Anwender zu erbringenden Tätigkeiten erhoben, untersucht und beschrieben werden, nicht unbedingt dazu geeignet ist, um gute und nützliche Software in unserem Sinne zu erhalten. Die Fokussierung auf die für die Erfüllung einer Aufgabe notwendigen Tätigkeiten birgt das hohe Risiko, dass bestimmte Aufgaben zwingend als Teil der Lösung angesehen werden, obwohl sie überhaupt nicht benötigt werden, um ein bestimmtes Ziel zu erreichen. Dieses Problem besteht akut zum Beispiel dann, wenn eine neue Anwendung auf der Basis bereits bestehender (Konkurrenz-)Produkte analysiert wird ober übliche Lösungsansätze, da bekannt und gewohnt, unreflektiert übernommen werden.

Natürlich ist es wichtig, die Aufgaben zur Erfüllung der Anwenderziele zu kennen. Aber das setzt eben voraus, dass wir die Ziele vorab identifiziert haben. Sonst laufen unsere Lösungen nämlich Gefahr, in althergebrachten Lösungsmustern gefangen zu bleiben, die den Zielen der Anwender nicht dienlich sind und aufgrund technischer Fortschritte auch nicht mehr nötig wären.

Nehmen wir als Beispiel das Speichern von Dokumenten in einer Textverarbeitung: Diese Tätigkeit ist für den Anwender heutiger Textverarbeitungsprogramme eine unerlässliche Aufgabe, aber nur, weil sie die einzige Möglichkeit ist, um sein eigentliches Ziel zu erreichen, nämlich den geschriebenen Text auch zu einem späteren Zeitpunkt wieder verwenden zu können. Aus Sicht des unbedarften Anwenders ist es unverständlich, warum ein Dokument überhaupt gespeichert werden muss. Es handelt sich hier schlicht um eine sachfremde Aufgabe, deren Sinn nur versteht, wer begreift, dass es in einem Computer zwei Arten von Speicher gibt: den begrenzten flüchtigen Speicher und den heute im Überfluss vorhandenen Hintergrundspeicher, der die dauerhafte Speicherung von Daten erlaubt; ein hübsches Implementierungsmodell für Softwareentwickler und Techniker, ein mehr als lästiges Detail für den Anwender. Der Umgang mit dem Dateisystem und eben auch das Speichern eines Dokumentes sind Aufgaben, die lediglich eine – und nicht eben die beste - Möglichkeit darstellen, dem Anwender bei der Erreichung seines Ziele zu helfen, seine Daten dauerhaft verfügbar zu haben. Heute existieren hierzu wesentlich bessere Möglichkeiten; die Aufgaben wechseln, das Ziel bleibt.

Daraus folgt eine weitere wichtige Einsicht: Ziele sind wesentlich stabiler als Aufgaben. Und weil das so ist, wäre es unvernünftig, sich nur auf die zu erfüllenden Aufgaben zu konzentrieren, ohne sich vorgängig vertieft mit den tatsächlichen Zielen auseinander zu setzen.

Die Fokussierung auf die Ziele kann uns auch bei einem anderen Problem helfen, das viele Softwareprodukte immer wieder heimsucht: Featurewahn. Wie ich bereits früher in der GUI-Irrtum angemerkt habe, leiden viele Produkteverantwortliche und Entwickler unter dem Zwang, Anwendungen mit umfangreichen Leistungsmerkmalen zu versehen, in der Hoffnung, ein nützliches Produkt zu erhalten: Wir packen einfach genug Features in die Software, weil es cool ist, und wir es können. Leider finden das die Benutzer solcher Anwendungen überhaupt nicht cool! Die haben nämlich handfeste Ziele und keine Lust, sich in diesem Featurehaufen zurecht finden zu müssen, um ihre Arbeit effektiv und effizient erledigen zu können. Die Entscheidung, ob eine bestimmte Funktion umgesetzt werden soll, darf daher nie primär technisch oder aufgabenorientiert erfolgen. Die Entscheidung sollte darauf beruhen, ob eine bestimmte Funktion, ein Leistungsmerkmal direkt oder indirekt dazu beiträgt, die Ziele der Anwender zu erfüllen.

Zielgetriebene Entwicklung ist für mich ein entscheidender Erfolgsfaktor bei der Gestaltung und Umsetzung menschenfreundlicher Software. Sie befähigt uns, die Anwender ernst zu nehmen und so dafür zu sorgen, dass diese sich auf die Erreichung ihrer Ziele konzentrieren können und unsere Anwendungen sie hierbei bestmöglich unterstützen.

-nemo :-)

Über diesen Artikel diskutieren.

Zugriffe heute: 1 - gesamt: 5190.




API-Entwurf ist DSL-Entwurf Keine Softwarepatente :-)

Druckbare Version