Qual è un modo migliore per descrivere il processo di "Idiot Proofing" un pezzo di software [chiuso]


13

Per me, Idiot Proofing significa semplicemente assicurarsi che l'utente non possa rompere un pezzo di software anche se ci provasse. Ad esempio, se un valore viene letto da una casella di testo e viene convertito in doppio, se il software sottostante è a prova di idiota, non si interromperà se l'utente digita un valore non doppio.

Di recente ho redatto un programma di sviluppo e uno degli elementi è stato chiamato "UI proof Idiot". Le persone che sto costruendo questo software hanno scherzato finto offesa al termine, ma posso vedere dove questo termine renderebbe davvero le persone arrabbiate.

Qual è un modo migliore per dirlo?


23
Call it, ID-10T Proofing
Jarrod Nettles

2
Lol, ho realizzato il 1337 mentre cercavo su Google ID-10T. io fallisco ...
sooprise l'

13
Questa domanda mi ricorda una delle mie citazioni preferite: "La programmazione di oggi è una corsa tra ingegneri del software che si sforzano di costruire programmi più grandi e migliori a prova di idiota e l'Universo che cerca di produrre idioti più grandi e migliori. Finora l'Universo sta vincendo. " ~ Rich Cook
KallDrexx,

3
come su ingegneria di base?
jk.

4
"Nulla può essere reso infallibile, perché gli sciocchi sono così dannatamente ingegnosi."
M.Sameer,

Risposte:


27

Se stai includendo "II proof UI" come elemento di pianificazione, stai solo cercando di aggiungere qualità al tuo software. Qualsiasi sistema ben progettato convaliderà i suoi input e fornirà una chiara guida agli utenti, ovviamente, non è qualcosa che viene inserito nel programma come un elemento discreto (che è quindi soggetto a rimozione quando l'inevitabile crunch colpisce).

In alternativa, se deve essere un elemento discreto (so come alcune organizzazioni pensano alla pianificazione), "UI proof idiot" dovrebbe essere modificato in "Input Validation Library" e spostato all'inizio della pianificazione.


2
+1. Se stai cercando di aggiungere qualsiasi tipo di convalida dell'input dopo il fatto, hai già praticamente perso. Meglio avere un punto fermo nelle specifiche, "il software deve gestire con garbo input non validi ovunque". Esattamente come gestire "con grazia" input non validi dipende molto da ciò che il software sta facendo in quel particolare punto. Per interfacce utente molto semplici (pensate forse a un bancomat), potrebbe anche essere possibile rendere impossibile input non validi .
un CVn

14
+1. La prova dell'idiota non è un compito. A prova di idiota è una conseguenza di un buon design.
S.Lott

4
La prova dell'idiota è un processo in corso - perché l'universo continua a produrre idioti sempre più ingegnosi
Steven A. Lowe,

Anche se può sembrare sbagliato e ridondante, tenere presente che sia i progettisti di interfacce che i beta tester conoscevano i progetti e il design generale del software e potrebbero non rendersi conto (trascurare) che qualcosa che sembra perfettamente ovvio per loro è in realtà completamente sconcertante per un utente comune. "Test e debug delle decisioni di progettazione dell'interfaccia utente" è ciò che potrebbe essere chiamato. La convalida dell'input è una cosa: far capire all'utente cosa deve essere inserito dove è un'altra.
SF.

A tutti i votanti: ... qualunque cosa tu faccia, dimenticherai sempre qualcosa. Il software è così complesso che avere una squadra che rende tutto "perfetto" in un primo colpo è quasi irraggiungibile. Ecco perché è necessario il test. Per rilevare difetti e omissioni, o anche cose a cui nessuno ha pensato. Tale "UI proof idiot" è esattamente ciò che è richiesto.
Dagnelies,

10

Convalida dell'input dell'utente Avrei pensato che fosse un termine professionale. Tuttavia, non vedo nulla di male nell'impermeabilità se usato nei documenti interni.


3
Mi avevi in ​​"convalida dell'input dell'utente". La prova idiota è un termine non professionale indipendentemente da dove viene utilizzato.
Robert Harvey,

2
Qualunque cosa tu faccia, non metterlo per iscritto.
JeffO,

6

Indurimento è una buona parola. Se qualcuno lo chiede, digli che il primo passaggio sul software è solitamente scritto per scenari ideali e, come per gli strumenti in acciaio, il software deve essere "indurito" verso un utilizzo quotidiano da parte dei clienti reali.

Robustificazione è un'altra buona parola per questo: stai rendendo il codice robusto per i tipi di sfide che i clienti reali dovranno affrontare.

Entrambe le parole suonano fredde e industriali, non incolpano gli utenti o i programmatori e capiscono il punto.


A proposito, ecco la vecchia mascotte di Metrowerks, Arnold, il ragazzo che ci aiutava a programmare Mac indurendo e rinforzando il nostro codice con una fornace per trattamento termico, una fucina, un'incudine e una piccola mazza:


l'indurimento generalmente si riferisce alla tolleranza ai guasti dell'hardware sottostante - o alla resistenza ai raggi gamma ;-) la robustezza può significare molte cose
Steven A. Lowe

