Blog de Contraslash (Legacy)

Arquitectura Ágiles

March 07, 2018

Arquitectura Ágiles

La arquitectura es una visión de trabajo para los desarrolladores, que encapsula las características importantes del diseño existente. Arquitectura de software es un término que se utiliza para describir las múltiples facetas de la estructura del software, el comportamiento, el diseño, la codificación y la documentación.

Una arquitectura es la organización fundamental de un sistema encarnada en sus componentes, sus relaciones entre si y con el medio ambiente, así como los principios rectores de su diseño y evolución.

Algunos principios importantes:

  • You Ain’t Gonna Need It
  • No Big Up Front Design

Las historias de Usuario y los requerimientos no funcionales son la base de las arquitecturas ágiles.

La arquitectura emerge iteración tras iteración, como resultado de constantes y pequeñas mejoras de refactoring.

Una arquitectura ágil es un subproceso iterativo que tiene un enfoque modular en la creación de un sistema.

Simple sketches for diagramming your software architecture.

La arquitectura de software ágil es el resultado de la aplicación de las prácticas ágiles.

Prácticas Ágiles + Arquitectura de Software = Arquitecturas Ágiles

Arquitecto de Software

  • Crea una visión Jerarquica del diseño
  • Precisa de los requerimientos actuals y futuras.
  • Toma decisiones técnicas para el desarrollo como lenguajes de programación, frameworks, librerías, herramientas de gestión, etc.
  • Propone ideas durante la fase de desarrollo
  • Interactua con los encargados del negocio y el equipo de desarrollo para notificar los cambios
  • Contribuye en el desarrollo y e despliegue
  • Propone estrategias de escalabilidad

Los objetivos de un Arquitecto Ágil son:

  • Entregar soluciones que funcionan
  • Maximizar el valor para los stakeholders
  • Encontrar soluciones que cumplan los objetivos de todas las partes interesadas
  • Proponer soluciones y resolver conflictos de diseño
  • Gestionar la escalabilidad
  • Gestionar el cambio y la complejidad

Valores en el diseño de Arquitecturas Ágiles

  • Principales valores

    • Simplicidad en el diseño
    • Sistemas que funcionen
    • Mejoramiento continuo
    • Trabajo en equipo
    • Comunicación
    • Confianza
    • Satisfacer la necesidad de los stakeholders
  • Aprendizaje continuo

Características de una arquitectura ágil

  • Pragmática (hacer lo que se requiere sin extras)
  • Diseñe cosas para probar
  • Modular o microservicios
  • Evitar redundancias
  • Diseñada pensando en rendimiento, la confiabilidad, modifica y usabilidad.

Prácticas recomendadas en una arquitectura ágil

  • Inicie con cosas conocidas simplificándolas (Modelo de capas, Estructuras (Building blocks), Modelo de datos)
  • Desarrolle Spykes
  • Use los estándares (API, Estructura de código)
  • Experimente en ramas diferentes (unas horas, unos días) si está listo integrarlo en la rama principal
  • Controle los debates técnicos
  • Todas las tareas son iguales
  • Controle los debates técnicos
  • Integre el nuevo aprendizaje en su código (refactoring, re diseño, limpieza de código)
  • Mucho énfasis en las pruebas y registro de issues
  • Pruebe en cada iteración el rendimiento y la confiabilidad

Retos para las Arquitecturas Ágiles

  • Cómo definir modelos y procesos que integren las prácticas ágiles
  • Cómo definir y espicificar prácticas ágiles en etapas de diseño
  • Cómo integrar eficientemente las tecnologías
  • Cómo automatizar las pruebas, la integración continua y las entregas continua
  • Cómo manejar eficientemente la escalabilidad, la configurabilidad y la usabilidad