MDE (MODEL DRIVEN ENGINEERING)ARQUITECTURA DEL
SOFTWAREMotivación: Complejidad de sistemas
Muchos sistemas de software modernos están alcanzando niveles de complejidad. Los sistemas pueden incluir de millones de líneas de código, y cualquier parte de esta puede ser la causante de que colapse todo el sistema.
Por otra parte, sólo podemos ver un aumento en la complejidad de los sistemas de software, debido a la creciente demanda de una mayor y más sofisticada funcionalidad
¿Cómo vamos a hacer frente a este aumento de la complejidad?
MDE (MODEL DRIVEN ENGINEERING)ARQUITECTURA DEL
SOFTWAREMotivación: Complejidad de sistemas
Complejidad escencial : tenemos un gran problema
- Inherente al problema- No puede ser eludido o eliminado por tecnología o método- El problema depende del tipo de aplicación
Complejidad accidental: Hemos creado un gran problema
- Debido al uso inapropiado de tecnologías o métodos- Sucede cuando alguien no encontró la forma más fácil de implementar
las especificaciones- Podría ser eliminado con un buen diseño o un buen rediseño.
El desarrollo de sistemas modernos sufre de un exceso de complejidad accidental
¿Cómo podemos hacer frente a este aumento de complejidad?
MDE (MODEL DRIVEN ENGINEERING)ARQUITECTURA DEL
SOFTWAREMotivación: Complejidad de sistemas
Podríamos identificar como está estructurado?
MDE (MODEL DRIVEN ENGINEERING)ARQUITECTURA DEL
SOFTWAREMotivación: Modelado en otras disciplinas
El modelado ha sido ampliamente usado en Ingeniería
Con propósitos de especificación
- Estructura y comportamiento de la arquitectura
- Interacción con los stakeholders
Para razonamiento acerca del sistema
- Detectar errores de diseño- Deducir los resultados de la pruebas
Como una guía para la implementación
MDE (MODEL DRIVEN ENGINEERING)ARQUITECTURA DEL
SOFTWAREMotivación: Complejidad de sistemas
Claramente los modelos ayudan a simplificar el desarrollo de software
elevando el nivel de abstracción sobre el cual se crea el software
MDE (MODEL DRIVEN ENGINEERING)ARQUITECTURA DEL
SOFTWAREMotivación: Qué pasa con los modelos en Ingeniería del Software?
Usado (en el mejor de los casos) para propósitos de documentación
Hay una gran diferencia entre los modelos y la aplicación subyacente
Los modelos no se actualizan con los cambios de diseño
de los programadores
No hay manera de asegurar que los programadores
sigan las decisiones de diseño
capturados en los modelos
No hay herramientas o lenguajes para
manejar los modelos
Estamos haciendo realmente Ingeniería del Software?
MDE (MODEL DRIVEN ENGINEERING)ARQUITECTURA DEL
SOFTWAREMotivación: Model Driven Engineering (y disciplinas relacionadas)
Impulsar el papel de los modelos y las actividades de modelado en las diferentes etapas del ciclo de desarrollo
MDE (MODEL DRIVEN ENGINEERING)ARQUITECTURA DEL
SOFTWAREModel Driven Engineering
MDE (Model Driven Engineering) es un paradigma de desarrollo de software que promueve el uso de modelos con diferentes niveles de abstracción. La iniciativa MDE más conocida es MDA, que es una marca registrada de la OMG.
La tendencia dominante actual en el desarrollo software es que los modelos representen el problema software con un alto nivel de abstracción, tanto los elementos del sistema como las relaciones dentro de él.
A partir de ellos se lleva a cabo el desarrollo del software.
Los modelos por tanto se convierten en artefactos esenciales en MDE.
Los modelos sirven como entrada y salida en todas las fases del desarrollo del sistema hasta que se obtiene el sistema software .
MDE (MODEL DRIVEN ENGINEERING)ARQUITECTURA DEL
SOFTWAREModelado
Un modelo es la imagen simplificada de un sistema
MDE es reciente pero la idea de modelado es antigua
MDE (MODEL DRIVEN ENGINEERING)ARQUITECTURA DEL
SOFTWAREModelado
Un modelo es una simplificación de un sistema construido para cumplir un objetivo.
Un modelo es la descripción de un sistema (o de una parte) en un lenguaje bien definido.
Un modelo se presenta con frecuencia como una combinación de dibujos y de texto.
MDE (MODEL DRIVEN ENGINEERING)ARQUITECTURA DEL
SOFTWAREModelado
Debe ser capaz de responder a las preguntas del sistema actual
Esto nos permite utilizar algo que es más sencillo, más seguro y más barato que la realidad.
Nos permite tratar con el mundo de una manera simplificada, evitando la complejidad de la realidad
Un modelo representa la realidad para el propósito dado, el modelo es una abstracción de la realidad.
MDE (MODEL DRIVEN ENGINEERING)ARQUITECTURA DEL
SOFTWAREModelado: como los modelos son entendidos, interpretados, definidos?
MDE (MODEL DRIVEN ENGINEERING)ARQUITECTURA DEL
SOFTWAREModelado: Metamodelos actúan como filtros de la realidad
MDE (MODEL DRIVEN ENGINEERING)ARQUITECTURA DEL
SOFTWAREObjetivos de MDE
La principal motivación del paradigma MDE es mejorar la productividad.
Actualmente en las empresas de desarrollo cada vez existe más diversidad en las plataformas y tecnología utilizadas, y la creación de aplicaciones compatibles con las nuevas tecnologías se convierte en una labor muy compleja, quedándose las aplicaciones obsoletas con respecto a las nuevas tendencias tecnológicas del mercado.
MDE tiene el objetivo de aumentar la rentabilidad en una empresa desde el punto de vista del esfuerzo en el desarrollo de software.
• Mediante la mejora de la productividad a corto plazo de los desarrolladores. Aumentando las funcionalidades ofrecidas por los artefactos software.
• Mediante la mejora de la productividad a largo plazo de los desarrolladores. Reduciendo el porcentaje de los artefactos software que se quedan obsoletos.
MDE (MODEL DRIVEN ENGINEERING)ARQUITECTURA DEL
SOFTWAREObjetivos de MDE
El objetivo principal de la mayoría de las herramientas MDE es garantizar la primera ventaja.
Sin embargo, después del proceso inicial de construcción no ofrecen soporte en la gestión del ciclo de vida del artefacto de software y los cambios tienen que hacerse en el código fuente generado o en partes del modelo, lo que dará lugar a problemas de todo tipo.
Debido a la rápida evolución de las tecnologías en el desarrollo software de las empresas, la segunda ventaja se hace cada vez más importante. Según pasa el tiempo los productos software se van quedando obsoletos y el coste de adaptación es muy alto.
MDE (MODEL DRIVEN ENGINEERING)ARQUITECTURA DEL
SOFTWAREProceso MDE
La idea que promueve MDE es usar modelos a diferentes niveles de abstracción para desarrollar los sistemas. De esta manera, la principal actividad de los desarrolladores MDE es diseñar modelos, como los que usaban para desarrollar código, pero ahora guiados por una metodología.
La ventaja de tener un proceso MDE es que éste debe definir claramente cada paso a dar, forzando a los desarrolladores a seguir la metodología definida. Debe especificar la secuencia de modelos a desarrollar, y cómo derivar un modelo a partir de otro del nivel de abstracción inmediatamente superior.
Proporcionando a los desarrolladores una metodología como ésta, podrán saber en cualquier momento a lo largo del proceso de desarrollo, qué se debe hacer en cada paso de desarrollo y cómo conseguirlo.
MDE (MODEL DRIVEN ENGINEERING)ARQUITECTURA DEL
SOFTWAREProceso MDE
El sistema en desarrollo es descrito en primer lugar por un modelo a un alto nivel de abstracción, ignorando cualquier tipo de dependencia de la plataforma.
Luego se deben realizar una serie de refinamientos interactivos (transformaciones) con el objetivo de hacer el sistema más específico de la plataforma en cada paso.
MDE (MODEL DRIVEN ENGINEERING)ARQUITECTURA DEL
SOFTWAREProceso MDE
Una de las ventajas más importantes de usar el proceso MDE es su adaptabilidad a los cambios.
Cuando un cambio ocurre, bien en el mayor nivel de abstracción o bien en el menor nivel de abstracción, su impacto está localizado y las partes que no están afectadas por el cambio se reutilizan.
Desde el punto de vista de la medición del software, el proceso MDE se puede ver como un conjunto de transformaciones de modelos, a partir de un nivel de abstracción alto hasta un nivel más específico.
En el nivel más abstracto estarían los requisitos, y en el nivel más específico estaría resultado de la medición.
MDE (MODEL DRIVEN ENGINEERING)ARQUITECTURA DEL
SOFTWAREEstándares y Herramientas MDE
Hoy en día los estándares más significativos de MDE son MDA de OMG, Software Factories de Microsoft y Model Integrated Computing (MIC)
MDE (MODEL DRIVEN ENGINEERING)ARQUITECTURA DEL
SOFTWAREEstándares y Herramientas MDE
Microsoft e IBM desarrollan sus propias tecnologías:
Microsoft desarrolla las MS/DSL Tools utilizan el estándar Software Factories.
IBM, contribuye en MDA con • Eclipse Modeling Framework (EMF) • Graphical Editing Framework (GEF)• Graphical Modeling Framework (GMF)
Para MIC desarrolla el ISIS (Institute of Software Integrated Systems) de la Universidad de Vanderbilt Generic Modeling Environment (GME) Model Management tool suite (UDM) Model Transformation tool suite (GReAT) Design Space Exploration tool suite (DESERT)
MDE (MODEL DRIVEN ENGINEERING)ARQUITECTURA DEL
SOFTWAREDomain Specific Modeling
El modelado específico de dominio (DSM) es una metodología de Ingeniería del Software para desarrollar y diseñar sistemas.
Esta metodología implica el uso sistemático de un lenguaje específico de dominio (DSL) para representar el dominio.
El nivel de abstracción dentro de los lenguajes DSM es muy alto, más que los lenguajes de propósito general como puede ser UML, lo que significa un menor esfuerzo ya que se centra en el dominio específico de un determinado sistema.
La metodología DSM incluye la generación automática de código ejecutable a partir de los modelos DSM, esta es más fiable que la manual ya que reduce el número de errores en los programas finales, mejorando así la calidad.
MDE (MODEL DRIVEN ENGINEERING)ARQUITECTURA DEL
SOFTWAREDomain Specific Modeling
DSL es un lenguaje específico de dominio que está diseñado para utilizarse en dominios o problemas específicos, a diferencia de los lenguajes de propósito general (General Purpose Language -GPL-).
Tienen un mayor nivel de abstracción que los lenguajes base y expresan los conceptos de dominio específico en un nivel de representación más alto.
Debe considerarse como un lenguaje de tamaño pequeño, muy centrado en resolver algunos problemas claramente identificables a los que debe enfrentarse un analista, arquitecto, responsable de pruebas o administrador del sistema.
El empleo de DSL´s es una técnica adecuada para desarrollar software en menor tiempo y con una mejor calidad.
Algunos ejemplos de DSL´s conocidos son SQL (Structured Query Language) o HTML (HyperText Markup Language).
MDE (MODEL DRIVEN ENGINEERING)ARQUITECTURA DEL
SOFTWAREDomain Specific Modeling
MDE (MODEL DRIVEN ENGINEERING)ARQUITECTURA DEL
SOFTWAREMDA: Una forma de hacer MDE
Algunas veces MDA es establecida como MDE con estándares
MDE (MODEL DRIVEN ENGINEERING)ARQUITECTURA DEL
SOFTWAREMDA: Una forma de hacer MDE
MDA(Model Driven Architecture) es un Framework que proporciona una solución para los cambios de negocio y de tecnología, permitiendo construir aplicaciones independientes de la plataforma e implementarlas en plataformas como CORBA, J2EE, Servicios Web, etc.
MDE (MODEL DRIVEN ENGINEERING)ARQUITECTURA DEL
SOFTWAREMDA: Una forma de hacer MDE
MDA, se basa en el lenguaje de modelado unificado UML, el lenguaje de modelado tan popular de la OMG.
De hecho, la arquitectura de la OMG surge en un nivel de abstracción superior en un esfuerzo de encontrar un mecanismo universal de integrar aplicaciones.
La base del estándar MDA de la OMG es UML y Meta Object Facility (MOF) que hacen posible modelar no sólo UML sino también otros metamodelos, incluyendo CORBA y CWM (Common Warehouse Meta Model).
Al mismo tiempo, la OMG ha estandarizado el intercambio de metadatos mediante la propuesta XML Metadata Interchange (XMI).
MDE (MODEL DRIVEN ENGINEERING)ARQUITECTURA DEL
SOFTWAREMDA: Una forma de hacer MDE
UML, MOF y XMI son tres tecnologías clave para el desarrollo de software bajo elenfoque de MDA. Usadas de forma conjunta proporcionan grandes ventajas que hacen que los modelos sean más claros y fácilmente mantenibles.
Estas tecnologías definen una forma estándar de almacenar e intercambiar modelos, bien sean de negocio o de diseño.
Esto permite a los constructores de herramientas CASE establecer un lenguaje común que proporcione grandes beneficios para el desarrollador.
Una vez que las herramientas implementen estos estándares se pueden automatizar y estandarizar numerosos procesos del desarrollo que simplificarán muchas tareas, que antes eran manuales o se realizaban de forma automática por medio de alguna característica propia de la herramienta, que en muchos casos hacía imposible el intercambio de información con otras herramientas del mercado.
MDE (MODEL DRIVEN ENGINEERING)ARQUITECTURA DEL
SOFTWAREMDA: Por qué utilizarla?
Muchas plataformas y tecnologías- Objetos Distribuidos, Componentes, Web services, ...- No hay mucha interoperabilidad- Y con tendencia aumentar
Evolución muy rápida- Tecnologías evolucionadas que son obsoletas muy pronto- Cual tecnología va a salir mañana? - Y cuanto va a durar la ultima?- Y como protejo mi inversión?
Por consiguiente, nunca tenemos un estándar en SO. DB, Servidores, Plataformas, Middleware, etc.
Es complejo consensualizar un modelo y una forma de transformarlo con el propósito de ser menos dependiente de la tecnologías
MDE (MODEL DRIVEN ENGINEERING)ARQUITECTURA DEL
SOFTWAREMDA: espacios del problema y de la solución
Modelar el problema
Analizar el problema
Diseñar solución
Construir solución
Espacio del problema
Espacio de solución
MDE (MODEL DRIVEN ENGINEERING)ARQUITECTURA DEL
SOFTWAREMDA: tipos de modelos
CIM. Representa los modelos independientes de la computación (Computationally - Independent Model) que caracterizan el dominio del problema. Este tipo de modelos surge ante todo en procesos de modelado de negocio e idealmente se conciben antes del levantamiento de requisitos para una aplicación particular.
MDE (MODEL DRIVEN ENGINEERING)ARQUITECTURA DEL
SOFTWAREMDA: tipos de modelos
• PIM. Representa los modelos que describen una solución de software que no contiene detalles de la plataforma concreta en que la solución va a ser implementada, de ahí su nombre de modelos independientes de la plataforma (Plataform-Independent Models). Estos modelos surgen como resultado del análisis y diseño.
MDE (MODEL DRIVEN ENGINEERING)ARQUITECTURA DEL
SOFTWAREMDA: tipos de modelos
• PSM. Son los modelos derivados de la categoría anterior, que contienen los detalles de la plataforma o tecnología con que se implementará la solución, de ahí su nombre de modelos específicos de la plataforma (Plataform-Specific Models).
MDE (MODEL DRIVEN ENGINEERING)ARQUITECTURA DEL
SOFTWAREMDA: proceso tradicional y proceso con MDA
MDE (MODEL DRIVEN ENGINEERING)ARQUITECTURA DEL
SOFTWAREMDA: proceso y roles
MDE (MODEL DRIVEN ENGINEERING)ARQUITECTURA DEL
SOFTWAREMDA: Estrategias
Para alcanzar beneficios fundamentales, como productividad, interoperabilidad, portabilidad y facilidad de mantenimiento, se plantea:
Representación directa. Esta estrategia se basa en el principio de abstracción, que hace énfasis en el dominio del problema más que en la tecnología.
Automatización. La propuesta de MDA fortaleció y dinamizó el papel que las herramientas CASE tienen en el desarrollo de soluciones.
Estándares abiertos. El uso de estándares se ha constituido en el medio que ha posibilitado el reto de integrar herramientas robustas de apoyo al desarrollo. Por ejemplo, los estándares como UML deben expresarse en XML.
MDE (MODEL DRIVEN ENGINEERING)ARQUITECTURA DEL
SOFTWAREMDA: Arquitectura de 4 niveles MOF (Meta_Object Facility)
El OMG plantea una arquitectura de cuatro niveles para la definición de sus estándares, en donde cada capa se define como instancia de la anterior.
Esta arquitectura de modelos denominada MOF tiene el objetivo de permitir la incorporación de nuevos lenguajes de modelado (metamodelos) para propósitos específicos .
Un metamodelo es un modelo que define el lenguaje para expresar un modelo.
MOF es un lenguaje común y abstracto para la especificación de meta-modelos, que sirve como un modelo común para UML y CMW
MDE (MODEL DRIVEN ENGINEERING)ARQUITECTURA DEL
SOFTWAREMDA: Arquitectura de 4 niveles MOF
• Capa M3 (Metametamodelo). Es una especificación que define un lenguaje abstracto para especificar, construir y manejar elementos comunes a cualquier metamodelo.
• Capa M2 (Metamodelos). Especifica las entidades de un lenguaje de modelado. Los lenguajes que se han definido como instancias de MOF son: UML, CWM y MOF en sí mismo.
• Capa M1 (Modelos). Se refiere a los modelos de usuarios que suelen desarrollarse en el momento de construir un sistema de información.
• Capa M0 (Instancias). Describe instancias de las entidades propuestas en un modelo de un sistema de información. Es en este nivel en donde pueden usarse los diagramas de objetos como instancias de las clases para verificar que se cumplen las restricciones definidas en el nivel de los modelos (M1).
MDE (MODEL DRIVEN ENGINEERING)ARQUITECTURA DEL
SOFTWAREMDA: Arquitectura de 4 niveles MOF
MOF
UML Meta-Model
UML
Instancias con datos
MDE (MODEL DRIVEN ENGINEERING)ARQUITECTURA DEL
SOFTWAREMDA: XMI (XML Metadata Interchange)
XMI es un lenguaje para permitir a desarrolladores de software el intercambio de modelos UML.
Es una especificación del OMG para facilitar el intercambio de modelos entre herramientas de modelado.
El XMI provee un mecanismo de intercambio de modelos entre herramientas CASE utilizando XML.
MDE (MODEL DRIVEN ENGINEERING)ARQUITECTURA DEL
SOFTWAREMDA: Transformación de modelosLa transformación de modelos es el proceso central de MDA. Para lograr un estándar para la transformación, OMG favorece el estándar QVT (Queries/Views/ Transformations).
ATL es un lenguaje de transformación de modelos.
MDE (MODEL DRIVEN ENGINEERING)ARQUITECTURA DEL
SOFTWAREMDA: Transformación de modelos
MDE (MODEL DRIVEN ENGINEERING)ARQUITECTURA DEL
SOFTWAREMDA: Transformación de modelos
MDE (MODEL DRIVEN ENGINEERING)ARQUITECTURA DEL
SOFTWAREMDA: CWM
Common Warehouse Metamodel (CWM). Es un meta-modelo que especifica interfaces que pueden ser usadas para habilitar el intercambio de metadatos de almacenes de datos e inteligencia de negocio, entre distintas herramientas, plataformas y metadatos en ambientes heterogéneos y distribuidos de almacenes de datos.
CMW se basa en tres estándares: MOF, UML y XMI. Los modelos CMW permiten a los usuarios rastrear el linaje de los datos, mediante objetos que describen de donde vienen los datos y cuándo y cómo se crearon los datos.