it-swarm-eu.dev

Ist es besser, eine verbotene Aktion zu verhindern oder eine Fehler- / Erklärungsmeldung anzuzeigen?

Es gibt mehrere Beispiele, daher werde ich ein bestimmtes auswählen, um die Frage zu fokussieren.

Angenommen, ein Benutzer kann bestimmte Merkmale (oder Berechtigungen) haben:
Admin, virtuell, extern, finanziell usw.

Um die Sache zu verkomplizieren, haben Benutzer auch unterschiedliche Lizenzen - Premium, Regular, Limited usw.

Sie können wahrscheinlich sehen, wohin das führt:
Angenommen, ein Benutzer mit einer eingeschränkten Lizenz kann kein Administrator sein oder über finanzielle Berechtigungen verfügen.

Möglichkeiten:

  • Der Administrator geht zum Profil von, sagen wir Zack, und sieht, dass er ihm keine finanziellen Genehmigungen erlauben kann.
    Das Problem ist, dass dem Administrator nicht klar ist, warum dies so ist (die Lizenzinformationen und die Berechtigungen werden nicht am selben Speicherort angezeigt, und selbst wenn dies der Fall wäre, müsste der Administrator die Systemregel von kennen "Keine finanziellen Berechtigungen für eingeschränkte Benutzer")
  • Der Administrator sieht alle Berechtigungen (angenommen, sie werden über Kontrollkästchen implementiert) aktiviert und erhält nur beim Klicken eine Fehlermeldung, die darüber informiert, warum der Vorgang abgelehnt wurde.
    Jetzt ist der Grund klar, aber der Administrator musste einen Klick "verschwenden", um das herauszufinden.

Gibt es eine Möglichkeit, die Aktion zu verhindern und zu erklären, warum? Würde eine deaktivierte Steuerung mit einem Tooltip funktionieren? Irgendwelche besseren Ideen?

Um andere Beispiele kurz zu erwähnen: Nehmen wir an, Sie haben ein interaktives Diagramm und können die meisten Punkte im Diagramm verschieben, einige müssen jedoch stationär sein. Sie können sie anders zeichnen, um anzuzeigen, dass sie nicht verschoben werden können (ohne zu erklären, warum), oder Sie können den Benutzer versuchen lassen, sie zu ziehen, und dann eine Fehlermeldung anzeigen.

27
Dan Barak

Abhängig von der Anwendung zeige ich oft nicht die Teile der Seite an, auf die ein Benutzer keinen Zugriff hat. Es hört sich so an, als hätten Benutzer die Rechte anderer Benutzer geändert, sodass diese Methode möglicherweise nicht funktioniert. Ich würde empfehlen, eine Fehlermeldung anzuzeigen, wenn Sie ein deaktiviertes Eingabeelement anzeigen. Benutzer können frustriert sein, wenn sie eine Aktion nicht ausführen können, die sie voraussichtlich ausführen können. Wenn es nur deaktiviert ist, werden sie wahrscheinlich nicht verstehen, warum und werden es einfach im Programm entfernen. Ebenso möchten Sie sicherstellen, dass die Nachricht so einfach wie möglich und auf den Punkt ist. Lange Fehlermeldungen werden oft ignoriert.

12
LoganGoesPlaces

Bevor Sie einen Teil der Benutzeroberfläche für eine Funktion, auf die der Benutzer keinen Zugriff hat, vollständig ausblenden, sollten Sie Folgendes berücksichtigen:

  1. Wird der Benutzer von dieser Funktion erfahren?
  2. Werden sie viel Zeit damit verbringen, danach zu suchen?
  3. Wäre es besser, wenn Sie es zusammen mit einem Tooltip oder einem anderen Indikator in einem "deaktivierten" Zustand halten, damit sie erfahren, warum es nicht verfügbar ist?

Hier ist ein einfaches Beispiel. Angenommen, Ihre Anwendung enthält die Option zum Drucken. Sollten Sie den Druckmenübefehl vollständig ausblenden, wenn kein Drucker verfügbar ist? Verursacht dies Verwirrung und Zeitverschwendung, wenn der Benutzer alle Menüs durchsucht und sich schließlich an Ihr technisches Support-Team wendet, um den Befehl "Drucken" zu finden? Wird Ihr technisches Support-Team überhaupt verstehen, dass dieser Benutzer den Befehl "Drucken" nicht sieht? Treten unbeabsichtigte Nebenwirkungen auf, wenn beispielsweise der Drucker angeschlossen ist, sich jedoch aus Stromgründen ausgeschaltet hat?

