Diapositiva 1 - GRUPO SPRI Euskadi+innova, Portal de la

Download Report

Transcript Diapositiva 1 - GRUPO SPRI Euskadi+innova, Portal de la

Cómo aumentar la productividad a través de las tecnologías de modelado

Adrián Noguero [email protected]

Agenda de la sesión

• ¿

Por qué

de éxito emplear modelos? Beneficios y casos • ¿Qué es y en qué consiste la

ingeniería dirigida por modelos

? • Explotar los modelos:

ejemplos

.

– Generación de código fuente. – Generación de documentación. – Verificación y generación de configuraciones. • ¿Cómo

probar

estas técnicas en mi empresa? Herramientas y guías básicas.

• Preguntas y

respuestas

¿Por qué emplear modelos?

¿Por qué emplear modelos?

• ¿Qué es un modelo?

“Un modelo es una representación abstracta y parcial de un sistema o proceso”

• Debemos tener claro que: – Los modelos representan parcialmente la realidad – Cambian en función de su objetivo – ¡Están por todas partes!

Modelos en todas partes

Los modelos son una simplificación de la realidad para facilitar la compresión de la misma

Modelos en las TICs

• En esta jornada nos centraremos en modelos para las TICs • Los modelos nos permiten: – Almacenar de forma ordenada la información – Facilitar la comprensión – Establecer un lenguaje único – Mejorar la mantenibilidad de nuestros desarrollos

Los modelos para la comunidad científica

“The Expert Group considers that the way forward to satisfy all these requirements, and to deal with the complexity increase, the conflicting constraints on systems, and the need to maintain and increase productivity, requires architecture-centric, model driven approaches.” ARTEMIS – Strategic Research Agenda ITEA2 - Roadmap “Focalizarse en el diseño de Sistemas de Sistemas, y diseñarlos de forma más rápida y eficaz en base a Modelos (Model Driven Architecture) ” Plataforma PROMETEO – Áreas estratégicas de investigación

Algunos casos de éxito – Proyecto TOPCASED

Algunos casos de éxito – Simulink (Mathworks)

¿Qué es y en qué consiste la ingeniería dirigida por modelos (MDE)?

¿Qué es y qué no es MDE?

• ¿Cuando hablamos de MDE… – …hablamos de UML?

– …hablamos de generación de código?

– …hablamos de esfuerzo extra?

– …hablamos de interoperabilidad entre herramientas?

– …hablamos de metodologías?

El proceso de MDE

• Cualquier proceso de MDE debe tener un objetivo: – Captura de requisitos… – Diseño y desarrollo de un equipo / aplicación… – Análisis y testing… – Configuración… • El objetivo elegido tendrá un impacto decisivo – Restringirá el lenguaje de modelado a emplear – Restringirá las herramientas disponibles

El proceso de MDE

• ¡Un proceso MDE puede te tener varias

vistas diferentes

de una misma realidad!

Cada etapa puede tener su propio lenguaje de modelado En cada transición debe haber un mapeo de conceptos

El proceso de MDE

• Cada vista puede (de hecho, suele) tener su propias: – Herramientas – Metodología

El proceso de MDE

• Algunas herramientas definen procesos completos de MDE para diferentes objetivos – Simulink – Rational Software Architect – Xilinx ISE Design Suite • Sin embargo, no siempre se adecúan a nuestras necesidades

¿Es posible definir nuestro propio proceso de MDE?

• ¡Sí, claro! Sólo necesitamos… (repaso rápido) – Objetivo . ¿Qué proceso de ingeniería de software quiero mejorar?

– Fases y vistas . ¿Cómo represento mi sistema en cada una?

– Herramientas – Metodología

Fases y vistas en MDE

• En un proceso MDE cada

fase

asociada a una

vista

debe estar del proyecto • Una vista es una representación parcial y diferente de una misma realidad, por tanto: – Se describirá en términos diferentes a otras vistas – La metodología de modelado empleada puede ser diferente

Fases y vistas en MDE

• Para cada vista deberemos elegir un (subconjunto de) lenguaje de modelado – Seleccionar uno estándar / conocido • Diagramas de clases • Simulink • Diagramas de casos de uso – Crear el nuestro propio • Definir los conceptos • Definir las propiedades • Definir las relaciones }

META-MODELO

Meta-modelos – Un ejemplo (Sistema de ficheros)

