Was ist eine schönere Art, den Prozess des "Idiot Proofing" einer Software zu beschreiben?


13

Idiot Proofing bedeutet für mich nur, sicherzustellen, dass der Benutzer keine Software beschädigen kann, selbst wenn er es versucht. Wenn beispielsweise ein Wert aus einem Textfeld gelesen und in einen doppelten Wert konvertiert wird und die zugrunde liegende Software idiotensicher ist, kommt es nicht zum Absturz, wenn der Benutzer einen nicht doppelten Wert eingibt.

Ich habe kürzlich einen Entwicklungsplan erstellt und eines der Elemente wurde als "Idiot Proof UI" bezeichnet. Die Leute, die ich diese Software entwickle, täuschen scherzhaft einen Verstoß gegen den Begriff vor, aber ich kann sehen, wo dieser Begriff die Leute tatsächlich aufregen würde.

Was gibt es Schöneres, als das zu sagen?


23
Nennen Sie es ID-10T Proofing
Jarrod Nettles

2
Lol, ich habe den 1337 erkannt, als ich den ID-10T gegoogelt habe. Ich scheitere ...
sooprise

13
Diese Frage erinnert mich an eines meiner Lieblingszitate: "Das Programmieren ist heute ein Wettlauf zwischen Software-Ingenieuren, die sich bemühen, größere und bessere idiotensichere Programme zu erstellen, und dem Universum, das versucht, größere und bessere Idioten zu produzieren. Bisher gewinnt das Universum. " ~ Rich Cook
KallDrexx

3
Wie sieht es mit Basic Engineering aus?
jk.

4
"Nichts kann narrensicher gemacht werden, weil Dummköpfe so verdammt genial sind."
M.Sameer

Antworten:


27

Wenn Sie eine "idiotensichere Benutzeroberfläche" als Zeitplanelement einbinden, versuchen Sie lediglich, Ihre Software nachträglich zu verbessern. Jedes gut konzipierte System validiert seine Eingaben und gibt den Benutzern eine klare Anleitung. Es wird nicht als eigenständiges Element in den Zeitplan aufgenommen (das dann entfernt werden muss, wenn die unvermeidliche Krise eintritt).

Wenn es sich aber auch um ein diskretes Element handeln muss (ich weiß, wie manche Unternehmen über die Planung denken), sollte "Idiotproof-Benutzeroberfläche" in "Eingabevalidierungsbibliothek" geändert und an den Anfang des Zeitplans verschoben werden.


2
+1. Wenn Sie versuchen, eine Eingabevalidierung nachträglich hinzuzufügen, haben Sie bereits ziemlich viel verloren. Besser gesagt: "Die Software muss überall mit ungültigen Eingaben zurechtkommen." Wie genau mit ungültigen Eingaben "elegant" umgegangen wird, hängt stark davon ab, was die Software an diesem bestimmten Punkt tut. Bei sehr einfachen Benutzeroberflächen (denken Sie vielleicht an einen Geldautomaten) kann es sogar möglich sein, ungültige Eingaben unmöglich zu machen .
ein Lebenslauf vom

14
+1. Idiotensicherheit ist keine Aufgabe. Idiotensicher ist eine Konsequenz guten Designs.
S.Lott

4
Idiotensicherheit ist ein fortwährender Prozess - weil das Universum immer genialere Idioten hervorbringt
Steven A. Lowe

Obwohl es sich als falsch und redundant anhört, sollten Sie berücksichtigen, dass sowohl die Schnittstellendesigner als auch die Betatester die Baupläne und das allgemeine Design der Software kannten und möglicherweise nicht erkennen (übersehen), dass etwas, das ihnen vollkommen offensichtlich erscheint, tatsächlich ist für einen gewöhnlichen Benutzer völlig verwirrend. "Testen und Debuggen von UI-Entwurfsentscheidungen" könnte man das nennen. Die Eingabevalidierung ist eine Sache. Der Benutzer muss verstehen, was an einer anderen Stelle eingegeben werden soll.
SF.

An alle Upvoter: ... was immer du tust, du wirst immer etwas vergessen. Software ist so komplex, dass es fast unmöglich ist, ein Team zu haben, das auf Anhieb alles "perfekt" macht. Aus diesem Grund sind Tests erforderlich. Um Fehler und Auslassungen oder gar Dinge zu entdecken, an die niemand gedacht hat. Eine solche "idiotensichere Benutzeroberfläche" ist genau das, was erforderlich ist.
dagnelies

