Modularidad y Arquitectura Ágil

por SoTechCo

Mayo 09, 2017



¿Qué es la arquitectura ágil?

refactorizar

La arquitectura es un aspecto importante para los esfuerzos del desarrollo ágil. Es crítico para escalar ágilmente y conocer las necesidades de los negocios. “La arquitectura ágil es un conjunto de valores y prácticas que soportan la evolución activa de los diseños de un sistema, concurrente con la implementación de las funcionalidades de los nuevos negocios”. La meta de la arquitectura ágil es eliminar el impacto del cambio construyendo software que sea fácil de adaptar. El aspecto estructural de la arquitectura ágil debería ser que tan flexible es la arquitectura o que tan fácil es hacer cambios.

La arquitectura es un aspecto importante para los esfuerzos del desarrollo ágil. Es crítico para escalar ágilmente y conocer las necesidades de los negocios. “La arquitectura ágil es un conjunto de valores y prácticas que soportan la evolución activa de los diseños de un sistema, concurrente con la implementación de las funcionalidades de los nuevos negocios”. La meta de la arquitectura ágil es eliminar el impacto del cambio construyendo software que sea fácil de adaptar. El aspecto estructural de la arquitectura ágil debería ser que tan flexible es la arquitectura o que tan fácil es hacer cambios.

¿Porque es importante la modularidad en el desarrollo ágil?

La modularidad es un ingrediente clave para la arquitectura ágil. Los cambios son una gran parte del desarrollo ágil. Como el manifiesto ágil establece: “Bienvenido el cambio de requerimientos” incluso tarde en el desarrollo de procesos agiles aprovechando cambios para la ventaja competitiva de los clientes.” La modularidad permite a los equipos de desarrollo imaginar y gestionar los cambios más fácilmente porque separa un programa en componentes que contiene la funcionalidad que es independiente e intercambiable. Muchas organizaciones que siguen un proceso ágil lo hacen sin considerar la estructura de su aplicación. Cuando los requisitos de negocio cambian para un proyecto, el equipo se desgasta por adaptarlos. La flexibilidad de la modularidad combinado con una integración continua permite rápidamente identificar y resolver cualquier problema arquitectural o cambio en el código.

Como un ejemplo, vamos a decir que un equipo ágil ha hablado sobre la necesidad de usar una librería de un proveedor “X” como parte de su desarrollo. El proyecto se ha vuelto estrechamente acoplado por esta librería. Si la estructura de la aplicación no es monitoreada y no es modular. Es complejo identificar áreas del sistema que están relacionadas con estas librerías. El conflicto es: que por alguna causa usted ya no necesita usar la librería del proveedor “X” y ahora usted necesita usar la librería del proveedor “Y”. ¿Qué tan fácil es remover la librería del proveedor “X” y reemplazarla con la librería del proveedor “Y”? por el contrario, si todo el código que depende de la librería del proveedor “X” se aislara en un solo módulo, sería muy fácil manejar el cambio. La modularidad es totalmente necesaria.

La modularidad es también importante para el desarrollo ágil paralelo. El desarrollo ágil paralelo es cuando dos componentes no tienen dependencias y están disponibles para trabajar al mismo tiempo por dos equipos, y no se tiene que esperar a que un equipo termine para iniciar el trabajo. Esto dramáticamente incrementa la productividad de los desarrolladores debido a la eliminación de restricciones (dependencias) con la modularidad, empodera a los equipos a trabajar en paralelo. De acuerdo a CA Technologies, el desarrollo Ágil Paralelo permite detectar hasta un 90% más defectos y hasta un 50% reducirlo en un programa de desarrollo típico.

En grandes bases de código, se vuelve complejo gestionar la arquitectura al nivel de código para asegurar la modularidad. ¿Es más fácil entender el impacto de un cambio cuando se está examinando un sistema de 10.000 clases o un sistema de 10 clases? Claramente el último. Pero para obtener un nivel más alto de visualización, herramientas de análisis como Lattix Architect le permiten entender y gestionar las dependencias entre componentes. El cual es fundamental para la modularidad y adaptar el cambio. Para obtener una idea de que tan modular es su código y/o como puede hacerlo más modular. visita www.sotechco/lattix.html o contactenos