Ingenieria Dirigida Por Modelos

Introducción Vicente García Díaz ([email protected]) Juan Manuel Cueva Lovelle MDE‐OOTLAB Research Group Noviembr

Views 51 Downloads 1 File size 9MB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Introducción

Vicente García Díaz ([email protected]) Juan Manuel Cueva Lovelle MDE‐OOTLAB Research Group Noviembre de 2010

   

Crecimiento de la complejidad del software [Groth, 2004] No se reutiliza ni el conocimiento tecnológico ni del dominio  [Caldiera and Basili, 1991] Se necesita industrializar el desarrollo del software [Mcilroy,  1968] El término crisis del software sigue vigente [Dijkstra, 1972]



El nivel de abstracción de los lenguajes va en  aumento  Binario  Ensamblador  Procedimental  Orientado a objetos



Hacia el espacio de la solución del problema



En los años 80 surgen las herramientas CASE  No tuvieron mucho éxito

 

Reducir la complejidad de las plataformas actuales Expresar los conceptos de los diferentes dominios  de forma más apropiada Conceptos del dominio Conceptos del dominio Trabajo mental de  los desarrolladores

Conceptos de la  tecnología utilizada Conceptos de la  tecnología utilizada



Relación en cascada entre modelos y  metamodelos Elementos del  mundo real  (dominio)

describe

Modelo

describe

Metamodelo

 

Clave de la ingeniería dirigida por modelos Es necesario para  Construir lenguajes de dominio específico  Validar modelos  Transformar modelos  Generar artefactos (código, documentación, etc.)  Integración de herramientas

[Stahl and Völter, 2006]

PARTE  ESPECÍFICA

PARTE VARIABLE

PARTE COMÚN

[Stahl and Völter, 2006]

[Stahl and Völter, 2006]

[Stahl and Völter, 2006]

Meta‐ metamodelo Subdominios

Sintaxis  abstracta

Basado en

Semántica  estática

Describe  conceptos de

Dominio

Metamodelo

Lenguaje de  dominio  específico

Sintaxis  concreta

Modelo  formal

Semántica

Respeta a



Dominio de las Redes de Petri 

Fueron definidas en los años 60 por Carl Adam Petri  Son una especialización de la teoría de autómatas que permite expresar eventos  concurrentes  Tiene lugares, transiciones y arcos dirigidos  Áreas de aplicación: análisis de datos, diseño de software, fiabilidad, flujo de trabajo…



Metamodelo para Redes de Petri

PetriNet 0..*

1 1

Node

Arc

+Name : string 0..*

Place

Transition

+weight : int



Meta‐metamodelo para Redes de Petri

PetriNet 0..*

1 1

Node

Arc

+Name : string 0..*

Place

Transition

+weight : int



Mapeo entre sintaxis abstracta y concreta para Redes de Petri

Meta-metamodelo

Metamodelo

Modelo

Elementos del mundo real

Instancia de Representado por

Modelo Modelo Modelo

Metamodelo

Transformación

Reglas de  transformación

Modelo

Transformación Artefactos  f textuales  g generados

Reglas de  transformación

Inter med

iate2 Inter med iate

Code 2Cod e

Mod el2M odel

[http://www.abbeyworkshop.com/howto/xslt/xslt_templates/index.html]

Metamodelo

Based on

Instance of

Instancia del metamodelo

Apply to

Plantillas

Yields

Especificación Código generado

[http://www.openarchitectureware.org/pub/documentation/4.3.1/openArchitectureWare‐4.3.1‐Reference.pdf]

[http://ondotnet.com/pub/a/dotnet/2003/02/03/codedom.html?page=1]

Preprocesamiento

[http:// irc.essex.ac.uk/www.iota‐six.co.uk/c/j1_the_c_preprocessor.asp]

[http:// today.java.net/today/2004/11/22/Aspects_2‐2.pdf]

[http:// java.sun.com/j2se/javadoc/writingdoccomments/]

Frame

Instanciación

Generación

short  int aShortNumber;

[http://www.voelter.de/data/pub/ProgramGeneration.pdf]

Model‐Driven Architecture



http://www.omg.org/mda

   

Computation Independent Model (CIM) Platform Independent Model (PIM) Platform Specific Model (PSM) Implementation Specific Model (ISM)

CIM

PIM

PSM 1



PSM n

ISM 1



ISM n

Meta‐metamodelo (M3)

Metamodelo (M2)

Modelo (M1)

Realidad (M0)

MOF

UML

ODM

Modelos UML

Modelos ODM

Sistema





MOF

Metamodelo origen

Metamodelo destino

Reglas de  transformación (QVT)

Modelo origen

transformación

Modelo destino



Estándar para    

 

Visualizar Especificar Documentar …

Independiente del lenguaje Una combinación   Fue diseñado por “The three amigos”  James Rumbaugh, Ivar Jacobson, Grady Booch

stereotype

constraint

tagged value

 

Sirve para serializar modelos Permite que las herramientas se integren XMI 2.1 – MOF 2.0 XMI 1.3 – MOF 1.4 XMI 1.1 – MOF 1.3 XMI 1.2 – MOF 1.4

XMI 2.0 – MOF 1.4

2009

  

Se utiliza para definir restricciones Es parte de UML Tipos  Clase  invariant  Precondiciones de una operación  precondition  Postcondiciones de una operación  postcondition

context Empresa inv: conductoresPotenciales = empleados‐>select(edad >= 18) poseedor

Empresa +contratar(entrada p : Persona)

jefe

-edad : int

Coche

vehículos

+conducir(entrada p : Persona)

context Coche::conducir(p: Persona) pre: (conductor==null) && (p.edad >= 18) post: conductor = p

conductoresPotenciales empleados Persona

context Coche inv: conductor.edad >= 18

conductor

context Empresa::contratar(p: Persona) pre: ‐‐none post: (empleados.size = [email protected] + 1) && (empleados.includes(p)) 

[Stahl and Völter, 2006]



Restricción en nivel Mn afecta al nivel Mn‐1

context PersonaDesconocida inv: name == “no identificada”  |||| “desconocida”

context ParametrosNumericos inv: type.name == “Integer”

Lenguaje de transformación de modelos Compuesto de tres lenguajes con objetivos  distintos  QVT  Core  Operacional

Relations Language

Core Language

Black Box Mappings

 Relacional

Operation Mappings Language

 



Transformaciones  un conjunto de relaciones  Declarativo

[Mens, 2009]



Transformaciones  un conjunto de operaciones  Imperativo

[Mens, 2009]

[http://smv.unige.ch/old/tiki‐download_file.php?fileId=661]

http://smv.unige.ch/old/tiki‐download_file.php?fileId=661

Aplicación de la Ingeniería Dirigida por Modelos

[Kelly and Tolvanen, 2008]

[Kelly and Tolvanen, 2008]

[Kelly and Tolvanen, 2008]

[Kelly and Tolvanen, 2008]

[Kelly and Tolvanen, 2008]

  

Los videojuegos son uno de los negocios más  rentables del mundo Se quiere industrializar su  desarrollo [Furtado, 2007] Juegos de aventuras



Integrado en Visual Studio

    

Todos los estados del juego tienen que ser  alcanzables Un personaje principal Una pantalla de inicio Una pantalla de fin de juego Etc…

Sistema que sirve para hacer la trazabilidad  en la fabricación de productos alimentarios  Caso real de aplicación de MDE 



Crear un sistema software/hardware  adaptable a cada cliente de forma sencilla

1.1 Pro ducto r ? 1.2 Tipo ? 1.3 Pes o ? 1.4 Temperatura? 1.5 Acidez? 1.6 Lo te Pro d uctor? 1.7 Lo te INT->?

2.1 Pro ducto r ? 2.2 Cantidad? 2.3 Lo te Pro d uctor? 2.4 Lo te INT->? 3.1 Pro ducto r ? 3.2 Cantidad? 3.3 Lo te Pro d uctor? 3.4 Lo te INT->?

4.1 Pro ducto r ? 4.2 Cantidad? 4.3 Lo te Pro d uctor? 4.4 Lo te INT->?

5.1 Pro ducto r ? 5.2 Cantidad? 5.3 Lo te Pro d uctor? 5.4 Lo te INT->?

6.1 Lo te ? 6.2 Cantidad? 6.2 PH?

FABRICA DE QUESOS PROCESO BEYOS

7.1 Lo te Leche? 7.2 Cantidad? 7.3 Mas Leche? 7.4 Lo te Cuajo ? 7.5 Mas Cuajo ? 7.6 Lo te Fermento s? 7.7 Mas Fermento s? 7.8 Lo te Calcio ? 7.9 Mas Calcio ? 7.10 Lo te INT->

1. RECEPCION LECHE 6. PASTEURIZA 2. RECEPCION CUAJO

Fecha: 04/06/2008 Versión: 0.017

12.1 Lo te? 12.2 Nº Artículo s? 12.3 Cliente? 7. CUAJADA

3. RECEPCION FERMENTOS 13. ENVASADO REQUESÓN

Las etiquetas las irán colocando en las estanterías que quieran

4. RECEPCION CALCIO

14.1 Cliente? 14.2 Lo te? 14.3 Unidades?

8.1 Lo te Cuajada? 8.2 Nº etiquetas d eseadas? ETIQUETAS RFID

5. RECEPCION SAL

14. COMERCIALIZ ACION

8. EMMOLDADO

9.1 RFID Enmo ldado? 9.2 Lo te Sal?

10.1 RFID Salado ?

11.1 RFID Secado ? 11.3 Nº Co ntra-etiquetas? 11.4 Primera Co ntra-etiqueta 11.5 Cliente? ETIQUETAS COMERCIALES

9. SALADO

10. SECADO

11. ENVASADO

13.1 Cliente? 13.2 Pes o ? 13.3 Lo te? 13.4 Unidad es?

12. COMERCIALIZ ACION

   

Documento XML conforme con un XML Schema Se hacen transformaciones para generar código Varias secciones para definir el proceso También hay una interfaz gráfica

Modelo origen

Sistema generado

nUML

ExpertCoder

Database.sql

Plataforma para el desarrollo de software dirigido por modelos



Engloba todo lo relacionado con MDE en Eclipse The Eclipse Modeling Project (EMP) focuses on the evolution and promotion of  model‐based development technologies within the Eclipse community by providing a  unified set of modeling frameworks, tooling, and standards implementations

  

Todos tiene Eclipse Public Licence y ha de ser Open Source No está relacionado con el grupo OMG pero… Se divide principalmente en:      



Desarrollo de sintaxis abstractas Desarrollo de sintaxis concretas Transformación de modelos Herramientas de desarrollo Desarrollo de nuevas tecnologías Agrupación de proyectos

http://www.eclipse.org/modeling



Eclipse Modeling Framework (EMF)  Ecore  Otros componentes: ▪ ▪ ▪ ▪ ▪ ▪

Soporte para realizar transacciones sobre modelos Validación de modelos Consultas sobre modelos Búsquedas sobre modelos Comparación de modelos Mecanismos de persistencia



Graphical Modeling Framework (GMF)  Servicio de sintaxis gráficas  Permite crear un editor sobre el metamodelo Ecore



Textual Modeling Framework (TMF)  Servicio de sintaxis textuales  Permite crear un editor sobre el metamodelo Ecore  Xtext es una tecnología englobada dentro de TMF



Model to Model Transformation (M2M)  Para transformar unos modelos en otros  QVT, ATL, Xtend, etc… 



Model to Text Transformation (M2T)  Para generar artefactos textuales  Java Emitter Templates (JET), Xpand, etc…



Model Development Tools (MDT)  Proyectos basados en estándares de la industria ▪ ▪ ▪ ▪ ▪ ▪

XML Schema (XSD) UML2 UML2 Tools Object Constraint Language (OCL) Business Process Modeling Notation (BPMN2) …



Generative Modeling Technologies (GMT)  Agrupa a varios proyectos que aún están en fase 

experimental  Muchos de ellos acaban formando parte de la lista  principal de proyectos de EMP ▪ ATL ‐> ahora en M2M ▪ Xpand ‐> ahora en M2T ▪ Xtext ‐> ahora en TMF



Modeling Amalgamation Project (Amalgam)  Amalgamation ‐> Es el proceso de combinar o unir 

entidades en una única forma  Su propósito es agrupar tecnologías de EMP y facilitar su  uso, instalación e integración

Trabajando con el Eclipse Modeling Project

 

Lo más fácil es descargar un Eclipse con todo http://www.eclipse.org/downloads/packages/ release/galileo/sr2 (Eclipse ModelingTools)

Mediante el editor gráfico

ECORE META‐METAMODEL



Ecore



Nuevo proyecto  org.eclipse.emp.examples.web



Nuevo elemento en la carpeta model  web.ecore



Nuevo EMF Generator Model  web.genmodel

EOperation

Cuerpo del método EParameter Documentación JavaDoc

 

Abrir org.eclipse.emp.examples.web.programming Crear SaveXMI.java

 

Abrir org.eclipse.emp.examples.web.programming Crear LoadXMI.java



Java Emitter Template (JET)  Model‐to‐Text  Modelo  JAVA  Texto  Traducción y generación  Tipos de elementos ▪ Directivas  ▪ Expresiones  ▪ Scriplets 

 

Convertir el proyecto para trabajar con JET org.eclipse.emp.examples.web.programming

 

Abrir org.eclipse.emp.examples.web.programming Crear ConvertToHTML.java



Crear programáticamente categorías y artículos  dentro de una Web



Crear mediante JET un archivo HTML para la Web  (index.html) y dentro enlaces a un archivo HTML  para cada categoría, mostrando en cada  categoría la información de los artículos

 

Abrir org.eclipse.emp.examples.web.programming Crear Observable.java y Observer.java

Mediante interfaces Java anotadas



Se utilizan comentarios JavaDoc para anotarlas



Algunas propiedades…  abstract=“BOOLEAN”  required=“BOOLEAN  containment=“BOOLEAN”  default=VALUE  changeable=“BOOLEAN"

 

Crear archivo web.genmodel Proyecto org.eclipse.emp.examples.web.interfaces

Programáticamente



Metamodelo



Modelo  API reflectiva basada en Eobject  eClass()  eGet() y eSet()  eContents() / eContainer()

Crear dinámicamente el metamodelo (modelo Ecore)  Crear dinámicamente un modelo a partir del metamodelo  Serializar el modelo  Deserializar el modelo  Mostrar información del modelo  Abrir org.eclipse.emp.examples. web.programming  Crear Dynamic.java 

Bibliografía básica

http://www.omg.org