10

Validierung von Benutzereingaben Ich hätte gedacht, dass dies ein Fachbegriff ist. Ich sehe jedoch nichts Falsches an Idiotensicherheit, wenn diese in internen Dokumenten verwendet wird.


3
Sie hatten mich bei "Benutzereingabevalidierung". Idiotensicherheit ist ein unprofessioneller Begriff, unabhängig davon, wo er verwendet wird.
Robert Harvey

2
Was auch immer Sie tun, schreiben Sie es nicht.
JeffO

6

Härten ist ein gutes Wort. Wenn Sie gefragt werden, teilen Sie ihnen mit, dass die erste Übergabe von Software in der Regel für ideale Szenarien geschrieben wurde, und wie bei Stahlwerkzeugen muss die Software für den rauen Alltagsgebrauch durch echte Kunden "gehärtet" werden.

Robustifizierung ist ein weiteres gutes Wort dafür - Sie machen den Code robust gegenüber den Herausforderungen, denen echte Kunden ausgesetzt sind.

Beide Wörter klingen cool und industriell, geben weder den Benutzern noch den Programmierern die Schuld und bringen den Punkt auf den Punkt.


Übrigens, hier ist Metrowerks 'altes Maskottchen Arnold, der uns Mac-Programmierern geholfen hat, unseren Code mit einem Wärmebehandlungsofen, einer Schmiede, einem Amboss und einem kleinen Vorschlaghammer zu härten und zu stabilisieren:


Härten bezieht sich im Allgemeinen auf Fehlertoleranz der zugrunde liegenden Hardware - oder Beständigkeit gegen Gammastrahlen ;-) Robustheit kann eine Menge Dinge bedeuten
Steven A. Lowe

@Steven: Na ja. Aber dies ist für die Kommunikation mit einem vermutlich nicht-technischen Publikum gedacht, und es geht wirklich darum, wie die Aufgabe "gedreht" werden kann, damit sie für diese Leute schmackhaft ist.
Bob Murphy

Das macht Sinn; Das nicht-technische Publikum hat wahrscheinlich Fernsehwerbung für "gehärtete" Laptops gesehen. Also werden sie denken, es ist in Ordnung, Ihre Software 3 Fuß auf Beton fallen zu lassen ;-)
Steven A. Lowe

@Steven: Ja, und wenn sie den neuesten Toshiba-Laptop-Werbespot gesehen haben, werden sie auch feststellen, dass die Zombie-Apokalypse entsteht, wenn sie Ihnen nicht die Zeit und die Ressourcen zum Härten der Software geben. B ^)
Bob Murphy

4

Defensive Programmierung

Ist das, was mir beigebracht wurde. Damals, als wir unsere eigenen Stücke aus Holz schnitzen mussten.

Wenn Sie ein PC sein möchten, nennen Sie es "vorausschauende" Programmierung.


4

Als ich lernte, nannten wir es Kugelsicherheit .

Die meisten anderen Euphemismen, die ich gelesen habe, treffen jedoch auch zu.


3

Wie wäre es mit einem fehlertoleranten System oder einer fehlertoleranten Benutzeroberfläche?


3

"Idiot Proofing" sollte aus beidem bestehen

  • Entwerfen der Benutzeroberfläche so, dass sie benutzerfreundlich ist und den Benutzer dazu veranlasst, Daten so einzugeben, wie es die Programmierer erwarten

  • Testen der Benutzeroberfläche, um festzustellen, ob die Schnittstelle durch Eingabe unerwarteter Datenwerte beschädigt werden kann.

Beide Schritte werden möglicherweise im Entwicklungsplan angezeigt, wenn das Design von einem Experten für Benutzererfahrung überprüft wird und der gelieferte Code von einem Tester überprüft wird, um sicherzustellen, dass ungültige Daten korrekt verarbeitet werden (für Ihre Anwendung bedeutet dies "korrekt").


Sie haben die gestellte Frage nicht beantwortet.
Robert Harvey

