diseñando para el error

51
diseñando para el error tomas laurenzo laboratorio de medios · inco · fing · udelar Interacción persona computadora. www.fing.edu.uy/inco/cursos/inpercom

Upload: chinue

Post on 01-Feb-2016

30 views

Category:

Documents


0 download

DESCRIPTION

diseñando para el error. tomas laurenzo laboratorio de medios · inco · fing · udelar. Interacción persona computadora. www.fing.edu.uy/inco/cursos/inpercom. diseñando para el error. Basado en: Designing for error Clayton Lewis and Donald A. Norman Del libro: User Centered System Design - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: diseñando para el error

diseñando para el error

tomas laurenzo laboratorio de medios · inco · fing · udelar

Interacción persona computadora.www.fing.edu.uy/inco/cursos/inpercom

Page 2: diseñando para el error

diseñando para el error

Basado en:

Designing for errorClayton Lewis and Donald A. Norman

Del libro:

User Centered System Design Edited by Norman & Draper

Page 3: diseñando para el error

longjmp botch: core dumpedFatal error in pass zeroawk: syntax error near line 1cp: asd: No such file or directory

¿Qué significan estos mensajes?¿El usuario hizo algo mal?, ¿exactamente qué? ¿Cuán grave es la situación?

Page 4: diseñando para el error
Page 5: diseñando para el error
Page 6: diseñando para el error
Page 7: diseñando para el error

longjmp botch: core dumpedFatal error in pass zeroawk: syntax error near line 1cp: asd: No such file of directory

manejar los errores es un problema difícil.

Estos mensajes son el resultado de que el usuario hizo algo a lo que el sistema no sabe responder.

Page 8: diseñando para el error

Mensajes de error

El formato y tono de los mismos puede (suele) ser ofensivo, especialmente para los novatos, a los que les parece que ellos, personalmente, cometieron alguna infracción por su incompetencia.

A su vez, la información muchas veces no alcanza para corregir el problema.

O sugiere falsas explicaciones…

Page 9: diseñando para el error

The "longimp botch" message comes courtesy of the "more" program in 4.2BSD UNIX. Note that the error message does not even say which program has had the diffculty, so that If many procedures are being used at the same time (as is often the case), the user does not even have any idea of which routine has caused the problem, how to recover, or how to avoid the difficulty in the future.

The "Fatal error in pass zero" message comes from a compiler heavily used by students.

The "awk" errors are two of the more famous exit lines of the UNIX program "awk" You might think that "awl: was being helpful by identifying itself and then indicating roughly where in the file the difficulty occurred. You would be wrong. The two errors both resulted from specifying a nonexistent file (the command used was "awk asd." "Awk" is perfectly capable of determining that its difficulty came from the fact that the f le "asd" did not exist. Instead, it gives the erroneous and misleading error messages appropriate had the file existed with a non-intelligible first line.

Other UNIX programs, such as "cp" (the copy command) do better: The command sequence "cp asd" yields the last error message in the list: meaningful and useful. Even it could have done better, however, by aiding the user to make the correction rather than simply quitting, forcing the user to retype the sometimes lengthy command line for what might have been an error in a single character.

Page 10: diseñando para el error

Mensajes de error

¿Por qué se llaman errores (lo cual implica que el error es del usuario), cuando es en realidad el sistema el que no interpreta lo que le decimos?

Page 11: diseñando para el error

Mensajes de error: de la ofensa a la disculpa

Un tono apropiado para los mensajes debería ser:Perdón, pero estoy confundido. ¿Podría usted ayudarme?

si se toma el diseño centrado en el usuario seriamente, entonces hay que pensarlo como una tarea cooperativa: la tarea no es encontrar fallas y culpables sino resolver el problema

Page 12: diseñando para el error

Mensajes de error: de la ofensa a la disculpa

En una conversación entre dos personas se cometen muchos errores (sentencias incompletas, palabras erróneas) y muchas veces hay problemas para comprender, pero nunca nos responden

tu frase no fue gramaticalmente correcta, decilo de nuevo, pero esta vez correctamente.

además, en general el error se arregla automáticamente y el que habla no se da cuenta de que lo cometió.

aunque a veces se pide aclaración sobre una palabra o frase conflictiva.

Page 13: diseñando para el error

Mensajes de error: de la ofensa a la disculpa

En una conversación, ambos participantes asumen igual responsabilidad en la comprensión, y ambos toman la responsabilidad de reparar la dificultad.

