En estos días nos
encontramos en una época donde la información es fundamental y se genera a
cada segundo de forma instantánea en todas las organizaciones y en cada uno de
sus niveles. En el ámbito empresarial, tener a mano la información necesaria
puede significar una ganancia o una pérdida monetaria.
Las aplicaciones
empresariales lograron tener un gran impacto en los negocios de hoy en día, ya
que de una u otra manera integran información de la organización y buscan su
coherencia y consistencia. Cubren diferentes áreas del negocio como ser
producción, contabilidad, gestión de compras y ventas, gestión de recursos
humanos, inventarios, activos fijos, gestión de las finanzas, etc. Establecen
una trazabilidad de las operaciones realizadas para tener control sobre las
mismas. Ayudan a la toma de decisiones y a obtener a partir de su
implementación una ventaja competitiva.
Con el advenimiento de
Internet, la información se globaliza, por ende las aplicaciones informáticas
tienden a brindar mayores prestaciones, como transacciones en línea, consultas
interactivas, comercio, entretenimiento, educación, etc. La información y los
sistemas informáticos, interconectan personas y empresas. Ahora puede
considerarse a la información como un activo intangible.
Dichas aplicaciones deben
brindar alta confianza en el almacenamiento, recuperación y manipulación de
datos del Negocio, además de ofrecer múltiples interfaces de usuario como
Interfaces Web para usuarios de la Internet e Interfaces GUI para usuarios de
una Intranet. Por otro lado, deben permitir comunicarse con otros sistemas,
coordinar la manipulación de datos en múltiples dispositivos, y asegurarse que
siempre se cumplan las reglas de Negocio definidas.
Pero su análisis, diseño,
desarrollo e implementación no es barata (inclusive con el uso de metodologías
de desarrollo de software ágil), se requiere de un grupo humano especializada
en diferentes áreas para llevar adelante un proyecto informático. Las áreas más
típicas que involucran a un proyecto son: Base de Datos, Redes y
Comunicaciones, Desarrollo Informático, Soporte Informático, Implantación de
Sistemas.
El presente articulo pretende introducir al lector en conceptos de la Ingeniería Guiada por Modelos (MDE) para posteriormente aplicar dichos conceptos al área de Desarrollo
Informático con lo cual obtendremos prestaciones que ayudaran a optimizar recursos humanos y
tecnológicos de un proyecto informático.
MDE – Model Driven Engineering
La Ingeniería Guiada por
Modelos (MDE), últimamente acapara una notoria atención y es considerada una de
las áreas más prometedoras de la Ingeniería del Software. MDE
se refiere al uso sistemático de modelos como artefactos primarios a lo largo
del ciclo de vida de la ingeniería. Los modelos son considerados como entidades
de primera clase, reemplazando al “código” como artefacto primario. Los
desarrolladores están forzados a enfocarse en el espacio de un problema
(modelos) y no en el espacio de la solución.
La complejidad de las plataformas
se maneja mejor por enfoques guiados por modelos en vez de los conocidos lenguajes
de programación de tercera-generación. Más aun las herramientas que soportan MDE van mejorando continuamente
con el pasar de los años, desde herramientas CASE de UML con metamodelos ya
definidos que generan código prediseñado, hasta herramientas con flexibilidad
y/o extensibilidad de metamodelos con facilidades de transformación entre
modelos.
El enfoque práctico más
prometedor de MDE es la Arquitectura Guiada por Modelos (MDA - Model Driven
Architecture), definido por el grupo OMG. Donde las aplicaciones se modelan en un nivel de
plataforma independiente y son transformadas por modelos de transformación a
implementaciones de plataformas especificas.
MDA – Model Driven Architecture
El
Object Management Group (OMG) es un consorcio de empresas de informática creada
en el año 1990, con el objetivo de potenciar el desarrollo de aplicaciones
orientadas a objetos distribuidos. Para ello, desde un principio se prestó
especial atención al problema de la interoperabilidad e integración de sistemas
de software, lo que ha llevado al OMG a definir numerosas especificaciones y
estándares como CORBA.
En
el año 2001, el OMG estableció la especificación MDA como arquitectura para el
desarrollo de aplicaciones. Mientras que la anterior especificación propuesto
por OMG, formado por las especificaciones OMA (Object Management Architecture)
y CORBA, estaba destinado al desarrollo de aplicaciones distribuidas, MDA
representa un nuevo paradigma de desarrollo de software en el que los modelos guían
todo al proceso de desarrollo.
En
la actualidad, la construcción de software se enfrenta a continuos cambios en
las tecnologías de implementación, lo que implica realizar esfuerzos
importantes tanto en el diseño de la aplicación, para integrar diferentes
tecnologías, como en el mantenimiento, para adaptar la aplicación a cambios en
los requisitos y en las tecnologías de implementación. Por otra parte, las
aplicaciones distribuidas Business to Business (B2B) y Client to Business (C2B)
son cada vez más comunes, siendo difícil satisfacer requisitos de
escalabilidad, seguridad y eficiencia. La idea clave que subyace a MDA es que
si el desarrollo esta guiado por los modelos de Software, se obtendrán
beneficios importantes en aspectos fundamentales como son la productividad, la
portabilidad, la adaptabilidad, la interoperabilidad y el mantenimiento.
En
MDA un sistema deberá ser especificado independientemente de la plataforma que
la soporta. Basado en las especificaciones de la plataforma, y con la elección
de una plataforma especifica, la especificación del sistema deberá ser
transformada a dicha plataforma. El patrón llamado MDA se muestra en la siguiente figura, donde la plataforma de modelo
independiente (PIM) se transforma en una plataforma de modelo específica (PSM),
esto significa que una transformación debe tener alguna entrada adicional que
se ilustra por el cuadro o caja vacía de la parte superior derecha de la
figura. En general, las transformaciones pueden darse entre cualquier tipo de
modelos, por ejemplo PIM a PIM, y también de modelos a código. Cuando los PIM’s
se basan en una maquina virtual, son denominados plataformas abstractas,
no solo los PIM’s tienen que ser transformados a una plataforma especifica,
también su máquina virtual.
La
especificación MDA está basada en un conjunto de otros estándares provistos por
la OMG como ser Meta Object Facility (MOF) y el Lenguaje Unificado de Modelado
(UML), que los estudiaremos en posteriores articulos.
Por otro lado, las transformaciones son el factor clave para el éxito de MDA, la especificación no está basada en un lenguaje de transformación especifico, pero adicionalmente la OMG, propuso el lenguaje de transformación Query/Views/Transformations (QVT) para MOF 2.0. Este lenguaje está en su fase de finalización para transformarse en el estándar de transformaciones de MDA. Otro lenguaje alternativo para transformaciones MDA es el lenguaje Atlas Transformation Language (ATL) que cuenta con herramientas de implementación estables y de uso libre integradas en el IDE Eclipse.
En
el contexto de MDA, existen los siguientes tipos de modelos:
- Computation Independent Model (CIM)
- Platform Independent Model (PIM)
- Platform Specific Model (PSM)
- Platform Model (PM)
Los
primeros tres modelos representan vistas del sistema desde diferentes puntos
(viewpoints) y los niveles de abstracción corresponden a las fases de análisis,
diseño e implementación en el modelo convencional de la Ingeniería del Software.
Computation Independent Models (CIM)
La guía oficial de MDA indica
que un modelo CIM es una vista del sistema desde “un punto de vista de
computación independiente”. El significado que se le puede otorgar es el de una
abstracción de computo, pero a detalle, acerca de la estructura del sistema. Otros
sinónimos para CIM serian modelo de análisis, modelo del dominio o modelo del
negocio, dependiendo del contexto en el cual se adapta la especificación MDA.
El CIM juega un papel importante brindando un enlace entre la brecha de los
expertos acerca del dominio y sus requerimientos por un lado, y aquellas
personas que son expertas en el diseño y la construcción de artefactos que
juntos satisfacen los requerimientos del dominio.
Platform Independent Models (PIM)
Un modelo PIM, es un
modelo que es independiente de las características de una plataforma de
cualquier tipo en particular. La independencia de la plataforma es un problema
central, inclusive si existiese un tipo muy general de plataforma este puede
considerarse como una plataforma independiente. Los PIM’s pueden verse como
maquinas virtuales de tecnología neutra, una clase general de plataforma o
plataforma abstracta.
Platform Specific Models (PSM)
Un modelo PSM esta
destinado a representar una plataforma específica. Este modelo se deriva desde
un PIM por medio de una transformación, combinando de esta forma la
especificación independiente de la plataforma con los detalles específicos de
la plataforma. Dependiendo de su propósito, un PSM puede proveer mucho o poco
detalle. Si se cuenta con todos los detalles necesarios para la generación
automática y la implementación del modelo entonces representa un modelo de plataforma
específica de la aplicación. El código resultante luego se obtiene por la
serialización del modelo. Por otro lado, un PSM puede requerir de futuros
refinamientos automáticos o manuales antes de obtener un modelo específico de
la aplicación.
Tipos de Transformaciones
La guía oficial de MDA, distingue dos tipos de
transformaciones:
- Transformaciones de Tipos de Modelos (Model Type Transformation)
- Transformaciones de Instancias de Modelos (Model Instance Transformation)
Transformaciones de Tipos de Modelos
Este tipo de
transformaciones mapean instancias de metamodelos fuente (definiendo tipos
fuente) a instancias de metamodelos destino (definiendo tipos destino). Las
siguientes figuras ilustran el proceso de transformación y las relaciones entre
modelos, metamodelos y transformaciones. Un importante aspecto es que las
transformaciones por si solas son modelos, esto permite realizar
transformaciones de alto nivel, por ejemplo transformaciones que generan
transformaciones. Todos los metamodelos comparten el mismo meta-metamodelo
(MOF). Nótese que las transformaciones pueden ser bidireccionales, pero en las
implementaciones prácticas solo se soportan transformaciones unidireccionales.
Transformación de MetaModelos.
Patrón para Transformación de Tipos de Modelos.
Transformaciones de Instancias de Modelos
Este tipo de
transformaciones es un tipo especial de las transformaciones de Tipos de
Modelos donde se usan marcas adicionales para seleccionar elementos del modelo origen,
de tal forma, que estas marcas guían la transformación. El marcado puede realizarse
directamente en el modelo origen si el
metamodelo origen soporta
conceptos apropiados de marcado, por ejemplo se pueden usar como marcas
estereotipos UML y valores de tags UML. Alternativamente, un modelo de marcado independiente
puede ser usado para asignarle marcas a los elementos del modelo origen. Otra
clase de marcas más abstractas es la selección de patrones en el modelo origen.
Frecuentemente, se especifica un conjunto de marcas para una plataforma en
particular (definidos como perfiles de UML) y el marcado de la plataforma
independiente del modelo origen corresponde a la selección de mapeos a un
concepto dependiente de una plataforma especifica, por ejemplo el estereotipo
<> ejecuta una transformación que permite crear elementos de
modelado para la plataforma especifica de EJB.
Marcado de un Modelo.
Capas del Modelado MDA
La especificación MDA usa
una arquitectura de 4 niveles o capas de modelado. En la terminología del OMG
estas capas son llamadas M0, M1, M2 y
M3.
- La capa M3, representa a la raíz de la jerarquía de capas y corresponde al Meta-Metamodelo, este meta-metamodelo es llamado Meta Object Facility (MOF) y define el lenguaje para especificar metamodelos. MOF es reflexivo, esto quiere decir que se puede definir así mismo.
- La capa M2, corresponde al Metamodelo, o al lenguaje especifico de modelado, un ejemplo de este tipo de lenguaje es el UML.
- La capa M1, representa al modelo en si del sistema de software.
- La capa M0, es la instancia de un modelo es decir a las clases y objetos que representan el sistema de software.
La siguiente figura
ilustra las relaciones de las capas del metamodelado, para elementos de
modelado se utiliza UML, es decir “clases” e “instancias”.
Ejemplo de jerarquía de MetaModelado OMG.
Resumen
En este articulo se mostraron conceptos iniciales de la tecnologia MDE y MDA, sus principales componentes y caracteristicas como ser los modelos CIM, PIM y PSM asi como los tipos de transformaciones existentes. Tambien se menciaron dos lenguajes de transformacion entre modelos como son QVT y ATL.
En siguientes articulos describiremos las tecnologias que rodean a MDA para su implementacion en proyectos de desarrollo de software, esto recien empieza...
No hay comentarios:
Publicar un comentario