+ All Categories
Home > Documents > Tema de parametros

Tema de parametros

Date post: 16-Dec-2015
Category:
Upload: jorge-farfan
View: 25 times
Download: 0 times
Share this document with a friend
Description:
Apuntes
Popular Tags:
37
Tema 3. Creación de DSL Postgrado Informática y Matemáticas Aplicadas a la Ciencia e Ingeniería Departamento de Informática y Sistemas Jesús García Molina Departamento de Informática y Sistemas Universidad de Murcia http://dis.um.es/~jmolina
Transcript
  • Tema 3. Creacin de DSLPostgrado Informtica y Matemticas Aplicadas a la Ciencia e IngenieraDepartamento de Informtica y SistemasJess Garca MolinaDepartamento de Informtica y SistemasUniversidad de Murciahttp://dis.um.es/~jmolina

    XII Jornadas de Ingeniera del Software y Bases de Datos

  • DSDM**Contenidos

    IntroduccinMetamodeladoElementos de un DSLSintaxis abstractaSintaxis concretaSemnticaEtapas en la creacin de un DSLFamilias de LenguajesReutilizacinLenguajes para sintaxis concreta

    DSDM

  • IntroduccinDSDM requiere lenguajes apropiados para describir todos los aspectos de los sistemas y a diferentes niveles de abstraccin.Lenguajes de modelado son lenguajes especficos del dominio (DSL).DSL son un elemento clave en las factoras de software (lneas de producto).Programacin orientada a los lenguajes, Ingeniera del software de lenguajes, Desarrollo Especfico del dominio.

    XII Jornadas de Ingeniera del Software y Bases de Datos

  • IntroduccinLenguajes son una parte importante de desarrollo:Nivel apropiado de abstraccin a travs de mltiples lenguajes.Necesidad de:TransformacionesComposicinEvolucinExtensibilidadSincronizacinFrameworks para la creacin de DSL que permiten adems adaptarlos o extenderlos para crear nuevos DSL.

    XII Jornadas de Ingeniera del Software y Bases de Datos

  • IntroduccinMetamodelado es un marco terico para crear DSL

    XII Jornadas de Ingeniera del Software y Bases de Datos

  • Elementos de un lenguajeSintaxis abstractaDefine los diferentes elementos del lenguaje y las reglas que establecen cmo pueden ser combinadosSintaxis concretaDefine cmo los elementos del lenguaje aparece en una notacin visual o textual utilizable por las personasSintaxis de serializacinEs una sintaxis concreta pero no destinada a su uso por las personas sino a la persistencia e intercambio de las especificaciones expresadas con el lenguaje.SemnticaDefine el significado del lenguaje

    XII Jornadas de Ingeniera del Software y Bases de Datos

  • MetamodeladoTransformacionesLos lenguajes estn relacionadosExtensibilidadLos lenguajes pueden cambiar a lo largo del tiempoQu abarca un metamodelo?Sintaxis abstracta, sintaxis concreta y semnticaNormalmente sintaxis abstracta (y restricciones estticas)Herramientas de metamodeladoEditor de sintaxis abstractaEditor de sintaxis concreta (mapping con sintaxis abstracta)Crear editores para los lenguajes creadosAlmacenar modelos de los lenguajes creadosEjecucin, anlisis y testing

    XII Jornadas de Ingeniera del Software y Bases de Datos

  • Arquitectura de cuatro capas

    XII Jornadas de Ingeniera del Software y Bases de Datos

  • Creacin de un DSLCinco etapas:Sintaxis abstractaReglas de semntica estticaSintaxis concretaSemnticaTransformacionesVarios grados de formalidad.Elegir una arquitectura de metamodelado con un lenguaje de metamodelado:Clases, Paquetes, Atributos, Operaciones, OCL

    XII Jornadas de Ingeniera del Software y Bases de Datos

  • Ejemplo: DSL SimpleAlquilerCochecocheAsignado : CocheespecifReserva : EspecifCochesetEspecif (espec: EspecifCoche)asignar (c:Coche)desasignar()recoger()devolver()

    No asignadoAlquilerCocheAsignadoFueraDevueltodesasignarasignardevolversetEspecrecogerCocheespecificacion : EspecifCochesetEspecif (espec: EspecifCoche)

    EspecifCocheclass AlquilerCoche { setEspecif(spec) {especifReserva = spec} asignar(c) {cocheAsignado = c} desasignar() {cocheAsignado = null}}class Car { setEspecif(spec) { especificacion = spec}}

    XII Jornadas de Ingeniera del Software y Bases de Datos

  • Descripcin DSL SimpleUn modelo est formado por una o ms clases.Una clase tiene cero o ms atributos y cero o ms mtodosEn el cuerpo de un mtodo se puede asignar valores a atributosUna clase puede ser asociada a una mquina de estados que establece restricciones sobre el orden en el que pueden invocarse los mtodos.Un estado puede tener estados anidadosExiste un estado raz que se llama igual que la clase asociada.Cada transicin tiene un estado origen y otro destino y debe ser etiquetada por un mtodo de la clase.Existe un estado inicial que se liga a uno de los estadosNo hay asociaciones entre clasesSe usa notacin UML para la sintaxis concreta grfica y tambin texto para representar las clases y sus mtodos.

    XII Jornadas de Ingeniera del Software y Bases de Datos

  • Creacin de la sintaxis abstractaIdentificacin de conceptosA partir de una lista de conceptos candidatosQue tengan un nombreQue contengan otros conceptosQue registren informacin sobre relaciones entre dos conceptos.Que muestren una relacin tipo/instanciaQue se puedan componer recursivamenteQue son parte (o estn asociados a) de una expresin Construir modelos ejemploIdentificar casos de uso del lenguajeNo se deben considerar conceptos ligados a la notacin.Crear un modelo conceptualPosibilidad de reutilizar uno existenteEscribir las reglas de semntica estticaValidar y chequear el metamodelo.

    XII Jornadas de Ingeniera del Software y Bases de Datos

  • Sintaxis abstractaElementos atmicos y compuestosLas reglas o relaciones establecen como se forman los elementos compuestos a partir de otros elementosDos tcnicas:Metamodelado Gramticas libres de contexto Normalmente DSL grficos con metamodelos y DSL textuales con gramticasGrammarware vs. ModelwareEn el caso de usar gramticas se usan extensiones de BNF.

    XII Jornadas de Ingeniera del Software y Bases de Datos

  • BNF para DSL SimpleModel ::= (ModelElement)*ModelElement ::= ClassClass ::= ClassName (Features)* (StateMachine)?ClassName ::= IdentifierFeature ::= Attribute| MethodAttribute ::= AttributeName TypeRefAttributeName ::= IdentifierTypeRef ::= IdentifierMethod ::= MethodName (Argument)* StatementArgument ::= ArgumentName TypeRefArgumentName ::= IdentifierStatement ::= (Statement)* | AssignmentStatementAssignmentStatement ::= LHS RHSLHS ::= AttributeRef AttributeRef ::= IdentifierRHS ::= AttributeRef | ArgumentRefArgumentRef ::= Identifier

    XII Jornadas de Ingeniera del Software y Bases de Datos

  • BNF para DSL Simple

    StateMachine ::= RootRoot := StateState ::= StateName (StartState)? (State)* (Transition)*StateName ::= IdentifierStartState ::= StateRefTransition ::= MethodRef StateRefMethodRef ::= IdentifierStateRef ::= Identifier

    XII Jornadas de Ingeniera del Software y Bases de Datos

  • AST:Model:Class:Class:Feature:ClassName:StateMachineAlquilerCoche : Identifier:TypeRef:AttributeNamecocheAsignado : Identifiercoche : Identifier:Root:State:State:StateName:StartStateAlquilerCoche : Identifier:StateName:TransitionNoAsignado : Identifier:Attribute:MethodRef:StateRef:StateRefNoAsignado : IdentifierSetEspecif : IdentifierNoAsignado : Identifier

    XII Jornadas de Ingeniera del Software y Bases de Datos

  • Limitaciones GramticasNo es posible compartir nodos entre diferentes padres.AST (Abstract Syntax Tree) es un rbol no es un grafoNecesidad de referenciasEn el caso anterior referencias a estados, atributos y argumentos que son identificadores de texto.Se podra definir la sintaxis concreta al tiempo que la sintaxis concretaXtext y TCS son lenguajes para definir sintaxis concretas que tambin expresan la sintaxis abstracta.

    XII Jornadas de Ingeniera del Software y Bases de Datos

  • Metamodelo (I)

    Identifier

    XII Jornadas de Ingeniera del Software y Bases de Datos

  • Metamodelo (II)

    XII Jornadas de Ingeniera del Software y Bases de Datos

  • BNF a metamodelosNo terminales representados como clasesReglas de produccin corresponden a relaciones de composicin.Una regla con varias alternativas en la parte izquierda se representa mediante herencia.No terminales que corresponden a un elemento primitivo pueden ser representados como atributosPor ejemplo, nombre de la claseElementos de repeticin se representan con multiplicidades.Referencias son representadas con asociaciones con navegabilidadTodas las composiciones son bidireccionales

    XII Jornadas de Ingeniera del Software y Bases de Datos

  • AST-Instancia de un metamodelo:Class

    name = AlquilerCoche :Model

    :Class

    name = Coche .:Method

    name = Coche :StateMachine

    :Attribute

    name = CocheAsignado:State

    name = AlquilerCoches :Transition

    elementelementelementfeaturefeaturemachinerootinvokedtarget:State

    name = NoAsignado childsourceOf.

    XII Jornadas de Ingeniera del Software y Bases de Datos

  • Restricciones OCLcontext Transitioninv sameMachine: target.root().machine = source.root().machine

    context State::body()body: if parent = null then self else parent.root()

    context AssigmentStatementinv: lhs.type = rhs.type

    XII Jornadas de Ingeniera del Software y Bases de Datos

  • Metamodelos y Gramticas Un metamodelo tiene ms potencia expresiva que un CFGGeneracin de AST a partir de una especificacin textual conforme a una gramtica puede ser automatizada. Construccin de un AST es un paso previo a construir un ASG.Lenguajes grficos tienen una estructura de grafo en vez de rbol, ms apropiado usar metamodelos.

    XII Jornadas de Ingeniera del Software y Bases de Datos

  • Sintaxis concreta Puede ser textual o grfica.Notacin textualTema bastante conocido : GrammarWareHerramientas muy extendidas: ANTLR, SableCC,..Conexin de grammarware con modelware.TCS y Xtext son lenguajes para definir la sintaxis concreta de un metamodelo.Notacin grficaSe deben crear herramientas que pemitan asociar una notacin al metamodelo y crear editoresGMF para metamodelos EcoreHerramientas propietarias: DSL Tools, Metaedit, GME

    XII Jornadas de Ingeniera del Software y Bases de Datos

  • Sintaxis concreta grfica En nuestro ejemplo de metamodelo:Un estado se dibuja como un rectngulo con esquinas redondeadas.El nombre de un estado sin hijos aparece en el centro del rectngulo que lo representa.El nombre de un estado con hijos aparece en la parte superior del rectngulo separado por una lnea recta.Una mquina de estado no tiene notacin propia se representa por el smbolo de su estado raz.Estados hijos son topolgicamente anidados, se colocan dentro de su estado padre, en el compartimiento debajo de la lnea recta bajo el nombre.Transiciones son representadas pro flechas dirigidas del estado fuente al destino.Los nombres de los mtodos se colocan sobre la flecha de la transicin.El estado inicial se designa asocindole un pequeo crculo negro conectado por una flecha.

    XII Jornadas de Ingeniera del Software y Bases de Datos

  • Sintaxis Concreta Grfica asignarsetEspecifdevolverNo asignadoAsignadoRetiradoDevueltodesasignarAlquilerCoches

    XII Jornadas de Ingeniera del Software y Bases de Datos

  • Sintaxis Concreta Grfica AlquilerCochecocheAsignado : CocheespecifReserva : EspecifCochesetEspecif (espec: EspecifCoche)asignar (c:Coche)desasignar()recoger()devolver()

    name ( argument.name : argument.type.name )

    XII Jornadas de Ingeniera del Software y Bases de Datos

  • Otras cuestionesServicios de edicin: seleccionar, cortar, pegar, mover smbolos.Pueden cruzarse las transiciones?Cmo se calcula el tamao de los smbolos?Formato de texto embebido en un diagrama?Cmo se posiciona el nombre de los mtodos sobre las transiciones?Asignacin de colores a las figuras

    XII Jornadas de Ingeniera del Software y Bases de Datos

  • Intercambio de modelos grficosEspecificacin Interchange Diagram de OMG.Extensin del metamodelo de UML y XMI (XMI[UML+DI])Posibilidad de incluir informacin grfica de un modelo en un fichero XMI que serializa al modelo.Una opcin es crear una representacin en SVG

    XII Jornadas de Ingeniera del Software y Bases de Datos

  • Metamodelo DILeafElement

    XII Jornadas de Ingeniera del Software y Bases de Datos

  • Metamodelo DI

    XII Jornadas de Ingeniera del Software y Bases de Datos

  • HerramientasSintaxis TextualXtext en OpenArchitectureWareTCS para AMMASintaxis grficaGMF para EMF/EclipseMetaeditGME

    XII Jornadas de Ingeniera del Software y Bases de Datos

  • Semntica de traduccin Un lenguaje de modelado o DSL se traduce a otro lenguaje que ya tiene una semntica bien definida y que posiblemente es ejecutable, por ejemplo el conjunto de instrucciones de un procesador.Transformaciones modelo a modelo o modelo a cdigo.

    XII Jornadas de Ingeniera del Software y Bases de Datos

  • Semntica basada en la trazaUso de un depuradorSe ejecuta la especificacin y se interpreta la traza.Se define un lenguaje de traza de la ejecucin grfico o textual.Se establece una correspondencia entre las expresiones del DSL y las trazas.De forma constructiva o declarativa

    XII Jornadas de Ingeniera del Software y Bases de Datos

  • Sintaxis abstracta de un lenguaje de trazas Attribute Value Method11modelTraceobjectTrace*10..1ObjectTrace1machineTrace0..1ObjectValuepost1StateMachine Value0..1valuelifeline0..1stateValue1StateMachine Trace

    guid : Guid* Object Trace

    guid : Guid Model Trace

    guid : Guid1valuelifeline* StateValuemachineValue11preinvocation Transition Ocurrencetarget10..11sourcesourceOf1attributeValue*invocation1Argument Value*argValue

    XII Jornadas de Ingeniera del Software y Bases de Datos

  • Sintaxis concreta de un lenguaje de trazas setEspecif (01) 03:AlquilerCoches

    cocheAsignado = nullespecifReserva = nullNo asignadococheAsignado = nullespecifReserva = 01No asignadococheAsignado = 02especifReserva = 01Asignadoasignar (02)

    XII Jornadas de Ingeniera del Software y Bases de Datos

  • Mapping DSL- Lenguaje de trazas ModelModelTracetraceFor1ModelValuevalueFor1ClassObjectTracetraceFor1ObjectValuevalueFor1MethodMethodInvocationtraceFor1Reglas OCL

    XII Jornadas de Ingeniera del Software y Bases de Datos

    *Hola, buenos das, mi nombre es Javier Cnovas Izquierdo, pertenezco al grupo de investigacin de tecnologa del software de la Universidad de Murcia y en esta exposicin voy a presentar el artculo de las jornadas titulado Utilidad de las transformaciones modelo-modelo en la generacin automtica de cdigo*Estos son los contenidos que voy a desarrollar a los largo de la presentacin.

    En primer lugar veremos una ligera introduccin para contextualizar el artculo. A continuacin explicar el problema en el que nos basaremos para analizar las aproximaciones que veremos. Este problema consiste en la creacin de wrappers Java para PL/SQL. El ncleo principal de la presentacin se centrar en la explicacin de la aplicacin de MDD que hemos realizado al problema, siguiendo dos aproximaciones. Por una parte, la aproximacin modelo-codigo, y por otra, la aproximacin modelo-modelo. Finalmente veremos una comparacin entre ambas aproximaciones y unas conclusiones.


Recommended