Quelle est une meilleure façon de décrire le processus de «Idiot Proofing» un logiciel [fermé]


13

Pour moi, Idiot Proofing signifie simplement s'assurer que l'utilisateur ne peut pas casser un logiciel même s'il a essayé. Par exemple, si une valeur est lue dans une zone de texte et convertie en double, si le logiciel sous-jacent est à l'épreuve des idiots, il ne se cassera pas si l'utilisateur tape une valeur non double.

J'ai récemment rédigé un calendrier de développement et l'un des éléments a été nommé "Interface utilisateur à l'épreuve des idiots". Les gens que je construis avec ce logiciel ont simulé en plaisantant le terme, mais je peux voir où ce terme pourrait réellement déranger les gens.

Quelle est la meilleure façon de le dire?


23
Appelez-le, épreuve ID-10T
Jarrod Nettles

2
Lol, j'ai réalisé le 1337 en cherchant sur Google ID-10T. moi échoue ...
sooprise

13
Cette question me rappelle l'une de mes citations préférées: "La programmation d'aujourd'hui est une course entre les ingénieurs logiciels qui s'efforcent de créer des programmes plus grands et meilleurs à l'épreuve des idiots, et l'Univers essayant de produire des idiots plus grands et meilleurs. Jusqu'à présent, l'Univers gagne. " ~ Rich Cook
KallDrexx

3
comment sur l'ingénierie de base?
jk.

4
"Rien ne peut être rendu infaillible, parce que les imbéciles sont sacrément ingénieux."
M.Sameer

Réponses:


27

Si vous incluez "UI idiot preuve" comme un élément de calendrier, alors vous essayez simplement d'ajouter de la qualité par la suite à votre logiciel. Tout système bien conçu validera ses entrées et donnera des conseils clairs aux utilisateurs, bien sûr, ce n'est pas quelque chose qui est mis sur le calendrier en tant qu'élément discret (qui est ensuite soumis à la suppression lorsque le crunch inévitable frappe).

Alternativement, s'il doit s'agir d'un élément discret (je sais comment certaines organisations pensent de la planification), "Interface utilisateur à l'épreuve des idiots" devrait être changé en "Bibliothèque de validation d'entrée" et déplacé au début de la planification.


2
+1. Si vous essayez d'ajouter une sorte de validation d'entrée après le fait, vous avez déjà pratiquement perdu. Mieux vaut avoir comme point permanent dans la spécification, "le logiciel doit gérer gracieusement les entrées invalides n'importe où". La façon exacte de gérer "avec élégance" les entrées invalides dépend beaucoup de ce que fait le logiciel à ce stade particulier. Pour les interfaces utilisateur très simples (pensez peut-être à un guichet automatique), il pourrait même être possible de rendre les entrées invalides impossibles .
un CVn le

14
+1. La protection contre les idiots n'est pas une tâche. Anti-idiot est une conséquence d'une bonne conception.
S.Lott

4
La protection contre les idiots est un processus continu - parce que l'univers continue de fabriquer des idiots toujours plus ingénieux
Steven A. Lowe

Bien que cela puisse sembler erroné et redondant, prenez en compte que les concepteurs d'interface et les bêta-testeurs connaissaient les plans et la conception générale du logiciel, et peuvent simplement ne pas réaliser (ignorer) que quelque chose qui leur semble parfaitement évident est en fait complètement déroutant pour un utilisateur commun. «Tester et déboguer les décisions de conception de l'interface utilisateur» est ce que l'on pourrait appeler. La validation des entrées est une chose, faire comprendre à l'utilisateur ce qui doit être entré, où en est une autre.
SF.

À tous les électeurs: ... quoi que vous fassiez, vous oublierez toujours quelque chose. Le logiciel est si complexe qu'il est presque impossible d'avoir une équipe qui rend tout "parfait" dans un premier coup. C'est pourquoi les tests sont nécessaires. Pour détecter les défauts et les omissions, ou même des choses auxquelles personne n'a pensé. Une telle «interface utilisateur idiote» est exactement ce qui est requis.
dagnelies

10

La validation des entrées utilisateur aurait été un terme professionnel. Je ne vois rien de mal à la preuve idiote si elle est utilisée dans les documents internes.


3
Vous m'avez eu à "validation de saisie utilisateur". La protection contre les idiots est un terme non professionnel, quel que soit l'endroit où elle est utilisée.
Robert Harvey

2
Quoi que vous fassiez, ne le mettez pas par écrit.
JeffO

6

Le durcissement est un bon mot. Si quelqu'un le demande, dites-lui que le premier logiciel de transmission est généralement écrit pour des scénarios idéaux, et comme les outils en acier, le logiciel doit être «durci» pour une utilisation quotidienne approximative par de vrais clients.

La robustification est un autre bon mot pour cela - vous rendez le code robuste face aux types de défis que les vrais clients vont lui lancer.

Les deux mots semblent cool et industriels, ne blâmez pas les utilisateurs ou les programmeurs et faites passer le message.


