La descripción de la arquitectura de software es el conjunto de prácticas para expresar, comunicar y analizar las arquitecturas de software (también conocido como renderizado arquitectónico). Según la norma ISO/IEC/IEEE 42010, es el resultado de aplicar estas prácticas a través de un producto de trabajo que expresa la arquitectura de un sistema.
Conceptos Fundamentales
La descripción de la arquitectura define las prácticas, técnicas y tipos de representaciones que los arquitectos de software utilizan para registrar la estructura de un sistema. En esencia, se trata de una actividad de modelado, donde los modelos pueden adoptar diversas formas, como texto, dibujos informales, diagramas o formalismos específicos (lenguajes de modelado).
El Rol de las Vistas y los Puntos de Vista
Para abordar eficazmente las necesidades de diversos stakeholders (usuarios finales, propietarios del sistema, desarrolladores, ingenieros y gestores de programas), una descripción arquitectónica suele emplear múltiples vistas. Cada vista se organiza para abordar preocupaciones específicas de interés para diferentes partes interesadas.
- Vista: Una representación del sistema que aborda preocupaciones específicas.
- Punto de Vista (Viewpoint): Una especificación que describe las notaciones, técnicas de modelado y convenciones utilizadas en una vista para expresar la arquitectura.
Aunque el uso de múltiples vistas es efectivo, puede generar redundancia o inconsistencias. Por ello, se utilizan mecanismos para gestionar las correspondencias entre vistas y asegurar la coherencia del sistema.
Mitos y Realidades de la Documentación Arquitectónica
Existe la creencia errónea de que las descripciones de arquitectura solo tratan temas técnicos. Sin embargo, estas deben abordar cuestiones relevantes para muchos interesados, incluyendo la gestión de costos, cronogramas y procesos. Asimismo, no se limitan a los aspectos estructurales; también deben cubrir preocupaciones conductuales, estéticas y otros requisitos extra-funcionales.
Evolución Histórica
Históricamente, las descripciones comenzaron con dibujos informales y texto, los cuales siguen siendo ampliamente utilizados en la industria. La disciplina ha sido influenciada por la ingeniería de software (abstracción de datos y programación a gran escala) y el diseño de sistemas (como SARA).
Contribuciones de Perry y Wolf
Perry y Wolf propusieron que la representación de las arquitecturas debe incluir tres elementos clave: elementos, forma y justificación. Además, distinguieron tres tipos de elementos:
- Procesamiento: Cómo se transforma la información.
- Datos: La información que se utiliza y transforma.
- Conexión: El "pegamento" que mantiene unidos los demás elementos.
Mecanismos para la Descripción de la Arquitectura
Para facilitar la reutilización de estilos exitosos, se emplean diversos mecanismos:
- Puntos de vista de arquitectura: Especificaciones de notaciones y técnicas.
- Lenguajes de descripción de arquitectura (ADL): Lenguajes formales para definir la estructura del software.
- Marcos de trabajo (Frameworks) de arquitectura: Estructuras predefinidas para organizar la descripción.