Generell glaube ich, dass Benutzer in vielen Fällen, insbesondere in Fällen, in denen manchmal eine Option verfügbar ist, am besten von einer deaktivierten Option oder sogar einer aktivierten Option bedient werden, die eine Fehlermeldung anzeigt, warum die Option nicht derzeit verfügbar.

35
Joel Spolsky

Ich sehe zwei verschiedene Ansätze.

Wenn die Aktionen aufgrund von Sicherheit deaktiviert sind, würde ich tatsächlich versuchen, sie zu entfernen, wenn dies überhaupt möglich ist. Einfach mit Menüelementen oder den meisten Symbolleistenschaltflächen.

Wenn die Aktionen deaktiviert sind, weil Sie eine billigere Version der Software haben, würde ich sie vorhanden halten, aber deaktivieren. Auf diese Weise wird dem Benutzer mitgeteilt, dass "Sie dies haben könnten, wenn Sie mehr bezahlen", während er beim Entfernen nicht wissen würde, was ihm fehlt. Ich sehe das Popup "Sie können dies aufgrund der Lizenz nicht tun" als schlechte Benutzeroberfläche an, da der Benutzer nicht erkennen kann, ob er eine Aktion ausführen kann, ohne tatsächlich zu versuchen, die Aktion auszuführen.

8
shemnon

Ein anderer Ansatz besteht darin, die Aktion überhaupt nicht zu zeigen.

Stack Exchange ist ein gutes Beispiel dafür. Wenn ich keine "Bearbeitungs" -Rechte für die Beiträge anderer Personen habe, wird kein "Bearbeitungs" -Link angezeigt überhaupt. Das heißt, ich versuche nicht, darauf zu klicken und frage mich, warum es nicht funktioniert.

Dies funktioniert möglicherweise nicht unter allen Umständen, aber in Ihrem Beispiel werden die Optionen/Links "Admin" und "Finanzen" für eingeschränkte Benutzer nicht angezeigt - selbst in den Admin-Bildschirmen für diese Benutzer. Wenn der Benutzer in einen "regulären" oder "Premium" -Nutzer geändert wurde, werden diese Optionen/Links angezeigt.

Sie können dann in Betracht ziehen, den Benutzertyp an einer halb prominenten Stelle anzuzeigen, damit der Administrator daran erinnert werden kann, warum bestimmte Optionen/Links nicht sichtbar sind!

7
ChrisF

Wie in anderen Antworten angegeben, sollte die Aktion überhaupt nicht angezeigt werden, wenn der Benutzer keine Berechtigung zum Ausführen einer Aktion innerhalb des Systems hat (wie in, keine Bearbeitungs-/Administratorrechte).

In Fällen, in denen Aktionen aufgrund des Anwendungsstatus deaktiviert sind (kann eine schreibgeschützte Datei nicht bearbeiten, kann nicht kopieren/einfügen, wenn kein Text ausgewählt ist, der Benutzer hat eine Testversion der Software, der einige Funktionen fehlen usw.) Ich persönlich Ich denke, die Aktion sollte angezeigt sein, mit einem visuellen Hinweis darauf, dass die Aktion derzeit nicht ausgeführt werden kann. Beachten Sie, dass ich nicht "deaktiviert" sage, denn wenn der Benutzer versucht diese Aktion ausführt, sollte er herausfinden können, warum dies nicht möglich ist. Auf diese Weise kann ein Benutzer sehen, dass die Aktion deaktiviert ist, aber er kann auch eine Meldung erhalten, in der erläutert wird, warum.