En primer lugar definiremos los conceptos que formarán nuestro modelo Algunos conceptos tienen relación semántica entre sí, los vincularemos mediante la herencia Algunos conceptos pueden contener a otros. Esto lo indicaremos con relaciones de composición.

Por último, algunos conceptos pueden estar relacionados entre sí de igual a igual.

Hagamos un ejemplo...

• Por grupos trataremos de establecer un proceso MDE – Objetivo – Fases y vistas: Metamodelos

Explotar los modelos

Generación de código

• •

Generación de documentación Verificación y generación de configuraciones

Sacar más partido a los modelos

• Utilizar modelos permite hacer más comprensibles los sistemas • Pero además puede ofrecer

más

...

– Generación de código – Automatización – Documentación – Configuración – ...

• Estos extras nos permiten aumentar nuestra productividad

Sacar más partido a los modelos

• En la raíz de cualquier mecanismo de explotación de modelos están las transformaciones Transformaciones Modelo a Modelo (M2M) Transformaciones Modelo a Texto (M2T)

Transformaciones en el centro

Transformaciones M2M

• Una transformación M2M es aquella que obtiene a partir de uno o varios modelos de entrada en otro modelo más refinado – Mapeo de conceptos – Reglas de inferencia – Restricciones

Transformaciones M2M

• Las transformaciones M2M pueden tener 3 objetivos en un proceso MDE: – Automatizar la siguiente la transición de una fase (vista) a – Vincular un modelo con una herramienta externa – Mezclar varios modelos en uno

Automatizar la transición entre fases

Application Requirements System Requirements Specification (1) Platform Requirements Application Architecture Design (2) Application Service Repository Cross-Domain Architecture Style System Allocation/ Configuration/ Refinement (4) Platform Architecture Design (3) Platform Module Library Reference Architecture Template Evaluation Criteria Validated System Architecture Models Quality Evaluation (5) Realization (HW/SW) (6)

Vinculación con herramientas externas

• Los datos de entrada de muchas herramientas comienzan a escribirse en XML PEPA

Mezclar modelos

Transformaciones M2T

• Una transformación M2T es aquella que obtiene a partir de uno o varios modelos de entrada ficheros de texto plano – Reglas de generación – Inferencia – Zonas protegidas

Transformaciones M2T

• Las transformaciones M2T normalmente culminan el proceso MDE… – Código fuente – HTML para documentación – Scripts de configuración • …aunque no siempre terminan el proceso de desarrollo – Modificaciones – Elementos no modelados

Ejercicio 1: M2T

HelloWorld! – En Java

Problemas con las transformaciones

• Los motores de transformación se basan en reglas, pero… – …¿y si los modelos de entrada son incorrectos?

– …¿y si el modelo representa cosas diferentes para diferentes personas?

¡Todas las tranformaciones fallan!

Problemas con las transformaciones

• Para solucionar este problema debemos introducir reglas, que: – Permitan distiguir un modelo válido de otro no válido – Unifiquen criterios – Definan la semántica – Eviten errores en etapas posteriores al proceso MDE

OCL - Object Constraint Language

• OCL es el estándar adoptado por la comunidad científica para crear estas reglas • Se trata de un lenguaje completo: – Muy complejo – Difícil de manejar a la perfección

package

uml

context

Class

inv: self

.ownedPort->select(name = 'Example' )->notEmpty()

endpackage

Simplificando la creación de reglas

• La herramienta GEMDE ofrece un interfaz más amigable para crear este tipo de reglas en nuestros metamodelos • Además podemos organizar las reglas y ejecutarlas para validar nuestros modelos • ¡Hagamos un ejemplo!

¿Cómo probar estas técnicas en mi empresa?

Herramientas y guías básicas

Editores de modelos libres

• Papyrus – Eclipse Modelling • TOPCASED • Moskitt • Crea el tuyo!! GMF & Eugenia

Editores de modelos de pago

• OBEO Designer • IBM Rational Software Architect • MagicDraw

Herramientas de transformación M2M

• ATL • QVT • Xtend

Herramientas de transformación M2T

• Acceleo • Jet • Xpand2

Herramientas de transformación M2M & M2T

• MOFScript • Java!

Cómo puedo hacer funcionar todo esto

DEMO:

Papyrus + MOFScript + GEMDE

¡Gracias por vuestra atención!