No puedo encontrar el archivo que Ud. mencionawww.fing.edu.yu/inco/cursos/inpercom/Clases/clase_9.zip

¿Quiere Ud. decir?:1: www.fing.edu.uy/... /clase_09.zip2: www.fing.edu.uy/... /clase_9.ppt

Elija algún número o especifique un nuevo nombre.

Page 14: diseñando para el error

¿se puede diseñar sistemas complejos en los que el usuario no cometa errores nunca?

¿eh?

Page 15: diseñando para el error

Tratando con los errores

Se puede diseñar sistemas que minimicen los errores.

También, se puede hacer más fácil el trato de los errores cuando estos ocurren. Proveyendo indicaciones claras del problema, sus causas posibles y las soluciones, también, herramientas que faciliten la corrección.

Si hay muchos errores o pocos pero graves, el sistema debería proveer información útil que ayude a comprender lo que implica cada acción.

Page 16: diseñando para el error

Tratando con los errores

La situación ideal es aquella en la cual la recuperación frente a un error fue tan grácil que pasó desapercibida.

Page 17: diseñando para el error

Tratando con los errores

Encontramos dos tipos de errores: • Si la intención no es apropiada, equivocación.

(mistake)• Si la acción elegida no es la que se tenía

intención de elegir, traspié (slip)

Muchos tipos de traspié no ocurren con los novatos, pero sí con los expertos. (!)

Respecto a las equivocaciones, la mayoría resulta de un error en la interpretación o el diagnóstico de la situación, o un modelo mental erróneo.

Page 18: diseñando para el error

Minimizando errores

Norman: no es posible eliminar los errores, pero sí se los puede minimizar a través de:

• Un buen diseño, que incluya el esquema físico de los componentes y las pantallas de la interfaz, elección inteligente de nombres de comandos, etc.

• Buenos modelos conceptuales, una imagen del sistema que se corresponda con el modelo.

• Cuanto más distancia haya en los abismos de ejecución y evaluación, más errores habrá.

Page 19: diseñando para el error

Evitando errores a través de una representación adecuada

Supongamos que queremos operar sobre un archivo.

Representación 1: cadena de caracteres digitados (TUI)

Si digitamos el nombre del archivo puede ocurrir que:1. El archivo no exista.2. El archivo exista pero se haya escrito mal.3. El archivo exista, pero el directorio puede ser erróneo.

Se pueden hacer programas que ayuden a corregir el error.

Muchos errores surgen porque los archivos se representan por strings digitados.

¿Esto sigue siendo así? (!)

Page 20: diseñando para el error
Page 21: diseñando para el error

Evitando errores a través de una representación adecuada

Representación 2: íconos en la pantalla (o menús de opciones) Ventajas:

1. Sólo se selecciona entre archivos existentes.2. Sólo se trabaja con los directorios existentes.

Pero puede haber otros problemas:

1. No puedo seleccionar aquellos archivos cuyo nombre cumplan determinadas propiedades.

2. Puedo elegir el archivo equivocado. (igual problema en nueva forma)

Cada elección en la representación (y en general en el diseño) implica considerar el balance.

Page 22: diseñando para el error

Evitando falsas deducciones.

El usuario puede generalizar demasiado

El lado bueno es que se aprende más de una simple experiencia.

El lado malo es que se realizan falsas inferencias. Permanentemente.

Aprendizaje por inducción. Hay que proveerle al usuario la secuencia correcta de ejemplos, de lo contrario puede ser llevado a falsas generalizaciones.

Page 23: diseñando para el error

Minimizando errores causados por traspiés (slips)

Uso incorrecto de modos: Es necesaria una mejor respuesta (feedback) sobre en qué modo está el sistema. ¿Ejemplos de modos?

Errores de descripción: Problemas de consistencia.

Errores de captura: Surgen cuando un usuario, al hacer una acción infrecuente, realiza otra parecida que es más frecuente. Puede solucionarse minimizando la superposición, quizás avisar cuando puede ocurrir un error de este tipo, comparar con la intención original...

Page 24: diseñando para el error

Detectando errores

Detectar un error es el primer paso hacia la recuperación.

La detección temprana es sumamente importante:• Elimina el esfuerzo innecesario del usuario.• La detección tardía hace más complejo el problema (esto

es aún más importante para el usuario inexperto).

Los traspiés suelen ser más fáciles de detectar que las equivocaciones

• Traspié: La detección ocurre al comparar el resultado con la intención.

• Equivocación: al estar mal la intención, la persona compara la salida con la intención, y ve que está bien.

Page 25: diseñando para el error