@ Robert - ich glaube, ich habe. Die schönere Möglichkeit, "Idiot Proofing" zu sagen, ist entweder "Überprüfung des Designs zur Verbesserung der Benutzerfreundlichkeit" oder "Prüfung, ob die Benutzeroberfläche ungültige Daten verarbeitet", je nachdem, welchen Sinn Sie für "Idiot Proofing" haben.
Justin Cave

OK, das macht Sinn.
Robert Harvey

2

Idiotensicherheit umfasst weit mehr als nur eine einfache Eingabevalidierung. Ich würde so etwas nicht einmal in seine Definition aufnehmen.

Die Eingabevalidierung ist ein Prozess, bei dem Sie Benutzerdaten bereinigen und validieren, um sowohl illegale als auch unsinnige Werte zu beseitigen. Dies sollte immer mit Informationen geschehen, die von außerhalb Ihres Programms stammen, um das Offensichtliche zu beseitigen und sich vor Angriffen (z. B. SQL Injection-Angriffen) zu schützen.

Ich würde Idiotensicherheit als Logik betrachten, die den Benutzer davon abhält, sich durch andere rechtliche Mittel versehentlich großen Schaden zuzufügen.

Das rmZurückweisen des Befehls rm -rf /und Schließen von Varianten hat beispielsweise nichts mit Validierung oder Richtigkeit zu tun. Es ist ein vollkommen gültiger Befehl. Leider handelt es sich um einen Befehl, mit dem Sie alle Daten von allen Laufwerken in Unix / Linux löschen können. Ein Idiot, der dies prüft, würde diesen Befehl ablehnen und vorschlagen rm -rf --i-really-mean-this /, oder, wenn er sich im interaktiven Modus befindet, den Benutzer nach einer Warnung eine positive Antwort eingeben zu lassen.

Alles, was das System zerstört, sollte idiotensicher sein. Alles, was zu einer möglichen Verlegenheit führen könnte, könnte auch ein Kandidat sein (z. B. "Sind Sie sicher, dass Sie diese E - Mail ohne Anhang senden möchten, obwohl Sie eine in Ihrem Text erwähnt haben?" Und "Sind Sie sicher, dass Sie diese E - Mail an senden möchten gesamte Firma? ")

Idiotensicherheit ist eine Zusammenarbeit zwischen der Qualitätssicherung (um der beste Idiot zu sein) und der Entwicklung (um all diese Szenarien zu antizipieren und um sie herum zu entwerfen).

Da für eine freundliche Synonym kann ich vorschlagen , „destruktive Code-Pfadanalyse“ oder „Benutzer - Feedback für kritische Operationen ermöglichen“. Wie auch immer Sie es nennen mögen, Sie sollten es wirklich so früh wie möglich im Entwurfsprozess starten.


1

"Sanity Checking" funktioniert ziemlich oft ...


3
Für mich bedeutet "Sanity Checking" ungefähr dasselbe wie "Assert": Sicherstellen, dass der interne Zustand korrekt ist. Nicht wirklich dasselbe wie die Validierung externer Eingaben.
Mason Wheeler

@Mason, ich betrachte es als eine Überprüfung des Systemzustands auf gültige Eingaben, die sinnvoll sind. Wenn ich zum Beispiel prüfe, ob das Enddatum nach dem Startdatum liegt, prüfe ich zusätzlich auf Müll, etc. Ich sehe auch Ihren Standpunkt und stimme Ihnen zu.
Marlon


1

"Fehlerbehandlung" oder "Eingabevalidierung" wären andere Begriffe, die ich für das, was Sie beschreiben, verwenden würde. Kugelsicher wäre ein weiterer Begriff, den ich in einigen Kreisen verwenden könnte, da die Idee hier darin besteht, die Software robust genug zu machen, um mit fast allem fertig zu werden. Rock Solid wäre ein weiterer Slang-Ausdruck, den ich mir vorstellen könnte, wenn jemand ihn auch hier verwenden möchte.


1

"Worst-Case-Szenarioprüfung". Weil wir alle als Entwickler wissen, dass es getan wird, wenn es getan werden kann . Sie müssen nur darauf vorbereitet sein, mit Ihrer Software den schlimmsten Fall zu bewältigen.

Sicherheitsmaßnahmen schützen Benutzer nicht nur vor Angriffen von außen, sondern auch vor sich selbst. Wir leben in einer unvollkommenen Welt mit unvollkommenen Nutzern.


