10. Progettare per l’errore

52
PROGETTARE PER L’ERRORE Corso di Interazione Uomo Macchina AA 2009-2010 Roberto Polillo Università di Milano Bicocca Dipartimento di Informatica, Sistemistica e Comunicazione 1

description

Corso di Interazione Uomo Macchina del Prof.R.Polillo - Università di Milano Bicocca - DISCO - AA. 2009-2010 - Lezione 2 (vedi anche www.rpolillo.it

Transcript of 10. Progettare per l’errore

Page 1: 10. Progettare per l’errore

PROGETTARE PER L’ERRORE

Corso di Interazione Uomo MacchinaAA 2009-2010

Roberto Polillo

Università di Milano BicoccaDipartimento di Informatica, Sistemistica e Comunicazione

1

Page 2: 10. Progettare per l’errore

Errore

“Errore” sarà inteso come termine generico per comprendere tutti quei casi in cui una sequenza pianificata di attività fisiche o mentali fallisce il suo scopo, e quando questo fallimento non possa essere attribuito all’intervento di qualche agente casuale

James Reason, Human Error

Il concetto di errore umano è più complesso di quanto non sembri a prima vista: infatti non esiste una dicotomia semplice fra “errore” e comportamento “corretto”

5

Page 3: 10. Progettare per l’errore

Classificare l’errore umano

AZIONE NONINTENZIONALE(“SLIP” o “LAPSUS”)

NO

AZIONE INTENZIONALE MA ERRATA(“MISTAKE”)

NO

c’era l’intenzione

di agire?

l’azione è proceduta come

pianificato?

SI

l’azione ha ottenuto lo scopo

desiderato?

SI

AZIONE CORRETTASI

c’era intenzionenell’azione?

NO

AZIONE NON INTENZIONALEEs Urto il tavolo e rovescio un bicchiere

NO

AZIONE SPONTANEAEs Mi lanciano una palla di neve e mi proteggo

SI

Da: J.Reason, Human Error, 1990 6

Page 4: 10. Progettare per l’errore

Slip (o lapsus)

Letteralmente: “scivolata”

Esempi: - lapsus linguae- lapsus calami

Sostituzione involontaria di una lettera,suono, parola al posto di un’altra e, generalizzando, sostituzione di azioni o comportamenti al posto di altre

7

Page 5: 10. Progettare per l’errore

Progettare per l’errore: temi

Error prevention

Error detection

Error explanation

8

Page 6: 10. Progettare per l’errore

Prevenire l’errore

9

Page 7: 10. Progettare per l’errore

Prevenzione

• degli slip: di solito è abbastanza facile Esempio: “giusta” distanza fra i pulsanti, allontanando pulsanti di uso frequente da pulsanti “pericolosi”

• dei mistake: più difficile

Esempio: formazione degli utenti, riprogettazione del sistema

10

Page 8: 10. Progettare per l’errore

Prevenzione degli slip: esempio

11

Page 9: 10. Progettare per l’errore

Prevenzione dell’errore:

alcune indicazioni • Diversificare le azioni dell’utente

• Evitare comportamenti “modali”

• Usare “funzioni obbliganti”

• Imporre input vincolati

• Non sovraccaricare la memoria a breve termine dell’utente

• Richiedere conferme

• Usare default inoffensivi

• Fornire alternative sicure

13

Page 10: 10. Progettare per l’errore

Comportamenti modali

“Comportamento modale”:

il sistema si comporta diversamente a seconda dello stato (o modalità) in cui si trova, e questo stato non è facilmente riconoscibile dall’utente

Se l’utente non conosce lo stato, non può prevedere come il sistema risponderà alle sue azioni

14

Page 11: 10. Progettare per l’errore

Comportamento modale: esempio 1(Windows Office)

Quando eseguo copy o cut, l’oggetto copiato o tagliato viene inserito nella clipboard, ma non è visibile: il sistema cambia stato ma l’utente non lo vede

NB: Ora però la clipboard può essere resa visibile (In XP, aprendo la toolbar “clipboard” nel menu “view”):

15

Page 12: 10. Progettare per l’errore

Comportamento modale: ESEMPIO 2(PowerPoint)

21

3

17

Page 13: 10. Progettare per l’errore

qui il cursore indica chiaramente che sono in modalità“matita”(non è un comportamento modale)

MacPaint, 198419

Page 14: 10. Progettare per l’errore

come sopra

MacPaint, 198420

Page 15: 10. Progettare per l’errore

Vedo bene che sono in modalità “cammina”: non è un comportamenrto modale

Wrath of the Gods (Luminaria, 1994)21

Page 16: 10. Progettare per l’errore

Funzioni obbliganti

Situazioni in cui le azioni sono vincolate in modo tale che la mancata esecuzione di un passaggio impedisca il successivo (D.Norman)

Spesso ci danno noia, ma ci proteggono…

Esempio:

L’auo emette un segnale d’allarme quando si apre la porta con la chiave inserita nel cruscotto…

… in tal modo è impossibile chiudersi fuori per errore

22

Page 17: 10. Progettare per l’errore

Funzioni obbliganti: esercizio 1

In un sistema desktop quale delle seguenti due soluzioni è preferibile?

1. Selezione azione selezione oggetto 2. Selezione oggetto selezione azione

23

Page 18: 10. Progettare per l’errore

Azioni prive di senso nel contesto corrente sono disattivate

Finder Macintosh, 197425

Page 19: 10. Progettare per l’errore

Input vincolati

Permettere all’utente di effettuare solo azioni lecite nel contesto corrente

(Generalizza la nozione di funzione obbligante)

26

Page 20: 10. Progettare per l’errore

Input vincolati: esercizio

1)

