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