El futuro tiene muchos nombres. Para los débiles es lo inalcanzable.
Para los temerosos, lo desconocido. Para los valientes es la oportunidad.
Víctor Hugo
Esta página contiene una lista de los proyectos fin de carrera que dirijo o he dirigido (estos últimos, si los autores me han dado permiso expreso para ello, se pueden descargar para su lectura, código incluido).
Si estás buscando un proyecto fin de carrera y te agrada alguno de los que ofrezco, ponte en contacto conmigo. No te dejes asustar por las descripciones a continuación... parte del proyecto fin de carrera trata de aprender a manejar las tecnologías que se usan. También estoy abierto a propuestas vuestras.

Resumen: Subversion es la siguiente generación en cuanto sistemas de versiones dentro del mundo del software libre se refiere, tomando el listón del ya algo anticuado CVS. A día de hoy, Subversion ya está en una fase estable y es sólo cuestión de tiempo el que los grandes proyectos de software libre (y con ellos previsiblemente toda la comunidad) se pase a este nuevo sistema. Este proyecto pretende ofrecer una solución amigable para el desarrollador basada en una implementación con interfaz gráfica de un cliente Subversion. Esta interfaza y la biblioteca sobre la que se sustenta estarán escritas en Mono, la implemenación libre de .NET que hace uso del lenguaje C#.
Autor: Antonio Gutiérrez Mayoral (finalizado; matrícula de honor)
Las listas de correo-e suponen el alma mater de los proyectos libres, ya que en ellas se anuncian, proponen y discuten las acciones importantes que les conciernen. Este Proyecto Fin de Carrera tiene como finalidad realizar una herramienta en Python que a partir de los archivos de una lista de correo extraiga una serie de estadísticas de participación en las mismas. Como tal, se puede englobar dentro del proyecto de Ingeniería del Software Libre que se está llevando a cabo.
Autor: Javier Crespo Martín (finalizado; notable)
SLOCCount es una aplicación que toma como entrada código fuente y extrea información sobre los lenguajes utilizados y el número de líneas de código (físicas) en cada lenguaje. A partir de las cuentas de número de líneas, SLOCCount usa el método de COCOMO para estimar esfuerzo y dedicación y, por tanto, coste de producción. La finalidad de este proyecto es dotar a SLOCCount de algunas de estas funcionalidades, entre ellas la de proporcionar un frontal visual a la aplicación que permite su uso a través de menús en vez de mediante líneas de instrucciones en la shell.
Autor: Antonio Segura (finalizado; notable)
BugZilla es una aplicación web que permite que los usuarios de un software puedan notificar errores y problemas que tienen con su software que se utiliza con mucha profusión en grandes proyectos de software libre. El objetivo de este proyecto es realizar una herramienta que analice las interacciones de usuarios y desarrolladores con este sistema con el fin de entender mejor el desarrollo de software libre y los agentes que participan en él.
Autor: Enrique Corrales (finalizado; sobresaliente)
Seal es una herramienta que debería guardar las diferentes maneras de identificarse de los desarrolladore de software libre y devuelver un valor numérico único para cada uno. Su finalidad es integrar las acciones realizadas por una persona en diferentes lugares (generalmente contando con diferentes maneras de identificarse: una o varias direcciones de correo, login, nombre real) y ofrecerla como una única. Además, a partir de la información integrada, se debería poder obtener información adicional como el país y su sexo y, todo esto, preservando la privacidad de los desarrolladores.
Autor: Alberto Rebollo (finalizado; notable)
Mucho software (y la gran mayoría del software libre) se desarrolla utilizando sistemas de control de versiones de los que es posible extraer incluso a nivel de línea cuándo fue modificada por última vez. Extraer toda esa información y analizarla de manera estadística permitiría conocer la edad del software y, por tanto, tener un valor indicativo de su mantenibilidad a nivel de sistema como de equipo de desarrollo. DrJones ya ha sido diseñado y parcialmente implementado. El objetivo de este proyecto es realizar una implementación completa que permita tener una herramienta lista para ser utilizada a gran escala.
Autor: Álvaro Navarro Clemente (finalizado; sobresaliente propuesto para matrícula de honor)
Los proyectos de software libre suelen estar formados mayoritariamente por voluntarios y tener una estructura auto-organizativa, por lo que los lazos que se crean entre desarrolladores no siguen una estructura fija tal y como encontramos en el mundo del software empresarial. Este proyecto tratará de estudiar mediante un enfoque de análisis de redes sociales las relaciones existentes entre los miembros de un proyecto y cómo éstas cambian con el tiempo. Para eso se tomarán datos de CVSAnalY, una herramienta escrita en Python que permite analizar el desarrollo de proyectos de software libre a partir de su CVS, y se mostrará gráficamente la evolución.
Autor: Estrella Parrilla Sanz (finalizado; sobresaliente)
Uno de los puntos más repetidos, pero nunca validados de manera general, es la falta de documentación de proyectos de software libre. Este proyecto tiene como objetivo estimar mediante heurísticos la documentación de desarrollo existente en los proyectos. Esto se conseguirá a partir de las fuentes que se distribuyen (generalmente como tar.gz), en las que se intentará identificar tanto la documentación en ficheros específicos (README, páginas man, etc) o integradas como comentarios en el código fuente (JavaDoc y similar). Otro aspecto a investigar sería ver cómo es la evolución de la documentación y del código fuente: si cambian a la vez; si hay zonas calientes simultáneas, etc.
Autor: Juan Luis Prieto Martínez (finalizado; sobresaliente)
Los llamados insectos sociales (las termitas, las hormigas y algunos tipos de arañas) realizan acciones colaborativas sin la presencia de un coordinador central. Para ello, se intercomunican mediante cambios en el entorno - esta forma de comunicarse por medios indirectos ha sido bautizada por los biólogos como estigmergia. De este modo, el comportamiento de una hormiga depende de lo que perciba del entorno, que a su vez podría haber sido modificado por otra hormiga debido a las condiciones que ésta encontró. Dentro del GSyC, hemos realizado una analogía de este proceso con los procesos de creación de software libre (ver artículo). Este proyecto tiene como objetivo modelar de manera visual el proceso para facilitar su comprensión y su calibración.
Autor: Juan Manuel Cantalejo (finalizado; sobresaliente)
Aunque en algunos entornos se llama plagio o en las prácticas universitarias copia, uno de los aspectos más laureados del software libre es la reutilización del código. Aunque este punto es uno de los más comentados, no existen estudios cuantitativos que indiquen la cantidad de código que se clona/copia/reutiliza. Este proyecto pretende dar respuesta, al menos de manera aproximada, a esta incógnita. Para eso, se hará uso de hashes nilsimsa (una especie de hashes que devuelven valores similares para ficheros con contenido similar) y se aplicarán tanto a ficheros como a subpartes de los ficheros (las cabeceras, las funciones, etc.) con código fuente. Comprobando dos a dos los hashes nilsimsa se podría identificar aquéllos elementos que han sido clonados/copiados.
Autor: David Pastor (finalizado; sobresaliente)
Este proyecto consiste en realizar una herramienta que extraiga información a partir de los diffs de un CVS. Básicamente se puede entender como una herramienta que hace que el nivel de granularidad de las revisiones sea a nivel de línea, en contraposición del diseño de CVS que lo hace a nivel de fichero. Gracias a la información obtenida, se pretende conocer mejor los cambios realizados sobre un software y así poder sacar métricas de mantenimiento y mantenibilidad.
Autor: Jorge Gascón (finalizado; sobresaliente propuesto para matrícula de honor)
Un "bad smell" es un indicio de que existe código de poca calidad. La idea original es del libro de Martin Fowler (Refactoring: Improving the Design of Existing Code) donde se lista una serie de ellos. Este proyecto tiene como objetivo crear un software que detecte "bad smells" de manera automática a partir de código fuente.
Autor: Daniel Cruz (finalizado; sobresaliente)
Este proyecto tiene como objetivo identificar los cambios de estructura en la jerarquía de directorios y ficheros que se producen en un proyecto software con el tiempo. La idea es tomar una foto del árbol de directorios en un instante A y B y ver si ha habido cambios y si es así, cuáles han sido. Esto implica identificar directorios y ficheros que han sido movidos de un lado a otro, que han sido añadidos o que han sido modificados. Se haría a un alto nivel de granularidad (a partir del nombre del fichero y del directorio), aunque también mediante al extracción de hashes (como nilsimsa) para comprobar si los ficheros se parecen lo suficiente entre sí.
Autor: Raúl Aranda Arriscado (finalizado)
El método de estimación de costes COCOMO I, que data de los años 80, utiliza como valor de entrada el número de líneas físicas de un programa. Las líneas físicas son aquéllas que no tienen en cuenta ni comentarios ni líneas en blanco. Sin embargo, este método se ha mostrado como poco real y nuevos modelos han aparecido. Entre ellos, COCOMO II (de mediados de los 90), que utiliza como parámetro de entrada el número de líneas lógicas de un programa software. Este proyecto tiene como objetivo crear un software que cuente el número de líneas lógicas a partir del código fuente de un programa.
Autor: Rubén Menéndez Montaño (finalizado; sobresaliente)
Este proyecto tiene como objetivo automatizar la tarea de realizar un contador de distribuciones Linux (en particular Debian, Red Hat, Ubuntu, SuSE, Gentoo...). Habrá que descargarse los paquetes, contar las líneas que contienen, insertar los datos en la base de datos y finalmente mostrar los resultado de manera amigable. Las cuentas correrán a cargo de la herramienta SLOCCount.
Autor: Raúl Vallinot Molina (finalizado; sobresaliente)
Este proyecto aumenta la funcionalidad de flawfinder mediante un frontal gráfico que permite gestionar los informes de seguridad que esta herramienta proporciona. De esta manera, se pueden tratar los hits que son falsos positivos de manera interactiva. También ofrece un informe en tres capas sobre la seguridad del software: uno para gestores de alto nivel, otro para gestores de proyecto y uno final detallado para desarrolladores.
Autor: Daniel García (finalizado; sobresaliente)
Los proyectos de software libre suelen tener una guía de estilo para uniformizar las contribuciones de los desarrolladores. De esta forma, se favorece la legibilidad y comprensión del código, se evitan errores y se tiene una estructura común en los ficheros del proyecto. Este proyecto tiene como objetivo estudiar (y, posiblemente, indicar si no se cumple) la guía de estilo en proyectos de software libre. Para ello se seguirá una estrategia similar a la que se usa en la herramienta Checkstyle.
Autor: Vanessa Díaz (en desarrollo)
CVSAnalY es una herramienta escrita en Python que permite analizar el desarrollo de proyectos de software libre. Los proyectos de software libre suelen utilizar una herramienta de control de versiones que permite introducir un comentario (en lenguaje natural) con cada cambio realizado. Este proyecto busca la clasificación de estos comentarios (en realidad de los cambios realizados) en las categorías de adaptativo, correctivo o perfectivo a partir de una serie de heurísticos utilizando para ello como ayuda los programas WordNet y Swish-e.
Autor: Pedro San Miguel (en desarrollo)
SMIL es un estándar XML que permite la integración de contenidos multimedia de manera sincronizada. El objetivo de este proyecto consiste en la creación de una herramienta que permita generar un karaoke a partir de varios elementos: vídeo, música y letras. La aplicación resultante debería ofrecer la posibilidad de sincronizar las letras con la música, y a ser posible, facilitar todo el proceso haciéndolo lo más cómodo para el usuario final.
Autor: César Valiente (en desarrollo)
El Planeta IBAS es un agregador de blogs de alumnos de Comunicación Audiovisual a los que doy clase de Informática Básica en primero de carrera. El planeta permite que ellos mismos evalúen qué contenidos les son intersantes mediante votos a las entradas de sus compañeros. Como la participación activa y exitosa puede dar hasta un punto adicional para la nota final de la asignatura, puede darse la situación de que haya alumnos que intenten engañar en beneficio propio. Este proyecto tiene como finalidad hacer minería de datos sobre las votaciones e información de los blogs para evitar estos engaños.
Autor: Raquel Plaza (en desarrollo) y Pedro Pozuelo (en desarrollo)
Este proyecto tiene como finalidad obtener una biblioteca de gráficos científica al estilo de Ploticus, pero utilizando el estándar SVG, un estándar XML de gráficos vectoriales.
Autora: Cristina Argelina (en desarrollo)
Este proyecto tiene como objetivo crear un sistema de realimentación inmediata a los proyectos de software libre. De esta forma, con cada commit realizado al sistema de versiones de un proyecto realiza un proceso para evaluar los cambios y propone mejoras al proyecto o indica posibles puntos débiles.
Autor: Roberto Andradas Izquierdo (en desarrollo)
La herramienta diff tradicional no entiende de semántica. Este proyecto tiene como propósito crear una herramienta que muestra las diferencias semánticas entre dos ficheros.
Autor: David Muñoz (en desarrollo)
Algunos proyectos de software libre, como es el caso de Linux, no han utilizado un sistema de versiones hasta recientemente. Sin embargo, las fuentes de versiones anteriores están disponibles de manera pública en Internet. Este proyecto tiene como acometido recrear un sistema de versiones a partir de las fuentes empaquetadas para poder analizarlo con las herramientas de análisis de sistemas de versiones tradicionales.
Autor: Juan Manuel Alfonso (en desarrollo)
Un "bad smell" es un indicio de que existe código de poca calidad. La idea original es del libro de Martin Fowler (Refactoring: Improving the Design of Existing Code) donde se lista una serie de ellos. Este proyecto tiene como objetivo crear un software que detecte "bad smells" de manera automática a partir de código fuente. Hay un proyecto fin de carrera anterior que creó un detector para Python. En este proyecto queremos extenderlo a otros lenguajes y otras situaciones.
Autor: Chabir Atrahouch (en desarrollo)
(Este proyecto está pensado para alumnos que hayan cursado la asignatura Tecnologías de Servicios y Aplicaciones para Internet). Zope es un servidor de aplicaciones totalmente orientado a objetos escrito en Python, que presento en las prácticas de la asignatura de Tecnologías y Servicios para Aplicaciones en Internet. Zope es muy versátil y tiene gran cantidad de productos que permiten generar soluciones finales para el web de manera rápida, dinámica, potente y limpia. CMF (Content Managemente Framework) es uno de esos productos, orientado a ofrecer servicios suplementarios (autentificación, flujo de trabajo, etc.) sobre Zope. En este proyecto, el proyectando tiene la posibilidad de profundizar en estas tecnologías web de vanguardia creando un producto final sobre Zope/CMF.
Autor: sin asignar