sábado, 8 de agosto de 2015

Introduccion a la Ingenieria Guiada por Modelos



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