200 likes | 344 Views
Proyecto AutoGSA. Sesión 5 Herramientas de creación de DSL gráficos (GMF). Introducción a GMF. GMF ( Graphical Modeling Framework ) es la herramienta de creación de DSL que pertenece al proyecto GMT de Eclipse. Se integra en el entorno Eclipse y es gratuito.
E N D
Proyecto AutoGSA Sesión 5Herramientas de creación de DSL gráficos(GMF)
Introducción a GMF • GMF (Graphical Modeling Framework) es la herramienta de creación de DSL que pertenece al proyecto GMT de Eclipse. • Se integra en el entorno Eclipse y es gratuito. • Se apoya en los frameworks EMF (Eclipse Modeling Framework) y GEF (Graphical Editing Framework). • Es una herramienta que sigue en desarrollo. • Para construir un nuevo DSL con GMF es necesario completar los diferentes modelos que definen el DSL. • Incorpora una vista para guiar la creación del DSL (GMF Dashboard).
Proceso de desarrollo • Definir el modelo de dominio (sintaxis abstracta). • Definir el modelo gráfico (sintaxis concreta). • Definir el modelo de herramientas. • Definir el modelo de correspondencias. • Incluir las restricciones en el modelo de correspondencias. • Escribir transformaciones modelo-código utilizando un lenguaje de plantillas.
Modelo de dominio (sintaxis abstracta) • La sintaxis abstracta se define mediante metamodelos Ecore. • Características de Ecore: • Parecido a EMOF • Paquetes (EPackage) paquetes MOF • Clases (EClass) clases MOF • Atributos (Eattribute) atributos MOF • Referencias (EReference) asociaciones/agregaciones MOF • No existen las referencias bidireccionales: usar dos referencias opuestas con la propiedad eOpposite establecida. • El metamodelo se puede editar en la vista en árbol o como diagrama (están sincronizados). • A partir del metamodelo se genera automáticamente el modelo de generación del dominio, y a partir de éste se generan las clases EMF del modelo.
Modelo de definición gráfica (sintaxis concreta) • El modelo se edita en una vista en árbol. • Elementos: • Node Nodo del DSL • Connector Conector • Compartment Compartirmento de un nodo • Label Etiqueta de un nodo, conector, compartimento • Descriptor de figura se asocia a un nodo, conector, etc. • Rectángulo, elipse, polígono, … • Polilínea, … • Decoradores, iconos, etiquetas de texto, … • Formas personalizadas • Las figuras que ofrece son sencillas pero pueden ser compuestas para crear figuras compleja muy flexible
Modelo de definición de herramientas • Creamos una herramienta en la toolbox para cada elemento gráfico que deseemos arrastrar al editor de modelos. • La toolbox puede ser una barra de herramientas, un menú, una paleta, … • Los elementos de la toolbox se pueden agrupar y organizar en categorías. • Para cada herramienta podemos indicar un icono y un texto de ayuda (tooltip).
Modelo de correspondencias • Es necesario establecer las relaciones entre los elementos del modelo de dominio, de la definición gráfica y del modelo de herramientas. • El GMF Dashboard incluye un asistente para crear el modelo de correspondencias, aunque también se puede editar con la vista de árbol. • Frecuentemente es necesario modificar el modelo creado con el asistente. • A partir de este modelo se genera automáticamente el modelo de generación del editor de diagramas.
Restricciones semánticas • Es posible especificar restricciones semánticas débiles con OCL, Java, o expresiones regulares. • Las restricciones se indican en el modelo de correspondencias como restricciones de enlaces (Link Constraints) o reglas de auditoría (Audit Rules). • Es necesario activar la validación en el modelo de generación del editor. • Desde el código OCL es posible recurrir a operaciones definidas en el metamodelo.
Generación de código • GMF únicamente contempla la creación de un DSL para crear modelos, pero no la generación de código u otros modelos a partir de éste. • Para generar código a partir de los modelos es necesario recurrir a lenguajes de plantillas: MOFScript, JET, MOF2Text, …
Qué clases y relaciones mostrar Qué atributos hacer visibles Qué notación gráfica ¿Cómo diseñar un DSL gráfico? Qué acciones, menús, paletas... Qué asistentes, propiedades, ... Qué sucede al crear o borrar elementos,...
Sesión 5Herramientas de creación de DSL gráficos(DSL Tools) Proyecto AutoGSA
Introducción a DSL Tools • DSL Tools es la herramienta de creación y explotación de DSL gráficos de Microsoft dentro del contexto de las Factorías de Software. • DSL Tools se integra con Visual Studio y actualmente viene integrado en el SDK. • Es posible desplegar los DSL creados en otro Visual Studio mediante instaladores MSI. • Un DSL siempre se crea a partir de otro existente o de uno de los DSL predefinidos: diagrama de clases, de componentes, flujo de trabajo, o lenguaje mínimo.
Proceso de desarrollo • Selección del DSL inicial. • Definición de la sintaxis abstracta (domain model). • Definición de la sintaxis concreta (designer). • Relacionar la sintaxis abstracta con la concreta. • Definir la toolbox del editor de DSL • Especificar restricciones semánticas de la sintaxis abstracta. • Programar las transformaciones modelo-código.
Domain Model (sintaxis abstracta) • DSL Tools combina la definición de la sintaxis concreta, la abstracta y su correspondencia en el mismo editor. • El lenguaje de metamodelado es propietario y mantiene una estructura en forma de árbol. • Elementos: • Clases del dominio clases MOF • Propiedades del dominio propiedades MOF • Relación de embebido agregaciones MOF • Relación de referencia asociaciones MOF • Relación de herencia herencia MOF • Las asociaciones entre elementos del modelo no se definen como clases. • Las cardinalidades y roles de las relaciones se escriben al revés que en MOF.
Designer (sintaxis concreta) • Elementos: • Formas geométricas • Formas imagen • Formas con compartimentos • Swimlanes • Conectores • Puertos • El uso de puertos debe ser tenido en cuenta en la sintaxis abstracta del DSL. • Posibilidad de incorporar texto o iconos en las formas mediante decoradores.
Herramientas del editor • Creamos una herramienta en la toolbox para cada elemento gráfico que deseemos arrastrar al editor de modelos. • Para cada herramienta podemos indicar un icono, texto de ayuda (tooltip), cursor especializado, o palabra clave para buscar información en la ayuda.
Restricciones semánticas • Tipos de restricciones • Sintácticas • Semánticas • Fuertes • Débiles • Las restricciones semánticas se expresan en clases parciales en C# no nuevos lenguajes. • Para las restricciones fuertes, es necesario usar el API específica del dominio. • Para las restricciones débiles, es necesario escribir métodos de validación. • El Framework de Validación se encarga de: • comprobar las restricciones débiles sobre los modelos. • notificar los mensajes (avisos, errores, …) pertinentes.
Generación de código • DSL Tools no soporta transformaciones modelo-modelo. • DSL Tools permite transformaciones modelo-código: • XSLT. • API específica del dominio (C#). • plantillas de texto (C# o Visual Basic al estilo ASP .NET).
Plantillas de texto • No es necesario aprender un lenguaje nuevo. • Las plantillas se incluyen en la instancia del editor. • No se dispone de un editor especializado para las plantillas de texto (sí hay de terceros). • Es necesario indicar a qué modelo se aplica la plantilla en la propia plantilla. • Para que una plantilla genere varios ficheros es necesario escribir código personalizado. • El código del editor del DSL se crea mediante la transformación de plantillas de texto.