Puesta al día
Buenas a todos!
Creo que os debo una disculpa, ya que hace puff que no escribo ni comento cómo llevo el proyecto. La verdad es que he estado muy ocupada con varios aspectos: Migración de sistema de control de versiones: De SVN a Git, búsqueda de la metodología a utilizar en GoaM, estudio de las bibliotecas externas: id3lib, exiv2, libboost, estructura del contenido de la memoria para el PFC, primeras implementaciones, diseño del núcleo de GoaM (y parte de la interfaz), etcétera.
Vamos a ir explicando una por una.
Una de las primeras cosas que me propuse fue el cambiar el sistema de control de versiones a Git. Había escuchado muy bien de él, sobretodo en cuanto a lo fácil que es trabajar con él, mantenerlo, etc. Es mucho más intuitivo que sistemas centralizados. Además, el empujón me lo dí en las V Jornadas de Software Libre y Conocimiento Abierto de la Universidad de Cádiz con el Taller de Desarrollo de Software con Git impartido por Antonio García Domínguez. Una vez visto la metodología de trabajo me gustó más que la que tiene SVN y gracias al blog de mi compañero Pablo Recio Quijano el cual tiene una entrada explicando “cómo pasar un repositorio completo en SVN a Git” me atreví y ahora el proyecto está alojado en Gitorious.
Después de esto, tenía que empezar a desarrollar YA la aplicación: análisis, diseño, bla bla… pero ¿qué metodología sigo? ¿incremental? ¿qué hago con mi vida? Total, que me puse a investigar que había y encontré XP: eXtreme Programming. Es una metodología basada en pruebas en la cual el ciclo de trabajo es: en un escenario concreto obtener (en pequeños casos de uso) las funcionalidades necesarias, escribir las pruebas unitarias de cada caso de uso (cada funcionalidad) y, a partir de las pruebas, codificar el módulo de forma que cumplan las pruebas. Las ventajas que tiene la metodología es que es muy flexible a cambios, con lo que no es necesario una toma de requisitos completa para comenzar a desarrollar. Es ésto por lo que decidí a utilizar esta metodología. Como os conté en la última entrada, realmente no tenía muy claro qué va a ofrecer GoaM en cuanto a funcionalidades, sólo sabía cosas concretas como es la necesidad de usar bibliotecas externas.
Como era lo único que tenía en claro al principio comencé por estudiarlas y sacar los ”casos de uso” y las funcionalidades que necesitaba en mi aplicación. La primera fue id3lib porque me resultaba más fácil de manejar (quién no se entretiene en modificar las etiquetas ID3 en EasyTag o Kid3) Estuve viendo qué aportaba la biblioteca, qué me hacía falta y con ello implementé las pruebas. El módulo (terminado ya
) ofrece: abrir un fichero mp3, extraer las etiquetas, visualizarlas, editarlas, visualizar la etiqueta que quieras, eliminar una o todas, etc. De esta forma ésta será la única clase que trabaje con la biblioteca id3lib. De la misma forma está implementada la clase que trabaja con los metadatos de tipo EXIF e IPTC. Ahora lo que toca ver es como serializar los objetos con libboost, y ver si es necesario crear algún módulo que generalice ese comportamiento para todos los objetos que se tengan que serializar o no.
Otra cosa buena que tiene la eXtreme Programming es poder obtener el diseño de la aplicación en base a la creación de los módulos necesarios. Es decir, teniendo ya los dos módulos descritos anteriormente ya pude hacerme una idea de cómo va a ser el diseño del núcleo; os cuento. Está la capa más interna del núcleo que es la que interactúa con las bibliotecas externas: id3lib, exiv2 y libboost. Luego, existe una capa superior la cual define el comportamiento de los cuatro tipos de ficheros en los que se ha clasificado: audio, video, imagen y documento. Realmente, esta capa comprenderá, al menos, 5 módulos (uno para cada tipo y otro general) siendo el módulo general el que defina las mismas funcionalidades para todos, especificándose, dependiendo de las necesidades, en cada tipo. Por último tendremos una capa que será la que contenga el ”main-loop” del núcleo.
Por último, me he dedicado a ojear varias memorias PFC de compañeros viendo cómo están estructuradas, qué información incluyen en los anexos, etc, y he intentado sacar el ”índice” de mi memoria. En resumidas cuentas, tendrá un capítulo de introducción al proyecto, a la biblioteca wxWidgets, los objetivos mínimos que debe cumplir y alguna que otra cosa más. En un segundo capítulo se explicará la planificación que se ha llevado del proyecto, qué tareas (de forma general) se han propuesto, en cuanto tiempo se han realizado, es decir, un Gantt del proyecto. Luego llegamos a la parte más delicada: el desarrollo del proyecto. Aquí se explica el estudio de los requisitos, la/s metodología/s de trabajo que se ha seguido, diseño del proyecto, codificación, pruebas y mantenimiento. Y los últimos capítulos se dedicarán a las conclusiones y anexos. Pienso que de esta forma está bastante completo.
Por ahora es todo lo que he hecho en estos días. Intentaré escribir un poco más a menudo porque sino se me va la mano y creo mega-entradas como éstas >.<
Gracias a todos (y especialemente a quienes han aguantado y lo han leido entero xD)!
