Título: “Generación 
automática de documentación que facilite la depuració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 la depuración de los metaprogramas escritos en EFL, sería 
deseable dotar a la actual implementación de EFL de la capacidad de generar 
documentación acerca de la ejecución de los metaprogramas.
Objetivos
El propósito de este proyecto fin de carrera es 1) determinar qué tipo de documentación sería deseable obtener y 2) ampliar la implementación de EFL en el lenguaje orientado a objetos Ruby para que sea capaz de generar automáticamente dicha documentación.
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:
Los modelos de análisis y diseño resultantes de las actividades 1 y 2 seguirán el estándar de facto UML.
Medios a utilizar y 
breve justificación de la pertinencia de los mismos
El proyecto fin de carrera se realizará con herramientas de código abierto o gratuitas (Ruby, Jude para dibujar diagramas UML…). El resultado del proyecto será código abierto (con una licencia tipo BSD, Berkeley Software Distribution).
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.