1

Vergolden ist die höfliche (und sehr positiv klingende) Begriff , den ich verwenden , wenn es um die Verbesserung der End-User - Interface Erfahrung in irgendeiner Weise (GUI oder andere).

Wie Sie sagen, ist der größte Teil dieses Prozesses das Idiot-Proofing, zusammen mit Verbesserungen des Designs oder des Workflows (denken Sie an die Bestätigung des Endbenutzer-Feedbacks).

Die Idee dabei ist, dass Sie diesen Begriff im Arbeitsumfeld frei verwenden können und er sowohl vom Management als auch von den Benutzern als wertvoller Prozess (einmal abgeschlossen) angesehen wird, auch wenn er einige Zeit in Anspruch nimmt (und daher im Allgemeinen etwas Geld kostet).

Viele andere Begriffe, die sich auf diesen Prozess beziehen (oft das Ende des Zyklus), lassen ihn so klingen:

  • impliziert Benutzer (oft Management ;-) sind dumm
  • ist schwer zu erreichen
  • hat wenig Vermögen

Indem ich Gold mit dem Prozess in Verbindung bringe (Metall bedeutet normalerweise eher "Wert" als "Kosten"), habe ich gesehen, dass sich der Prozess in einigen Manager-Einstellungen von Aufwand zu Investition gewandelt hat.

Es ist so, als würde man offen sagen, dass dieses klobige Stück Stahl bis jetzt noch kein Schmuck ist. Aber wenn es einmal plattiert ist ... dann ist es wertvoll.


Ich sehe, wie dieser Begriff für Ihr Publikum funktioniert. Für die meisten Manager wäre die Vergoldung das erste, was aus dem Projekt herausgeschnitten wird. Mit anderen Worten, die nicht notwendigen Teile.
Gilbert Le Blanc

Merkwürdig - Ich sehe den Begriff "Vergoldung" als Zeichen dafür, dass Sie Ihre Zeit damit verschwenden, etwas zu tun, das keine funktionale Verbesserung bietet . Das Sicherstellen gültiger Eingaben usw. bietet eine Funktionsverbesserung und ist daher (meiner Definition nach) keine Vergoldung.
ChrisF

Das Detail ist, dass das Vergolden die Software-Interna nicht verbessert. es verbessert nur den äußeren Aspekt davon. Ich benutze es, wenn Nicht-Techniker speziell involviert sind, weil es sich nicht auf einen bestimmten Teil des Zyklusendeprozesses bezieht. Die Leute verstehen es als, sobald die Vergoldung erfolgt ist, es ist schön, einfach zu bedienen und hat einen Mehrwert. Es ist nicht nur ein einfaches Stück Software.
Moliad

Nach meiner Erfahrung wird die Vergoldung normalerweise verwendet, um Software mit unnötigen Funktionen zu beschreiben , dh als Synonym für Bloatware .
Mark Booth

Ja, habe gerade ein wenig recherchiert und festgestellt, dass der Begriff in der Literatur manchmal so verwendet wird (danke für den Kommentar). Das Komische ist, dass an vielen Orten, an denen ich gearbeitet habe, das Idiotensichern in diesem Sinne als Vergoldung angesehen wurde (es hängt wirklich von der Art der Arbeit ab, die Sie machen, denke ich).
Moliad

1

Am häufigsten in Bezug auf Herstellungsprozesse verwendet, aber ich denke, eine wirklich gute Passform ist Poka-Yoke :

"[poka yo-ke] ist ein japanischer Begriff, der" ausfallsicher "oder" fehlersicher "bedeutet.

Es wurde ursprünglich als Baka-Joch beschrieben, aber da dies "idiotensicher" (oder "idiotensicher") bedeutet, wurde der Name in "milderes Poka-Joch" geändert.

Im weiteren Sinne kann sich der Begriff auf jede Verhaltensformungsbeschränkung beziehen, die für ein Produkt entwickelt wurde, um eine fehlerhafte Bedienung durch den Benutzer zu verhindern. "


1

Ein gängiger Begriff in größeren Läden ist auch Quality Assurance (QA) .

Es handelt sich um einen allgemeinen, vagen Begriff, den Sie innerhalb Ihres Release-Zyklus an Ihre eigene Bedeutung anpassen können.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.