Patrones de Arquitectura de Software y Lenguajes de Descripción (ADL)

Clasificado en Informática

Escrito el en español con un tamaño de 5,66 KB

Patrones de Arquitectura de Software

Pizarrón (Blackboard)

La arquitectura de pizarrón es útil para problemas que carecen de soluciones determinísticas conocidas, pero para los cuales existen soluciones parciales a varios de sus aspectos.

Modelo-Vista-Controlador (MVC)

El patrón Modelo-Vista-Controlador divide una aplicación interactiva en tres componentes:

  • Modelo: Contiene el núcleo funcional y los datos de la aplicación.
  • Vistas: Muestran la información al usuario.
  • Controlador: Recibe las entradas del usuario.

Utiliza un mecanismo de propagación de cambios para asegurar la consistencia entre las tres partes.

Ejemplo: Un software como Excel, que permite visualizar los mismos datos de diversas formas, como una hoja de cálculo, un gráfico de barras o un gráfico circular.

Presentación-Abstracción-Control (PAC)

El patrón Presentación-Abstracción-Control (PAC) define la estructura de los sistemas interactivos como una jerarquía de agentes cooperativos.

Cada agente gestiona su propia interacción y se compone de tres partes:

  • Presentación
  • Abstracción
  • Control

Patrones para Sistemas Flexibles

  • Micronúcleo (microkernel)
  • Reflexión (reflection)

Micronúcleo (Microkernel)

El patrón de arquitectura Micronúcleo se aplica en sistemas que requieren una alta adaptabilidad a requisitos cambiantes.

  • Separa la funcionalidad mínima de la funcionalidad extendida y específica de un cliente.
  • Actúa como un socket o 'enchufe' para estas extensiones y coordina su colaboración.

Ejemplo: El desarrollo de un sistema operativo que deba ser portable a diferente hardware y, a la vez, compatible con programas diseñados para otros sistemas operativos populares como Unix o Windows.

Modelado de la Arquitectura

¿Cómo modelar la arquitectura?

Existen tres opciones principales:

  • Notaciones informales de "caja y líneas".
  • Lenguajes formales de descripción de arquitectura (ADL).
  • Lenguaje Unificado de Modelado (UML).

¿Por qué utilizar especificaciones?

Las especificaciones son fundamentales para revelar ambigüedades, incompletitudes e inconsistencias en el diseño.

Reformulación: Ayudan a asegurar que el producto final se ajuste a las expectativas de los clientes.

Permiten demostrar que el sistema es:

  • Consistente
  • Completo
  • Inequívoco
  • Mínimo
  • Adecuado

Lenguajes de Descripción de Arquitectura (ADL)

¿Qué es un ADL?

“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.”

Un ADL (Architecture Definition Language) es un lenguaje que provee elementos para modelar la arquitectura conceptual de un sistema de software, distinguiéndola de su implementación (Medvidovic & Taylor).

Constructores y Desafíos

  • Constructores básicos: Componentes, Conectores, Configuraciones y Restricciones (Tracz, 1993).
  • El problema: Los lenguajes formales suelen ser difíciles de entender y manejar en aplicaciones industriales.
  • El reto: Convertir UML en un lenguaje lo suficientemente preciso para especificar una arquitectura de software.

Características de los ADL

Los Lenguajes de Descripción de Arquitectura (ADL) son herramientas para describir formalmente la arquitectura de un sistema de software. Proveen un framework conceptual y una sintaxis concreta para caracterizar dichas arquitecturas.

Además de ser una herramienta centrada en la arquitectura, poseen características distintivas:

  • Un dominio específico.
  • Soporte para estilos arquitectónicos.
  • Capacidades de simulación.
  • Capacidades de análisis.

Principales Lenguajes ADL

  • ACME: Para el intercambio de arquitecturas, predominantemente a nivel estructural.
  • Aesop: Para la especificación de arquitecturas en estilos específicos.
  • C2: Para arquitecturas de sistemas altamente distribuidos, evolutivos y dinámicos.
  • Darwin: Para arquitecturas de sistemas altamente distribuidos cuyo dinamismo se guía por fundamentos formales estrictos.
  • MetaH: Para arquitecturas en el dominio de guiado, navegación y control (GN&C).
  • Rapide: Para el modelado y simulación del comportamiento dinámico descrito por una arquitectura.
  • SADL: Para el refinamiento formal de arquitecturas a través de niveles de detalle.
  • UniCon: Para la generación de código de interconexión (glue code) para componentes existentes utilizando protocolos de interacción comunes.
  • Weaves: Para arquitecturas de flujo de datos, caracterizadas por un alto volumen de datos y requisitos de procesamiento en tiempo real.
  • Wright: Para el modelado y análisis (específicamente, análisis de interbloqueo o deadlock) del comportamiento dinámico de sistemas concurrentes.
  • XADL: Un ADL extensible basado en XML y xArch.

Entradas relacionadas: