OpenMarkov: Modelos gráficos probabilistas en Java


Propuesta de trabajo de fin de grado (TFG)
Dpto. de Inteligencia Artificial
E.T.S.I. Informática - UNED


Índice

  1. Presentación
  2. Contenido
  3. Perfil del alumno/a
  4. Profesores
  5. Bibliografía
  6. Herramientas informáticas
  7. Calificación

1. Presentación

Para obtener el título de Graduado en Ingeniería Informática o en Ingeniería en Tecnologías de la Información en la UNED es necesario presentar un Proyecto de Fin de Grado. En la la ETSI Informática hay tres tipos de proyectos: oferta general, oferta específica y convenios con empresas. El proyecto que exponemos aquí es de oferta específica. Según el reglamento, los proyectos de este tipo "son trabajos vinculados a la investigación y actividades de los departamentos sobre temas relacionados con las materias de la titulación".

OpenMarkov es una herramienta para construir y evaluar modelos gráficos probabilistas, como redes bayesianas, diagramas de influencia y otros. Ha sido desarrollada totalmente en la UNED, con la participación de profesores, investigadores contratados y estudiantes. Según nuestros conocimientos, esta herramienta se ha utilizado ya para docencia e investigación al menos en 30 países: España, Portugal, Francia, Italia, Reino Unido, Bélgica, Holanda, Alemania, Eslovenia, Noruega, Suecia, Finlandia, Polonia, Ucrania, Israel, Turquía, Arabia Saudí, Irán, China, India, Corea del Sur, Malasia, Singapur, Japón, Estados Unidos, México, Cuba, Colombia, Ecuador, Venezuela, Brasil, Argelia, Ghana y Nigeria. Probablemente hay usuarios de otros lugares de los que aún no tenemos noticia. Los usuarios incluyen desde centros de investigación avanzados (como el Massachusetts Institute of Technology), agencias del Gobierno de Estados Unidos y grandes multinacionales, hasta estudiantes de países con muy pocos recursos.

Este proyecto está relacionado con la asignatura Modelos probabilistas y análisis de decisiones, una optativa de 4º curso del Grado en Ingeniería en Tecnologías de la Información, que también puede cursarse como optativa en el Grado en Ingeniería Informática.


2. Contenido

El objetivo es añadir nuevas funcionalidades al programa OpenMarkov, tales como las siguientes:

Cada una de estas líneas puede dar lugar a un proyecto diferente. El tema concreto del proyecto se establecerá de común acuerdo entre el alumno/a y los profesores que lo van a dirigir.

Todos estos proyectos incluyen una parte de implementación de algoritmos ya existentes y una parte de integración en la interfaz gráfica de usuario.

Por tanto, el interés no está tanto en aportar cosas nuevas (un proyecto de fin de carrera no es un trabajo de investigación), sino en realizar un trabajo de la máxima calidad, siguiendo los principios de la ingeniería del software: hay que realizar un análisis de requisitos, de arquitectura y de diseño muy cuidadoso y bien documentado, con diagramas en UML.  La interfaz debe estar internacionalizada; de momento, debe funcionar en español y en inglés. Hay que elaborar pruebas exhaustivas con JUnit. El código en Java debe ser fácilmente mantenible; para ello, ha de ser claro, limpio, elegante, robusto y muy bien documentado (en inglés). Además, hay que redactar documentación que facilite el trabajo de futuros programadores. Esta documentación, en inglés, podrá presentarse como un anexo a la memoria del proyecto, que puede estar escrita en castellano o en inglés.

Más abajo indicamos otras herramientas informáticas recomendadas para este proyecto. Precisamente éste es uno de los puntos interesantes de esta propuesta: trabajar con tecnologías muy actuales, que tienen gran demanda en el mercado laboral, como UML, JUnit, Eclipse, IntelliJ, maven, git, nexus, jenkins... De hecho, una de las profesiones más demandadas en la actualidad es la de desarrollador Java, como se indica, por ejemplo, en este artículo. Por ello, al terminar el proyecto los profesores emitirán un certificado en que harán constar el trabajo realizado por el alumno/a, detallando las herramientas empleadas y el hecho de haber colaborado con un equipo amplio de programadores en un proyecto de repercusión internacional.


3. Perfil del alumno/a

Este proyecto está destinado a alumnos a quienes les guste el trabajo bien hecho (no se trata sólo de que el programa funcione, sino de que el código sea elegante y robusto), disfruten programando en Java y tengan interés por colaborar en la creación de un programa de software libre que ya se ha utilizado en más de 30 países.

El alumno que se presente como candidato para realizar este proyecto debe reunir los siguientes requisitos:

Será útil la experiencia en UML, JUnitEclipse, maven, etc., pero no es un requisito.

El alumno/a deberá firmar un documento en que acepte que su trabajo, en caso de que tenga la calidad suficiente, estará disponible públicamente con licencia GPL o similar, dejando constancia de su autoría, naturalmente.

Los alumnos interesados en este proyecto deberán enviar a los profesores que lo proponen (véase más abajo) su currículum vitae y su expediente académico; es suficiente un listado de calificaciones, no hace falta que envíen documentos escaneados. También es muy importante que indiquen el tiempo de que disponen; por ejemplo, "3 horas diarias de lunes a viernes tres horas diarias más 5 horas los sábados". Por favor, sea realista en su estimación. Disponer del tiempo necesario es esencial para completar el proyecto.


4. Profesores

Francisco Javier Díez Vegas
Manuel Arias Calleja

Horario de consultas: lunes y miércoles de 11:00 a 13:30 y de 16:30 a 18:00.

Dirección de correo:
F. J. Díez / M. Arias
Dpto. Inteligencia Artificial
UNED. Juan del Rosal, 16
28040 Madrid
Teléfono: 91.398.71.61 / 87.43

Fax: 91.398.88.95

Correo-e: fjdiez@dia.uned.es, marias@dia.uned.es


5. Bibliografía

5.1. Bibliografía sobre el proyecto OpenMarkov

5.2. Bibliografía sobre modelos gráficos probabilistas

5.3. Bibliografía sobre programación

5.4. Bibliografía sobre el proyecto de fin de grado


6. Herramientas informáticas

El alumno deberá trabajar con las versiones más recientes de Java (JDK), JUnit, Eclipse o IntelliJ, maven, git, nexus, jenkins, etc., que están disponibles de forma gratuita en Internet.

Para integrar el trabajo de los diferentes programadores, utilizamos bitbucket, que es similar a SourceForge, Google Code, etc.

Tiene más información en la página para programadores de OpenMarkov y, sobre todo, en la wiki.


7. Presentación y evaluación

Para la presentación del proyecto, el alumno/a debe ajustarse a las normas indicadas en el reglamento. En la redacción de la memoria debe tener especial cuidado de evitar el "spanglish".

Puede serle útil seguir las recomendaciones de José A. Mañas (UPM).


Javier Díez / Revisión: 10 septiembre 2018.