En el artículo anterior proporcionamos una visión global de lo que es un modelo de solución de arquitectura y cómo gestionarlo. En este artículo vamos a entrar en el contenido que debería tener para ser lo más completo y práctico posible.

Dominios de TOGAF

Desde el punto de vista tipo TOGAF una arquitectura se estructura en diferentes dominios como podemos ver en el gráfico:

La arquitectura se puede ver desde diferentes puntos de vista, que son los diferentes dominios de la solución. Para mí no son capas como tales superpuestas unas encima de otras, sino que son diferentes ángulos desde los que puedes abordar y valorar una misma solución.

Modelo 4+1

Otra forma de estructurar el diseño de arquitectura es el Modelo 4+1 de vistas de arquitectura.

En este caso las vistas suelen describir el sistema desde el punto de vista de diferentes interesados, tales como usuarios finales, desarrolladores o directores de proyecto.

Estructura del diseño de arquitectura

Basándome en el modelo 4+1, la integración con las vistas de AE y mi propia experiencia propongo la siguiente estructura del modelo de solución, pensando no solo en cómo estructurar técnicamente la solución, sino en la gestión de la solución.

  1. Propósito/Objetivos

Esta vista refleja las necesidades de negocio que debemos resolver, los objetivos a conseguir con la solución y una descripción de alto nivel del alcance del problema. Encaja con la vista de Contexto y estrategia de TOGAF.

  1. Arquitectura actual

Esta sección documenta la arquitectura actual para el proceso o aplicaciones objeto de la solución. Servirá de referencia de la que partir, ya sea para realizar mejoras o para hacer rediseños de la arquitectura más disruptivos.
No es tanto una vista como la documentación existente que pueda ser relevante. No tiene por qué exponerse en el modelo de solución si se puede enlazar a otra documentación o al repositorio de arquitectura.

  1. Casos de uso

Esta vista sería la descripción de los casos de uso de arquitectura o procesos de negocio / operativos según interese, describiendo el funcionamiento que esperamos tener de la solución.

Como consideración, el nivel de detalle de los casos de uso para la arquitectura es más alto que los casos de uso que se suelen utilizar para el diseño de software, quedándose a nivel de funcionalidades de las aplicaciones y las integraciones entre aplicaciones, sin entrar en la lógica interna de las aplicaciones más allá de lo relevante para la arquitectura.

Los elementos que deberíamos analizar en esta vista para cada caso de uso son los siguientes:

Esta vista agrupa parte de las vistas de arquitectura de negocio y de información de TOGAF y coincide con las vistas de escenarios y procesos del modelo 4+1.

  1. Arquitectura funcional

Esta vista describe la estructura lógica de aplicaciones, funcionalidades e integraciones, planteando cuáles son las aplicaciones responsables de cada funcionalidad y cómo deberían comunicarse para implementar los pasos de los casos de uso descritos anteriormente.

El contenido de esta vista sería el siguiente:

Esta vista agrupa las vistas de arquitectura de aplicación con la estructura estática de la vista de información de TOGAF y coincide con la vista lógica del modelo 4+1.

  1. Arquitectura técnica

Esta vista sería similar a la funcional, pero con la perspectiva de asignar las funcionalidades a los componentes técnicos de las aplicaciones o artefactos, incorporando detalle tecnológico para el desarrollo de los componentes y las integraciones, y su despliegue en los servidores o dispositivos

El contenido sería el siguiente:

Esta vista describe parte de las vistas de aplicaciones y tecnológica de TOGAF y el detalle más técnico de la vista lógica y parte de la vista de desarrollo del modelo 4+1. Incluye también las funcionalidades a implementar por cada componente, para trazar las vistas técnicas y funcional.

  1. Infraestructura

En esta vista describimos los elementos de infraestructura que necesitamos y su configuración en cada entorno para poder desplegar los componentes. El nivel de detalle de configuración es solamente el necesario para asegurar el cumplimiento de los requisitos no funcionales, sin entrar en especificar cómo se realiza.

La información necesaria sería la siguiente:

  1. Costes

En este capítulo se puede plantear una estimación de coste de la infraestructura de la solución o de las alternativas si es el caso. Esta estimación servirá para analizar la viabilidad económica del proyecto o para la toma de decisión entre las posibles alternativas.

  1. Aspectos clave del diseño

Este capítulo ya no sería una vista de la arquitectura, pero es importante para gestionar adecuadamente el modelo de solución, ya que reflejaremos todas las cuestiones que explican y justifican cómo se ha llegado a cerrar la solución, y proporciona contexto importante que todos los interesados deben conocer.

No tendría una estructura fija, pero algunos ejemplos de información relevante son:

