Ingeniería del Software Basada en Modelos Master Oficial en Tecnologías de la Información y Sistemas Informáticos Universidad Rey Juan Carlos 23 de Marzo de 2010 Una aproximación metodológica dirigida por modelos para el desarrollo del aspecto del contenido de un SI U Universidad Rey Juan Carlos Belén Vela Sánchez belen.vela@urjc.es Grupo Kybele Universidad Rey Juan Carlos Índice Motivación Marco de Trabajo Arquitectura de MIDAS MIDAS MDA Tool M2DAT Módulo OR Módulo XML M2DAT/DB Demo Conclusiones y Futuros Trabajos Una aproximación metodológica dirigida por modelos para el desarrollo del aspecto del contenido de un SI 2 1
Motivación ME/R Metodologías clásicas de desarrollo de BD Relacionales MR Reglas de Transformación Código SQL Una aproximación metodológica dirigida por modelos para el desarrollo del aspecto del contenido de un SI 3 Motivación BD Relacionales ocupan todavía el primer lugar en el mercado tradicionales aplicaciones de gestión. Nuevas aplicaciones más sofisticadas que requieren almacenamiento de distinto tipo de información: Estructurada (pero más compleja) Semi-Estructurada Una aproximación metodológica dirigida por modelos para el desarrollo del aspecto del contenido de un SI 4 2
Motivación Información estructurada Limitaciones de las BD Relacionales Complejidad en las relaciones Nº de Tuplas Nº de Joins Rendimiento BD Objeto-Relacionales Mejoran el soporte para gestión de datos complejos Basadas en estándares (SQL:2003) Incorporada en productos comerciales Metodologías que guíen la tarea de diseño de BD OR Una aproximación metodológica dirigida por modelos para el desarrollo del aspecto del contenido de un SI Motivación Información semi-estructurada XML se ha convertido en estándar de facto: Intercambio de información entre organizaciones Transporte de datos entre aplicaciones heterogéneas Almacenamiento de este tipo de información Definición de Estructura de documentos XML Document Type Definitions (DTDs) Carencias sintácticas y semánticas Estructura complicada Aparición del estándar XML Schema Definido en XML Sistema de tipos más rico (tipos definidos por el usuario) Soporte namespaces Una aproximación metodológica dirigida por modelos para el desarrollo del aspecto del contenido de un SI 3
Motivación Almacenamiento de datos XML Sistemas de Ficheros BD Convencionales Una aproximación metodológica dirigida por modelos para el desarrollo del aspecto del contenido de un SI Motivación Almacenamiento de datos XML BD XML Mejor y más directa alternativa para el almacenamiento y la gestión de documentos XML BD XML nativas Extensiones XML para DB XML DB XML Extender SQLXML Metodologías que guíen la tarea de diseño de BD XML Una aproximación metodológica dirigida por modelos para el desarrollo del aspecto del contenido de un SI 4
Motivación Desarrollo de Software Dirigido por Modelos Uso de modelos en distintos niveles de abstracción Definición de reglas de transformación entre los diferentes modelos MDA - Model Driven Architecture Marco de trabajo para el DSDM PIM Platform Independent Model PSM Platform Specific Model Código Final Distintas Plataformas PIM2PSM PSM2Code Una aproximación MDA para el desarrollo dirigido por modelos del contenido en el marco de la metodología MIDAS Una aproximación metodológica dirigida por modelos para el desarrollo del aspecto del contenido de un SI Índice Motivación Marco de Trabajo Arquitectura de MIDAS MIDAS MDA Tool M2DAT Módulo OR Módulo XML M2DAT/DB Demo Conclusiones y Futuros Trabajos Una aproximación metodológica dirigida por modelos para el desarrollo del aspecto del contenido de un SI 10 5
Marco de Trabajo Qué es MIDAS? Es una metodología dirigida por modelos para el desarrollo de aplicaciones orientadas a servicios. Basada en MDA contempla los tres niveles de abstracción (CIM PIM PSM) y la definición de mappings entre los mismos. Una aproximación metodológica dirigida por modelos para el desarrollo del aspecto del contenido de un SI 11 Marco de Trabajo Nuestro marco de trabajo está basado en dos pilares: 1. Una arquitectura dirigida por modelos (MDA), que incluye: Los principales aspectos a la hora de modelar un SI y el proceso. Los metamodelos para cada aspecto (CIM, PIM y PSM), las relaciones entre los metamodelos y los aspectos. Los mappings entre los metamodelos. 2. Herramienta MDA: Soporte a la arquitectura MDA propuesta, la transformación entre modelos y la generación de código. Fácilmente extensible para poder incoporar nuevos metamodelos y mappings siempre que se necesite. Una aproximación metodológica dirigida por modelos para el desarrollo del aspecto del contenido de un SI 12 6
Índice Motivación Marco de Trabajo Arquitectura de MIDAS MIDAS MDA Tool M2DAT Módulo OR Módulo XML M2DAT/DB Demo Conclusiones y Futuros Trabajos Una aproximación metodológica dirigida por modelos para el desarrollo del aspecto del contenido de un SI 13 Arquitectura de MIDAS Una aproximación metodológica dirigida por modelos para el desarrollo del aspecto del contenido de un SI 14 7
Semantics Security Quality Arquitectura de MIDAS: La tercera dimensión CIM PIM Architecture PSM Content Hypertext Behaviour Una aproximación metodológica dirigida por modelos para el desarrollo del aspecto del contenido de un SI 15 Arquitectura de MIDAS: Aspecto del Contenido MIDAS/DB Propuesta de MIDAS para el desarrollo del aspecto del contenido Una aproximación metodológica dirigida por modelos para el desarrollo del aspecto del contenido de un SI 8
CREATE OR REPLACE TYPE Jefe_Proyecto AS (Codigo_Id NUMBER, Nombre VARCHAR2(30), Telefono NUMBER, Dirige REF Proyecto); Arquitectura de MIDAS: Aspecto del Contenido MIDAS/DB " #$ SQL! Una aproximación metodológica dirigida por modelos para el desarrollo del aspecto del contenido de un SI 17 Arquitectura de MIDAS: Aspecto del Contenido Aproximación Dirigida por Modelos para el desarrollo de contenido de un SI en el marco de MIDAS: MIDAS/DB Especificación de perfiles UML y reglas de transformación Formalización de las reglas de transformación Construcción de la herramienta de soporte: M2DAT/DB Desarrollo DSLs para modelado del contenido Desarrollo de editores gráficos Codificación de reglas de transformación (M2M) Generación automática de código (M2T) Una aproximación metodológica dirigida por modelos para el desarrollo del aspecto del contenido de un SI 18 9
Arquitectura de MIDAS: El proceso Reglas de Transformación M2M Generación de Código M2T Modelo Conceptual (PIM) Modelo OR/XML (PSM) Código SQL/ XML Schema M2DAT Facilidades de EMF Una aproximación metodológica dirigida por modelos para el desarrollo del aspecto del contenido de un SI 19 Arquitectura de MIDAS: Mappings Los modelos dirigen el proceso de desarrollo propuesto Las transformaciones de modelos completan la definición del método the mapping description may be in natural language, an algorithm in an action language, or a model in a mapping language Definición de los Mappings Aproximación Inicial Formalización Posterior Implementación [MDA Guide OMG, 2001] Una aproximación metodológica dirigida por modelos para el desarrollo del aspecto del contenido de un SI 20 10
Arquitectura de MIDAS: Mappings 1. Definición de las reglas en lenguaje natural. 2. Utilización de gramáticas de grafos para la formalización de las transformaciones de modelos. Acercar a analistas y desarrolladores Detectar errores e inconsistencias en las primeras etapas del desarrollo software Incrementar la calidad de los modelos así como el código generado 3. Implementación de las reglas definidas mediante gramáticas de grafos (paso 2) mediante el lenguaje de transformación de modelos ATL (Atlas Transformation Language) y en QVT Operational Mappings (Open Canarias) QVT sin implementación completa (Relational, Operational y Core) ATL: estándar de-facto para las transformaciones de modelos (soporte e interoperabilidad) 4. Finalmente, para la generación de código a partir de modelos (PSM código) se ha usado MOFScript Lenguaje que actualmente está en proceso de revisión para ser adoptado por el grupo OMG como estándar para la transformación de modelos a texto. Una aproximación metodológica dirigida por modelos para el desarrollo del aspecto del contenido de un SI 21 Índice Motivación Marco de Trabajo Arquitectura de MIDAS MIDAS MDA Tool M2DAT Módulo OR Módulo XML M2DAT/DB Demo Conclusiones y Futuros Trabajos Una aproximación metodológica dirigida por modelos para el desarrollo del aspecto del contenido de un SI 22 11
Marco de Trabajo Nuestro marco de trabajo está basado en dos pilares: 1. Una arquitectura dirigida por modelos (MDA), que incluye: Los principales aspectos a la hora de modelar un SI y el proceso. Los metamodelos para cada aspecto (CIM, PIM y PSM), las relaciones entre los metamodelos y los aspectos. Los mappings entre los metamodelos. 2. Herramienta MDA: Soporte a la arquitectura MDA propuesta, la transformación entre modelos y la generación de código. Fácilmente extensible para poder incoporar nuevos metamodelos y mappings siempre que se necesite. M2DAT Una aproximación metodológica dirigida por modelos para el desarrollo del aspecto del contenido de un SI 23 MIDAS MDA Tool MIDAS MDA Tool - M2DAT M2DAT es una herramienta MDA para el desarrollo de SI, que nace con el propósito de dar soporte al marco de trabajo de MIDAS. M2DAT permitirá validar las propuestas de MIDAS. La funcionalidad de la herramienta da soporte para: La elaboración de cada uno los modelos que forman parte del proceso de desarrollo propuesto por MIDAS. La ejecución automática de transformaciones entre esos modelos. Parametrización de las transformaciones utilizando modelos weaving para realizar anotaciones a los modelos. Generación de código automático. Una aproximación metodológica dirigida por modelos para el desarrollo del aspecto del contenido de un SI 24 12
MIDAS MDA Tool MIDAS MDA Tool - M2DAT Está formada por un conjunto independiente de módulos (para cada aspecto) que trabajan de manera integrada: Contenido: módulos PIM y PSM, y los mappings entre ellos (OR y XML Schemas) M2DAT/DB Comportamiento: módulo PSM para la generación de WSDL. Se han implementado los editores y actualmente se están implementando los mappings. Hipertexto: se han implementado los mappings, actualmente se han implementando los editores. M2DAT tiene alto grado y sencillez de escalabilidad. Una aproximación metodológica dirigida por modelos para el desarrollo del aspecto del contenido de un SI 25 Índice Motivación Marco de Trabajo Arquitectura de MIDAS MIDAS MDA Tool M2DAT Módulo OR Módulo XML M2DAT/DB Demo Conclusiones y Futuros Trabajos Una aproximación metodológica dirigida por modelos para el desarrollo del aspecto del contenido de un SI 26 13
MIDAS MDA Tool: Módulo OR MIDAS/DB SQL #$ XML Schema Una aproximación metodológica dirigida por modelos para el desarrollo del aspecto del contenido de un SI 27 MIDAS MDA Tool: Módulo OR! " #$% Una aproximación metodológica dirigida por modelos para el desarrollo del aspecto del contenido de un SI 28 14
MIDAS MDA Tool: Módulo OR! % ECLIPSE! " # $ %! % " EMF GMF Una aproximación metodológica dirigida por modelos para el desarrollo del aspecto del contenido de un SI 29 Atributos Asociaciones & Data PIM Standard Data PSM (SQL:2003) Product Data PSM (Oracle10g) Clase Structured Type + Typed Table Object Type + Object Table Multivaluado Array/Multiset Varray/Nested Table Compuesto MIDAS MDA Tool: Módulo OR Definición de las transformaciones utilizando lenguaje natural Se formalizan las transformaciones usando gramática de grafos La implementación se realiza utilizando alguna propuesta de modelos de transformación existente (ATL y QVT Operational) ROW/Structured Type (column) Object Type (column) Calculado Trigger/Method Trigger/Method 1 a 1 Ref/Ref Ref/Ref 1 a N Ref- Multiset/Array Ref-Nested Table/Varray N a M Multiset/Array - Multiset/Array Nested Table/Varray - Nested Table /Varray Agregación Multiset/Array Nested Table/Varray of References Composición Multiset/Array Nested Table/Varray of Objects Generalización Types/Typed Tables Types/Typed Tables Una aproximación metodológica dirigida por modelos para el desarrollo del aspecto del contenido de un SI 30 15
MIDAS MDA Tool: Módulo OR ' UML2 : Es una implementación del meta-modelo de UML basada en EMF para la plataforma de ECLIPSE Una aproximación metodológica dirigida por modelos para el desarrollo del aspecto del contenido de un SI 31 MIDAS MDA Tool: Módulo OR & LHS - UML Class Diagram - 1???:UML::Class name:string=??? 3 ownedattibute :UML::Stereotype name: String= Persistent * 2???:UML::Property name:string=?? datatype:datatype=?? RHS - OR Model - 1 match(1).name:or::typed Table 1 match(1).name + _Type :OR::Structured Type * 2 match(2).name:or::attribute datatype = match(2).datatype 1 rule Class2UDT { 2 from 3 c : UML!Class 4 to 5 udt : modeloor!structuredtype( 6 Name <- c.name + '<<udt>>', 7 typed <- tt, 8 method <- meth_seq, 9 supertype <- if (not c.generalization-> first()->oclisundefined()) then 10 c.generalization->first().general 11 else 12 OclUndefined 13 endif, 14 model <- thismodule.package 15 ), 16 meth_seq : distinct modeloor!method foreach 17 (op in c.ownedoperation)(name <- op.name), 18 tt : modeloor!typedtable( 19 Name <- c.name + 's<<persistent>>') 20 } 21 22 rule Property2Attribute { 23 from 24 p:uml!property (not p.isderived and not p.ismultivalued() and 25 p.refimmediatecomposite().oclistypeof(uml!class)) 26 to 27 a : modeloor!attribute( 28 Name <- p.name, 29 Type <- p.type, 30 structured <- p->refimmediatecomposite()) 31 } Una aproximación metodológica dirigida por modelos para el desarrollo del aspecto del contenido de un SI 32 16
MIDAS MDA Tool: Módulo OR & ( ) LHS - UML Class Diagram - 1???:UML::Class name: String=??? ownedattibute * 2???:UML::Property name: String=??? upper = * lower =??? association???:uml::datatype 3 4???:UML::Property 5???:UML::Class name: String=??? RHS - OR Model - 1 match(1).name:or::typed Table match(1).name + _Type :OR::Structured Type 2 match(2).name:or::attribute match(2).name+ MS :OR::NESTEDTABLE match(2).name+ _Ref :OR::ReferenceType match(5).name + _Type :OR::Structured Type 5 match(5).name:or::typed Table 1 2 2 5 1 rule PropertyAssocMulti2Attribute { 2 from 3 p:uml!property(p.refimmediatecomposite().oclistypeof 4 (UML!Association) and p.ismultivalued() and 5 p.ischangeable()) 6 to 7 a : modeloor!attribute( 8 Name <- p.name, 9 Type <- thismodule.generatenestedtable(p.type), 10 structured <-p.getproperty().type), 11 st: modeloor!storednestedtable( 12 Name <- 'lista_' + p.name, 13 attribute <- a, 14 typed <- thismodule.resolvetemp 15 (p.getproperty().type,'tt')) 16 } 17 unique lazy rule generatenestedtable { 18 from 19 c:uml!class 20 to 21 nt : modeloor!nestedtabletype( 22 Name <- 'NT_' + c.name + '<<nt>>', 23 Type <- thismodule.generatereferences(c), 24 model <- thismodule.package) 25 } 26 unique lazy rule generatereferences { 27 from 28 c:uml!class 29 to 30 ref : modeloor!referencetype( 31 Name <- 'Ref_' + c.name + '<<ref>>', 32 Type <- c, 33 model <- thismodule.package) 34 } Una aproximación metodológica dirigida por modelos para el desarrollo del aspecto del contenido de un SI 33 MIDAS MDA Tool: Módulo OR & Una aproximación metodológica dirigida por modelos para el desarrollo del aspecto del contenido de un SI 34 17
MIDAS MDA Tool: Módulo OR Una aproximación metodológica dirigida por modelos para el desarrollo del aspecto del contenido de un SI 35 MIDAS MDA Tool: Módulo OR * Una aproximación metodológica dirigida por modelos para el desarrollo del aspecto del contenido de un SI 36 18
MIDAS MDA Tool: Módulo OR + % & " ' () * CREATE OR REPLACE TYPE Proyecto AS OBJECT ( Proyecto_id NUMBER(4), Nombre_Proy VARCHAR2(50), Dirigido_Por Ref_JefeProyecto, Tiene_Planos NT_Planos ); CREATE TABLE Proyectos OF Proyecto ( PRIMARY KEY (Proyecto_id), UNIQUE (Nombre_Proy), Dirigido_Por NOT NULL ) NESTED TABLE Tiene_Planos STORE AS Lista_Planos; Una aproximación metodológica dirigida por modelos para el desarrollo del aspecto del contenido de un SI 37 Índice Motivación Marco de Trabajo Arquitectura de MIDAS MIDAS MDA Tool M2DAT Módulo OR Módulo XML M2DAT/DB Demo Conclusiones y Futuros Trabajos Una aproximación metodológica dirigida por modelos para el desarrollo del aspecto del contenido de un SI 38 19
MIDAS MDA Tool: Módulo XML MIDAS/DB SQL #$ XML Schema Una aproximación metodológica dirigida por modelos para el desarrollo del aspecto del contenido de un SI 39 MIDAS MDA Tool: Módulo XML Una aproximación metodológica dirigida por modelos para el desarrollo del aspecto del contenido de un SI 40 20
MIDAS MDA Tool: Módulo XML, - ECLIPSE Representación textual con EMF Representación gráfica con GMF Generación del plugin correspondiente EMF GMF Una aproximación metodológica dirigida por modelos para el desarrollo del aspecto del contenido de un SI 41 & + " - ( ' $ * - ), + -. & + & 0 ( ( (.. ' / * +, + ' " + *! $ + + 1, + ' +. *! $ + + 1 ' + (*, + ' 2 + *! $ + '. * " ", +! $ + 1 & + % 4 MIDAS MDA Tool: Módulo XML &, + 3 + 0 5 + 1 Una aproximación metodológica dirigida por modelos para el desarrollo del aspecto del contenido de un SI 42 21
MIDAS MDA Tool: Módulo XML ' UML2 : Es una implementación del meta-modelo de UML basada en EMF para la plataforma de ECLIPSE Una aproximación metodológica dirigida por modelos para el desarrollo del aspecto del contenido de un SI 43 MIDAS MDA Tool: Módulo XML & 1 rule Class2ElementGlobal{ 2 --Clase UML a ElementGlobal 3 from LHS UML Class Diagram RHS XML Schema Model 4 5 6 c : UML!Class to xml : schemaxml!elementglobal 7 (id <- c.name,???:uml::class 1 match(1).name: XSM::Element 1 8 9 10 name <- c.name + '<<ElementGlobal>>', Owner <- thismodule.package.debug('model'), eleccion <- cmptyp ), name: String=??? name: String= match(1).name 11 12 cmptyp : schemaxml!complextypelocal 13 (id <- c.name + '_Type', 14 eleccion <- Other), 15 Other: schemaxml!other( 16 eleccion <- Seq), 17 Seq: schemaxml!sequences() 18 } Una aproximación metodológica dirigida por modelos para el desarrollo del aspecto del contenido de un SI 44 22
MIDAS MDA Tool: Módulo XML & ( " LHS UML Class Diagram 1???:UML::Class name: String=??? +class +ownedattribute * 2???: UML::Property /lower: String=??? /upper: String =??? RHS XML Schema Model 1 match(1).name:xsm:: Element name: String= match(1).name uses 3 XSM:: complextype 4 XSM:: sequence match(2).lower match(2)upper 2 match(2).name:xsm:: Element 1 rule Property2ElementLocal{ 2 --Atributos a ElementLocal 3 from 4 a: UML!Property (a.refimmediatecomposite().oclistypeof(uml!class)) 5 to 6 att: schemaxml!elementlocal( 7 name <- a.name, 8 minoccurs <- if (not a.lowervalue.oclisundefined())then 9 if(a.lowervalue.value = 1) then '1' 10 else 11 '0' 12 endif 13 else 14 OclUndefined 15 endif, 16 maxoccurs <- if (not a.uppervalue.oclisundefined())then 17 if (a.uppervalue.value <> 1) then 18 'unbounded' 19 else 20 '1' 21 endif 22 else 23 OclUndefined 24 endif, 25 owner <- if (not a.refimmediatecomposite().oclisundefined())then 26 thismodule.resolvetemp(a.refimmediatecomposite(),'seq') 27 else 28 OclUndefined 29 endif 30 ) 31 } Una aproximación metodológica dirigida por modelos para el desarrollo del aspecto del contenido de un SI 45 MIDAS MDA Tool: Módulo XML & ( LHS UML Class Diagram RHS XML Schema Model???:UML::Class 1 match(1).name: XSM::Element 1 name: String=??? +class +ownedattribute * 2???: UML::Property /lower: String=??? /upper: String = 1 memberend association 3???:UML::Association name: String=??? association memberend uses 6 XSM::complexType 7 XSM::Sequence 3 match(3).name: XSM::ELEMENT minoccurs: Integer = match(2).lower maxoccurs: Integer = match(2).upper 1 rule AssociationNM2ElementLocal{ 2 from 3 Ass: UML!Association (Ass.isAssociationNM() and not 4 Ass.isAssoAgregation() and not Ass.isAssoComposite()) 5 to 6 Elem: schemaxml!elementlocal ( 7 name <- Ass.name.debug('NM')+ '_<Association>', 8 owner <- thismodule.resolvetemp(ass.getpropertyasso().type,'seq'), 9 Ref <- Ass.getPropertyAssoLast().name, 10 maxoccurs <- 'unbounded' 11 ) 12 }???: UML::Property 4 XSM::REFattribute 8 /lower: String=??? /upper: String = N * +ownedattribute +class 5???: UML::Class name: String=??? points references 9 XSM::uses 5 match(5).name: XSM::Element Una aproximación metodológica dirigida por modelos para el desarrollo del aspecto del contenido de un SI 46 23
MIDAS MDA Tool: Módulo XML Una aproximación metodológica dirigida por modelos para el desarrollo del aspecto del contenido de un SI 47 MIDAS MDA Tool: Módulo XML Implementación con editor gráfico Representación inmanejable Diagramas demasiado grandes para ejemplos sencillos Una aproximación metodológica dirigida por modelos para el desarrollo del aspecto del contenido de un SI 48 24
MIDAS MDA Tool: Módulo XML * XML Schema Estándar XML DB de Oracle 10g Una aproximación metodológica dirigida por modelos para el desarrollo del aspecto del contenido de un SI 49 Índice Motivación Marco de Trabajo Arquitectura de MIDAS MIDAS MDA Tool M2DAT Módulo OR Módulo XML M2DAT Demo Conclusiones y Futuros Trabajos Una aproximación metodológica dirigida por modelos para el desarrollo del aspecto del contenido de un SI 50 25
Conclusiones y Futuros Trabajos Se ha completado la propuesta de un proceso de desarrollo dirigido por modelos para el aspecto del contenido, OR y esquemas XML, en MIDAS. Esta propuesta forma parte de la herramienta MIDAS MDA Tool (M2DAT), una herramienta case que integra todas las técnicas para la generación (semi-)automática de sistemas, propuestas por MIDAS. Actualmente se está trabajando en el desarrollo del resto de los módulos para dar soporte completo a MIDAS. Una aproximación metodológica dirigida por modelos para el desarrollo del aspecto del contenido de un SI 51 26