Ich würde vorsichtig sein, wenn ein Benutzer eine Testversion/unterlizenzierte Version einer App hat, der Funktionen fehlen. Wenn Sie beispielsweise eine ISO-Lese-/Schreib-App hatten, die keine CDs rippen würde, wenn Sie nicht dafür bezahlt hätten, könnten Sie die Option "CD rippen" anzeigen, den Benutzer jedoch nicht ausführen lassen. Wenn Ihre Anwendung jedoch in den High-End-Versionen (z. B. Visual Studio) über Funktionen mit ganzen Suiten verfügt, kann es für den Benutzer frustrierend sein, all diese Dinge anzuzeigen, aber nicht zuzulassen. Ich möchte meine IDE] nicht öffnen und Datenbank-, Netzwerk-, integrierte UML-, Test-, Profiling- usw. Suiten anzeigen, wenn ich weiß, dass ich nur zum Schreiben und Erstellen von Projekten berechtigt bin .

6
Carson Myers

Meine Faustregel lautet: Wenn eine Aktion aufgrund von Berechtigungen einem Benutzer nicht zur Verfügung steht, ist sie nicht sichtbar. Wenn eine Aktion aufgrund eines temporären Kontexts nicht verfügbar ist (diese Schaltfläche "Speichern" hat keine Bedeutung, bis der Benutzer etwas zum Speichern eingegeben hat), ist sie deaktiviert.

"Berechtigungen" umfasst sowohl "Administratorbenutzer gegen reguläre Benutzer" als auch "Premiumlizenz gegen billige Lizenz". Nicht verwendbare UI-Elemente sind unübersichtlich - nicht die Möglichkeit, für Ihre zusätzlichen Funktionen zu werben.

Viele Antworten scheinen das richtig zu machen, wollten nur alles mit einer von Nielsens Heuristiken zusammenfassen, die genau darauf hinweisen. Es sagt aus:

Fehlervermeidung Noch besser als gute Fehlermeldungen ist ein sorgfältiges Design, das verhindert, dass ein Problem überhaupt auftritt. Beseitigen Sie entweder fehleranfällige Bedingungen oder suchen Sie nach ihnen und stellen Sie den Benutzern eine Bestätigungsoption zur Verfügung, bevor sie sich zur Aktion verpflichten.

Quelle: http://www.useit.com/papers/heuristic/heuristic_list.html

4
Nacho

Ich mag shemnons Antwort wirklich. Ich würde seinen zweiten Fall verlängern und Igns referenziertes Nielsen-Gebot anwenden; Wenn der Benutzer eine günstigere Lizenz hat, würde ich die Option deaktivieren und das Auswahlobjekt durch ein Symbol ersetzen, das den deaktivierten Status der Option weiter verdeutlicht.

Etwas wie

  • O Option 1
  • O Option 2
  • alt text Option 3
  • O Option 4

Da sich dieses vermutete Produkt noch in der Entwicklung befindet, würde ich auf derselben Seite auch mindestens eine Erklärung zum Lizenzniveau des Benutzers einfügen. Auf diese Weise erkennt der Administrator, dass die Lizenzstufe des Benutzers gleichzeitig mit dem Administrator die Systemvariablen betrachtet, die direkt von dieser Lizenz betroffen sind.

Das Schöne an Software ist, dass Sie nur die Informationen aufrufen müssen.

Bearbeiten: Außerdem kann ich ein rollenorientiertes Berechtigungsschema verwenden, bei dem Berechtigungen Rollen und nicht einzelnen Benutzern zugewiesen werden können. Dadurch wird häufig eine Menge Aufwand für die Mikromanagement einzelner Benutzerberechtigungen verringert.

  1. Der Administrator öffnet den Rollenbearbeitungsbildschirm.
  2. Der Administrator wählt möglicherweise ein Optionsfeld für die niedrigste Lizenz aus, auf die die Rolle angewendet wird.
  3. Berechtigungen, die für die ausgewählte Rolle nicht verfügbar sind, sind deaktiviert und mit "x" versehen.
  4. Der Administrator wählt Berechtigungen aus den verbleibenden aktiven Optionen aus.
  5. Später, auf dem Benutzerverwaltungsbildschirm oder im Benutzerprofil, sieht der Administrator eine Liste der Rollen, die der Benutzer basierend auf der Lizenz haben kann, und der Administrator wählt eine oder mehrere aus.
1
Matt

