Los ADLs que actualmente existen en la industria rondan la diferencia de por hay 25 aproximadamente .
Algunos ADLs han establecido diferentes herramientas como: proceso de análisis, verificación de modelos, soportes, aplicaciones de generaciones de código. desde la decisión que se tome depende el éxito o fracaso del proyecto
CONCLUSIONES ADLS
- No hay ninguno que sea dominante en la academia o la industria.
- Deben formularse para vincularse con XML y UML 2
- Muchos de ellos sin actividad en los últimos años.
- Algunos son especificos de industrias pesadas
- Poco énfasis en desarrollo de ADLs en SEI/CMU
- Momento de transición
- Extensiones arquitectónicas de UML 2, MDA,DSLs
- Adopción de modelos abstractos y factorias en la industria
- Modelado comienza a vincularse a herramientas de desarrollo
- No se requiere repetir la experiencia de los CASE
CÓMO SE DEFINEN LOS ADLs
En la práctica industrial, las configuraciones arquitectónicas proporcionan escasa información sobre la computación efectiva representada por las cajas, las interfaces
expuestas por los componentes o la naturaleza de sus computaciones.
En la década de 1990 y en lo que va del siglo XXI se han materializado diversas propuestas para describir y razonar en términos de arquitectura de software; muchas de ellas han asumido la forma de ADLs.
Estas suministran construcciones para especificar abstracciones arquitectónicas y mecanismos para descomponer un sistema en componentes y conectores, especificando de qué manera estos elementos se combinan
para formar configuraciones y definiendo familias de arquitecturas o estilos.
CÓMO SE DEFINEN LOS ADLs
Contando con un ADL un arquitecto puede razonar sobre las propiedades del sistema con precisión, pero a un nivel de abstracción convenientemente genérico. Algunas de esas propiedades podrían ser, por ejemplo, protocolos de interacción, anchos de banda y latencia, localización del almacenamiento, conformidad con estándares arquitectónicos y previsiones de evolución ulterior del sistema.
PARA QUÉ SE UTILIZAN LOS ADLs
CÓMO SE DEFINEN LOS ADLs
MODELOS COMPUTACIONALES Y PARADIGMAS DE MODELADO
PARA QUÉ SE UTILIZAN LOS ADLs
INTERFACES
La estructura se define utilizando siete tipos de entidades:
Todos los ADLs conocidos soportan la especificación de interfaces para sus componentes. En Acme cada componente puede tener múltiples interfaces. Igual que en Aesop y Wright los puntos de interfaz se llaman puertos (ports). Los puertos pueden definir interfaces tanto simples como complejas, desde una signatura de procedimiento hasta una colección de rutinas a ser invocadas en cierto orden, o un evento de multicast.
En última instancia, no brindan soporte formal para caracterizar y analizar propiedades no funcionales, lo que hace difícil razonar sobre propiedades críticas del sistema, tales como performance y roustez
A la luz de estas observaciones está claro cuál es el nicho vacante que los ADLs vinieron a ocupar.
EJEMPLO
CONECTORES
CÓMO SE DEFINEN LOS ADLs
No todo lo que tiene que ver con diseño requiere compulsivamente notaciones y modelo de objeto. Considerando los ADLs en su conjunto, la tradición de modelado OO juega en este campo un papel muy modesto, si es que juega alguno; la reciente tendencia a redefinir los ADLs en términos de mensajes, servicios, integración, esquemas XML, xADL, SOAP y sus derivaciones no hará más que consolidar lo que acá se menciona.
La definición de ADL que habrá de aplicarse en lo sucesivo es la de un lenguaje descriptivo de modelado que se focaliza en la estructura de alto nivel de la aplicación antes que en los detalles de implementación de sus módulos concretos.
ARMANI
Los conectores representan interacciones entre componentes. Los conectores también tienen interfaces que están definidas por un conjunto de roles. Los conectores binarios son los más sencillos: el invocador y el invocado de un conector RPC, la lectura y la escritura de un conector de
tubería, el remitente y el receptor de un conector de paso de mensajes.
Armani se constituyó en un lenguaje de tipo ADL, especializado en la descripción de la estructura de un sistema y su evolución en el tiempo.
MODELOS COMPUTACIONALES Y PARADIGMAS DE MODELADO
En segundo orden, el soporte de los modelos OO para las descripciones jerárquicas es, en el mejor de los casos, débil. Tampoco se soporta la definición de
familias de sistemas o estilos.
Es un lenguaje puramente declarativo que describe la estructura del sistema y las restricciones a respetar, pero no hace referencia alguna a la generación del sistema o a la verificación de sus propiedades no funcionales o de consistencia.
En el campo del modelado arquitectónico, UML/OOP tiende a ser antagónico a la modalidad "estructural" representada por los ADLs.
Muy pocos ADLs pueden manejar conceptos básicos en el modelado OO tales como herencia de clases y polimorfismo. Ningún ADL a la fecha permite incorporar inflexiones más complejas y sutiles como programación orientada a aspectos.
COMPONENTES
Representan elementos computacionales y almacenamientos de un sistema. Como se verá en el ejemplo, un componente se define siempre dentro de una familia.
AESOP
CARACTERÍSTICAS ADML
Aesop Software Architecture Design Environment Generator. Se ha desarrollado como parte del proyecto ABLE de la Universidad Carnegie Mellon, cuyo objetivo es la exploración de las bases formales de la arquitectura de software, el desarrollo del concepto de estilo arquitectónico y la producción de herramientas útiles a la arquitectura, de las cuales Aesop es precisamente la más relevante. Uno de los mejores documentos sobre Aesop es el ensayo de David Garlan, Robert Allen y John Ockerbloom que explora el uso de estilos en el diseño arquitectónico [GAO94].
Acme
LILEANNA
Armani
MetaH
AESOP
C2 (C2 SADL, C2SADEL, xArch, xADL)
C2 o Chiron-2 no es estrictamente un ADL sino un estilo de arquitectura de software que se ha impuesto como estándar en el modelado de sistemas que requieren intensivamente pasaje de mensajes y que suelen poseer una interfaz gráfica dominante.
Aesop
Rapide
C2 SADL
(Simulation Architecture Description Language) :
ADL que permite describir arquitecturas en estilo C2. C2SADEL es otra variante; la herramienta de modelado canónica de este último es DRADEL (Development of Robust Architectures using a Description
and Evolution Language).
Herramienta para construir ambientes de diseño de software basada en principios de arquitectura”. El ambiente de desarrollo de Aesop System se basa en el estilo de tubería y filtros propio de UNIX. Un diseño en
Aesop requiere manejar toda una jerarquía de lenguajes específicos, y en particular FAM Command Language (FCL, a pronunciar como “fickle”), que a su vez es una extensión de TCL orientada a soportar modelado arquitectónico. FCL es una combinación de TCL y C densamente orientada a objetos. En lo que respecta al manejo de métodos de análisis de tiempo real, Aesop implementa EDF (Earliest Deadline First).
ArTek
INTERFAZ GRÁFICA
SADL
C2 SADL
No existe hasta hoy una definición consensuada y unívoca de ADL, pero comúnmente se acepta que un ADL debe proporcionar un modelo explícito de componentes, conectores y sus respectivas configuraciones. Se estima deseable, además, que un ADL suministre soporte de herramientas para el desarrollo de soluciones basadas en arquitectura y su posterior
evolución.
CHAM
UML
UML
- Hofmeister 1999:
- La notación gráfica de UML es deficiente para mostrar correspondencias entre elementos en diferentes vistas.
- Protocolos : No se puede mostrar comunicación peer to peer en UML. Hay que utilizar una comunicación externa, como ROOM
- Relaciones ambiguas y oscuras entre vistas no susceptibles de tratamiento formal
- Extensibilidad a costa del soporte de herramientas y de una especificación estandar.
- Adaptabilidad (limitada)
UniCon
Darwin
ACME: Herramienta capaz de soportar el mapeo de especificaciones arquitectónicas entre los diferentes ADLs. en otras palabras como lenguaje de intercambio de arquitectura.
C2 (C2 SADL, C2SADEL, xArch, xADL)
Wright
Jacal
Llegado el momento del auge de XML, surge primero xArch y luego xADL, de los que ya se ha tratado en el apartado correspondiente a ADML y sus 19 derivaciones, pero sin hacer referencia a su conformidad con C2, que en los hechos ha sido enfatizado cada vez menos. Otra variante, SADL a secas, denota Structural Architecture Description Language; fue promovido alguna vez por SRI, pero no parece gozar hoy de buena salud.
CHAM
CARACTERÍSTICAS CHAM
CHAM (Chemical Abstract Machine) no es estrictamente un ADL, aunque algunos autores, en particular Inverardi y Wolf [BB92] aplicaron CHAM para describir la arquitectura de un compilador. Se argumenta, en efecto, que CHAM proporciona una base útil para la descripción de una arquitectura debido a su capacidad de componer especificaciones para las partes y describir explícitamente las reglas de composición.
xADL
Como quiera que sea, ADML agrega al mundo de los ADLs una forma de representación basada en estándares de la industria, de modo que ésta pueda ser leída por cualquier parser de XML. En ambientes Windows el parser primario y el serializador de XML se instala con Microsoft Internet Explorer de la versión 4 en adelante, y todas las aplicaciones de Office, así como SQL Server, poseen soporte nativo de XML y por lo tanto del lenguaje arquitectónico de markup.
ACME: No es necesariamente acto para cualquier clase de sistema.
ADML: Como hubiera sido de esperarse ante la generalización del desarrollo en la era del Web,
ADML (Architecture Description Markup Language) constituye un intento de estandarizar la descripción de arquitecturas en base a XML.
ACME: Se destaca su capacidad de describir con facilidad los sistemas relativamente simples
CARACTERÍSTICAS ADL: ACME/ARMANI
SEMÁNTIC A
SEMÁNTICA
INTRODUCCIÓN
Muchos lenguajes de tipo ADL no modelan la semántica de los componentes más allá de sus interfaces. En este sentido, Acme sólo soporta cierta clase de información semántica en listas de propiedades. Estas propiedades no se interpretan, y sólo existen a efectos de documentación.
La versión actual de ACME soporta una variedad de front-ends de carácter gráfico.
- El ambiente primario, llamado AcmeStudio, es un entorno gráfico basado en Windows, susceptible de ser configurado para soportar visualizaciones específicas de estilos e invocación de herramientas auxiliares.
- Un segundo entorno, llamado Armani, utiliza Microsoft Visio como front-end gráfico y un back-end Java, que con alguna alquimia puede ser Microsoft Visual J++ o incluso Visual J# de .NET.
- Un tercer ambiente, más experimental, diseñado en ISI, utiliza sorprendentemente el editor de PowerPoint para manipulación gráfica acoplado con analizadores que reaccionan a cambios de una representación DCOM de los elementos arquitectónicos y de sus propiedades asociadas [GB99].
ADLs EN AMBIENTES WINDOWS
Una segunda opción para Acme podría ser VisEd, un visualizador arquitectónico y editor de propiedades de GA Tech.
Una tercera, AcmeStudio.
Una cuarta, Acme Powerpoint Editor de ISI, la cual implementa COM.
Existe un amplio repertorio de implementaciones de ADL y sus herramientas colaterales de última generación en plataforma Windows.
ADLs EN AMBIENTES WINDOWS
Los diseños de Acme se pueden poner a prueba con Aladdin, un analizador de dependencia del Departamento de Ciencia de la Computación de la Universidad de Colorado.
ELEMENTOS PRIMARIOS
Acme soporta 4 tipos de arquitectura:
ESTILOS
Pero los ambientes gráficos son solo una parte de la cuestión, poseen la misma importancia relativa y circunstancial que los nombres o los URLs de especificaciones que hoy pueden estar y mañana desaparecer sin dar explicaciones.
El núcleo de la relevancia y conveniencia de los ADLs tiene que ver más bien con las diferentes cuestiones formales involucradas en los distintos escenarios y estilos, y eventualmente con la relación entre el modelado arquitectónico y el inmenso campo de los patrones arquitectónicos en general y los patrones diseño en particular.
CRITERIOS DE DEFINICIÓN DE UN ADL
ADLs EN AMBIENTES WINDOWS
1. La estructura. Organización de un sistema en sus partes constituyentes.
2. Las propiedades de interés. Información que permite razonar sobre el comportamiento local o global, tanto funcional como no funcional.
3. Las restricciones. Lineamientos sobre la posibilidad del cambio en el tiempo.
4.Tipos y estilos.
- Acme posee manejo intensivo de familias o estilos. Esta capacidad está construida naturalmente como una jerarquía de propiedades correspondientes a tipos. Acme considera, en efecto, tres clase de tipos: tipos de propiedades, tipos estructurales y estilos. Así como los tipos estructurales representan conjuntos de elementos estructurales, una familia o estilo representa un conjunto de sistemas.
Una familia Acme se define especificando tres elementos de juicio:
1. un conjunto de tipos de propiedades y tipos estructurales.
2. un conjunto de restricciones.
3. una estructura por defecto.
A esta altura del desarrollo de la arquitectura de software, podría pensarse que hay abundancia de herramientas de modelado que facilitan la especificación de desarrollos basados en principios arquitectónicos, que dichas herramientas han sido consensuadas y estandarizadas hace tiempo y que son de propósito general, adaptables a soluciones de
cualquier mercado vertical y a cualquier estilo arquitectónico. La situación es otra, dista de ser clara y es mucho más compleja. .
En lo que se refiere a Acme, el proyecto Isis y Vanderbilt proporcionan GME (Editor de Modelado Gráfico Metaprogramable), un ambiente de múltiples vistas que, al ser meta-programable, se puede configurar para cubrir una rica variedad de formalismos visuales de diferentes dominios.
Mientras los ADLs de elección estén vivos y mantengan su impulso no faltarán recursos y complementos, a menos que se escoja una plataforma muy alejada de la corriente principal para ejecutar el software de modelado.
Si bien el trabajo del arquitecto discurre a un nivel de abstracción más elevado que la del operario que escribe código, no quiere decir que vaya a ser más simple. Por el contrario, desde el punto de vista del modelado con ADL, el arquitecto debe dominar no solo una práctica sino también una teoría, o diversas teorías convergentes.
A continuación los elementos constitutivos primarios que son comunes a la ontología de todos los ADLs:
La definición más simple es la de Tracz, que define un ADL como una entidad consistente en cuatro “Cs”:
Componentes
Conectores
Configuraciones
Restricciones (constraints).
PARA QUÉ SE UTILIZAN LOS ADLs
ADLs FUNDAMENTALES
Acontinuación revisaremos los principales ADLs de la arquitectura de software contemporánea en función de los elementos comunes de su ontología y analizando además su disponibilidad para la plataforma Windows, las herramientas gráficas concomitantes y su capacidad para generar código ejecutable, entre otras variables de relevancia.
PARA QUÉ SE UTILIZAN LOS ADLs
LENGUAJES DE DESCRIPCIÓN DE ARQUITECTURA ADLs
El modelado orientado a objetos de sistemas basados en componentes posee cierto número de rasgos muy convenientes a la hora de diseñar o al menos describir un sistema...
PROPIEDADES NO FUNCIONALES
ADLs Y PATRONES
La correspondencia entre patrones, ADLs y estilos no está establecida de una vez y para siempre porque no existe ni una taxonomía uniforme, ni una especificación unívoca que defina taxativamente cuántas clases de patrones y cuántos niveles existen en ingeniería, arquitectura y diseño de software desde que se concibe conceptualmente un sistema hasta que se lo programa.
ADLs Y PATRONES
EVOLUCIÓN
CRITERIOS DE DEFINICIÓN DE UN ADL
La especificación de estas propiedades es necesaria para:
Simular la conducta de runtime.
Analizar la conducta de los componentes.
Imponer restricciones.
Mapear implementaciones sobre procesadores determinados.
...
Los ADLs mantienen una frontera difusa con lo que se llamaron lenguajes de patrones, que se definen como sistemas de patrones organizados en una estructura o plantilla que orienta su aplicación.
En algunas contadas ocasiones, los lenguajes de patrones fueron reformulados como ADLs y también viceversa.
ADLs Y PATRONES
Los ADLs deberían soportar procesos de evolución permitiendo derivar subtipos a partir de los componentes e implementando refinamiento de sus rasgos
Los ADLs se utilizan para satisfacer requerimientos descriptivos de alto nivel de abstracción que las herramientas basadas en objeto en general y UML en particular no cumplen satisfactoriamente.
EJEMPLO
Recientemente se ha propuesto un nuevo estilo arquitectónico "de nueva generación", ABAS (Estilo Arquitectónico Basado en Atributo), que explícitamente se propone la convergencia entre la arquitectura de alto nivel expresada en los ADLs y en los estilos con el expertise, las best practices, los building blocks, y los patrones decantados en la disciplina de diseño de aplicaciones.
ADLs Y PATRONES
Las clasificaciones usuales en el campo de los patrones reconocen habitualmente que hay diferentes clases de ellos; por lo común se hace referencia a patrones de análisis, organizacionales, procedurales y de diseño.
Esta última categoría tiene que ver con recurrencias específicas de diseño de software y sistemas, formas relativamente fijas de interacción entre componentes, y técnicas relacionadas con familias y estilos. En ese sentido, es evidente la relación de los ADLs con los patrones de diseño, de los que puede decirse que son una de las formas posibles de notación.
ADLs Y PATRONES
Mary Shaw y Paul Clements consideran que los ADLs han sido propios de la comunidad de arquitectos de software, mientras que los patrones de diseño y sus respectivos lenguajes han prosperado entre los diseñadores de software, particularmente entre los grupos más ligados a la orientación a objetos.
PARA QUÉ SE UTILIZAN LOS ADLs
CONFIGURACIONES O SISTEMAS
PROPIEDADES
CRITERIOS DE DEFINICIÓN DE UN ADL
Por ejemplo, distintos niveles en los proyectos de desarrollo se vincularían con otras tantas clases de patrones:
En lo que respecta a la relación entre arquitectura y diseño, los diseñadores basados en patrones operan a niveles de abstracción más bajo que el de los arquitectos, pero por encima del propio de los programadores.
Shaw y Clements concluyen que los ADLs pueden beneficiarse incorporando elementos de tipo análogo a los patrones en las secciones que se refieren a estilos, plantillas y reglas de diseño.
Representan información semántica sobre un sistema más allá de su estructura.
Todos los ADLs tienen alguna forma de definir propiedades no funcionales o pueden admitir herramientas complementarias para analizarlas y determinar, por ejemplo, el throughput y la latencia probables, o cuestiones de seguridad, escalabilidad, dependencia de bibliotecas o servicios específicos, configuraciones mínimas de hardware y tolerancia a fallas.
El diseño con los patrones de código.
El análisis con los patrones de modelos.
Los estilos arquitectónicos con los patrones de arquitectura.
La especificación más completa y sutil es la de Medvidovic:
ESTILOS
Se constituyen como grafos de componentes y conectores.
Los sistemas también pueden ser jerárquicos:
Componentes y conectores pueden subsumir la representación de lo que en realidad son complejos subsistemas.
RESTRICCIONES
Representan familias de sistemas, un vocabulario de tipos de elementos de diseño y de reglas para componerlos.
EJEMPLOS:
Las arquitecturas de flujo de datos basados en grafos de tuberías (pipes) y filtros.
Las arquitecturas de pizarras basadas en un espacio de datos compartido.
Los sistemas en capas.
Representan condiciones de diseño que deben acatarse incluso en el caso que el sistema evolucione en el tiempo.
Restricciones típicas serían restricciones en los valores posibles de propiedades o en las configuraciones topológicas admisibles.
EJEMPLO:
El número de clientes que se pueden conectar simultáneamente a un servicio.
Nótese, en todo caso, que no se trata tanto de aspectos definitorios del concepto de ADL, sino de criterios para la evaluación de los ADLs existentes, o sea de un marco de referencia para la clasificación y comparación de los ADLs.
... pero la descripción de sistemas basados en componentes presenta también limitaciones serias, que no son de detalle sino más bien estructurales.
En primer lugar, sólo proporcionan una única forma de interconexión primitiva: la invocación de método.
COMPONENTES
CONECTORES
Representan interacciones entre componentes.
Corresponden a las líneas
de las descripciones de caja-y-línea.
EJEMPLOS TÍPICOS
Tuberías (pipes)
Llamadas a procedimientos Broadcast de eventos Protocolos cliente-servidor Conexiones entre una aplicación y un servidor de base de datos.
Representan los elementos computacionales primarios de un sistema.
Corresponden a las cajas de las descripciones de caja-y-línea de las
arquitecturas de software.
UN POCO DE HISTORIA ..
EJEMPLOS TÍPICOS:
Clientes
Servidores
Filtros
Objetos
Pizarras
Bases de datos
SOPORTE DE HERRAMIENTAS
CONECTORES
Interfaz
Tipos
Semántica
Restricciones (constraints)
Evolución
Propiedades no funcionales
CONCLUSIONES
Interfaz
Tipos
Semántica
Restricciones
Evolución
Propiedades no funcionales
Especificación activa
Múltiples vistas
Análisis
Refinamiento
Generación de código
Dinamismo
El proyecto Acme comenzó a principios de 1995 en la Escuela de Ciencias de la Computación de la Universidad Carnegie Mellon. Hoy este proyecto se organiza en dos grandes grupos:
Lenguaje Acme propiamente dicho
Acme Tool Developer’s Library (AcmeLib).
De Acme se deriva, en gran parte, el ulterior estándar emergente ADML. Fundamental en el desarrollo de Acme ha sido el trabajo de destacados
arquitectos y sistematizadores del campo, entre los cuales el más conocido es sin duda David Garlan, uno de los teóricos de arquitectura de software más activos en la década de 1990.
CONFIGURACIONES ARQUITECTÓNICAS
Un SGBDD se ocupa de la gestión de documentos optimizando el almacenamiento y facilitando su recuperación
GENERACIÓN DE CÓDIGO
OBJETIVO PRINCIPAL
Comprensibilidad
Composicionalidad
Heterogeneidad
Restricciones
Refinamiento y trazabilidad
Escalabilidad
Evolución
Dinamismo
Propiedades no funcionales
La motivación fundamental de Acme es el intercambio entre arquitecturas e integración de ADLs. Garlan considera que Acme es un lenguaje de descripción arquitectónica de segunda generación.
En los últimos años se ha estimado cada vez más deseable que un ADL pueda generar un sistema ejecutable, aunque más no sea de carácter prototípico.
De tener que hacerlo manualmente, se podrían suscitar problemas de consistencia y trazabilidad entre una arquitectura y su implementación. Acme, al igual que Wright, se concibe como una notación de modelado y no proporciona soporte directo de generación de código.
ACME - ARMANI
Acme se define como una herramienta capaz de soportar el mapeo de especificaciones arquitectónicas entre diferentes ADLs, o en otras palabras, como un lenguaje de intercambio de arquitectura.
Disponibilidad de plataforma
Un front-end gráfico programado en Visual C++ y Java que corre en plataforma Windows y que proporciona un ambiente completo para diseñar modelos de arquitectura. La sección de Java requiere JRE, pero también se puede trabajar en términos de COM y Win32 ejecutando AcmeStudio.exe.
Es un lenguaje puramente declarativo que describe la estructura del sistema y las restricciones a respetar, pero no hace referencia alguna a la generación del sistema o a la verificación de sus propiedades no funcionales o de consistencia.
LENGUAJES DE DESCRIPCIÓN DE ARQUITECTURA
MAURICIO BETANCURT
SANDRA GALVIS
CAMILA MARÍN