@Steven: Beh, sì. Ma questo è per la comunicazione a quello che è presumibilmente un pubblico non tecnico, e la domanda è davvero su come "girare" il compito, quindi è appetibile per quelle persone.
Bob Murphy,

ha senso; il pubblico non tecnico ha probabilmente visto annunci TV per laptop "rinforzati". Quindi penseranno che è ok far cadere il tuo software di 3 piedi sul cemento ;-)
Steven A. Lowe,

@Steven: Sì, e se hanno visto l'ultima pubblicità dei laptop Toshiba, si renderanno conto che se non ti danno il tempo e le risorse per rafforzare il software, si creerà Zombie Apocalypse. B ^)
Bob Murphy,

4

Programmazione difensiva

È ciò che mi è stato insegnato. Ai tempi in cui dovevamo tagliare i nostri pezzi di legno.

Se vuoi essere un PC, chiamalo programmazione "anticipatoria".


4

Quando stavo imparando, lo chiamavamo a prova di proiettile .

Anche la maggior parte degli altri eufemismi che ho letto si applicano.


3

Che ne dite di sistema o interfaccia utente "Fault tolerant"?


3

"Idiot proofing" dovrebbe consistere in entrambi

  • progettare l'interfaccia utente in modo che sia facile da usare e induca l'utente a inserire i dati nel modo previsto dai programmatori e

  • testare l'interfaccia utente per determinare se l'interfaccia può essere rotta inserendo valori di dati imprevisti.

Entrambe le fasi potrebbero ragionevolmente apparire nel programma di sviluppo in cui il progetto viene esaminato da un esperto dell'esperienza utente e in cui il codice fornito viene verificato da un tester per garantire che i dati non validi vengano gestiti correttamente (per qualunque cosa "correttamente" significhi per la tua applicazione).


Non hai risposto alla domanda che è stata posta.
Robert Harvey,

@Robert - Credo di averlo fatto. Il modo migliore per dire "prova dell'idiota" è "rivedere il progetto per migliorare la facilità d'uso" o "verificare che l'interfaccia gestisca dati non validi" a seconda del senso di "prova dell'idiota" che intendi.
Justin Cave,

OK, ha senso.
Robert Harvey,

2

La prova dell'idiota implica molto più della semplice convalida dell'input. Non includerei nemmeno una cosa del genere nella sua definizione.

La convalida dell'input è un processo in cui si disinfettano e si convalidano i dati utente per eliminare valori illegali / senza senso. Questo dovrebbe sempre essere fatto con qualsiasi informazione proveniente dall'esterno del programma in modo da eliminare l'ovvio e proteggersi dagli attacchi (ad esempio attacchi di iniezione sql).

Considererei la prova dell'idiota come un insieme di logiche per impedire all'utente di causare accidentalmente danni ingenti a se stesso attraverso mezzi altrimenti legali.

Ad esempio, fare rmrifiutare il comando rm -rf /e chiudere le varianti non ha nulla a che fare con la convalida o la correttezza. È un comando perfettamente valido. Sfortunatamente, è un comando che potrebbe e può cancellare tutti i tuoi dati da tutti i tuoi dischi in Unix / Linux. A prova di idiota questo respingerebbe questo comando e suggerirebbe rm -rf --i-really-mean-this /, o se in modalità interattiva, di inserire una risposta affermativa dopo un avviso.

Tutto ciò che è distruttivo per il sistema dovrebbe essere a prova di idiota. Qualunque cosa che possa causare un potenziale imbarazzo potrebbe anche essere un candidato (ad esempio "sei sicuro di voler inviare questa email senza un allegato anche se ne hai menzionato uno nel tuo testo?" E "sei sicuro di voler inviare questa email al intera azienda? ")

Idiot proofing è una collaborazione tra QA (cercando di essere il miglior idiota) e sviluppo (cercando di anticipare tutti questi scenari e progettarli attorno).

Per quanto riguarda un sinonimo più amichevole , posso suggerire "analisi distruttiva del percorso del codice" o "abilitare il feedback degli utenti per operazioni critiche". Qualunque cosa tu possa chiamarlo, dovresti davvero avviarlo il più presto possibile nel processo di progettazione.


1

"Sanity Checking" tende a funzionare abbastanza bene abbastanza spesso ...


3
Per me, "controllo della sanità mentale" significa più o meno la stessa cosa di "asserire": assicurarsi che lo stato interno sia corretto. Non è esattamente la stessa cosa della convalida dell'input esterno.
Mason Wheeler,

@Mason, lo penso come un controllo dello stato del sistema, in ogni punto, per un input valido che abbia senso. Ad esempio, controllando che la data di fine sia successiva alla data di inizio, oltre a verificare la presenza di immondizia, ecc. Vedo anche il tuo punto di vista e sono d'accordo con te.
Marlon,


1

"Gestione degli errori" o "convalida dell'input" sarebbero altri termini che userei per quello che descrivi. Bulletproof sarebbe un altro termine che potrei vedere essere usato in alcuni ambienti poiché l'idea qui è di rendere il software abbastanza robusto da gestire quasi tutto. Roccia solida sarebbe un'altra frase gergale che potrei immaginare qualcuno che voglia usare anche qui.


1

"Peggior scenario di casi". Perché, come sviluppatori, sappiamo tutti che se può essere fatto, allora sarà fatto . Quindi devi solo essere pronto a gestire la situazione peggiore con il tuo software.

Le misure di sicurezza non sono solo un modo per proteggere gli utenti da invasioni informatiche esterne, ma anche contro se stessi. Viviamo in un mondo imperfetto con utenti imperfetti.


1

La doratura è il termine educato (e dal suono molto positivo) che uso quando parlo del miglioramento dell'esperienza dell'interfaccia dell'utente finale in qualsiasi modo (GUI o altro).

La prova dell'idiota, come dici tu, è la parte più grande di quel processo, insieme ai miglioramenti del design o del flusso di lavoro (pensa al riconoscimento del feedback degli utenti finali).

L'idea qui è che puoi usare quel termine liberamente nell'ambiente di lavoro ed è visto come un processo prezioso (una volta completato) sia dalla direzione che dagli utenti, anche se potrebbe richiedere del tempo (e quindi in genere costa un po 'di denaro).

molti altri termini relativi a questo processo (spesso di fine ciclo) fanno sembrare questo processo:

  • implica gli utenti (spesso la gestione ;-) sono stupidi
  • è difficile da raggiungere
  • ha poco valore netto

Associando l'oro al processo (di solito il metallo equivaleva a "valore" anziché "costo"), ho visto il processo trasformarsi da spesa in investimento in mentalità di alcuni manager.

È come affermare apertamente che fino a quando questo non viene fatto, quel grosso pezzo di acciaio non è ancora gioielli. Ma una volta placcato ... allora è prezioso.


Vedo come questo termine funziona per il tuo pubblico. Per la maggior parte dei manager, la doratura sarebbe la prima cosa tagliata dal progetto. In altre parole, le parti non necessarie.
Gilbert Le Blanc,

Strano - Vedo il termine "placcatura in oro" come il significato che stai sprecando il tuo tempo a fare qualcosa che non offre alcun miglioramento funzionale . Garantire ingressi validi ecc fa offerta miglioramento funzionale ed è quindi (per la mia definizione) non doratura.
ChrisF

il dettaglio è che la doratura non migliora gli interni del software. ne migliora solo l'aspetto esterno. Lo uso quando non sono coinvolti tecnici non specificamente perché non si riferisce a una parte specifica del processo di fine ciclo. La gente lo capisce come, una volta terminata la doratura, è piacevole, facile da usare e ha un valore aggiunto. non è solo un ruff software.
moliad

Nella mia esperienza, la doratura viene normalmente utilizzata per descrivere software carico di funzionalità non necessarie , ovvero come sinonimo di bloatware .
Mark Booth,

sì, ho appena fatto una piccola ricerca e ho scoperto che il termine è talvolta usato in letteratura in questo modo (grazie per il commento). La cosa divertente è che in molti posti in cui ho lavorato, la prova idiota è stata considerata la doratura in questo senso (dipende davvero dal tipo di lavoro che fai immagino).
moliad

1

Il più delle volte usando in relazione ai processi di produzione, ma penso che Poka-Yoke sia davvero adatto :

"[poka yo-ke] è un termine giapponese che significa" fail-safing "o" a prova di errore "

Originariamente era descritto come baka-yoke, ma poiché questo significa "a prova di sciocco" (o "a prova di idiota") il nome è stato cambiato in un poka-giogo più mite.

Più in generale, il termine può riferirsi a qualsiasi vincolo di modellizzazione del comportamento progettato in un prodotto per impedire operazioni errate da parte dell'utente. "


1

Un termine comune nei negozi più grandi è anche Quality Assurance (QA) .

È un termine generico e vago, che puoi modellare secondo il tuo significato specifico all'interno del tuo ciclo di rilascio.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.