Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1 Introducción
Para iniciar un trabajo de esta índole es importante precisar las definiciones de los
principales conceptos implicados, como: arquitectura de software, arquitectura de
referencia, arquitectura de dominio y arquitectura generativa. Adicionalmente, es
fundamental aclarar la relación de estos términos con otros que suelen usarse en los
mismos contextos como Arquitectura Destino y Línea base de la Arquitectura.
Arquitectura de software: Según Clements [1] se refiere a grandes rasgos, a una
vista del sistema que incluye los componentes principales del mismo, la conducta
de esos componentes según se le percibe desde el resto del sistema y las formas en
que los componentes interactúan y se coordinan para alcanzar la misión del
sistema.
Según la IEEE [2] una arquitectura de software es la organización fundamental
de un sistema encarnada en sus componentes, las relaciones entre ellos y el
ambiente y los principios que orientan su diseño y evolución.
Según Kruchten [3] la arquitectura de software tiene que ver con el diseño y la
implementación de estructuras de software de alto nivel. Es el resultado de
ensamblar un cierto número de elementos arquitectónicos de forma adecuada para
satisfacer la mayor funcionalidad y requerimientos de desempeño de un sistema,
2
Los modelos cada vez toman más relevancia en el proceso de desarrollo de software,
según Bézivin [5] la construcción de software ha evolucionado de plantear que “todo
3
Fig. 1. Fusión del espectro de modelos y de la curva de adopción tecnológica, adaptado de [6],
[7] y [8].
El reto lo constituye “cruzar el abismo” [8] (“Cross the Chasm”), para pasar de
estar en la mayoría temprana, a ser un innovador. Sin embargo cualquiera que sea el
espectro o grupo en el que nos encontremos en un momento determinado, el paso al
siguiente se dará solo a través de la adopción de técnicas de modelado y herramientas
que apoyen su integración dentro del proceso de desarrollo de software. Si los
4
Fig. 2. Estructura de una Arquitectura de Dominio y su relación con las Líneas de Productos,
adaptado de [4].
5
Para clarificar la diferencia entre los frentes físicos y lógicos definiremos los tres
conceptos que componen una arquitectura de dominio:
Un DSL (Lenguaje Específico de Dominio): Se refiere a un concepto de carácter
lógico que se usa en el espacio del problema, se define como un lenguaje diseñado
para modelar o resolver problemas en un dominio particular bien definido, esto
significa que en vez de ser un lenguaje para propósito general, es un lenguaje que
captura con precisión la semántica de un dominio determinado.
Una plataforma: Se refiere a conceptos de carácter físico que hacen parte del
espacio de la solución, se define como la agregación de conceptos como: el
Middlewares, Librerías, Frameworks, Componentes y Aspectos1.
Las transformaciones: Definen los mecanismos para llevar los modelos desde el
espacio del problema hasta el espacio de la solución [12].
Los mecanismos que provee un DSL resultan de gran utilidad para definir un lenguaje
común para el grupo de desarrollo que le posibilite la asimilación y el uso de
conceptos lógicos que apoyen el reuso en el desarrollo de software, como por ejemplo
patrones de diseño o capas de una arquitectura.
Perfiles: Los perfiles son una extensión de UML, realizada con el fin de poder
representar dominios de tipo técnico o profesional. Los perfiles de UML están
compuestos básicamente por tres tipos de artefactos: estereotipos, valores
etiquetados y restricciones. Siendo más claros, el paquete de perfiles de UML 2.0
define una serie de mecanismos para extender las metaclases de un modelo
cualquiera, para adaptarlas a una plataforma específica (p.e. JEE, .NET) o a un
dominio de aplicación. En general un perfil se define en un paquete estereotipado
<<profile>> que extiende a un metamodelo o a otro perfil.
La sintaxis concreta de un DSL se puede expresar de forma gráfica a través de un
perfil de UML [4], por lo que marcar un modelo arquitectónico con base en los
estereotipos de un perfil, se convierte en la definición de una arquitectura de
software que se basa en la arquitectura de referencia definida en dicho perfil.
9
Fig. 6. Fragmento de un perfil para implantaciones en Java que utilicen el modelo EJB.
Los criterios de comparación presentados en esta propuesta son definidos con base en
trabajos que analizan las características de un lenguaje de descripción arquitectónica
[20] [15] [21], en la presente propuesta se busca ampliar estas características para
generalizarlas a las diferentes técnicas de modelado de arquitecturas de referencia, a
la par que se actualizan para apoyar las nuevas tendencias en arquitectura de software.
Adicionalmente, se realiza una clasificación de las características en tres categorías
que constituyen los pilares de MDA propuestos en el Manifiesto MDA [22] planteado
por IBM: (a) representación directa para enfocarse en el dominio del problema más
que en la tecnología, (b) automatización de las tareas mecánicas que no requieren
intervención humana y (c) estándares abiertos que posibiliten la interoperabilidad de
las herramientas y plataformas.
10
5.1.2. Automatización
2 Meta-Object Facility
3 XML Metadata Interchange
4 Eclipse Modeling Framework
12
diagramas de paquetes, los patrones se pueden integrar con las clases de los
patrones dentro de los paquetes; y en el frente de estándares abiertos existen
herramientas open source, existen un metamodelo como MOF y un estándar de
intercambio como XMI, también frameworks como EMF y muchos consorcios
industriales le apoyan.
Perfiles: En el frente de representación directa los perfiles no son muy expresivos
y pueden usarse para modelar diversas vistas, se pueden escribir restricciones con
OCL y las propiedades no funcionales se pueden incluir con valores etiquetados;
en el frente de automatización existen varias herramientas para modelar perfiles, y
tienen como propósito posibilitar el marcado y la generación de código, los
patrones se pueden integrar fácilmente y el código se puede regenerar ante
cambios; y en el frente de estándares abiertos existen herramientas open source,
existen un metamodelo como MOF y un estándar de intercambio como XMI,
también frameworks como EMF y muchos consorcios industriales le apoyan.
El análisis comparativo nos muestra que los ADLs tienen fortalezas en la
representación arquitectónica y la diagramación libre brinda mucha libertad y
expresividad gráfica, pero bajo los preceptos de propuestas como MDA y MDSD
tienen gran acogida técnicas como los diagramas de paquetes y más aun los perfiles.
Referencias
1. Clements, P., Bass L., Kazman R.: Software Architecture in Practice. 2 ed. Addison-Wesley, 2003.
ISBN: 032115495
14