• No se han encontrado resultados

4. REFACTORINGS SOBRE EL MODELO DE PROCESO

4.2. C ATÁLOGO

4.2.5. Anticipar validaciones

Motivación

Como fue mencionado previamente, en los procesos de registración de las aplicaciones web generalmente el usuario tiene que llenar largos formularios y completar diversos tipos de datos. Muchas veces la validación de los datos solo se da al final del proceso y en caso de que haya algún error en las validaciones realizadas, el usuario tiene que volver al inicio del formulario para hacer las consiguientes correcciones.

A diferencia del proceso de login detallado en el capítulo 4.2.1 "Agrupar Validaciones", el de registración supone completar formularios largos y con muchos campos que el usuario tiene que llenar. Hacer que un individuo vuelva al principio del formulario para corregir errores no es eficiente, ya que recién va a saber que entró un dato incorrecto después de haber conformado todo el formulario. Para evitar esto el sistema debe verificar los campos “on the fly”, en otras palabras, en el momento mismo que el usuario digita los datos en los campos del formulario. Esta funcionalidad se implementa mediante el uso de la tecnología AJAX (Asynchronous JavaScript And XML).

Anticipar las validaciones en este tipo de formulario, haciendo que se hagan en paralelo y en el momento de entrada de los datos, permite que el usuario sepa anticipadamente si el dato que acaba de ingresar cumple con los requisitos del campo y si está o no correcto. Con este nuevo mecanismo, no es necesario esperar hasta el final del formulario para descubrir cuáles son los campos con problemas de validación permitiendo que los usuarios puedan corregirlos en el momento sin tener que repetir toda la secuencia.

73

Mecanismo

Este refactoring puede ser realizado a través de los siguientes pasos:

1. Identificar en el formulario los campos que necesitan tener formato validado.

2. Por cada campo identificado en el paso 1, crear un nuevo <systemAction> que valide el campo en paralelo con el <userAction> de completar el campo. Conectar el <systemAction> a través de un processLink que se active al cambiar el foco del campo asociado.

3. Por último eliminar el <systemAction> que agrupaba todas las validaciones al final.

Ejemplo

El ejemplo del formulario de registración del sitio de E-Commerce Submarino (www.submarino.com.br) muestra que, una persona para registrarse tiene que llenar todos los campos del formulario. El sistema no acompaña el ingreso de datos con la validación correspondiente, por lo tanto el usuario no puede , sino hasta completado el proceso, verificar si lo que ingresó es correcto o no. Recién cuando al final presiona el botón “Continuar” es que el sistema realiza las validaciones y, en el caso de que algo falle, lista todos los errores en los que incurrió, teniendo el usuario que regresar al inicio del formulario para hacer las correcciones requeridas y volver a someter el formulario a una nueva validación. De persistir uno o varios errores, el mismo proceso tiene que repetirse hasta que los errores sean resueltos.

Hacer que las validaciones se centralicen en el final del proceso (como fue sugerido en el refactoring “Agrupar Validaciones” descripto en el capítulo 4.2.1) no es aconsejable para formularios largos y con muchos datos. Si hay errores, el usuario se verá obligado a recorrer todos los campos nuevamente revisando y corrigiendo los que sean incorrectos y luego volver a presionar en “Continuar” para que el sistema vuelva a validar los nuevos datos introducidos. Por esa razón, en los formularios largos conviene que las validaciones sean realizadas antes, en paralelo e internamente por el sistema.

La Figura 24 describe el proceso de registración en la página de Submarino, mostrando que la validaciones de los campos están centralizadas en el final del proceso, lo que hace que el usuario tenga que retroceder hasta el principio en caso en que el sistema identifique algún problema en la validación.

74

Figura 24: Proceso de registración en el sitio Submarino antes del refactoring

Para evitar la frustración que le supone al usuario tener que volver al principio para corregir errores, se considera oportuno alertarlo paulatinamente, en el mismo momento que ingresa los datos incorrectos, situación que le permitirá superar los inconvenientes a medida que aparecen, evitando así la demora de completar todo el formulario para darse cuenta de las anomalías; por lo tanto el sistema debe validar los datos paralelamente a su ingreso, detectando si los mismo son correctos o no.

La Figura 25 muestra el ejemplo de la página de registración de Submarino después del refactoring, donde las validaciones fueron anticipadas y son hechas en paralelo por el sistema.

75

76

Como este refactoring es indicado para facilitar la experiencia del usuario en los formularios largos, se sugiere también la aplicación del refactoring descripto en el capitulo 4.2.7: "Agregar funcionalidad de Autocompletar en formularios" que también tiene el objetivo de ayudar el usuario y de agilizar la tarea de llenar formularios largos en las aplicaciones web.

Mejoras Intencionadas

- Mayor eficiencia de la aplicación web, que será capaz de validar la información suministrada detectando los errores incurridos, en el mismo momento que se cargan los datos;

- Aumento de la satisfacción del usuario respecto de la página web, ya que puede reaccionar y superar los errores instantáneamente;

- Evitar repeticiones innecesarias que supone el completado del formulario total debido a errores en el ingreso de determinados campos;

- Aumento de la velocidad de registración en la aplicación;

Refactorings Relacionados

El refactoring descripto en la sección 4.2.1: "Agrupar Validaciones" tratase del opuesto de este refactoring ya que sugiere posponer las validaciones para el final del proceso y no anticiparlas. La diferencia entre ellos es que el primero es más útil para formularios cortos, en los que no conviene tener la validación particionada ya que se agregaría complicaciones innecesarias al proceso. Ya el refactoring presentado en esta sección es recomendable para formularios largos en los que el usuario tiene que llenar muchos datos, ocasión en la que es más práctico contar con validación en el momento, ahorrando tiempo del usuario.

Otro refactoring relacionado es el refactoring descripto en el capitulo 4.2.7: "Agregar funcionalidad de Autocompletar en formularios" que será detallado en las próximas secciones.