De primeras parece mucha información y que hacer un diseño de arquitectura es complejo. Efectivamente, es complejo porque son muchos los aspectos a tener en cuenta para hacer bien un diseño de arquitectura. Pero hay que tratar que la complejidad esté en el problema y la solución, no en la elaboración del documento de diseño. El contenido debe ser el justo y necesario para que sea útil, evitando rellenar aquella información que no sea relevante. No es obligatorio rellenarlo todo y queda a criterio del arquitecto qué información es necesaria.

Vistas y nivel de abstracción

En el lenguaje coloquial suele haber bastante confusión cuando se habla de modelar a “alto nivel” y a “bajo nivel”. A veces se relaciona el alto nivel con la definición más funcional o de negocio y el bajo nivel con los detalles de implementación o infraestructura, pero creo que es más apropiado relacionarlo con el nivel de abstracción, describiendo algo de “alto nivel” como muy abstracto y algo de “bajo nivel” como más específico.

De esta manera, podemos utilizar ambas dimensiones para hacer vistas mucho más específicas para el objetivo que persiguen, ajustando la vista o dominio que más nos interese con el nivel de abstracción que aporte más valor.

Un modelo conocido para trabajar con diferentes niveles de abstracción es el modelo C4, que establece 4 niveles de abstracción.

Veamos qué contiene cada nivel:

El modelo C4 nos permite entender bien el concepto del nivel de abstracción, como una dimensión diferente a las vistas planteadas para el diseño de arquitectura. Pero tal como está descrito está muy orientado a la capa de aplicación, y necesitamos poder aplicar este mismo concepto a otros dominios como el de negocio o infraestructura.

Un diseño de solución va a necesitar modelar diferentes vistas, cada una con un objetivo diferente. Además, en otros ámbitos como en procesos de arquitectura empresarial o en el mantenimiento de los datos o infraestructuras veríamos que necesitamos vistas diferentes a las utilizadas en el diseño de arquitectura para proyectos.

Cuando tratamos de hacer modelos útiles para los equipos nos encontramos con una gran complejidad a la hora de gestionarlos porque cada equipo en cada momento necesita poner el foco en información diferente. Es muy difícil hacer modelos generales que sirvan para muchos interesados. Suelen ser muy complejos si tratamos de que sean completos, o poco reutilizables si son minimalistas.

Lo más adecuado es acordar y fijar con cada equipo cuáles son las vistas y niveles de abstracción que requieren en cada momento del ciclo de vida de los proyectos y de las aplicaciones. De esta manera evitaremos que nos pidan cada vez algo diferente según la necesidad y tengamos que remodelar la documentación existente o mantener actualizado un volumen de modelos desordenados.

Para aclarar con los equipos cómo deben ser las vistas que les interesan me baso en la siguiente matriz, que determina los elementos a representar en cada dominio y nivel de abstracción.

Pero las vistas no tienen por qué restringirse a una sola de estas casillas para representar sus elementos. Es solo una forma de visualizar y poner en común qué es “alto nivel” y qué es “bajo nivel”, no solo en el dominio de aplicaciones, sino en todos los dominios de la arquitectura.

Dentro de esta matriz elegimos qué elementos nos interesa representar en el diseño y hacemos ejemplos para confirmar que efectivamente es lo que queremos.

Por ejemplo, para los diseños a nivel de infraestructura podemos determinar dos vistas: una de más alto nivel para visualizar el alcance del proyecto en el dominio de infraestructura y explicar el proyecto (1), que incluye los elementos de nivel muy alto y también las tecnologías de ejecución del software del nivel alto tecnológico, y otra más detallada para los equipos que gestionan la infraestructura (2) que agrupa elementos de nivel alto y medio tecnológico.

Nivel de abstracción - dominio

Que podrían representarse con diagramas como estos:

Diagrama de alto nivel de infraestructura.
Diagrama de alto nivel de infraestructura.

Esta problemática suele presentarse a la hora de mantener un repositorio de arquitectura que dé soporte a todo el gobierno de TI, pero parte del problema son los diseños de solución de arquitectura de los proyectos. La idea es utilizar este marco para definir las vistas del diseño de solución de arquitectura de forma acordada con los interesados de la empresa.

Conclusión

Con lo expuesto anteriormente, podemos tener una idea de alto nivel de los tipos de modelos que necesitamos para desarrollar un diseño de arquitectura de soluciones completo y la información que necesitamos obtener o definir para cada uno de ellos, que podemos modular con el framework propuesto.

En los próximos artículos entraremos en el detalle de una propuesta de contenido para un diseño de solución de arquitectura para un proyecto, entrando en cada vista y cada elemento.

Cuéntanos qué te parece.

Los comentarios serán moderados. Serán visibles si aportan un argumento constructivo. Si no estás de acuerdo con algún punto, por favor, muestra tus opiniones de manera educada.

Suscríbete

Estamos comprometidos.

Tecnología, personas e impacto positivo.