Arquitectura de software y metodologías de desarrollo ágiles

Clase 5 de 24Curso de Fundamentos de Arquitectura de Software

Resumen

La arquitectura de software juega un papel fundamental en la implementación exitosa de metodologías ágiles en el desarrollo. Los arquitectos deben evolucionar constantemente sus diseños para entregar productos de valor agregado rápidamente y mantenerse alineados con ciclos de retroalimentación continua y entrega incremental.

¿Cómo influye la arquitectura de software en las metodologías de desarrollo?

La arquitectura de software interactúa directamente con diversas metodologías de desarrollo, ya sea tradicionales como la cascada o las ágiles. Tradicionalmente, los ciclos eran más largos antes de entregar valor, mientras que actualmente, las metodologías ágiles exigen entregas constantes para obtener retroalimentación del cliente final.

Esto implica que los arquitectos deben:

  • Evolucionar diseños previos conforme avanzan las necesidades.
  • Crear subproductos específicos por cada ciclo de desarrollo.
  • Mantener una atención continua a detalles técnicos y de calidad.

¿Qué tipo de problemáticas comunes pueden surgir en arquitectura y desarrollo?

Existen malas prácticas recurrentes en arquitectura y desarrollo de software, destacando principalmente:

  • Ilusión de productividad: entrega constante de productos con calidad insuficiente para la producción.
  • Dependencia excesiva hacia proveedores externos (vendor lock in): innovación y calidad limitadas por terceros.
  • Cargas analíticas sobre sistemas no diseñados para ello: cálculo de datos agregados o históricos en sistemas operacionales.
  • Resume driving development: priorizar experiencias laborales antes que los resultados del proyecto.
  • Parálisis por análisis: demorar excesivamente las decisiones fundamentales de arquitectura.
  • Búsqueda de personalizaciones infinitas: anticiparse a problemas no existentes.

Estas malas prácticas obstaculizan la entrega efectiva y sostenible del valor de los productos desarrollados.

¿Cómo las fitness functions pueden evitar malas prácticas en software?

Para contrarrestar estas prácticas negativas, el uso de fitness functions es recomendado. Estas funciones operan de forma similar a las pruebas unitarias del desarrollo tradicional, volviéndose esenciales para evaluar continuamente si las decisiones arquitectónicas cumplen con los objetivos y estándares establecidos.

Las fitness functions incluyen:

  • Medidas y métricas específicas.
  • Pruebas unitarias constantes.
  • Técnicas de ingeniería del caos para evaluar resiliencia.
  • Escaneos obligatorios de seguridad.
  • Monitoreo y observabilidad sistemáticos.

Implementar regularmente estas pruebas asegura el mantenimiento y mejoramiento continuo del nivel de calidad en los procesos y productos resultantes.

¿Cómo detectar modificaciones en tu metodología de desarrollo?

Cada organización personaliza o adapta ligeramente las metodologías estándar, siendo importante que los arquitectos reconozcan estas modificaciones para mantener estándares elevados de calidad.

Las adaptaciones más frecuentes incluyen:

  • Omitir algunas ceremonias ágiles.
  • Flexibilizar criterios de aceptación.
  • Reducir exigencias en niveles de prueba.

Observar atentamente estas modificaciones ayuda al arquitecto a mantener productos alineados con las expectativas organizacionales y técnicas prevalentes.

Te invito a compartir tu experiencia identificando modificaciones relevantes en la metodología de desarrollo aplicada en tu organización.