Welche Fehler die Anwender machen, und wie können Sie die Anwendung aktualisieren, um Sie zu behandeln?[geschlossen]

softwareengineering.stackexchange https://softwareengineering.stackexchange.com/questions/1752

Frage

In der Tat, diese Frage ist über Vorsichtsmaßnahmen getroffen werden, um die Verbesserung der Qualität Benutzer Erfahrung und reduzieren Sie vermeidbare support-Anrufe.

War es hilfreich?

Lösung

Ein Mangel an geeigneten input-Validierung ist eines dieser Dinge, die dazu neigt, führen ganz schnell für Benutzer zu tun "schlechte Dinge", die mit Ihrer Anwendung, wenn es wirklich so sein sollte behandelt durch den Programmierer.

Ich habe gesehen, legacy apps, bei denen Benutzer wurden geschult, um:

  • keine Eingabe von Apostrophen in Namen
  • geben Sie alle anderes symbol als a-z0-9,
  • stellen Sie sicher, dass keine Leerzeichen vor oder nach dem text, den Sie eingegeben haben
  • überprüfen Sie, dass eine korrekt formatierte E-Mail Adresse eingegeben werden in dem email Feld, weil sonst die weiteren mailings dass der Benutzer, was in das Feld und schlägt fehl
  • stellen Sie sicher, dass "http://"vor web-Adressen

etc etc

Alle der oben genannten Probleme sind diejenigen, die sollte behandelt werden, indem ein Anwendungsentwickler.Wenn Ihr input-Validierung ist im wesentlichen "stellen Sie sicher, dass der Benutzer weiß, was format sollte dieses Feld in und Vertrauen Sie dem, was Sie eingegeben haben, richtig ist", dann unerwartete Dinge gebunden sind, finden Ihren Weg in die app.Abgesehen von den offensichtlichen Auswirkungen auf die Sicherheit, die Benutzer Fehler machen.Als Programmierer produzieren wir oft unsere besten Produkte von bücken nach hinten, um sicherzustellen, dass der Benutzer nicht Holen Sie es falsch, egal wie sehr Sie es versuchen!

Andere Tipps

Ich habe einmal einen Kundenunterstützungsanruf erhalten, weil meine App gerade verschwunden ist. Es stellte sich heraus, dass sie eine weitere App darüber eröffneten.

... Ich beschloss, nicht sicherzustellen, dass dies nicht wieder vorhanden ist, da es sich bei dem Benutzer des Computer -Analphabetismus befasste das Problem und nicht die App. Alles, was ich hätte tun können, um es zu beheben, hätte zu einer schlechten Benutzererfahrung für andere geführt.

Fast jedes Programm, das ich schreibe, wird streng aus der Befehlszeile angezeigt. Ich habe auch einige schickere Dinge geschrieben, die als CLI -Schnittstellen begann und schnell zu etwas mehr Muschel entwickelt wurden als alles andere.

Also kann ich nur für das sprechen, was ich weiß. Hier sind einige allgemeine Probleme mit Befehlszeilenprogrammen:

Viel zu viele Optionen

Versuchen Sie, die Optionen nicht auf einen Bildschirm auf einem 80x25 -Frame -Puffer zu begrenzen, wenn Sie einen Compiler oder einen Linien -Editor schreiben, wenn Sie die Optionen auf einen Bildschirm begrenzt haben, wenn --help oder /? ist bestanden. Es ist vollkommen in Ordnung, mehr Optionen als das zu haben, aber sie in Subkategorien aufzuteilen. Zum Beispiel

foo --help

foo --help option_name

Keine langen Optionen

Es ist viel einfacher zu erinnern foo --attach_to [argument] --volatile --verbose als es ist zu erinnern foo -a [arg] -v +V. Dies ist nicht immer möglich, aber in den meisten Fällen ist es das.

Keine Eingabevalidierung

Fast jede Plattform verfügt über mehrere Bibliotheken, die beim Analysieren und Validieren von Argumenten getestet, getestet und wahr sind. Fast jede Plattform hat einen ausprobierten, getesteten und echten Lexer, der die Eingaben von einer CLI validiert. Verwenden Sie eine, die andere oder beides. Wenn Ihr Programm aufgrund von etwas, das ein Benutzer zur Verfügung stellte, durch Null teilt oder sich dividiert, ist dies nur peinlich.

Möglicherweise brauchen Sie nicht so Komplexes wie Lexer, vielleicht können Sie die Zeichenfolge nur tokenisieren, wenn Sie an bestimmten Orten in einer bestimmten Reihenfolge Dinge mit bestimmten Dingen erwarten.

Ich habe tatsächlich einen Fehlerbericht erhalten, in dem eine Ganzzahl erwartet wurde und jemand tippte f*** my life in Zitaten. Ich habe dieses Programm nicht geschrieben, ich hatte das Unglück, es zu erben.

Kein "Prozess der Währung"

Ermöglichen Sie den erfahrenen Benutzern, leicht herauszufinden, wie Sie Ihr Programm viel mehr Lärm herausholen können, als die meisten Menschen tolerieren würden, aber standardmäßig, nur ernsthafte und kritische Dinge zu drucken. Ich kann dir nicht sagen, wie oft ich abfeuern musste strace Nur um zu erkennen, dass etwas Segfault hat, weil es in einem Null -Dateistrom betrieben wurde.

Sie können auch Behauptungen einwickeln, damit sie über NDEBug oder andere bedeutet, dass immer noch etwas gedruckt oder protokolliert wird, das der Benutzer finden kann.

Apropos Protokolldateien, stellen Sie sicher, dass alles, was Sie darin platzieren, (zumindest ein wenig) für eine andere Person als Sie sinnvoll ist. Wenn der Beginn jedes Eintrags ein Unix -Epochen -Datum ist, werden Sie bei jemandem, der Ihnen wirklich helfen möchte, den Fehler reproduzieren.

Kein "Bug Buddy" im Debug -Modus

Viele Programme bieten einen "Debug" -Schalter, der zusätzliches Geschwätz darüber bietet, was mit dem Programm los ist, aber nur sehr wenige bieten Folgendes an:

  • Eine Möglichkeit, einen Bericht automatisch über HTTP/HTTPS zu senden und eine Art Service -Referenznummer zu erhalten
  • Eine Möglichkeit, nützliche Informationen in eine Datei zu geben, die könnte als Anhang an eine Support -Anfrage gesendet werden

Oder vielleicht hören Sie gerne Leute, die die folgenden telefonisch lesen:

Es heißt unerwartete Bedingung bei Zero Eff oh vier null oh .... ok lemme las dir das zurück ...

Übermäßig komplexe Konfigurationsdateien

Rechtfertigen Sie nicht die Notwendigkeit, eine Konfiguration als Ausrede zu analysieren, um viel syntaktischer Zucker zu begeistern. Versuchen Sie, ein Format zu verwenden, das die Leute tatsächlich kennen, auch wenn es beim Parsen zusätzliche Arbeit bedeutet. Ich versuche, das INI -Stilformat nach Möglichkeit zu verwenden. Sie wären erstaunt, was Sie mit einem einfachen Schlüsselwörterbuch durchführen können.

Keine Konfigurationsdateien

Lassen Sie Leute keine Shell -Skripte oder Stapeldateien schreiben, nur um Ihr Programm zu verwenden, es sei denn, es sollte ein Tool für jede Aufgabe sein. Geben Sie mir ein Mittel, um auf eine Datei zu zeigen, die meine üblichen Optionen enthält, und liefern nur ein paar zusätzliche Argumente.

Kein 'nasse Boden' Schilder

Wenn eine Funktion den Benutzer in Schwierigkeiten bringen könnte (möglicherweise ist es für fortgeschrittene Benutzer da), markieren Sie ihn eindeutig als solche. Wenn jemand, wenn jemand fett fitt, etwas inputiert oder etwas vergisst, haben Sie außerdem einen sehr freundlichen Link zur Online-Dokumentation aus Druck. Möglicherweise haben Sie es mit jemandem zu tun, der Ihr Programm über KVM verwendet und nicht schneiden und einfügen kann.

Wenn möglich, verwenden Sie (dies mit der Eingabevalidierung zusammenfällt) den Google Apporach:

Meinst du foo -bar filenme, du hast nur foo -bar getippt

Bieten einen Ausweg aus destruktiven Anweisungen

Das Ziel ist es, dem Benutzer zu sagen, warum es nicht funktioniert hat und ihn noch ein paar Mal ausprobieren und gleichzeitig sicherstellen, dass Sie nichts potenziell zerstörerisch tun, es sei denn, der Benutzer möchte, dass Sie dies wirklich tun. Lassen Sie einen Schalter, der beispielsweise "nörgeln" ausschaltet -Y oder /Y Aber sonst einen Ausweg für jemanden, der einfach "fette Finger" hat.

Ich vergesse wahrscheinlich ein paar Hinweise. Ich beschäftige mich häufig damit, da es sehr, sehr schwierig ist, die Schnittstelle mit niedriger Ebene für etwas Intuitives für die meisten Menschen zu machen, um Fehler zu vermeiden.

