Estudio de la configuración en proyectos de software libre. 7-ZIP Autores: Caro Fernández, Rafael Mendoza Moreno, Juan Miguel Montero Martín, Juan Francisco Olivero González, Miguel Ángel Evolución y Gestión de la Configuración. Proyecto 7-Zip Control de versiones del documento Versión 1.0 1.1 Fecha 24/12/2013 07/01/2014 Autor Equipo Equipo Comentarios Inicio Corregido según propuestas del profesorado. 2 Evolución y Gestión de la Configuración. Proyecto 7-Zip Índice 1. Resumen 2. Introducción 3. Gestión del Código Fuente 3.1. Ejercicio 3.2. Ejercicio 4. Gestión de la Construcción 4.1. Gestión de pruebas 4.2. Ejercicio 4.3. Ejercicio 5. Gestión de Entregables 5.1. Ejercicio 6. Gestión de Incidencias y Depuración 6.1. Ejercicio 7. Gestión de la Variabilidad 7.1. Ejercicio 8. Gestión de la Integración Continua 8.1. Ejercicio 9. Mapa de herramientas 10. Conclusiones 11. Bibliografía 12. Anexos 3 Evolución y Gestión de la Configuración. Proyecto 7-Zip 1. Resumen Este documento recoge información sobre el desarrollo, construcción y distribución del proyecto 7zip y pretende ser una guía de mejora para la gestión de su configuración. En concreto, se va a revisar el uso de herramientas que permitan al equipo de desarrollo llevar a cabo tareas de gestión de forma más dinámica y organizada. Para llevar a cabo esto se tendrán en cuenta la forma en la que se gestionan áreas tales como: código fuente, construcción, entregables, incidencias, depuración, variabilidad e integración y despliegue continuos. La información recogida en este documento es el resultado de una recopilación exhaustiva de las fuentes nombradas en la Bibliografía (Véase apartado 11). Estas fuentes no son suficientes para describir en su totalidad las distintas secciones del presente documento ya que se trata de un proyecto realizado por un único desarrollador que recibe apoyo de colaboradores voluntarios. Estas aportaciones son poco frecuentes y se concentran en la solución de errores; no obstante, propondremos el uso de herramientas de ayuda en los apartados correspondientes en caso de que un equipo de desarrollo tomase el proyecto. A partir de los contenidos vistos en la asignatura se analizará si se deberían cambiar las herramientas utilizadas actualmente o se deberían mantener, de acuerdo a las necesidades del equipo. Para explicar el funcionamiento e integración de las herramientas que se expongan se ofrecerá un mapa de herramientas mostrando las relaciones que se podría encontrar entre ellas. Además, se ofrecerá una pequeña guía ejemplificando los contenidos prácticos de la asignatura y proponiendo ejercicios relacionados con la gestión de la configuración que permiten visualizar de forma genérica cómo podrían llevarse estas acciones a cabo en cada uno de los apartados significativos de este documento. Por último se expondrán las conclusiones obtenidas sobre el proyecto y el documento. 4 Evolución y Gestión de la Configuración. Proyecto 7-Zip 2. Introducción La aplicación “7-zip” es un archivador de ficheros desarrollado por el programador Igor Pavlov. Tiene como objetivo ofrecer a los usuarios una herramienta de compresión y descompresión de archivos de forma gratuita y con una amplia variedad de formatos disponibles. El software compite directamente con otras herramientas ampliamente conocidas como WinZip o WinRAR. Ofrece una interfaz gráfica bastante amigable con la que poder trabajar con la funcionalidad de la aplicación. El proyecto 7-zip utiliza los métodos de compresión LZMA y PPMD proporcionando un alto ratio de compresión y solidez lo que mejora la compresión de conjuntos de archivos pequeños. El proyecto es de código abierto y posee licencia GNU LGPL aloja su código en la web http://sourceforge.net/projects/sevenzip/files/. En ella, además de un repositorio de versiones estables, existe también una wiki pública gestionada por el propio autor donde se reportan incidencias, se proponen parches, y de donde se pueden descargar las últimas versiones alpha y beta. La última versión actualmente del software es la 9.22. Su código está escrito en lenguajes C, C++ y Asm. Está compilado para su explotación en sistemas que utilicen Windows 98 y superiores aunque, alternativamente, existe también una versión para sistemas Unix y MacOs, es conocida como p7zip. Esta versión está alojada en http://sourceforge.net/projects/p7zip/. (La actual última versión es la 9.20.1) Este documento está estructurado con los siguientes bloques: Resumen e Introducción: Resumen el proyecto presentado, explica brevemente las funcionalidades de la aplicación, las plataformas para las que trabaja, la última versión lanzada, y describe al grupo de desarrolladores. Gestión del Código Fuente: Explica las técnicas y herramientas que se han empleado para gestionar el código fuente, esto incluye la gestión de las ramas y parches. Se describen también otros aspectos organizativos como la aprobación de cambios, los roles existentes, o el formato de los archivos fuente en el código. Gestión de la Construcción: Explica las técnicas y herramientas que se emplean en la construcción del proceso. Para ello se describe el uso de estas herramientas y configura cada cuánto se realiza una construcción, entre otras. 5 Evolución y Gestión de la Configuración. Proyecto 7-Zip Gestión de Entregables: Explica qué elementos serán entregados a los clientes, y cómo son generados. Se explicará también cómo se identifican los distintos entregables, su ubicación y qué rol o roles del proyecto se involucran en este aspecto. Gestión de Despliegue: Explica los mecanismos de despliegue y los procesos relacionados. Se describirán también las plataformas en las que se lleva a cabo estas tareas y qué herramientas se involucran en las mismas. Gestión de Incidencias y Depuración: Explica los mecanismos de depuración empleados en el desarrollo de la aplicación. Se describe cómo se llevan a cabo estos cambios, y cómo se gestionan. Expone también quién o quiénes son los responsables de tomar una decisión de acuerdo a la incidencia reportada. Gestión de la Variabilidad: Explica los mecanismos empleados, o que pueden ser utilizados para gestionar la variabilidad en el proyecto. Gestión de la Integración o Despliegue Continuos: Explica la existencia de alguno de estos mecanismos, y en caso de no existir, define cómo podría llegar a incluirse. Se explicará posteriormente en un mapa de herramientas cómo las distintas herramientas se interconectan para poder gestionar el código eficientemente y se finalizará el documento con una conclusión en la que se le da una valoración global de la evolución y gestión de la configuración llevada a cabo en el proyecto. También se puede encontrar información de interés como el diario de grupo o datos de conexión a los servicios en los anexos. 6 Evolución y Gestión de la Configuración. Proyecto 7-Zip 3. Gestión del Código Fuente Para explicar la gestión del código fuente, empezaremos explicando las herramientas empleadas para la gestión. El código fuente es gestionado con el soporte ofrecido por “SourceForge.net”. SourceForge actúa como un repositorio centralizado para software libre y es utilizado por más de 3 millones de desarrolladores, lo cual es un entorno propicio para la obtención de feedback de otros desarrolladores. SourceForge ofrece un repositorio público del que se pueden descargar las distintas versiones estables y finales pertenecientes a la rama principal de desarrollo de la aplicación. Cada versión está almacenada en un directorio y contiene el ejecutable con extensión .msi, .exe y el código fuente en C++, Asm y C comprimido en *.tar.bz2. El código se gestiona en local de manera privada y las mejoras o soluciones de errores se reportan en la wiki del proyecto 7zip en SourceForge. El control de cambios bugs se reportan en una wiki. El sistema funciona mediante la expedición de tickets, entradas que permiten a los usuarios sugerir o reportar cambios. Los posibles parches que se pudiesen aplicar se suben a ésta con la aprobación del administrador de la wiki. SourceForge proporciona unas opciones configurables a los desarrolladores que usan sus servicios. Entre estas opciones están el uso de GIT, SVN y Mercurial. Al gestionar el código de manera local podemos elegir la plataforma que más nos guste, aunque, por su 7 Evolución y Gestión de la Configuración. Proyecto 7-Zip simplicidad y comodidad a la hora de trabajar sin conexión, nosotros proponemos el uso de GIT. Dado que Igor Pavlov es el único desarrollador del proyecto 7zip y no consideramos necesaria la obligación de hacer actualizaciones en todas las ocasiones a un repositorio externo, afianzamos la decisión de que GIT se adapta mejor a su desarrollo que herramientas SVN. Existe un archivo en el cual se explica y expone el formato y las pautas que debe seguirse en el código fuente, dicho archivo es el llamado “7zFormat.txt”, que incluiremos como anexo de este documento. Mejoras realizadas al proyecto inicial: Para ayudar a la creación y mejora de la aplicación, hemos creado un repositorio GIT en Sourceforge y hemos añadido GIT a la máquina virtual. Esto permitirá al autor tener un historial de los cambios realizados. Permitiremos que cualquiera pueda leer del repositorio, para así poder recibir parches y ayuda de otros usuarios. Los datos de conexión para este repositorio alojado en Sourceforge pueden encontrarse en el Anexo III. 3.1. Ejercicio: Simulación de corregir un bug, y hacer commit. Una vez localizado un bug en la aplicación, los pasos para arreglarlos serían: 1234- Asegurarnos de que se trata de un comportamiento reproducible y localizable. Editar el fichero donde se encuentre el error. Añadir el fichero al repositorio local GIT con el comando “git add <ruta del fichero>. Realizar commit de los cambios con la orden “git commit -a”. En este paso añadiremos detalles de los cambios. 5- Añadimos los cambios al fichero remoto utilizando “git push origin master”. 6- Tras esto nos pedirá la contraseña del administrador del repositorio. La introducimos y se enviarán los cambios. 8 Evolución y Gestión de la Configuración. Proyecto 7-Zip 3.2. Ejercicio: Obtener código del repositorio. Si lo que deseamos hacer es conseguir una copia del repositorio alojado en Sourceforge, lo que debemos hacer es: 1- Desde consola, irnos a la carpeta donde queramos que se cree la copia del proyecto. 2- Introducir el comando de GIT que podemos encontrar en la web de Sourceforge del proyecto creado en relación con este documento. (Ver Anexo III): “git clone git://git.code.sf.net/p/egctest/code”. A través de este comando se procede a la descarga del proyecto. 9 Evolución y Gestión de la Configuración. Proyecto 7-Zip 4. Gestión de la construcción En la gestión para la construcción se analizan tareas referentes a la compilación del código fuente. El proyecto “7zip” originalmente está desarrollado en Visual Basic 6 y se despliega tanto en arquitecturas x86 como x64. El código fuente se puede descargar desde el repositorio de SourceForge desde la página: http://sourceforge.net/projects/sevenzip/files/. El archivo *.tar.bz2 contiene tres carpetas en las que podemos encontrar el código fuente en C, C++ y ASM respectivamente. 10 Evolución y Gestión de la Configuración. Proyecto 7-Zip Dentro de cada carpeta se encuentra el código fuente del proyecto y un archivo llamado “build.mak” el cual posee la configuración para la correcta compilación en las diferentes plataformas y sistemas aceptados. Este fichero nos indica que el proyecto se compila utilizando makefile. Estos ficheros ayudan a compilar automáticamente proyectos que necesitan una gran cantidad de configuración, evitando tener que escribir todas las líneas de configuración en la consola. También podemos encontrar otra carpeta con documentos de ayuda llamada “DOCS” con información sobre las licencias, las librerías necesarias para compilar, un histórico de parches y una breve descripción del código. Requisitos para la construcción del proyecto En primer lugar sustituiremos el compilador Visual Basic 6 por Visual Studio 2010 Express Edition con SP1 por mayor comodidad a la hora de modificar el código y compatibilidad con los entornos de desarrollo más modernos. Para la correcta construcción necesitaremos las siguientes herramientas: a. Visual Studio 2010 Express Edition with SP1 http://www.microsoft.com/eses/download/confirmation.aspx?id=23691 11 Evolución y Gestión de la Configuración. Proyecto 7-Zip b. Windows SDK 7.0 for x64 (opcional) http://download.microsoft.com/download/2/E/9/2E911956-F90F4BFB-8231-E292A7B6F287/GRMSDKX_EN_DVD.iso c. Windows DDK 7.1 (opcional) http://download.microsoft.com/download/4/A/2/4A25C7D5-EFBE4182-B6A9-AE6850409A78/GRMWDK_EN_7600_1.ISO d. 7zip.exe http://downloads.sourceforge.net/sevenzip/7z920.exe e. Código fuente de 7zip. f. Consola de comandos de Windows. Una vez hayamos obtenido las herramientas anteriores procederemos a la instalación del Visual Studio 2010. A continuación instalaremos 7zip.exe y lo utilizaremos para descomprimir el código fuente descargado. Ya que el código está escrito en C y C++ el Visual Studio nos proporcionará toda la gestión y configuración necesaria, así como bibliotecas y librerías. La modificación del código fuente será tratada con Visual Studio y su posterior compilación se llevará a cabo mediante la línea de comandos de Windows. 4.1. Ejercicio: Compilar el código Procederemos a compilar el código de 7zip. Para ello haremos uso de lo instalado anteriormente. Lo primero que debemos hacer es incluir las variables de entorno de Visual Studio para poder utilizarlas en la línea de comandos de Windows. Para ello abriremos una consola de Windows e introduciremos: "C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Tools\vsvars32.bat". 12 Evolución y Gestión de la Configuración. Proyecto 7-Zip Una vez incluidas las variables procederemos a la compilación del código, nos dirigiremos con la consola al lugar donde se encuentre el código (cd “ruta del código\CPP\7zip”) e introduciremos la siguiente orden: “nmake NEW_COMPILER=1 MY_STATIC_LINK=1” Tras esto, comenzará la compilación. Tardará varios minutos tras lo cual se crearán los ficheros .exe para la utilización del programa. 4.2. Ejercicio: Uso de 7zip El fichero que utilizaremos para comprimir es el que se crea en la ruta “CPP\7zip\Bundles\Alone\O\7za.exe”. Al ejecutarlo por consola podremos comprimir y descomprimir ficheros. Los comandos necesarios para el manejo de esta aplicación aparecerán en consola a modo de guía. 13 Evolución y Gestión de la Configuración. Proyecto 7-Zip 4.3. Gestión de Pruebas Dado que la gestión de Pruebas es privada y gestionada por el autor, este documento propone una serie de test para corroborar el correcto funcionamiento de los distintos ejecutables una vez compilado el código fuente. Podemos encontrar el 7za.exe en la ruta: “<ruta_del_proyecto>\CPP\7zip\Bundles\Alone\O\7za.exe” Para la simplificación de los comandos de los ejercicios, el fichero 7za.exe lo localizaremos en C:\bin y los ficheros a comprimir en C:\prueba. - Prueba de Compresión: Utilizaremos el ejecutable correspondiente y un archivo cualquiera para comprobar su correcta compresión: Para realizar la prueba emplearemos el siguiente comando: 14 Evolución y Gestión de la Configuración. Proyecto 7-Zip C:\bin\7za.exe a archivoComprimido comprimeme Esto crea un archivo .7z llamado “archivoComprimido”, el cual contiene a la carpeta “comprimeme” - Prueba de descompresión: Para ello utilizaremos el ejecutable 7za.exe y el archivo comprimido en el ejercicio anterior. Para realizar la prueba emplearemos el siguiente comando: C:\bin\7za.exe x archivoComprimido.7z 15 Evolución y Gestión de la Configuración. Proyecto 7-Zip 5. Gestión de entregables Los entregables ofrecidos hasta la fecha están compuestos por un ejecutable que sirve para la instalación de la aplicación, y el código fuente del mismo en formato de archivo comprimido. Estos entregables salen a la luz sin una periodicidad establecida. Es decir, salen cuando están listos. Los archivos descargables se pueden encontrar en la página web alojada en Sourceforge asignada al proyecto y son anunciados en el foro de Sourceforge: http://sourceforge.net/p/sevenzip/discussion/45797/thread/9d1f5836 Para la distribución se utiliza el propio servidor de Sourceforge, que, al mismo tiempo ofrece la opción de descarga de archivos directamente desde la página principal del proyecto. No se describe alguna asignación de roles para la entrega del proyecto 7zip. El autor es el administrador del proyecto y es el único que posee la autorización para integrar un parche o actualización en un nuevo entregable. La numeración que se sigue está formada por dos números separados por un punto (x.y) donde el primer valor representa la versión del producto y el segundo valor se ve incrementado cuando se añade cierta funcionalidad al producto, pero no suficiente como para formar una nueva versión completa. Éste último valor también se ve incrementado cuando se resuelven bugs. El desarrollador también le agrega a veces la etiqueta “beta” o “alpha”, y la mantiene durante varias versiones del producto, indicando que no considera que la versión esté libre de errores. Su uso continuado puede producir que se relacione esta etiqueta con el nombre del producto y finalmente acabe integrándose en el mismo. 5.1 Ejercicio Simular un entregable en Sourceforge. Véase el anexo IV 16 Evolución y Gestión de la Configuración. Proyecto 7-Zip 6. Gestión de incidencias y depuración Las incidencias en este proyecto se gestionan empleando el sistema de “Tickets” que ofrece la plataforma SourceForge. Está dividida en tres partes: patches, bugs y “Feature Request”. Cualquier usuario puede reportar problemas, para ello deberá registrarse en “SourceForge” y enviar un correo a “45797@discussion.sevenzip.p.re.sf.net” incluyendo la siguiente información: 1. Para cada Equipo implicado: a. La versión y el tipo de 7zip (32-bit / 64-bit) b. La versión y el tipo de Windows (32-bit / 64-bit) c. El tipo de CPU. d. El tamaño de tu memoria RAM. 2. Una descripción de su problema. El administrador de la wiki validará nuestra petición y abrirá una discusión en https://sourceforge.net/p/sevenzip/bugs/, donde se expondrán las posibles soluciones, y sus resultados. Si el problema es resuelto se cerrará el tema. Los Patch correspondientes a la solución parcial o completa de estos problemas se podrán encontrar en https://sourceforge.net/p/sevenzip/patches/ y posteriormente con la actualización de versión del programa. La gestión de incidencias y depuración de las versiones alpha y beta se expondrán con previa autorización del autor en sus respectivos temas abiertos. Para la versión alpha 9.32: http://sourceforge.net/p/sevenzip/discussion/45797/thread/49e6a4d4/ Para la versión beta 9.22: http://sourceforge.net/projects/sevenzip/files/7-Zip/9.22/ 6.1. Ejercicio En el anexo III se puede encontrar una guía en la que se detalla paso a paso la creación de un ticket, la creación de una respuesta al mismo, y la aceptación de ese ticket por parte del desarrollador o persona autorizada. 17 Evolución y Gestión de la Configuración. Proyecto 7-Zip 7. Gestión de la variabilidad En el proyecto 7zip no se utilizan ninguno de los principios de gestión de la variabilidad impartidos en clase. El programa, una vez instalado, está completo y no se da elección a alterar el contenido en su instalación. Una posible aproximación a la gestión de la variabilidad podría ser dar la opción al usuario, en el proceso de instalación, de incluir o no ciertos paquetes en el programa, como podrían ser, por ejemplo, el correspondiente a la descompresión de la extensión “rar” De cara al desarrollo, se podría crear una línea base para el producto sobre la cual añadir funcionalidades. No obstante, dado que el proyecto solo consta del producto 7zip, la gestión de la variabilidad no tendría gran utilidad. Tampoco se descarta poder llegar a utilizarse de cara a la variación de las plataformas en las que está o estará disponible el programa 7zip. 7.1. Ejercicio: Mostrar cómo se gestionaría la variabilidad mediante un esquema en el hipotético caso de que se podría modularizar el programa. Véase el anexo V 18 Evolución y Gestión de la Configuración. Proyecto 7-Zip 8. Integración continua La integración continua pretende integrar los distintos componentes de un proyecto. En este proyecto la integración es privada y gestionada por el autor. Las aportaciones voluntarias son comprobadas por el autor y añadidas a la rama principal según su criterio. Este proyecto se alimenta de otros proyectos para poder realizar su función correctamente. Necesita de otros compilados para poder trabajar con determinados tipos de archivos, como el WinUNRAR. A pesar de ello, no es necesario mecanismos de integración continua, ya que no compila su código fuente sino que utiliza sus ejecutables. Para poder visualizar una tarea de integración continua, los autores de este documento, proponemos la utilización de la herramienta Jenkins para que el código sea recogido del repositorio y compilado automáticamente. De este modo el desarrollador ahorrará tiempo en la realización de dichas tareas. 8.1. EJERCICIO: Configuración de Jenkins Véase el anexo VI 19 Evolución y Gestión de la Configuración. Proyecto 7-Zip 9. Mapa de herramientas Para la gestión del proyecto 7Zip se han empleado herramientas de ayuda tanto online como de uso local. Contamos con la herramienta Sourceforge, con la que hemos cubierto el repositorio GIT y la gestión de incidencias. Aparte, también permite alojar los archivos entregables y permite que la aplicación sea accesible para todos. La vinculación al repositorio se realiza mediante consola gracias a GIT. El repositorio pertenece a Sourceforge, permitiendo trabajar en él y permitiendo que todo el que quiera pueda descargarse el código fuente de forma sencilla. También, a nivel local hemos utilizado Jenkins como ayuda para la integración continua y Visual Studio para la compilación. Jenkins permite gestionar la integración continua y comprobar errores. Está vinculado al repositorio GIT para poder trabajar con la última versión de la aplicación disponible. Esto permite realizar pruebas periódicamente con los datos del repositorio. Visual Studio C++ provee de todo lo necesario para poder compilar la aplicación de 7zip. No se utiliza su interfaz gráfica, sino que se ejecuta por línea de comandos de Windows. 20 Evolución y Gestión de la Configuración. Proyecto 7-Zip 10. Conclusiones La principal dificultad encontrada a la hora de evaluar la gestión de la configuración de éste proyecto es la falta de documentación por parte del creador del proyecto. Pese a la libertad de elegir proyecto, el desconocimiento de cómo se desarrollaba el mismo ha jugado un poco en nuestra contra. Sería beneficioso para los siguientes alumnos que cursen la asignatura que se acotasen los proyectos de software libre que se pueden elegir sobre la que realizar este trabajo. Por otra parte, hemos podido comprobar la importancia de la gestión de la configuración en un proyecto, tal y como los expertos con los que hemos tratado suelen asegurar. Dado que el proyecto 7zip tiene una carencia casi total de datos sobre la gestión publicada, nos ha resultado muy difícil ser capaces de estudiar y elaborar este informe. Está claro que no podemos obligar a todos los desarrolladores a seguir las mismas pautas, y más teniendo en cuenta el hecho de que el equipo de desarrolladores de 7zip, como ya se ha dicho en el documento, sólo cuenta, oficialmente, con un miembro. No obstante, si se tiene visión de futuro y ambición con respecto al proyecto que se tiene entre manos, pensamos que es aconsejable seguir los estándares establecidos para la elaboración de un código y una documentación aceptable, comprensible y reutilizable. Ya que no solo ayudará a la gestión del proyecto, sino que además proporcionará a futuros desarrolladores una base fiable y comprensible para continuar el proyecto o realizar uno similar. 21 Evolución y Gestión de la Configuración. Proyecto 7-Zip 11. Bibliografía 7-Zip http://www.7-zip.org/ 7-Zip | SourceForge.net http://sourceforge.net/projects/sevenzip/ Manual Git http://git-scm.com/doc Página web de la asignatura http://1984.lsi.us.es/wiki-egc/index.php Apoyo para la construcción http://www.ski-epic.com/2012_compiling_7zip_on_windows_with_visual_studio_10/index.html Makefile Tutorial http://mrbook.org/tutorials/make/ 22 Evolución y Gestión de la Configuración. Proyecto 7-Zip 12. Anexos Anexo I: Diario de Grupo. 25/11/2013 - Comienzo elaboración de documentación del proyecto. Se preparan los archivos en los que se trabajarán en grupo. 29/11/2013 - Reunión del grupo. Se reparten las tareas derivadas de éste proyecto entre los componentes del grupo. 02/12/2013 - Ampliación de contenidos en el documento. La estructura principal del documento es modificada para dar lugar a nuevos contenidos no previstos. 19/12/2013 - Reunión del grupo. Ampliación de contenidos en el documento para adecuarlo a los ejercicios relacionados con la máquina virtual. 20/12/2013 - Revisión de ejercicios. Se revisan los ejercicios propuestos y se redactan soluciones. También se solucionan problemas con la máquina virtual y se prepara correctamente para el proyecto. 22/12/2013 – Reunión de finalización. Se reúne el equipo de trabajo, se solucionan fallos en el documento y se retocan los apartados. 23/12/2013- Reunión para realizar entrega. Se reúne el equipo de trabajo para finalizar y subir el proyecto. Debido a que el equipo no llega a consenso para entregar, se pospone un día la entrega. 24/12/2013 – Entrega de la práctica. Repaso del documento y posterior subida a Opera. 14/01/2014 – Publicación de las notas. Se publican los resultados de las notas provisionales tras la primera entrega. 23 Evolución y Gestión de la Configuración. Proyecto 7-Zip 20/01/2014 – Tutoría para la revisión. El equipo acude al despacho del profesor para revisar el trabajo y comprometerse a realizar determinadas modificaciones para la próxima revisión el 7 de febrero. 21/01/2014 – Ejercicio para la revisión. El equipo prepara ejercicios para la vista del día 23. Se decide qué se hará y cómo. 22/01/2014 – Ejercicio para la revisión II. Se finaliza el desarrollo de los ejercicios y su presentación. 23/01/2014 – Presentación. El equipo realiza una presentación de su trabajo al profesorado de la asignatura. 03/02/2014 – Corrección. El equipo realiza algunas correcciones al documento tomando como punto de partida las anotaciones realizadas en la tutoría. 04/02/2014 – Corrección. El equipo realiza algunas correcciones al documento tomando como punto de partida las anotaciones realizadas en la tutoría. 05/02/2014 – Corrección. El equipo realiza algunas correcciones al documento tomando como punto de partida las anotaciones realizadas en la tutoría. 06/02/2014 – Corrección y preparativos para la entrega. El equipo realiza algunas correcciones al documento tomando como punto de partida las anotaciones realizadas en la tutoría y se ultiman y comprueban las correcciones realizadas para preparar la entrega. 07/02/2014 – Entrega. El equipo realiza la entrega de la documentación y el diario de grupo de acuerdo a las correcciones acordadas y otras correcciones extra derivadas de una profunda revisión. 24 Evolución y Gestión de la Configuración. Proyecto 7-Zip Anexo II: Datos para realizar conexión. Acceso al email: GMX.es Username: egc1314@gmx.es Password: egc20132014 Sourceforge: Sourceforge.es Username: egc-20132014 Password: egc20132014 Jenkins http://localhost:8080 Username: egc-20132014 Password: egc20132014 25 Evolución y Gestión de la Configuración. Proyecto 7-Zip Anexo III: Guía de creación y aceptación de un ticket. 1-Resumen (Página que aparece automáticamente al buscar el proyecto). 2-Vista de los tickets existentes. 26 Evolución y Gestión de la Configuración. Proyecto 7-Zip 3-Vista de creación de un nuevo ticket. 4-Una vez rellenado el formulario, pulsamos el botón “Save” y el ticket quedará registrado. 27 Evolución y Gestión de la Configuración. Proyecto 7-Zip 5-Vista detallada del ticket, incluyendo comentarios y la posibilidad de crear uno. 6-Una vez añadidos los datos del formulario, pulsamos en “Post” y el mensaje queda registrado. 28 Evolución y Gestión de la Configuración. Proyecto 7-Zip 7-De nuevo, la vista detallada del ticket (donde vemos el mensaje posteado). 8-Un desarrollador puede marcar un ticket como aceptado. 29 Evolución y Gestión de la Configuración. Proyecto 7-Zip 9-Vista general de los tickets donde aparece el ticket aceptado. 30 Evolución y Gestión de la Configuración. Proyecto 7-Zip ANEXO IV Una vez compilado el código, utilizando la herramienta Sourceforge procederemos a añadir un entregable. Lo primero que haremos será crear una carpeta con el número de versión. Para ello nos dirigimos al apartado “Files” del proyecto en Sourceforge y creamos la carpeta con “Add Folder” Seguidamente entramos en la carpeta y con “Add File”, seleccionamos los archivos a subir. 31 Evolución y Gestión de la Configuración. Proyecto 7-Zip ANEXO V Siguiendo el modelo OVM se ha esquematizado cómo podría el desarrollador modularizar parte de su código. Se ejemplifican tres “Variation Points”, con algunas variantes posibles. Se toma como opciones el formato de archivo con el que podría tratar, el tipo de archivo y el tipo de compresión con el que podría trabajar. Distinguimos entre varios formatos ampliamente conocidos, algunos tipos de archivos dependiendo de si éstos son únicos o están particionados, así como si la descompresión necesita de clave o está automatizada. 32 Evolución y Gestión de la Configuración. Proyecto 7-Zip ANEXO VI Se han seguido los siguientes pasos para la configuración de Jenkins: 1234- Instalación de Jenkins desde la página web http://jenkins-ci.org/ Activación de la seguridad y creación de un usuario Instalación del plugin de GIT (Jenkins GIT plugin 2.0) Creación de una tarea, correspondiente al proyecto. Como podremos comprobar en la siguiente imagen, se configura la URL del repositorio GIT correspondiente. 33 Evolución y Gestión de la Configuración. 5- Proyecto 7-Zip Configuración de las pruebas Las pruebas se realizarán una vez al mes y la prueba consistirá en compilar el proyecto mediante comandos de Windows. Las pruebas son totalmente personalizables. El creador de la aplicación podría cambiarlas por otras que tuviesen un mayor peso en la integración o que estén relacionadas con partes concretas del proyecto. 34