Im Allgemeinen lautet meine Faustregel wie folgt (und ich muss einen guten Grund haben, sie zu brechen): Wenn die Argumentation hinter der deaktivierten Komponente aus dem Kontext stammt oder dass das Verständnis für den Benutzer aus anderen Gründen einfach sein sollte, dann ist das Blockieren die bevorzugte Lösung. Andernfalls ist der Benutzer möglicherweise frustriert, wenn er versucht, herauszufinden, warum dies so ist, und schlimmer noch, er wird sich wahrscheinlich nicht an den Grund erinnern (falls er es herausgefunden hat), wenn er das nächste Mal darauf stößt.

1
Assimiz

Um Ihre spezielle Frage zu beantworten, möchten Sie ausreichende Informationen anzeigen, damit die Benutzer die Einschränkungen verstehen können, bevor sie auf klicken. In Ihrem Beispiel sollten Sie jeden Benutzer mit seiner Lizenz als schreibgeschütztes Feld auflisten, das visuell (z. B. durch Nähe) mit den Steuerelementen verbunden ist, um seine festzulegen Berechtigungen. Sie können das Lizenzfeld auch dynamisch mit der Bezeichnung für die Berechtigungen kombinieren (z. B. "Berechtigungen (mit eingeschränkter Lizenz):").

Nicht anwendbare Berechtigungen sollten wahrscheinlich deaktiviert, nicht aktiviert und nicht ausgeblendet werden. Wenn sich die Unordnung lohnt, fügen Sie Inline-Text, Hover-Text/Tooltips oder einen Link hinzu, um zu erklären, warum die Berechtigungen von der Lizenz nicht zugelassen werden (Inline-Text kann die deaktivierten Steuerelemente ersetzen, wenn die Berechtigungen aufgelistet sind, z. B. „Admin , Finanziell für eingeschränkte Benutzer nicht zulässig “).

Die allgemeine Regel lautet "Deaktivieren", wenn der Benutzer in der Benutzeroberfläche etwas tun kann, um den Befehl zu aktivieren. Deaktiviert bedeutet "Sie können diesen Befehl ausführen, aber gerade nicht so, wie es ist." Die Art und Weise, wie die Dinge sind, beinhaltet die aktuelle Auswahl. Wenn Sie die Deaktivierung verwenden, sollte ein eindeutiger Hinweis vorhanden sein, damit Benutzer verstehen, warum die zugehörigen Befehle für einige Objekte deaktiviert sind.

Verwenden Sie Meldungsfelder anstelle der Deaktivierung, wenn keine Möglichkeit besteht, dem Benutzer den Grund für die Deaktivierung im Voraus klar zu machen, vorausgesetzt, er verfügt über durchschnittliche Kenntnisse der Domäne. Tooltips für deaktivierte Steuerelemente sind eine gute Idee, reichen jedoch möglicherweise nicht in allen Fällen aus.

Verwenden Sie das Ausblenden, wenn der Benutzer unabhängig von seiner aktuellen Position in der Organisation nie Zugriff auf den Befehl hat, unabhängig davon, was er in der Benutzeroberfläche tut. Beispielsweise werden Aktionen, die vom Benutzer aufgrund seiner Berechtigungen nicht autorisiert wurden, einfach nicht angezeigt. Es ist unübersichtlich und frustrierend, in diesem Fall Deaktivierungs- oder Meldungsfelder zu verwenden. Für die Benutzer sind Aktionen, für die sie nicht die Rechte haben, nicht ihre Aufgabe (andernfalls hätten sie Zugriff). Daher sollten die zugehörigen Steuerelemente einfach nicht in ihrer Benutzeroberfläche vorhanden sein. In Handbüchern zu Dokumentations- oder Organisationsverfahren wird den Benutzern möglicherweise mitgeteilt, wie solche Aktionen ausgeführt werden (z. B. "Ihr Vorgesetzter erstellt neue Kundenkonten für Sie" oder "Sie benötigen finanzielle Berechtigungen zum Bearbeiten von Konten; wenden Sie sich an Ihren Administrator, um die Genehmigung zum Aktualisieren Ihrer Berechtigungen zu erhalten." ”).

Ich habe wichtige Details unter Steuern Ihrer Kontrollen .

