Last update : 14-April-2010

Proposals

Herramientas de definición de sintaxis textuales en modernización

En la actualidad, para dotar a un DSL de una sintaxis concreta textual se utilizan herramientas específicas que facilitan esta labor. Estas herramientas permiten definir la representación textual de los elementos del metamodelo de la sintaxis abstracta y a partir de dicha definición crear la infraestructura necesaria para obtener instancias de la sintaxis abstracta a partir de definiciones textuales y viceversa.

Aunque estas herramientas están normalmente destinadas para trabajar con DSLs simples o, al menos, más simples que un lenguaje de programación de propósito general (GPL) como C o Java, algunas de ellas pueden ser adaptadas para permitir obtener modelos de código fuente escrito en un GPL. De esta forma, podrían ser utilizadas para abordar la extracción de modelos en un proceso de modernización de software dirigido por modelos, donde dicha fase es la primera para llevar a cabo la modernización o evolución.

El objetivo de este proyecto es estudiar cada una de las herramientas de definición de sintaxis textuales y su aplicabilidad en el ámbito de la modernización de software dirigida por modelos. En concreto se estudiarán herramientas como xText, EMFText o TCS.


Extensiones a KDM para la representación de aplicaciones web

La modernización de software dirigida por modelos se basa en el paradigma del desarrollo dirigido por modelos, donde los modelos guían todo el proceso de desarrollo, para abordar la modernización del software. Así, los modelos no solamente son utilizados para crear nuevos sistemas sino para tratar su evolución o modernización. En esta línea, el OMG creó la iniciativa Architecture Driven Modernization (ADM), con el objetivo de crear una serie de metamodelos estándar que facilitaran la modernización de sistemas. El metamodelo principal de ADM es Knowledge Discovery Metamodel (KDM), el cual permite representar sistemas software completamente, desde el nivel de código a las reglas de negocio. Este metamodelo es el núcleo de ADM y la clave para permitir la interoperabilidad entre herramientas de modernización.

KDM es un metamodelo de tamaño considerable dividido en varias capas que a su vez se dividen en diferentes dominios o paquetes, cada uno de los cuales permite modelar una parte específica del sistema software. Así por ejemplo, el paquete Data permite representar el esquema de base de datos utilizado por la aplicación y el paquete UI la interfaz de usuario. Sin embargo, tal y como están definidos en la especificación de KDM, dichos paquetes son todavía muy generalistas y necesitan ser extendidos para representar cualquier sistema software. Esta extensión puede ser abordada utilizando el mecanismo de extensiones de KDM y definiendo el conjunto de elementos necesarios para abarcar las particularidades del sistema software.

El objetivo principal de este proyecto es estudiar KDM y aplicarlo a un caso de estudio para representar una aplicación web real, por ejemplo una aplicación realizada en Struts. Durante su desarrollo se identificarán y definirán las extensiones necesarias para poder representar la aplicación completamente.


Repositorio de modelos de medidas y mediciones en SMM

El cálculo de medidas y mediciones en los sistemas software se puede realizar con varios objetivos, desde comprobar la calidad del sistemas hasta valorar la complejidad de éste para llevar a cabo un proceso de reingeniería. La representación de las medidas y mediciones se realiza actualmente con soluciones propietarias. Sin embargo, dentro de la iniciativa Architecture Driven Modernization (ADM) del OMG, la cual está destinada a la definición de un conjunto de metamodelos estándar para abordar la modernización de sistemas software, se incluye el metamodelo Software Metrics Metamodel (SMM). SMM permite definir modelos de medidas los cuales describen cómo aplicar dichas medidas de forma atómica. Por otro lado, también permite representar los resultados de las medidas por medio de los modelos de mediciones.

Conforme el uso de SMM va ganando mayor aceptación, se hace necesario el almacenamiento de los modelos SMM (modelos de medidas y mediciones) en un lugar común donde sea fácil su gestión. Dicho almacenamiento no solamente serviría como un lugar donde almacenar los modelos sino también ofreciendo un conjunto de servicios que permitan gestionar y definir conjuntos de medidas en forma de librerías así como medidas genéricas.

El objetivo de este proyecto es crear un repositorio para el almacenamiento y gestión de modelos SMM. Dicho repositorio incorporará los servicios básicos para recuperar/almacenar modelos pero también estará preparado para organizar las medidas en librerías así como el trabajo con medidas genéricas.


Creación de un generador de código nativo para DSLs

Este proyecto consiste en crear una facilidad para la generación de código nativo para lenguajes específicos del dominio, haciendo uso (en principio) de la librería LLVM como backend. El alumno deberá estudiar el framework de compilación LLVM, y como resultado de este estudio crear un metamodelo donde se representen las instrucciones que LLVM define. A continuación se creará una transformación que genere el código textual siguiendo el formato LLVM. Como caso de estudio se utilizará el DSL para crear fractales expuesto en el propio tutorial de LLVM y otro ejemplo más complejo a discutir durante la realización del proyecto.

El objetivo principal de este proyecto es crear una facilidad para la generación de código nativo, haciendo uso (en principio) de la librería LLVM como backend.


Editor gráfico fuzzy