Detectando errores

Un problema importante en los traspiés es el nivel:

El nivel donde ocurre la acción suele diferir del nivel donde las intenciones se han formado.

Tenemos la tendencia a mantener una decisión aún después de que se muestra que es errónea. Esto es porque se tiene la tendencia de buscar sólo evidencia confirmatoria.

Desarrollar un sistema que nos brinde información suficiente para ayudarnos a un diagnóstico efectivo es un tema importante de diseño.

Page 26: diseñando para el error

¿Cómo debería responder el sistema?

Detectamos seis maneras posibles:

1.- Gag (Mordaza): El automóvil no se va a mover hasta que se encienda el motor. Este tipo de función previene que usuario continúe.

FLOW (Jef Raskin): lenguaje de programación elemental, que solo permite escribir sentencias correctas del lenguaje. Esto puede ser pedagógicamente contraproducente, porque complica el aprendizaje experimental, al no dejar terminar de expresar las ideas, aunque estén incorrectas.

Page 27: diseñando para el error
Page 28: diseñando para el error
Page 29: diseñando para el error

¿Cómo debería responder el sistema?

2.- Warning (advertencia): Hace notar de la ocurrencia de algo potencialmente peligroso, pero es el usuario el que debe decidir cómo responder.

Page 30: diseñando para el error

¿Cómo debería responder el sistema?

3.- Do nothing (no hacer nada): Si se intenta una acción ilegal, esta simplemente no ocurre. Nada especial ocurre, y se deja inferir al usuario que ha intentado algo prohibido.

Para que esta estrategia funcione se deben ver los efectos de todas las acciones, para poder medir la distancia entre intenciones y resultados. Por tanto, es muy usado en Manipulación Directa.

No debe costar evaluar si algo efectivamente ocurrió ni si lo ocurrido corresponde con las intenciones.

Page 31: diseñando para el error
Page 32: diseñando para el error

¿Cómo debería responder el sistema?

4.- Self Correct (Autocorrección): Suponer alguna acción legal que el usuario intentó realizar. Una versión es el sistema DWIM (Do What I Mean) de Interlisp.

Esto es útil si hay una opción “undo”, dado que el sistema se puede equivocar. Hace notar de la ocurrencia de algo potencialmente peligroso, pero es el usuario el que debe decidir cómo responder.

DWIM puede funcionar muy bien, por ejemplo, es utilizado a propósito para acelerar la escritura (se escribe algo corto y se lo hace corresponder con algo largo).

Page 33: diseñando para el error
Page 34: diseñando para el error
Page 35: diseñando para el error

¿Cómo debería responder el sistema?

5.- Let’s talk about it (hablemos de esto): Cuando hay un problema, Lisp debugger le muestra los posibles candidatos. Hay una responsabilidad compartida entre el sistema y el usuario.

Page 36: diseñando para el error
Page 37: diseñando para el error

¿Cómo debería responder el sistema?

6.- Teach me (enséñame): El sistema le pregunta al usuario el significado de alguna frase o palabra.

Un ejemplo es CLOUT (lenguaje natural), en el que el sistema pregunta por palabras desconocidas. Si hay palabras en la definición que no son comprendidas, también se pregunta por ellas. Esto continúa hasta que todos los términos son definidos.

Page 38: diseñando para el error
Page 39: diseñando para el error

El problema del nivel

A veces se ejecuta un programa, motivado por alguna intención, pero dentro alguna instrucción no puede ser ejecutada, y se emite un mensaje que no tiene sentido para el usuario.

Hay muchas posibilidades de error. A veces es posible depurar el código para encontrar el problema. Otras veces no. A veces “tiene sentido” el mensaje y otras veces no.

Una solución podría ser conocer la intención. Pero no siempre funciona.

Page 40: diseñando para el error

El problema del nivel

Ejemplo: X sale del trabajo. Va a buscar su auto en el estacionam.X inserta la llave en la puerta del auto, pero esta no abre.

(Dado el mensaje, la interpretación es que puso mal la llave)

X prueba nuevamente, y tampoco abre.(Dado el mensaje, la interpretación es que puso la llave errónea)

X comprueba que tomó la llave correcta del llavero. (Dado el mensaje, interpreta que el problema es la cerradura del auto)

X prueba en otra puerta del auto, y tampoco abre.(Dado el mensaje, X se siente confundido)

X presta atención al auto y se da cuenta que no es suyo.X va a su verdadero auto y abre la puerta sin dificultad.

Page 41: diseñando para el error

