Desde hace años he participado como arquitecto jefe en diversos proyectos de software desde aplicaciones web sencillas a soluciones de alta demanda, escalabilidad y desempeño, siendo la arquitectura un componente necesario, prioritario y vital.
Cuando se inicia el desarrollo de un proyecto de software es necesario conceptualizar en primera instancia el desarrollo de un "Blueprint de Arquitectura", el cual es un documento que describe y establece un conjunto coherente de criterios y recomendaciones de diseño
arquitectónico que deberan ser utilizadas para garantizar el desarrollo de
una arquitectura desacoplada, ágil, adaptable y de tecnología neutral
para la solucion. Como arquitecto de software, este es un insumo que no puede falta al iniciar un proyecto de software.
Generalmente este documento está conformado por cuatro secciones. En la primera se establecen los requisitos y atributos de calidad que deberán ser garantizados por la arquitectura de la solución como: simplicidad, flexibilidad, tolerancia ante cambios, reusabilidad, desacoplamiento, entre otros. En la segunda sección se describen las disciplinas y estilos de arquitectura que soportarán la plataforma de software y hardware de la solución, los estándares y normas abiertas que deben ser utilizados para facilitar la interoperabilidad entre los módulos de la solución, la división por capas, topología de servicios y la propuesta general arquitectónica de la solución. En la tercera sección se describen las Soluciones de Software y Hardware Propuestas. Por último, se plantean diversas recomendaciones en referencia al cumplimiento de los atributos de calidad establecidos.
El objetivo general del blueprint de arquitectura es describir el estilo de arquitectura y los marcos tecnológicos que sustentarán la plataforma de servicios de la solución. Entre sus principales objetivos:
- Describir los componentes que integran la arquitectura de software y hardware de la solución.
- Establecer las premisas generales que sustentarán el desarrollo de una arquitectura ágil y eficiente para la solución.
- Describir los criterios de calidad que deben ser garantizados para el desarrollo de una arquitectura de software y hardware ágil y eficiente para la solución.
- Establecer las disciplinas y estilos de arquitectura que soportarán la plataforma de software y hardware de la solución.
- Establecer los estándares y normas abiertas que deben ser utilizados para facilitar la interoperabilidad entre los módulos de la solución.
- Describir las estrategias de interconexión e integración que proveerán la capacidad de intercambio de información entre los componentes de la solución.
- Describir las alternativas tecnológicas propuestas para el desarrollo de la solución.
- Establecer los criterios generales para proporcionar una infraestructura de alta disponibilidad, segura, eficiente y escalable para la solución mediante un conjunto de recomendaciones.
Saludos;