jueves, 17 de febrero de 2011

¿Qué es Refactoring? - el tema de mi presentación

Hace un par de días publiqué sobre mi mini viaje a Canarias, para un congreso. Y ahora os explico un poco el tema de la presentación. La verdad no tiene mucho que ver con lo que he hecho durante el master, no es nada de procesamiento de imágenes, ni ningún tipo de efecto 3D, sino que es más bien algo de ingeniería del software, si ya es por tocar todos los palos posibles xD.

La presentación se basa en el concepto de refactoring, pero y qué es el refactoring. Por la palabra en si puede parecer algo muy raro, pero en realidad yo diría que es algo que un buen programador hace. Básicamente refactoring es una técnica que se usa para reestructurar y limpiar el código el código, sin cambiar el funcionamiento de la aplicación. Vaya que refactoring es simplemente eliminar funciones repetidas, separar una mega función en otras más chiquititas para repartir la funcionalidad y que sea más fácil depurar en caso de que haya problemas, y todas esas cosillas que se hacen para que un código sea más fácil de entender y extender.


El caso es que esta técnica puede usarse para cualquier tipo de aplicación, y en la presentación me centro en las aplicaciones web. En ese caso, según explica Gustavo Rossi en sus artículos, refactoring se aplica a nivel de implementación (a nivel de código) y a nivel de modelos de diseño.

Pero ¿cuáles son los modelos de diseño de una aplicación web? Pues bien el diseño de una aplicación web se divide en 3 modelos:

  • El modelo de aplicación --> indica como se estructuran los datos.
  • El modelo de navegación --> describe los nodos y caminos de navegación. Es decir, como se conectan las páginas de la aplicación.
  • El modelo de presentación --> o la interfaz, es decir, cómo se presenta el contenido.

Entonces refactoring puede ser aplicado en alguno de estos modelos. Pero en este caso, el funcionamiento permanece inalterado, pero no la forma en el que se ven las cosas. Imaginaos que en el modelo de presentación cambiamos alguno de los elementos que aparece, este cambio se verá reflejado en la interfaz y por lo tanto el usuario percibirá el cambio, cosa que no pasaba en el refactoring a nivel de implementación. Aquí habrá que tener cuidado al hacer los cambios ya que no se debe eliminar ninguna operación disponible, ni dejar una página sin acceso posible.

Y para que me puede servir aplicar refactoring a nivel de modelo, pues para mejorar la usabilidad, e incluso aplicando determinados cambios para mejorar la accesibilidad. En la presentación me centré en la accesibilidad, y que tipos de operaciones se pueden definir para mejorar la accesibilidad de una aplicación web.

Por accesibilidad web se entiende la posibilidad que tiene una aplicación web para que sea visitada y usada por una gran cantidad de usuarios, incluso aquellos con alguna discapacidad. Y con discapacidad no me refiero sólo a gente con algún tipo de discapacidad física, ciegos, sordos, o con algún problema motriz, sino también a gente que use dispositivos especiales para navegar, como un móvil.

Si queréis aprender un poco más sobre como hacer una web accesible podéis echarle un vistazo a las Pautas de accesibilidad definidas por la W3C. Las pautas es para tenerlas en cuenta en el momento de hacer la aplicación web. 


Basándonos en las pautas se definen las operaciones de refactoring para mejorar la accesibilidad de una aplicación y estas se aplican durante el mantenimiento de aplicación.

Básicamente la presentación fue algo parecido a lo que os he contado aquí, sólo que definiendo el catálogo de operaciones para accesibilidad, y haciendo una comparativa entre las pautas y las operaciones de refactoring. Podría poner aquí también el catálogo y eso pero aquí sólo quiero hacer una pequeña introducción :).

Ahora, hablando desde el punto de vista de alguien que tiene algo publicado en la web, después de hacer el trabajo para la asignatura y todo eso, y con el artículo, me dio un poco de cargo de conciencia de tener la web con tantos colorines, que podían no distinguirse ... y por eso cambie el tema, para que al menos el contenido sea fácilmente diferenciable del fondo. Puede que en un futuro vaya aplicando alguna cosa más pero de momento sólo he hechos eso :P.

Espero que os haya sido algo interesante y también os haya enseñado algo nuevo :).

Referencias:
  • Martin , F., Refactoring: improving the design of existing code. Addison-Wesley Long-man Publishing Co., Inc., Boston, MA, USA, 1999.
  • Garrido, A., Rossi, G., Distante, D.: Model Refactoring in Web Applications. In Proceedings of the 9th International Symposium on Web Site Evolution (WSE 2007:Oct. 05-06, 2007; Paris, France). Los Alamitos, CA: IEEE Press, 2007.
  • Olsina, L., Rossi, G., Garrido, A., Distante, D., Canfora, G. “Incremental Quality Improvement in Web Applications Using Web Model Refactoring”. 1st Int. Work-shop on Web Usability and Accessibility. Nancy, France, December 2007., Springer Verlag, LNCS.
  • Rossi, G., Urbieta, M., Ginzburg, J., Distante, D., Garrido, A.: Refactoring to Rich Internet Applications. A Model Driven Approach. In: Proceedings of the Eighth International Conference of Web Engineering, ICWE (2008)
  • Instituto Nacional de Tecnología de la comunicación (INTECO). Web accessibility Overview http://www.inteco.es/Accesibilidad
  • Caldwell, B., Cooper, M., Guarino-Reid, L., Vanderheiden, G., “Web Content Accessibility Guidelines”, World Wide Web Consortium (W3C), Overview http://www.w3.org/WAI/intro/wcag.php, 2008
  • Treviranus, J., McCathieNevile, C. Jacobs, I., Richards, J., “Authoring Tool Accessibility Guidelines”, World Wide Web Consortium (W3C), Overview http://www.w3.org/WAI/intro/atag.php, 2000
  • Allan, J., Ford, K., Richards, J., Spellman, J., “User Agent Accessibility Guidelines”, World Wide Web Consortium (W3C), Overview http://www.w3.org/WAI/intro/uaag.php, 2010

No hay comentarios:

Publicar un comentario