November 11th, 2008
La importancia del Undo en las Web Applications
Tags: application, patterns, programming, usability, web
Tomado de Needish the Blog, con permiso del autor
Robert O’Callahan, en su artículo The Essence Of Web Applications, resume algunos aspectos de las aplicaciones web y su relación con las aplicaciones de escritorio.
En lo personal no estoy muy de acuerdo con lo que opina, sobre todo cuando menciona aspectos relacionados con los elementos de “navegación” con los que debe contar una aplicación (atras, adelante, bookmarks, etc), elementos que tienen un fuerte trasfondo en la navegación de los sitios web.
En mi visión, la diferencia fundamental entre una aplicación y un sitio web es que las aplicaciones, en general, pueden ser vistas como entidades que operan realizando transformaciones sobre datos, por lo tanto a lo largo del ciclo de vida de una aplicación existen diferentes estados de los datos, algunos inducidos por el usuario, por ejemplo al escribir un documento, o realizado por el sistema, como por ejemplo sincronización, aplicación de lógica de negocios, etc. Por otra parte un sitio web es un conjunto de información, estructurada según un amplio conjunto de paradigmas y patrones (categorización, etiquetado, jerarquización) que sufre muy pocas transformaciones, o en algunos casos ninguna, a lo largo de su ciclo de vida. En este sentido los diferentes estados en que se puede encontrar un sitio web, esto es las páginas que se muestran, dependen de la relación entre los diferentes elementos que lo componen, y sus modificaciones responden mayormente a la voluntad del usuario del sitio.
Por lo tanto, en el caso de la aplicación los datos cambian en el tiempo, en el caso de los sitios web los datos no cambian, son estáticos. Entonces es muy dificil considerar que los mismos paradigmas pueden aplicar en ambos contextos funcionales.
Los elementos de navegación de un browser han sido diseñados para funcionar muy bien en un contexto en que el usuario recorre una estructura de documentos, ya sea con caminos predeterminados o no. En el caso de las aplicaciones estos elementos deberían ser reemplazados por la posibilidad de hacer undo/redo (deshacer/rehacer) lo que actuaría en el sentido de “navegación” entre estados de los datos que la aplicación esta procesando (deshacer un cambio en un formulario, etc).
Muchos dirán que esto es algo trivial, sin embargo basta mirar un poco el mundo de las “aplicaciones web” y casi ninguna hace uso de estas herramientas, por lo tanto creo que es una area donde hay mucha tela que cortar si es que se busca que algún día las aplicaciones web compitan con las desktop.
A continuación una breve, e introductoria, explicación del patrón Undo.
El patrón Undo
¿Que es? Permite al usuario la posibilidad de deshacer una acción realizada con anterioridad
¿Cuando usarlo? En cualquier instancia donde es factible perder trabajo realizado (por ejemplo al borrar o modificar datos). Cuanto más costosa es la recuperación de datos más importante es la posibilidad de desahacer.
¿Por qué?
- El software que permite deshacer es software en el que puedes confiar.
- Todos cometemos errores, por ejemplo en “Aceptar” en un diálogo de cerrar, cuando en realidad no era lo que queríamos, perdiendo el trabajo realizado. En este sentido el poder de la costumbre es muy fuerte, llevandonos a hacer click en aquellas opciones mas comunmente usadas, incluso en aquellos casos en que deberíamos seleccionar otra opción. En este contexto es mucho más util proveer la posibilidad de desahcer que la de diálogos de confirmación. Nunca usar una advertencia cuando puedes proveer la opción de deshacer.
¿Como funciona?
- Decide cuales opciones deben ser posibles de deshacer y genera una pila de acciones a deshacer. (undo stack)
- Despues de una acción que puede ser deshecha provee un link o boton para deshacer la acción.
Hasta aquí algunos aspectos importantes del undo en las aplicaciones (web o no web). En un próximo artículo veremos que importancia tiene esto en la experiencia del usuario al momento de usar una aplicación. Stay Tuned!
Algunos links interesantes:
- The ‘undo’ problem is why web applications aren’t there yet
- The importance of Undo
- Multi-Level Undo
- Memento Pattern
- Using the Command pattern for undo functionality
- Undo Pattern
Tags: application, patterns, programming, usability, web

5 Comments Add your own
Madriaza | November 11th, 2008 at 17:16
Interesante artículo Pablo, gracias. Además los links están de lujo. Abrazo
pviojo | November 11th, 2008 at 17:36
Muchas gracias!
Stan | November 11th, 2008 at 19:06
Interesante lectura man, estoy de acuerdo contigo y la diferencia entre las WebApp y los WebSites.
Por otra parte lo que mencionas de la propiedad Undo creo que es necesaria en todo, de repente nos equivocamos y seria bueno tener un tipo historial que nos permita retroceder, algo como lo que la wikipedia hace.
Seguimos en contacto!
sosa | November 11th, 2008 at 19:11
Buen artículo. Precisamente por eso, creo que frameworks como Capuccino tienen mucho futuro, porque nos libran de imlementar estas cosas y nos dejan enfocarnos en la lógica de nuestra aplicación.
La importancia del ‘deshacer’ en las aplicaciones web | November 19th, 2008 at 14:01
[...] Link: La importancia del Undo en las web applications. [...]
Leave a Reply
XHTML: You can use these tags:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="">