Título: “Herramienta
visual de diseño y codificación de metaprogramas EFL”
Breve Descripción
Muchos autores consideran que el desarrollo de familias de productos, frente a la construcción individual de productos aislados, es un paso decisivo hacia la reutilización sistemática de software y la obtención de economía de alcance. En el Departamento de Ingeniería de Software y Sistemas Informáticos existe un grupo de investigación que se adscribe a esta corriente y propone un nuevo proceso de desarrollo de familias de productos, denominado EDD (Exemplar Driven Development), que aprovecha la similitud entre los productos de una familia para construirlos por analogía.
La primera actividad de EDD
es la realización de un producto concreto de una familia. A continuación, se
busca cómo flexibilizar este ejemplar para que satisfaga los requisitos del
resto de los productos. Es decir, se trata de definir formalmente una relación
de analogía que permita derivar del ejemplar los demás productos de forma
automática. Por último, se obtienen los productos de la familia parametrizando
la flexibilización del ejemplar.
Entre las aportaciones de
EDD, cabe destacar:
-
Abordar el
desarrollo y el mantenimiento de una familia de productos mediante una
estrategia sistemática e iterativa. Lo primero que se construye es un ejemplar
que satisface los requisitos fijos de la familia. Después, se incorporan
progresivamente capas de flexibilización que implementan los requisitos
variables.
-
Los requisitos
fijos de una familia de productos suelen ser más estables que los requisitos
variables. EDD separa la implementación de los requisitos fijos (el ejemplar) de
la implementación de los requisitos variables (los módulos que flexibilizan el
ejemplar).
-
La decisión de
elaborar una familia a menudo se toma al detectar trabajo repetitivo en el
desarrollo aislado de varios productos de un dominio o al identificar
oportunidades de negocio en la ampliación de las prestaciones de un producto de
éxito. EDD reconoce esta situación y trata de
aprovecharla mediante la reutilización íntegra de un ejemplar.
Actualmente, se han evaluado distintas maneras de flexibilizar un ejemplar
aplicando las técnicas más comunes de generalización de código (herencia,
genericidad, plantillas de código…). Lamentablemente, se ha comprobado que estas
técnicas padecen limitaciones que impiden flexibilizaciones satisfactorias (que
sean modulares, no invasivas, aplicables a cualquier producto software…). Para
superar estas limitaciones, se ha propuesto el nuevo lenguaje EFL (Exemplar
Flexibilization Language), que, de momento, está implementado como una
librería del lenguaje orientado a objetos Ruby.
Con el fin de ilustrar la potencia y versatilidad de EDD y EFL, se han
desarrollado diversos ejemplos de desarrollo de programas escritos en Java y
C++; de procedimientos almacenados escritos en TRANSACT SQL; de juegos de prueba
escritos en Java y Modula-2; y de documentación escrita en HTML y Javadoc.
Para facilitar el desarrollo de los metaprogramas EFL, sería deseable contar
con una herramienta de diseño y codificación visual.
Objetivos
El fin de este proyecto fin de carrera es 1) proponer una notación gráfica de diseño de metaprogramas EFL y 2) desarrollar una herramienta visual que soporte la notación propuesta y facilite la codificación de los metaprogramas.
Método de
desarrollo, fases de trabajo y fechas de realización
El desarrollo del proyecto fin de carrera durará un año y comprenderá las siguientes actividades:
Medios a utilizar y
breve justificación de la pertinencia de los mismos
Aprovechando que el Departamento de Ingeniería de Software y Sistemas Informáticos dispone de una licencia MSDN Academic Alliance, el proyecto se construirá con la herramienta Microsoft DSL Tools, que soporta el desarrollo rápido de lenguajes gráficos.
Información
adicional
En http://www.issi.uned.es/miembros/pagpersonales/ruben_heradio/rheradio.html
puede encontrarse:
- Un video introductorio sobre la metodología EDD y el lenguaje EFL.
- La tesis “Metodología de desarrollo de software basada en el paradigma generativo. Realización mediante la transformación de ejemplares”, donde se documenta EDD y EFL.
- La implementación de EFL y diversos ejemplos de aplicación.