2)

3)

4)

Quale fra le seguenti soluzioni è la migliore per prevenire errori di input?

27

Page 21: 10. Progettare per l’errore

Per informazioni sulle nuove offerte, premi 1; per informazioni sulle tariffe e bla bla bla, premi 2; se sei

interessato a conoscere i nuovi servizi e bla bla, premi 3; se desideri comunicare furto o smarrimento del tuo telefonino o bla bla bla per assitenza specialistica, premi 4; se desideri

ricevere informazioni sul credito bla bla premi 5; se desideri parlare con un operatore premi 0

Evitare di sovraccaricare la memoria a breve termine

Ricordare sempre il “magic number 7”

28

Page 22: 10. Progettare per l’errore

Prevenzione dell’errore:

alcune indicazioni • Diversificare le azioni dell’utente

• Evitare comportamenti “modali”

• Usare “funzioni obbliganti”

• Imporre input vincolati

• Non sovraccaricare la memoria a breve termine dell’utente

• Richiedere conferme

• Usare default inoffensivi

• Fornire alternative sicure

29

Page 23: 10. Progettare per l’errore

Richiedere conferme

Chiedere sempre conferma prima di effettuare azioni irreversibili o comunque pericolose…

…spiegando con chiarezza quali sono le alternative possibili, e le loro conseguenze

30

Page 24: 10. Progettare per l’errore

Richieste di conferma: esempi da discutere

31

Page 25: 10. Progettare per l’errore

Da: Microsoft Access 9532

Page 26: 10. Progettare per l’errore

L’utente deve comunque poter confermare l’operazione in modo semplice e non macchinoso

Da: AKMail

Devo digitare ben 3 caratteri

per confermare!

33

Page 27: 10. Progettare per l’errore

Ma…

Evitare di richiedere conferme inutili, soprattutto quando eventuali azioni errate sono facilmente reversibili senza danni

Esempio:

Menuxxxyyyzzz EsciEsci

xxxmnbvmnbvmnbvm

xxxmnbvmnbvmnbvm

EsciEsci

xxxmnbvmnbvmnbvm

xxxmnbvmnbvmnbvmSei sicuro di