BTW, voici la vieille mascotte de Metrowerks, Arnold, le gars qui nous aidait à programmer les Mac à durcir et à renforcer notre code avec un four de traitement thermique, une forge et une enclume et un petit marteau à traîneau:


le durcissement fait généralement référence à la tolérance aux pannes du matériel sous-jacent - ou à la résistance aux rayons gamma ;-) la robustesse peut signifier beaucoup de choses
Steven A. Lowe

@Steven: Eh bien, oui. Mais c'est pour la communication à ce qui est vraisemblablement un public non technique, et la question est vraiment de savoir comment "faire tourner" la tâche afin qu'elle soit acceptable pour ces gens.
Bob Murphy

ça a du sens; le public non technique a probablement vu des publicités télévisées pour des ordinateurs portables «durcis». Donc, ils penseront que c'est ok de laisser tomber votre logiciel 3 pieds sur du béton ;-)
Steven A. Lowe

@Steven: Oui, et s'ils ont vu la dernière publicité pour ordinateur portable Toshiba, ils se rendront également compte que s'ils ne vous donnent pas le temps et les ressources pour durcir le logiciel, cela provoquera l'apocalypse Zombie. B ^)
Bob Murphy

4

Programmation défensive

C'est ce qu'on m'a appris. À l'époque où nous devions couper nos propres morceaux de bois.

Si vous voulez être un PC, appelez cela une programmation "anticipative".


4

Quand j'apprenais, nous l' appelions pare-balles .

La plupart des autres euphémismes que j'ai lus s'appliquent également.


3

Que diriez-vous du système ou de l'interface utilisateur «tolérant aux pannes»?


3

La "protection contre les idiots" devrait comprendre les deux

  • concevoir l'interface utilisateur de manière à ce qu'elle soit conviviale et amène l'utilisateur à saisir les données de la manière attendue par les programmeurs, et

  • tester l'interface utilisateur pour déterminer si l'interface peut être rompue en entrant des valeurs de données inattendues.

Les deux étapes peuvent raisonnablement apparaître dans le calendrier de développement où la conception est vérifiée par un expert en expérience utilisateur et où le code livré est vérifié par un testeur pour garantir que les données non valides sont traitées correctement (pour tout ce qui signifie «correctement» pour votre application).


Vous n'avez pas répondu à la question qui vous a été posée.
Robert Harvey

@Robert - Je crois que oui. La meilleure façon de dire «idiot proofing» est soit de «revoir la conception pour améliorer la convivialité», soit de «tester que l'interface gère les données invalides» selon le sens de «idiot proofing» que vous voulez dire.
Justin Cave

OK, ça a du sens.
Robert Harvey

2

La protection contre les idiots implique bien plus que la simple validation des entrées. Je n'inclurais même pas une telle chose dans sa définition.

La validation des entrées est un processus par lequel vous nettoyez et validez les données utilisateur pour éliminer les valeurs illégales / absurdes. Cela doit toujours être fait avec toute information provenant de l'extérieur de votre programme afin d'éliminer les évidents ainsi que de vous protéger contre les attaques (par exemple les attaques par injection SQL).

Je considérerais que l'idiot-proofing est un ensemble de logique pour empêcher l'utilisateur de lui causer accidentellement de grands dommages par des moyens autrement légaux.

Par exemple, faire rmrejeter la commande rm -rf /et fermer les variantes n'a rien à voir avec la validation ou l'exactitude. C'est une commande parfaitement valide. Malheureusement, c'est une commande qui pourrait et peut effacer toutes vos données de tous vos disques sous Unix / Linux. Une mise à l'épreuve idiote rejetterait cette commande et suggérerait rm -rf --i-really-mean-this /, ou en mode interactif, que l'utilisateur tape une réponse affirmative après un avertissement.

Tout ce qui est destructeur pour le système doit être à l'abri des idiots. Tout ce qui pourrait causer de l'embarras pourrait également être un candidat (par exemple, "êtes-vous sûr de vouloir envoyer cet e-mail sans pièce jointe même si vous en avez mentionné un dans votre texte?", Et "êtes-vous sûr de vouloir envoyer cet e-mail au toute l'entreprise? ")

