Modelado y Especificaciones en Arquitectura de Software: ADL y UML
Clasificado en Informática
Escrito el en español con un tamaño de 5,25 KB
Modelado y Especificaciones en Arquitectura de Software
Notaciones
Se pueden utilizar notaciones informales de caja y líneas, una arquitectura formal de lenguaje de descripción o UML.
¿Por qué utilizar Especificaciones?
- Para revelar la ambigüedad, la incompletitud y la inconsistencia.
- Reformulación: para asegurarse de que el producto lanzado se ajusta a las expectativas de los clientes.
- Para demostrar que el sistema es: Consistente, Completo, Inequívoco, Mínimo, Adecuado.
Especificación formal: ¿Por qué?
A veces, los sistemas deben funcionar de forma fiable durante el 99,9999% del tiempo. La especificación formal permite la generación semiautomatizada de casos de prueba de los requisitos especificados formalmente y la derivación semiautomatizada de la corrección, la seguridad y otras propiedades.
¿Qué es un ADL (Architecture Definition Language)?
- Un ADL se enfoca en la descripción de la estructura de la aplicación a alto nivel, en lugar de la descripción de la implementación de cualquier módulo específico.
- ADL es un lenguaje que provee elementos para modelar la arquitectura conceptual de un sistema software, distinguiéndola de la implementación del sistema (Medvidovic & Taylor).
- Constructores básicos de un ADL: Componentes, Conectores, Configuraciones y Restricciones (Tracz, 1993).
- El problema: Los lenguajes formales son difíciles de entender y manejar en aplicaciones industriales.
- Reto: Convertir a UML en un lenguaje suficientemente preciso para especificar una arquitectura.
ADLs: Lenguajes de Descripción de Arquitectura
- Es una herramienta para describir formalmente la arquitectura de un sistema de software.
- Proveen un framework conceptual y una sintaxis concreta, para caracterizar arquitecturas de software.
- Aparte de ser una herramienta centrada en la arquitectura de software, poseen algunas características distintivas: Un dominio específico, estilos arquitecturales, simulación y análisis.
Componentes
Un componente es un bloque de construcción:
- Una unidad de la computación o un almacén de datos, con una interfaz especificando los servicios que ofrece y requiere.
- Una unidad de despliegue.
- Una unidad de reutilización.
- Ejemplo: cliente, servidor, base de datos, filtros, etc.
Componentes vs Objetos
El nivel de abstracción suele ser diferente en tamaño.
- Los objetos tienden a ser pequeños.
- Los componentes pueden ser pequeños (un objeto) o grandes (una biblioteca de objetos o una solicitud completa).
- Un componente arquitectónico puede ser implementado por varios objetos.
Ciclo de Vida
- Los objetos se crean y se destruyen constantemente.
- Los componentes se crean y se destruyen con poca frecuencia.
Conectores
- Un conector es un bloque de construcción que permite la interacción entre los componentes.
- Eventos.
- Cliente / servidor middleware.
- Los mensajes y los autobuses de mensajes.
- Las variables compartidas.
- Llamadas de procedimiento (local o remota) tubería.
- Los conectores pueden ser implícitos o explícitos.
- Los conectores a veces son sólo canales.
- Los conectores a veces tienen su propia lógica y complejidad.
- Los conectores pueden ser endógenos o exógenos.
Componentes y Conectores
Un componente es (o debería ser) independiente del contexto en el que se utiliza para proporcionar servicios.
Un conector es (o debería ser) dependiente del contexto en el que se utiliza para conectar los componentes.
Los conectores a veces se modelan como tipos especiales de componentes.
Interfaces
Una interfaz es la conexión externa de un componente (o conector) que describe cómo interactuar con ella. Las interfaces proporcionadas y necesarias son importantes. Espectro de la especificación de la interfaz:
- Especificados sin apretar (eventos entran, salen eventos).
- Estilo de API (lista de funciones).
- Muy altamente especificados (Protocolos de eventos a través de la interfaz en CSP).
Principales lenguajes ADL
- ACME: Intercambio arquitectónico, predominantemente a nivel estructural.
- Aesop: Especificación de arquitecturas en estilos específicos.
- C2: Arquitecturas de sistemas altamente distribuidos, evolutivos y dinámicos.
- Darwin: Arquitecturas de sistemas altamente distribuidos cuyo dinamismo está guiado por una estricta base formal.
- MetaH: Arquitecturas en el dominio de guía, navegación y control (GN&C).
- Rapide: Modelado y simulación del comportamiento dinámico descrito por una arquitectura.
- SADL: Refinamiento formal de arquitecturas a través de niveles de detalle.