Mis responsabilidades profesionales me obligan a mantenerme actualizado con las tendencias y novedades que tienen que ver con el mundillo del desarrollo de software. Y por ello siempre reservo un poco de tiempo para leer artículos y ver conferencias online. El material es abundante y es difícil seleccionar aquello que realmente añade valor y presenta un enfoque nuevo.

Esta mañana vi por internet la presentación Questions for an Enterprise Architect, hecha por Erik Dörnenburg. La presentación arranca señalando que solemos utilizar la metáfora incorrecta para describir el proceso de desarrollo de sistemas de software. Para Dörnenburg, en lugar de usar los conceptos de la construcción de edificios deberíamos utilizar la metáfora de la jardinería. Construir sistemas de software se parece mucho al cuidado de un jardín, porque a diferencia de lo que ocurre con la construcción de edificios, la construcción de aplicaciones es un proceso que no pueda ejecutarse linealmente, sino que requiere improvisación y solución a problemas inesperados–como ocurre con un jardín de plantas y flores.

Pero veamos más en detalle por qué es inexacto usar la metáfora de la construcción de edificios para describir el desarrollo de aplicaciones.

En el levantamiento de edificios, el diseño de la arquitectura ocurre al inicio del proyecto y queda plasmada en los planos que contienen una especificación exhaustiva de todos los detalles: medidas de puertas, ventanas, altura, distribución, materiales, cableado, tuberías, etc. Una vez que se ha definido y aprobado la arquitectura, se procede a la construcción del edificio–la ejecución de la obra. La arquitectura no sufrirá más modificaciones durante la vida útil del edificio. Y los arquitectos no serán necesarios para que el edificio funcione y sea mantenido correctamente.

En el desarrollo de software, en cambio, la definición de la arquitectura no ocurre solamente durante la fase inicial del proyecto. Más bien podríamos decir que la arquitectura del sistema va evolucionando durante todo el ciclo de vida y sigue cambiando incluso durante el mantenimiento. Pero lo más interesante, es que Dörnenburg tiene razón al afirmar que los diagramas de alto nivel realmente no reflejan la arquitectura de la aplicación. Para él, es el código fuente el que contiene el mismo nivel de detalle que los planos de los edificios. Y en ese sentido, los desarrolladores del software son quienes cumplean el mismo rol que los arquitectos de edificios. Son los desarrolladores los encargados de crear y especificar el diseño del sistema. Luego, la fase de construcción del edificio corresponde a la fase de compilación, empaquetado e instalación de la aplicación–que es ejecutada por herramientas automatizadas.

La explicación anterior fue muy reveladora porque yo tenía muy asimilada la metáfora de la construcción de edificios como la más acertada para describir la construcción de aplicaciones. A partir de ahora utilizaré la analogía del jardín y visualizaré las labores de un arquitecto como las de un jardinero :-)

Por otro lado, la presentación aborda desde un ángulo diferente las siguientes cuestiones:

  • ¿Cómo ejecutar la estrategia definida en la arquitectura? Es dificil establecer estrategias a largo plazo; incluso a veces la estrategia se determina después de haber ejecutado el proyecto. Vaya…
  • ¿Cómo asegurar que la implantación adhiere a la arquitectura? Con medidas de prevención–debemos lograr que sea fácil hacer las cosas bien y difícil hacerlas mal.
  • ¿Cuál es el lugar de los arquitectos? Podemos hablar del lugar que ocupan en el organigrama de la organización, pero también del lugar físico donde hacen su trabajo (cerca de los equipos de desarrollo para ver las consecuencias e impacto de la arquitectura)
  • ¿Conviene más comprar una solución hecha o es mejor desarrollarla from scratch? En muchos casos es más efectivo desarrollar soluciones a medida; es el caso de las aplicaciones estratégicas que requieren integración con todo lo que ya existe.

Me gustan las presentaciones que aclaran conceptos. Y ésta ha sido una de ellas!

Créditos de las fotos: Garry Knight, Kentucky Country Day