"Sind Sie sicher, dass Sie diese Datei/den Datensatz löschen möchten? Ja/Nein". Klick auf Ja und erhielt dann einen Anruf, den es "fälschlicherweise" auf die Schaltfläche Red Löschen geklickt hat und diese Daten zurück benötigen :)

Ich habe keine Lust, bestimmte Break-/Fix -Beispiele zu bekommen, ist genauso wichtig wie das Erkenntnis:

  • Benutzer lesen Ihr Handbuch nicht und sehen sich Ihre Tutorials nicht an. Sie lernen Ihre Software durch Erkundung.

Wenn sie durch diese Erkundung etwas brechen, ist es Ihre Aufgabe, sie entweder vor der Gefahr zu warnen oder zu verhindern, dass es überhaupt nicht geschieht. Ich kann mich nicht erinnern, wo ich es jetzt gesehen habe, aber im Hinterkopf versuche ich immer zu. "Machen Sie das Richtige einfach"Für den Benutzer meiner Software.

Wenn Sie auf Beispielen bestehen:

  • Der Benutzer konnte einen Kleinbuchstabennamen eingeben, der den Integrationscode brechen / behoben hat, indem die Eingabevalidierung durchgeführt wurde
  • Der Benutzer konnte nach der Ausführung einer Aktion / behoben klicken, indem nur die richtigen Schaltflächen angezeigt wurden.
  • Der Benutzer konnte X versehentlich tun / behoben, indem er sie warnen, dass er im Begriff ist, X zu machen.

Sehen Sie, wohin das geht? :)

Hier ist eine, die ich diese Woche gehört habe. Ein Benutzer fragt nach einer Funktion "Senden Sie mir eine Benachrichtigung, wenn ein Ereignis auftritt". Einfach genug und der Entwickler läuft voran und implementiert es. Sicher, die erste Frage hätte "Was versuchen versuchen, durch diese Benachrichtigung zu klären?". Das werde ich nicht darauf eingehen. Ein paar Tage später hält der Benutzer beim Entwickler vorbei und fragt: "Ich habe diese Benachrichtigung bekommen. Was soll ich damit machen?".

Ich erinnerte mich an diesen Dilbert -Comic und schlug dem Entwickler vor, "schreiben Sie eine App, um herauszufinden, was der Benutzer mit dieser Benachrichtigung anfangen sollte".

Wie Mpeterson sagte, ist der Benutzer in seinem Fachgebiet sehr wettbewerbsfähig. Sie denken einfach nicht wie ein Softwareentwickler oder Designer.

Ich denke nicht, dass Benutzer dumm sind. Sie wollen Ihr oder ein Programm überhaupt nicht verwenden. Alles, was sie wollen, ist, ihre Sachen zu erledigen. Helfen Sie ihnen und verhindern Sie, dass ihnen Schaden auf dem Weg passiert.

Eine gute Benutzeroberfläche zu haben und eine angemessene Lernerfahrung zu bieten, kann zu verhindern, dass Benutzer schlechte Dinge tun.

  • Gute Benutzeroberflächen sollten reibungslos sein.

    Anstatt ein Dialogfeld (eine teure Operation und eine, die die Benutzer nach einer Weile ignorieren), um ein Löschen zu bestätigen, führen Sie das Löschen durch und bieten eine Möglichkeit, sich rückgängig zu machen.

  • Gute Benutzeroberflächen sollten auffindbar sein.

    Obwohl das Band in Microsoft Office viel Flak bekommt, weil es alte Nutzer von Word dazu zwingt, ihre Wege zu ändern, ist das Band ein leuchtendes Beispiel dafür, wie Sie eine Schnittstelle entdeckbar machen können (dh leicht zu entdecken).

  • Gute Benutzeroberflächen wie guter Code sollten selbsterklärend sein.

    Niemand liest das Handbuch. Das einzige Handbuch, das ich jemals zu Lesen brachte, war eine PowerPoint-Präsentation mit Schritt-für-Schritt-Tanksachen der Software. Ich habe diese mit Videotools wie Camtasia gesehen, aber Powerpoints sind besser, da Sie leicht nach hinten und weiterhin die Schritte weiterleiten können.

Benutzer machen keine Fehler. Die Fehler liegen bei dem Programmierer, der keine nutzbare Schnittstelle erstellt hat.

Mit jeder Version auch Usability -Tests!

Lizenziert unter: CC-BY-SA mit Zuschreibung
scroll top