Arquitecturas Ágiles

21 Sep


El concepto de arquitectura de software se refiere, de forma genérica, al conjunto de módulos que se identifican como la solución software y todas aquellas implicancias técnicas referidas a la integración óptima de dichos módulos.

Definir una arquitectura nos conduce a reflexionar en una serie de decisiones que se toman detenidamente durante las primeras fases del desarrollo de un software como parte del denominado Diseño de Arquitectura del Software. Estas decisiones deben ser muy cuidadosas puesto que una vez definida la arquitectura se convierte en “cimiento” y el software se comienza a desarrollar sobre la misma. Encontrarnos con la necesidad de tener que cambiar por algún motivo puede llevarnos a un impacto importante en los tiempos y costos del proyecto.

Ahora bien, esta propiedad de previsibilidad que debemos considerar en esta etapa se contrapone un poco con la esencia ágil de abrazar los cambios. Entonces… ¿un arquitecto debe ser previsible para evitar dichos cambios o los aborda sin precuparse demasiado?.

Ante esta disyuntiva, aflora otra pregunta más: ¿podemos hablar de arquitectura en el sentido tradicional dentro de proyectos ágiles?. Al parecer…SI. Surge entonces el concepto de Arquitectura Ágil.

Arquitectura Ágil

La arquitectura ágil tiene por objetivo eliminar la importancia arquitectónica que tiene un cambio en pos de disminuir el impacto de la ocurrencia de un cambio en la elaboración de un software. Es decir, que la ocurrencia de un cambio no genere un impacto tan crítico como sucede con un enfoque más tradicional del diseño de arquitectura.

Aquí, una arquitectura ágil no implica necesariamente que haya que desarrollarla completamente from scratch. Puede que la mejor solución requiera de considerar paquetes de software, sistemas legacy y módulos específicos desarrollados sí a medida.

La arquitectura de software se diseña para soportar sobre ella a un conjunto de funcionalidades y requerimientos que el cliente exige. Ante requerimientos no completamente definidos o cambiantes, la visión de la arquitectura que los soporte también deberá estar atenta a dichos cambios y evolucionar.

La arquitectura ágil se manifiesta como módulos con mínimas dependencias , comportamiento conciso  y claros puntos de extensibilidad. Esto nos indica que para soportar una arquitectura flexible y ágil, el código que la implementa debe ser de calidad y soportar buenas prácticas. Código de calidad, flexible y con mínimas dependencias sustenta una arquitectura de calidad, flexible y con mínimas dependencias.

El arquitecto ágil aprende a balancear las necesidades de los stakeholders y planifica para el cambio, no lo combate. Los requerimientos cambian, la  tecnología cambia, el negocio cambia, los puestos de los stakeholders cambian, todo cambia a medida que los requerimientos evolucionan. La solución debe soportar el cambio y el arquitecto lo debe, fundamentalmente, saber administrar.

Implementación

La arquitectura ágil se sustenta desde su diseño con implementación de patrones que garanticen desacoplamiento de los principales módulos que componen la solución y la selección de un modelo arquitectónico (como por ejmplo los Servicios Web) que favorezcan la evolución del software a través del diálogo de diferentes productos.

Durante el desarrollo del software, prácticas ágiles como la integración continua contribuyen a detectar rápidamente el impacto de los cambios realizados y poderlos corregir mediante refactorizaciones.

Conclusión

Los cambios se presentan en los requerimientos y por lo tanto pueden devenir en cambios arquitecturales para poderlos soportar. Considerar los cambios en el diseño de la arquitectura nos lleva no solo a considerar los modelos arquitectónicos más flexibles sino también a que el proceso de desarrollo del software se sustente sobre prácticas agiles que favorezcan la prueba de los cambios, el análisis del impacto y la corrección o ajuste de los mismos.

El tema dá para mucho más pero eso es todo por ahora.

Saludos, Gastón

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: