3 1 mde mda

43
MDE (MODEL DRIVEN ENGINEERING) ARQUITECTURA DEL SOFTWARE Motivació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?

Upload: landetap

Post on 16-Apr-2017

845 views

Category:

Education


0 download

TRANSCRIPT

Page 1: 3 1 mde mda

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?

Page 2: 3 1 mde mda

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?

Page 3: 3 1 mde mda

MDE (MODEL DRIVEN ENGINEERING)ARQUITECTURA DEL

SOFTWAREMotivación: Complejidad de sistemas

Podríamos identificar como está estructurado?

Page 4: 3 1 mde mda

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

Page 5: 3 1 mde mda

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

Page 6: 3 1 mde mda

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?

Page 7: 3 1 mde mda

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

Page 8: 3 1 mde mda

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 .

Page 9: 3 1 mde mda

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

Page 10: 3 1 mde mda

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.

Page 11: 3 1 mde mda

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.

Page 12: 3 1 mde mda

MDE (MODEL DRIVEN ENGINEERING)ARQUITECTURA DEL

SOFTWAREModelado: como los modelos son entendidos, interpretados, definidos?

Page 13: 3 1 mde mda

MDE (MODEL DRIVEN ENGINEERING)ARQUITECTURA DEL

SOFTWAREModelado: Metamodelos actúan como filtros de la realidad

Page 14: 3 1 mde mda

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.

Page 15: 3 1 mde mda

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.

Page 16: 3 1 mde mda

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.

Page 17: 3 1 mde mda

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.

Page 18: 3 1 mde mda

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.

Page 19: 3 1 mde mda

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)

Page 20: 3 1 mde mda

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)

Page 21: 3 1 mde mda

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.

Page 22: 3 1 mde mda

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).

Page 23: 3 1 mde mda

MDE (MODEL DRIVEN ENGINEERING)ARQUITECTURA DEL

SOFTWAREDomain Specific Modeling

Page 24: 3 1 mde mda

MDE (MODEL DRIVEN ENGINEERING)ARQUITECTURA DEL

SOFTWAREMDA: Una forma de hacer MDE

Algunas veces MDA es establecida como MDE con estándares

Page 25: 3 1 mde mda

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.

Page 26: 3 1 mde mda

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).

Page 27: 3 1 mde mda

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.

Page 28: 3 1 mde mda

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

Page 29: 3 1 mde mda

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

Page 30: 3 1 mde mda

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.

Page 31: 3 1 mde mda

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.

Page 32: 3 1 mde mda

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).

Page 33: 3 1 mde mda

MDE (MODEL DRIVEN ENGINEERING)ARQUITECTURA DEL

SOFTWAREMDA: proceso tradicional y proceso con MDA

Page 34: 3 1 mde mda

MDE (MODEL DRIVEN ENGINEERING)ARQUITECTURA DEL

SOFTWAREMDA: proceso y roles

Page 35: 3 1 mde mda

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.

Page 36: 3 1 mde mda

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

Page 37: 3 1 mde mda

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).

Page 38: 3 1 mde mda

MDE (MODEL DRIVEN ENGINEERING)ARQUITECTURA DEL

SOFTWAREMDA: Arquitectura de 4 niveles MOF

MOF

UML Meta-Model

UML

Instancias con datos

Page 39: 3 1 mde mda

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.

Page 40: 3 1 mde mda

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.

Page 41: 3 1 mde mda

MDE (MODEL DRIVEN ENGINEERING)ARQUITECTURA DEL

SOFTWAREMDA: Transformación de modelos

Page 42: 3 1 mde mda

MDE (MODEL DRIVEN ENGINEERING)ARQUITECTURA DEL

SOFTWAREMDA: Transformación de modelos

Page 43: 3 1 mde mda

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.