Juan Carlos Vergara

 

 Tipo: Herramientas y Prácticas de Ingeniería
 Idioma: español
 Formato: Charla
 Horario: TBD
 Duración: 45′

 

Actualmente existe un gran movimiento en la industria de software: El movimiento ágil, que es producto del desencanto que sentían muchos clientes, socios y colaboradores con respecto a la manera tradicional de desarrollar productos de software.

Estas soluciones eran a menudo de baja calidad y generalmente demoraban años en llegar al mercado por lo tanto carecían de la innovación necesaria para solucionar problemas reales, actuales y urgentes.

En nuestro entorno actual mucho más dinámico y competitivo las demandas y expectativas de nuestros clientes son más grandes que nunca. Ahora el cliente espera que el sistema contemple las soluciones para sus necesidades futuras.

Con mayor acceso a recursos de computación distribuida y la masificación de los teléfonos inteligentes, necesitamos de procesos de desarrollo que nos permitan construir aplicaciones de una manera más controlada, más efectiva y con énfasis tanto en la verificación automática de la funcionalidad como en la construcción automática de los ejecutables, debido a que se necesitan entregas continuas de aplicaciones que crecen en funcionalidad para ajustarse a las necesidades de sus usuarios.

Esta presentación es una descripción de la experiencia obtenida en el desarrollo (actualmente en proceso) de un producto que pueda correr en el App Engine de Google usando un framework para la creación de aplicaciones RIA (Rich Internet Application).

La exposición describirá las partes relacionadas a la metodología ágil y algunas sugerencias técnicas para la implementación de la funcionalidad.

El proceso se inicia desde la división de la funcionalidad a desarrollar en “slices” y en la creación de un Walking Skeleton en la iteración cero, donde debemos automatizar lo más posible algunos procesos de desarrollo: Control de Código Fuente, arquitectura inicial, automatización de la construcción y despliegue de artefactos.

Los slices son convertidos en pruebas de aceptación automatizadas usando Selenium.

Luego entraremos a implementar la funcionalidad usando técnicas test-driven design, en esta parte se hará una introducción a los mock objects donde los usaremos no solamente para aislar los componentes en nuestras pruebas unitarias, sino también para guiar el diseño (test-driven) de nuestras aplicaciones ayudando a identificar roles y responsabilidades.

Una vez concluida la implementación del slice y pasadas las pruebas de aceptación automatizadas, mostraremos algunas técnicas de refactoring para mejorar la implementación, de tal manera que sea fácil seguir agregando funcionalidad:

- Composed Method
- Arquitectura Emergente, Identificación de patrones en el código.
- SRP (Single Responsability Principle)
- Uso efectivo de Value Types (Breaking out, budding off, bundling Up)
- Stereotipo de objectos: Dependencias, notificaciones, ajustes.
- Organización del dominio.
- Algunas métricas útiles

Se mostrará código de una aplicación real para reforzar los conceptos enumerados, mostrando además la estructura de la aplicación, su organización en paquetes y técnicas para la construcción y despliegue de los artefactos.