Hoy en día existen numerosos entornos de programación (IDEs) que permiten la definición de la interfaz gráfica de usuario (GUI) de forma visual, esto es, seleccionando controles de una paleta y colocando dichos controles en cierta posición del lienzo. Algunos de estos entornos también ofrecen facilidades para alinear unos controles con respecto a otros, y para establecer una disposición (layout) predefinida de los mismos, como pueden ser GridLayout, BorderLayout, o FlowLayout en Java Swing.

Sin embargo, una característica no tan habitual en estas herramientas de construcción de interfaces es la posibilidad de definir una GUI arrastrando controles a posiciones aproximadas, y que el entorno infiera cuál es la disposición de los controles (layout) que el usuario pretendía usar.

Proponemos la creación de una herramienta que permita construir GUIs de forma visual, y que posteriormente permita generar la GUI definida en la que los controles responden a una composición de layouts predefinidos. La herramienta estará basada en el Desarrollo de Software Dirigido por Modelos(DSDM). Más concretamente, la herramienta se creará en la plataforma Eclipse, el editor gráfico se realizará utilizando el framework GMF, la inferencia del layout estará basada en un framework de ingeniería inversa de GUI propio de ModelUM, y para la generación de la interfaz se utilizará Wazaabi.


Creación de preprocesadores de lenguajes no estructurados

La aplicación de técnicas de reingeniería y modernización a los sistemas software requieren del análisis de los artefactos que los componen. Aunque estos artefactos pueden tener diferente naturaleza (bases de datos, ficheros de configuración, etc) el sistema software está principalmente compuesto por ficheros de código fuente que implementan la funcionalidad del sistema. El análisis del código fuente requiere el uso de parsers para reconocer las sentencias del lenguaje de programación y dar comienzo así al proceso de reingeniería.

En la actualidad, existen lenguajes de programación para los que definir un parser basado en gramáticas no es una tarea trivial o posible. Estos lenguajes, que llamamos no estructurados, ofrecen una serie de características que provocan que la gramática sea excesivamente compleja o que incluso sea más adecuado recurrir a otras técnicas para su reconocimiento. Por ejemplo, es habitual encontrarse con que partes de estos lenguajes son "dependientes del contexto". Sin embargo, dichos lenguajes no estructurados pueden ser preprocesados para convertirlos en lenguajes estructurados y, por lo tanto, reconocibles por una gramática simple.

El objetivo de este proyecto fin de carrera es definir la infraestructura básica para la creación de preprocesadores de lenguajes no estructurados para convertirlos en lenguajes estructurados.


Algoritmo de comparación de modelos orientado a repositorios

Existen numerosos algoritmos de comparación y diferenciación en el mundo del DSDM, basados principalmente en la similitud de grafos tipados. No obstante, la amplia mayoría de estos algoritmos están diseñados para operar con modelos que se encuentren en memoria, lo cual puede no ser viable dependiendo de su tamaño.

Una de las soluciones propuestas para el manejo de modelos grandes es el uso de repositorios, esto es, almacenes de modelos con soporte de base de datos. El acceso a una base de datos puede resultar más lento y costoso que el acceso a un fichero físico o a memoria; sin embargo, permite facilidades como la carga bajo demanda de elementos, que redundan en una utilización más eficiente de la memoria del usuario, pudiendo mantener en ella solamente los elementos que le interesan.

Un problema que se plantea a la hora de utilizar algoritmos de comparación con repositorios es quese pretende minimizar la carga de elementos desde el repositorio, pero al mismo tiempo se debe minimizar también el acceso a la base de datos para evitar los costes temporales ligados a la construcción, envío y procesamiento de consultas. Por lo tanto, los algoritmos de comparación existentes deben ser adaptados a esta situación para dotar a los repositorios de sistemas eficientes decomparación con los que poder realizar diversas tareas como el versionado de modelos.

El objetivo principal de este PFC es desarrollar un algoritmo de comparación de modelos para el repositorio de modelos MetaRep. Se entiende por modelos tanto modelos como metamodelos. El algoritmo deberá ser lo más eficiente posible, esto es, deberá maximizar eficacia en el matching de elementos minimizando el acceso a base de datos.


Finished

  • "Un repositorio de transformaciones de modelos para Eclipse". Jesús Perera Aracil, 2010
  • "Medea: Definición y ejecución de métricas basadas en SMM". Belén Cruz Zapata, 2010
  • "Proceso de Modernización de los Datos de un Sistema de Información aplicando técnicas DSDM". Fransico Montoya Arnao, 2010
  • "Soporte de UML, OWL y BPMN mediante transformaciones de modelos en la herramienta 4Clerks", Rocío Díaz Márquez, 2007
  • "myme: desarrollo dirigido por modelos con MyMobileWeb", Ángel Calvo Ortega, 2007
  • "Herramientas de Metamodelado: Microsoft DSL Tools vs. Metaedit+", Oscar Sánchez Ramón, Pablo Gómez Palarea, 2006
  • "Desarrollo de herramientas MDA en la plataforma Eclipse", Javier Luis Cánovas Izquierdo, 2006
  • "Herramientas de metamodelado GME", Javier Espinazo Pagán, 2007
  • "Ingeniería de modelos con MDA. Estudio comparativo de OptimalJ y ArctStyle", Jesús Rodriguez Vicente, 2004