El problema del nivel

A pesar que la gente conoce sus propias intenciones, suele pensar que el problema ocurre en el nivel más bajo. Luego va subiendo hasta que con dificultades llega al nivel correcto.

Quizás la culpa también es compartida con el sistema, dado que brinda mensajes incompletos. Por ej: la llave podría avisar que la puerta es del auto incorrecto.

Page 42: diseñando para el error

Fallas en la detección de problemas

Algunos problemas no son detectados por el usuario, aún cuando exista acceso a la evidencia, y tampoco son errores detectables por el sistema.

No es posible confiar en la detección por parte de los usuarios.

Page 43: diseñando para el error

Fallas en la detección de problemas

Sesgo en la relevancia: La gente suele sesgar su acción buscando evidencia confirmatoria (positiva) cuando se evalúa una hipótesis.

Esto surge cuando hay que seleccionar evidencia en un conjunto demasiado grande como para hacer un examen completo.

No se puede gastar tiempo en procesar información irrelevante, pero el juicio acerca de lo que es relevante se basa en lo que uno piensa que está ocurriendo.

No se tiene el “mapa” de toda la información, y por tanto, solo se ve aquello que confirme algún “mapa tentativo”.

Page 44: diseñando para el error

Ignacio se viste de negro, tiene pelo largo, negro, y escucha death metal.

¿Qué es más probable que sea cristiano o satánico?

Page 45: diseñando para el error

Fallas en la detección de problemas

Explicación parcial: Algunos errores no se detectan porque la gente acepta una correspondencia total entre lo que se espera y lo que se ve.

Si se busca algo, y lo que se ve se corresponde con lo que se espera ver, entonces no se sigue viendo ese algo para confirmar la primera impresión.

Si se está buscando el número de página, y se encuentra un número, debe ser el número de página.

En realidad puede ser el número de renglón, o el carácter en el renglón, etc.

Page 46: diseñando para el error

Fallas en la detección de problemas

Superposición del modelo y el mundo:

El modelo que uno tiene, se corresponde en gran medida con la realidad. Pero es difícil de detectar donde están las diferencias.

Page 47: diseñando para el error

Corrigiendo los errores

DESHACERPermitir volver a un estado anterior.Tiene sus complicaciones. Una acción se puede componer de un conjunto importante de comandos.

Nievergelt expresa que para recuperarse de un error, hay que tener en claro los siguientes aspectos:

site (cuál es el estado actual del sistema).trails (por donde he venido).modes (cuáles son las alternativas).

Debería hacerse mayor uso de las estrategias “Hablemos de esto”, “enseñame” y “Autocorrección”.

Page 48: diseñando para el error

Corrigiendo los errores

Parece importante, entonces:

1. Comprender las causas de error y diseñar para minimizar esas causas.

2. Hacer posible el deshacer.3. Facilitar el descubrimiento de errores cuando éstos

ocurren, y hacer que sean fáciles de corregir.4. Cambiar la actitud hacia los errores. Pensar que el

usuario está tratando de hacer una tarea a través de aproximaciones imperfectas. No pensar que el usuario está cometiendo errores; pensar en las acciones como aproximaciones de lo que se desea hacer.

Page 49: diseñando para el error

Evitando errores

Generar funciones que fuercen acciones (forcing functions):

• Antes de borrar algo, preguntar si realmente se quiere borrar eso.

• El auto no funciona si no tiene el abrochado el cinturón de seguridad.

• Antes de cerrar un software, preguntar si se quiere salvar lo ya generado.

• No abrir el horno de microondas sin que este se apague automáticamente.

• Trancar algo para prevenir la entrada a lugares peligrosos.

Page 50: diseñando para el error

Diseño para evitar errores

• Poner el conocimiento en el mundo. No hacer que todo el conocimiento esté en nuestra cabeza. Permitir que el usuario realice operaciones más eficientes cuando tiene el conocimiento en la cabeza.

• Utilizar la potencia de las restricciones naturales y artificiales. Utilizar funciones que fuercen acciones y mapeo naturales.

Page 51: diseñando para el error

Diseño para evitar errores

• Disminuir los abismos de ejecución y evaluación. Hacer visibles las cosas, para mejor ejecución y evaluación. Hacer las opciones de acción fácilmente accesibles y los resultados fácilmente visibles. Hacer posible que se pueda determinar el estado del sistema fácilmente y precisamente, y que sea consistente con los objetivos, intenciones y expectativas de las personas.

• Diseñar la interacción en función de las características de todos los participantes.