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