1

Einige der oben genannten Punkte sind großartig, und ich möchte sie nicht noch einmal wiederholen, aber ...

In diesem Fall hätte ich alle verfügbaren Optionen sichtbar. Die Optionen, die in Ihren Regeln nicht anwendbar waren, sollten deaktiviert (abgeblendet) sein. Es ist allgemein bekannt, dass ein Benutzer einer beliebigen Schnittstelle erkennt, dass wenn etwas ausgegraut ist, dies normalerweise bedeutet, dass es für einen Regelsatz, der gerade ausgeführt wird, nicht anwendbar ist.

Ein Tooltip stimmt perfekt mit einer deaktivierten Schaltfläche überein. In einigen speziellen, fortgeschritteneren Fällen, wie dem oben genannten mit Lizenzen, wenn der Benutzer ohne die richtige Lizenz einen Bereich angezeigt hat, für den eine höhere Lizenz erforderlich ist, wurde die Art der Schaltfläche vollständig in "Jetzt aktualisieren!" Geändert. Anstatt es auszublenden, wäre es besser, Werbung für das Produkt zu machen und den Punkt zu vermitteln.

Wenn der Administrator es sehen würde, würde er offensichtlich sehen, dass die finanzielle Option abgeblendet ist, mit einem Tooltipp, der erklärt, warum.

Ich kenne den Kontext Ihres Problems nicht vollständig, möglicherweise handelt es sich nicht einmal um ein Produkt. Aber basierend auf dem, was ich verstanden habe, ist das meine Reaktion darauf.

1
user708

Der Windows UXGuide verfügt über eine Reihe von Ressourcen, mit denen Sie entscheiden können, ob Fehler angezeigt oder ungültige Eingaben verhindert werden sollen. Insbesondere gibt es einen Abschnitt , der die folgende Aussage über ui macht.

Geben Sie keine Fehlermeldungen aus, wenn Benutzer wahrscheinlich keine Aktion ausführen oder ihr Verhalten als Ergebnis der Meldung ändern. Wenn keine Aktion ausgeführt werden kann oder das Problem nicht signifikant ist, unterdrücken Sie die Fehlermeldung.

Auch diese Diskussion erinnert mich ein wenig an das, was Karl Shifflett in seinem Blog-Beitrag mit dem Titel "Fort Knox Business Objects (yes/no)", in dem er die Vor- und Nachteile abwägt, ob Geschäftsobjekte zugelassen werden sollen ein ungültiger Zustand oder nicht und wie sich diese Entscheidung auf die Benutzerinteraktion auswirkt.

Persönlich neige ich dazu, einen Benutzer daran zu hindern, ungültige Einträge vorzunehmen oder Steuerelemente zu deaktivieren, die Aktionen wie Schaltflächen ausführen, aber bei einigen Steuerelementen, die komplexe Texteingaben beinhalten, zeige ich Inline-Warnungen an, die weniger aufdringlich sind als Meldungsfelder, aber dennoch angezeigt werden der Punkt über.

0
jpierson

Beides tun: Backend und Benutzeroberfläche

Dies sollte wirklich keine Entweder-Oder-Situation sein. In den anderen Antworten sind gute Gründe aufgeführt, warum nicht verfügbare Optionen angezeigt werden, und gute Gründe, sie nicht anzuzeigen. Aber die Sache ist, wie auch immer, Sie müssen es im Backend richtig handhaben. Sie müssen die Benutzereingaben und Berechtigungen weiterhin ordnungsgemäß überprüfen, auch wenn Sie der Meinung sind, dass die einzige Eingabe, die sie geben können, eine ordnungsgemäße ist.

Dies gilt in zweifacher Hinsicht für jede webbasierte Anwendung, bei der der Benutzer eine deaktivierte Steuerung/Option/Eingabe künstlich aktivieren kann. Lassen Sie nicht zu, dass die Verwendung von Firebug die Fähigkeit Ihrer App übertrifft, zu steuern, was ich tun kann. Und in Fällen, in denen versucht wird, eine Option zu verwenden, die nicht verfügbar sein sollte, stellen Sie sicher, dass Sie das Ereignis protokollieren.

0
Jeffrey Blake