Microsoft ha publicado una guía sobre cómo hacer un diseño usando una arquitetura ágil sobre normas y prácticas, proporcionando las directrices detalladas a seguir para la construcción de la arquitectura de una aplicación, de manera ágil.

La guía recomienda a partir de la siguiente entrada:
  • Casos de uso y escenarios de uso
  • Requisitos funcionales
  • Requisitos no funcionales (atributos de calidad tales como rendimiento, seguridad y confiabilidad)
  • Requisitos tecnológicos
  • Ambiente de despliegue
  • Restricciones
El diseño debe producir la siguiente salida:
  • Casos de usos significantes para la arquitectura
  • Puntos Críticos de Arquitectura
  • Arquitecturas candidatas
  • Esbozos de Arquitectura
La guía presenta agilidad recomendando específicamente no hacer la arquitectura en un solo paso, y recomienda hacerlo en cinco pasos iterativos:
  • Paso 1 - Identificar el objetivos de las Arquitecturas: Objetivos claros ayudan a enfocar su arquitectura, y le ayudará a centrarse en la solución de los problemas en su diseño. Buenos objetivos le ayudarán a determinar cuando haya terminado, y cuando esté listo para pasar a la siguiente etapa.
  • Paso 2 - Principales escenarios: Use los escenarios clave para enfocar su diseño a los que más interesa y para evaluar las posibles arquitecturas cuando estén listas.
  • Paso 3 - Visión general de la aplicación: Entender el tipo de aplicación, la arquitectura de despliegue, los estilos de arquitectura y tecnologías para conectar su diseño al mundo real en que la aplicación será ejecutada.
  • Paso 4 - Puntos Críticos: Identificar los puntos críticos sobre la base de los atributos de calidad y del cuadro de la arquitectura. Estas son áreas donde los errores suceden más a menudo cuando se diseña una aplicación.
  • Paso 5 - Posibles soluciones: Cree una arquitectura candidata o un esbozo arquitectónico y evalúela contra sus escenarios principales, los puntos críticos y las restricciones del despliegue.


Paso 1 - Determinar el propósito de las Arquitecturas.

Según JD Meier, Director Gerente de Programa de patrones y prácticas de Microsoft, el objetivo de este paso es determinar "cuánto tiempo y cuánta energía gastar en etapas posteriores, así como dirigir su esfuerzo global". El resultado del paso 1 debería ser:

  • Construir un prototipo
  • Identificar los principales riesgos técnicos
  • Probar los potenciales caminos
  • Compartir modelos y entendimientos

Paso 2 - Escenarios Principales.

Los mejores escenarios son identificados por los siguientes criterios para los casos de uso, de acuerdo con JD Meier:
  • Son importantes para el éxito y la aceptación de la aplicación.
  • Ejercitan lo suficiente el diseño como para ser útil en la evaluación de la arquitectura.

Paso 3 - Visión general de la aplicación.

Una visión general de la aplicación es necesaria para introducir detalles de la vida real y dejar el diseño más concreto, y se crea a través de los siguientes pasos:
  • Determinar el tipo de su aplicación. En primer lugar, determinar qué tipo de aplicación estamos construyendo. Se trata de una aplicación móvil, un cliente rico, una aplicación de Internet de gran porte, un mensaje de autobús, una aplicación web o una combinación?
  • Comprender las restricciones impuestas de despliegue. Comprender el entorno de despliegue y determinar qué impacto tendrá en su arquitectura.
  • Identificar los estilos arquitectónicos más importantes. Determinar el estilo arquitectural que se usará en su diseño. Va a construir una arquitectura orientada a servicios, cliente-servidor, arquitectura en capas, un bus de mensajes, o alguna combinación?
  • Determinar las tecnologías relevantes. Finalmente, identificar las opciones de las tecnologías pertinentes basadas en el tipo de aplicación y otras restricciones, y determinar cuales tecnologías puede utilizar en su arquitectura.
La guía ofrece consejos para todos los pasos mencionados anteriormente, un ejemplo que representa la opción a elegir entre los diversos estilos arquitectónicos:
  • Cliente-servidor. Organizar el sistema de forma que el cliente realiza requisitos a partir del servidor.
  • Basado en componentes. Dividir el diseño de la aplicación dentro de la reutilización de componentes que revela una interfaz bien definida.
  • Arquitectura en capas. Organizar el sistema en grupos de funcionalidades similares en forma de capas separadas.
  • Bus de mensajes. Definir un conjunto de formatos conocidos utilizados por los sistemas interconectados de modo que no tengan que conocer las diferencias entre los actuales destinatarios.
  • Orientada a objetos. Un estilo de programación basado en la división de tareas en objetos reutilizables que contienen el comportamiento y los datos relevantes del objeto.
  • Orientada a servicios (SOA). Una aplicación que expone y consume funcionalidades como un servicio utilizando los contratos y mensajes.

Paso 4 - Puntos críticos.

En este paso, alguien podría "identificar los puntos críticos en su arquitectura de aplicación para entender las áreas en las que es probable que ocurran errores. Los puntos críticos pueden ser organizados en torno a los atributos de calidad." Una larga lista de puntos críticos presentados por la guía incluyen: disponibilidad, interoperabilidad, durabilidad, confiabilidad, seguridad, etc.

Paso 5 - Posibles soluciones.

Después de identificar los principales puntos críticos, el primer proyecto de arquitectura puede ser producido. Después de eso, alguien debe volver al paso 2 para validar las posibles arquitecturas y, a continuación, seguir los pasos 3-5 para generar un nuevo candidato. El proceso se repite iterativamente mejorando con cada iteración.

Basado en Praticando agilidade na Arquitetura da Aplicação

Inspiración.

"Si tú tienes una manzana y yo tengo una manzana e intercambiamos las manzanas, entonces tanto tú como yo seguiremos teniendo una manzana cada uno. Pero si tú tienes una idea y yo tengo una idea, e intercambiamos las ideas, entonces ambos tendremos dos ideas"

Bernard Shaw