voler uscire?

sìsì nono

34

Page 28: 10. Progettare per l’errore

Uso dei defaultUsare, per quanto è possibile, dei default inoffensivi

Esempio:

38

Page 29: 10. Progettare per l’errore

Trattare l’errore

40

Page 30: 10. Progettare per l’errore

Progettare per l’errore: temi

Error prevention

Error detection

Error explanation

41

Page 31: 10. Progettare per l’errore

In caso di errore dell’utente, il messaggio deve…

1. ALLERTARE“attenzione: qualcosa non va”

2. IDENTIFICARE L’ERRORE“è questo che non va”

3. DIRIGERE L’UTENTE“ora devi fare questo”

42

Page 32: 10. Progettare per l’errore

?

OK

43

Page 33: 10. Progettare per l’errore

Messaggi di errore: linee guida

• Spiegare esplicitamente che cosa non va…

• e dare indicazioni costruttive su come risolvere il problema ...

• nel linguaggio dell’utente …

• in modo educato, esauriente e preciso

44

Page 34: 10. Progettare per l’errore

45

Page 35: 10. Progettare per l’errore

46

Page 36: 10. Progettare per l’errore

47

Page 37: 10. Progettare per l’errore

Linee guida per il web

• i messaggi di errore siano chiaramente visibili e espressi in un linguaggio chiaro, comprensibile a tutti

• si cerchi di preservare per quanto è possibile il lavoro già fatto dall’utente

• si cerchi di ridurre al massimo il lavoro necessario per correggere l’errore

49

Page 38: 10. Progettare per l’errore

Sovraccarica la MBT

51

Page 39: 10. Progettare per l’errore

Meglio, ma perché un solo messaggio alla volta?

52

Page 40: 10. Progettare per l’errore

Bene: non sovraccarica MBT e mostra tutti i messaggi di errore(NB il box deve essere spostabile) 53

Page 41: 10. Progettare per l’errore

Ancora meglio: ogni messaggio è ben visibile, e si trova accanto al campo errato

54

Page 42: 10. Progettare per l’errore

HTTP 404 - File not found

Si può fare di meglio?Si può fare di meglio?

55

Page 43: 10. Progettare per l’errore

Esempio 2Esempio 2 56

Page 44: 10. Progettare per l’errore

Esempio dal sito di Jakob NielsenEsempio dal sito di Jakob Nielsen

57

Page 45: 10. Progettare per l’errore

Error recovery

58

Page 46: 10. Progettare per l’errore

AZIONE CORRETTA

AZION

E ERR

ATA

Stato iniziale Stato finale

Stato di errore

FORWARD RECOVERY

BACKWARD RECOVERY

Error recovery (ripristino)

Error tolerance

59

Page 47: 10. Progettare per l’errore

Tolleranza verso gli errori

“Un dialogo è tollerante verso l’errore quando, a dispetto di evidenti errori nell’input, i risultati desiderati possono essere ottenuti senza (o con minime) azioni correttive.”

ISO 9241 - 10

60

Page 48: 10. Progettare per l’errore

Tolleranza verso gli errori: esempio

61

Page 49: 10. Progettare per l’errore

Esempio di backward recovery: undo

PowerPoint 2007 Photoshop CS362

Page 50: 10. Progettare per l’errore

AZIONE CORRETTA

AZION

E ERR

ATA

Stato iniziale Stato finale

Stato di errore

Stato finaleapprossimato

Stato inizialeapprossimato

FORWARD RECOVERY

BACKWARD RECOVERY

Recovery imperfetta

63

Page 51: 10. Progettare per l’errore

Conclusioni

“Il progettista non deve concepire una semplice dicotomia fra errori e comporta-mento corretto: al contrario, tutta l’interazione uomo-macchina deve essere trattata come una procedura cooperativa fra i due, dove gli equivoci possono nascere da ambo le parti.”

Donald Norman

65

Page 52: 10. Progettare per l’errore

66