L'Idiot-proofing est une collaboration entre l'AQ (essayant d'être le meilleur idiot) et le Développement (essayant d'anticiper tous ces scénarios et de les concevoir autour d'eux).

En ce qui concerne un synonyme plus convivial , puis-je suggérer une "analyse destructrice du chemin de code" ou "activer les commentaires des utilisateurs pour les opérations critiques". Quoi que vous l'appeliez, vous devriez vraiment le démarrer le plus tôt possible dans le processus de conception.


1

"Sanity Checking" a tendance à bien fonctionner assez souvent ...


3
Pour moi, "vérification de santé mentale" signifie à peu près la même chose que "affirmer": s'assurer que l'état interne est correct. Pas vraiment la même chose que la validation des entrées externes.
Mason Wheeler

@Mason, je pense que cela vérifie l'état du système, à tous les points, pour une entrée valide qui a du sens. Par exemple, en vérifiant que la date de fin est postérieure à la date de début, en plus de vérifier l'entrée de déchets, etc. Je vois aussi votre point de vue et je suis d'accord avec vous.
Marlon


1

«Gestion des erreurs» ou «validation des entrées» seraient d'autres termes que j'utiliserais pour décrire ce que vous décrivez. Bulletproof serait un autre terme que je pourrais voir utilisé dans certains cercles car l'idée ici est de rendre le logiciel suffisamment robuste pour gérer presque tout. Rock solid serait une autre expression d'argot que je pourrais imaginer que quelqu'un veuille utiliser ici aussi.


1

"Epreuvage de scénario le plus défavorable". Parce que, en tant que développeurs, nous savons tous que si cela peut être fait, alors ce sera fait . Il vous suffit donc d'être prêt à gérer la pire des situations avec votre logiciel.

Les mesures de sécurité ne sont pas seulement un moyen de protéger les utilisateurs contre les cyber-invasions extérieures, mais aussi contre eux-mêmes. Nous vivons dans un monde imparfait avec des utilisateurs imparfaits.


1

Le placage à l'or est le terme poli (et à consonance très positive) que j'utilise lorsque je parle d'améliorer l' expérience de l' interface utilisateur de quelque manière que ce soit (GUI ou autre).

La protection contre les idiots, comme vous le dites, est la plus grande partie de ce processus, ainsi que les améliorations de conception ou de flux de travail (pensez à la reconnaissance des commentaires des utilisateurs finaux).

L'idée ici est que vous pouvez utiliser ce terme librement dans l'environnement de travail et qu'il est considéré comme un processus précieux (une fois terminé) par la direction et les utilisateurs, même si cela peut prendre un certain temps (et donc généralement coûter de l'argent).

de nombreux autres termes liés à ce processus (souvent en fin de cycle) le font ressembler à ce processus:

  • implique que les utilisateurs (souvent la gestion ;-) sont stupides
  • est difficile à réaliser
  • a peu de valeur nette

En associant l'or au processus (le métal équivaut généralement à la «valeur» plutôt qu'au «coût»), j'ai vu le processus passer de la dépense à l'investissement dans la mentalité de certains gestionnaires.

C'est comme déclarer ouvertement que jusqu'à ce que cela soit fait, ce morceau d'acier maladroit n'est pas encore un bijou. Mais une fois que c'est plaqué ... alors c'est précieux.


Je vois comment ce terme fonctionne pour votre public. Pour la plupart des gestionnaires, le placage à l'or serait la première chose coupée du projet. En d'autres termes, les parties non nécessaires.
Gilbert Le Blanc

Étrange - je vois le terme "placage à l'or" comme signifiant que vous perdez votre temps à faire quelque chose qui n'offre aucune amélioration fonctionnelle . Assurer des entrées valides , etc. ne offre une amélioration fonctionnelle et est donc (par ma définition) non plaqué or.
ChrisF

le détail est que le placage à l'or n'améliore pas les internes du logiciel. il n'en améliore que l'aspect extérieur. Je l'utilise lorsque des non-techniciens sont impliqués spécifiquement parce que cela ne concerne pas une partie spécifique du processus de fin de cycle. Les gens le comprennent car, une fois le placage à l'or terminé, c'est agréable, facile à utiliser et a une valeur ajoutée. ce n'est pas seulement un logiciel hors pair.
moliad

D'après mon expérience, le placage à l'or est normalement utilisé pour décrire un logiciel chargé de fonctionnalités inutiles , c'est-à-dire comme synonyme de bloatware .
Mark Booth

oui, je viens de faire un peu de recherche et j'ai découvert que le terme est parfois utilisé de cette façon dans la littérature (merci pour le commentaire). Ce qui est drôle, c'est que dans de nombreux endroits où j'ai travaillé, l'épreuve des idiots était considérée comme du placage à l'or dans ce sens (cela dépend vraiment du type de travail que vous faites, je suppose).
moliad

1

Le plus souvent utilisé en relation avec les processus de fabrication, mais je pense que Poka-Yoke est un très bon ajustement :

"[poka yo-ke] est un terme japonais qui signifie" sécurité intégrée "ou" protection contre les erreurs "

Il était à l'origine décrit comme baka-yoke, mais comme cela signifie "à toute épreuve" (ou "idiot-proofing"), le nom a été changé en poka-yoke plus doux.

Plus largement, le terme peut faire référence à toute contrainte de mise en forme de comportement conçue dans un produit pour empêcher un fonctionnement incorrect de l'utilisateur. "


1

Un terme courant dans les grands magasins est également l'assurance qualité (AQ) .

C'est un terme général et vague que vous pouvez modeler selon votre propre signification spécifique dans votre cycle de sortie.


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.