vonbrand10infonor thesis

Upload: tavo-sanchez

Post on 18-Oct-2015

9 views

Category:

Documents


0 download

TRANSCRIPT

  • Desarrollo de Memorias y Tesis

    Usando Herramientas Colaborativas

    Writing Theses Using Collaborative Tools

    Horst H. von Brand Mauricio A. Araya Jorge Avarias

    Resumen

    Se describen experiencias exitosas en la gua de tesis y memorias (y la elaboracion de publicacionesconcomitantes) usando herramientas colaborativas pensadas para desarrollo de software. Aprovechamos bienlas herramientas de Unix (en nuestro caso, en realidad provistas por diversas distribuciones de Linux queestan orientadas a desarrollo de software (principalmente manipulacion de codigo fuente como archivos detexto).

    Nuestro flujo de trabajo ha significado agilizar varios de los procesos de desarrollo de memorias y tesis,y ha permitido mejorar el reuso de los resultados en forma de documentos adicionales (reportes tecnicos yotras publicaciones).

    Palabras clave: Memoria/tesis, desarrollo colaborativo, LATEX, Linux, git

    Abstract

    Successful experiences in writing theses (both undergraduate and graduate) and the resulting formalpublications) using collaborative tools for software development. We make good use of Unix (in our case,in reality tools provided by Linux distributions) tools which were really created for software development(primarily source code manipulation tools which work on text).

    Our workflow has streamlined several processes in thesis writing, and has simplified the reuse of theresults in the form of additional documents (technical reports and other publications).

    Keywords: Theses, collaborative development, LATEX, Linux, git

    1 Introduccion

    Hace tiempo se usan herramientas colaborativas pa-ra el desarrollo de software. En particular, proyec-tos de desarrollo de codigo abierto seran impensa-bles sin las actuales herramientas de trabajo colabo-rativo. Adaptamos la forma de trabajar de proyec-tos de codigo abierto (y algunas de las herramientasaplicadas en ellas) a la tarea de coordinar el desa-rrollo de memorias y tesis, con el memorista o te-sista haciendo de cabeza del desarrollo y profesoresreferente y correferente (y posiblemente otros esti-diantes interesados en el tema por estar trabajandoen temas afines) siguiendo el desarrollo y aportandosugerencias. La misma forma de trabajo se ha em-pleado con exito en otras aplicaciones en el ambito

    academico, como edicion de apuntes y desarrollo deevaluaciones de ramos (y sus soluciones y pautas decorreccion).

    2 Herramientas empleadas

    Las memorias y tesis dirigidas por el primer au-tor comunmente se escriben usando LATEX 2 [9].Esto significa que son archivos de texto que pue-den manipularse con las herramientas clasicas pa-ra desarrollo de software. En particular, es comodomanejar el codigo fuente de un documento usandoun editor de texto comun y compartiendo estos ar-chivos mediante un sistema de control de versiones.Las herramientas del sistema Unix (en este caso,corriendo en alguna distribucion de Linux) estan

    Departamento de Informatica. Universidad Tecnica Federico Santa Mara. Casilla 110-V, Valparaso, Chile.{vonbrand,maray,javarias}@inf.utfsm.cl

  • orientadas a trabajar con archivos de texto, con loque esto funciona bien.

    Aprovechamos ademas las bondades deLATEX 2. Particularmente importante es la posi-bilidad de compartir bases de datos bibliograficasentre multiples documentos, con lo que basta agre-gar nuevas entradas a una base de datos comunpara que cualquier documento pueda usarlas. Estopermite que se validen cuidadosamente las nue-vas entradas, asegurando que las referencias estencompletas. Ademas, con BibTEX es posible agregarinformacion adicional a la entrada de la referenciabibliografica, como por ejemplo la URL en la quese puede encontrar el artculo, o un breve resumen.Estos agregados locales no aparecen en las citasbibliograficas, pero es posible escribir herramien-tas sencillas (formatos de bibliografa, en realidad)que los incluyan. Otra ventaja importante es quepuede variarse el estilo de un documento simple-mente cambiando algunas definiciones, como porejemplo ir del formato comunmente usado paramemorias aca en Chile (texto en una columna, adoble espacio, en hoja oficio) al que usa IEEE parasus publicaciones (texto a dos columnas, espaciosimple, hoja carta). LATEX 2 ofrece tambien la po-sibilidad de escribir un documento extenso (comouna memoria o una tesis) en archivos separados(por ejemplo, uno por captulo) que se integran enel momento de procesar el documento. Otra ventajaimportante es que existen paquetes para LATEX 2que permiten crear presentaciones en PDF, con loque tambien es posible reusar material directamen-te con ellas. Esta flexibilidad de LATEX es basica ennuestro trabajo.

    Otra herramienta de interes especial (dada lamas bien atroz ortografa de que gozan los ingenie-ros) es aspell(1)1, un programa flexible de verifi-cacion ortografica. Este programa permite al usua-rio crear su propia base de datos de palabras, lo quees util para agregar terminos de la jerga y abrevia-turas comunes.

    Las herramientas estandar de manipulacion detexto bajo Unix (alguna distribucion de Linux, ennuestro caso), como son grep(1), sed(1), sort(1),e incluso lenguajes completos con facilidades paramanipulacion de strings, como lo son Perl [20] oPython [12] pueden aprovecharse para manipularlos fuentes de los documentos de diversas mane-ras. Fundamental es el uso de make(1), que per-mite automatizar diversas tareas de procesamien-to, ofreciendo un simple comando que permite ac-tualizar archivos con dependencias complejas, co-mo lo es una tesis conformada por varios captulosy una bibliografa, y que incluye material adicionalcomo figuras o tablas, que a su vez deben generar-

    se partiendo de otros archivos. Las herramientas dedesarrollo de sistemas Linux [7] son una gran ayu-da, junto con programas orientados a procesamien-to de texto y manipulacion grafica. En este senti-do, hemos usado dia(1) (para crear diagramas),xfig(1) (graficos en general), gnuplot(1) (gra-ficar funciones y datos), asymptote(1) (un com-pleto lenguaje para describir graficos) y ocasio-nalmente inkscape(1) (imagenes complejas). Losdiversos formatos manejados nativamente por es-tos programas deben traducirse a algun formatocomun que pueda incorporarse en el documentos.Para ello se pueden usar facilidades de exporta-cion de las herramientas o algo como la navajasuiza de formatos de imagen, ImageMagick(1) oGraphicsMagick(1).

    Una pieza clave resulto ser git(1) [5, 13, 15],un sistema de control de versiones distribuido. Unsistema de control de versiones, como su nombre loindica, permite administrar distintas versiones deun proyecto. En el ultimo lustro se han hecho po-pulares los sistemas distribuidos, en los cuales nohay un repositorio central del proyecto con el quedeben interactuar los participantes, sino que cadacual tiene un repositorio completo independiente.En vez de sincronizarse a traves del repositorio cen-tral, se comparten modificaciones al proyecto queel receptor integra en su version local. Hay diver-sos medios para compartir modificaciones, ya seatomandolas directamente de un repositorio remoto,enviandolas para ser integradas alla, o a traves deenviar parches por correo. Obviamente, un sistemadistribuido puede manejarse como si fuera centra-lizado, va designar un repositorio como la versionoficial con la cual todos debieran sincronizarse. Laventaja de estos sistemas en todo caso esta en lasposibilidades adicionales que ofrece el trabajo des-centralizado. En particular, un desarrollador puedetrabajar en forma privada sin publicar sus expe-rimentos, y publicar sus resultados recien cuandotengan exito (y nadie se enterara si no lo tienen).Es sencillo manejar versiones propias en las cua-les se integran casi automaticamente los cambiosque se reciban de otros participantes. Otra de lasventajas es la posibilidad de trabajar sin estar co-nectado a la red, teniendo siempre toda la historiadel proyecto a la mano. Al no requerir instalacionespecial de un servidor y un area donde se almace-nan proyectos, estos sistemas son particularmenteutiles para manejar proyectos personales, no pensa-dos para ser compartidos con los demas. Bajo gitun repositorio de un proyecto es simplemente un di-rectorio, que puede manipularse con las herramien-tas tpicas (respaldar, copiar, e incluso traspasar aotros usuarios). Un sistema distribuido como git,

    1Usamos la convencion de mencionar comandos de Unix dando su nombre y la seccion del manual que lo documenta.

  • al hacer que las operaciones basicas de integrar mo-dificaciones y crear y destruir ramas de desarrollo,de enviar y recibir cambios sean extremadamenteeficientes, hace natural que el desarrollo se lleve acabo en pequenos pasos cada uno de las cuales sig-nifica un cambio logico. Esto da al receptor la po-sibilidad de elegir los cambios a integrar, haciendomuy flexible el desarrollo.

    3 Flujo de trabajo

    Nuestro flujo de trabajo actual considera las con-venciones y tareas descritas mas abajo. Las princi-pales herramientas empleadas son las indicadas encada uno de los puntos.

    3.1 Tesista

    El tesista es el desarrollador principal. Administrael repositorio maestro del proyecto, e integra lasmodificaciones sugeridas por los demas. Este repo-sitorio esta disponible solo para los participantes(el tesista, profesor gua, correferente; posiblemen-te otros tesistas que trabajen en temas afines), noes publico.

    En este repositorio se manejan ademas docu-mentos adicionales, como la presentacion inicial deltema. En el caso de las memorias, los reglamentosinternos de la UTFSM exigen que se presente undocumento con el tema, los objetivos, y un breveestudio bibliografico. Para el caso de tesis, ademasde lo anterior se debe defender el tema ante la Co-mision de Postgrado del Departamento. En el desa-rrollo de todos estos documentos participan tam-bien (mas que nada revisando los textos) los demasparticipantes.

    3.2 Profesores gua y correferentes

    Los profesores participantes en la comision de latesis tienen acceso directo al repositorio con el tex-to en desarrollo, desde el cual pueden sincronizarsu copia local a gusto. De esta forma, pueden se-guir el desarrollo del texto, sin tener que esperarun borrador formal para aportar comentarios y co-rrecciones. El tener acceso directamente al textoen formato electronico permite procesarlo con di-versas herramientas. Las modificaciones propuestaspueden enviarse por correo electronico al tesista,quien (usando las herramientas propias del sistemade control de versiones) decide si las integra, even-tualmente con modificaciones propias. Ha resultadoutil en esta tarea la posibilidad de ver las modifi-caciones, con lo cual la correccion en cada ronda sepuede concentrar en los cambios.

    3.3 Encargado de bibliografa comun

    Una de las innovaciones ha sido el confeccionar unabase de datos bibliografica comun, a ser usada porla variedad de documentos que se producen comoparte del proyecto bajo el cual trabajamos. Aun sino hubiera un proyecto marco comun, mucha de labibliografa basica (como referencias a los estanda-res de lenguajes de programacion, textos estandaren diferentes areas y textos gua de ramos de la ca-rrera) seran de uso razonablemente amplio en lostrabajos finales. Contar con referencias bibliografi-cas completas y validadas de los anteriores es deayuda a los estudiantes. Como esta es una tareapermanente, que va mas alla del desarrollo de unproyecto personal, esto es manejado por un profe-sor a cargo del proyecto. Tambien esto se mane-ja como un repositorio git. Este repositorio, al nocontener datos confidenciales, perfectamente puedeser publico. Aca se integran las nuevas referenciasque se vayan agregando, pero tambien se aceptancorrecciones a las referencias existentes (mas quenada completar referencias incompletas, o substi-tuir o complementar referencias informales, comolas son reportes tecnicos, con documentos publica-dos formalmente).

    3.4 Otros participantes

    Una memoria o tesis debiera formar parte de un tra-bajo mayor, con lo que habran otros interesados enel tema. Es muy deseable que quien continue unamemoria se involucre tempranamente en su desa-rrollo. En muchos casos aportaran a memorias otesis trabajos de ramos de taller. Tener acceso altexto (y posiblemente a desarrollos concomitantes)durante su desarrollo, no solo una vez terminado eltrabajo, es importante en estos usos.

    Tambien resulta interesante que el trabajo he-cho quede disponible en formato electronico util pa-ra aprovechar partes y piezas en trabajos futuros.En particular, sirve para reutilizar descripciones yproblemas y adaptar textos comunes como descrip-ciones generales de los temas o directamente pa-ra hacer referencia a los ultimos resultados aun endesarrollo. Se comparten figuras, y tecnicas paralograr ciertos efectos con las herramientas que usa-mos. Tambien se ha usado para destilar memoriasdando lugar a publicaciones (que por fuerza sonmucho menos extensas).

    Estas tecnicas, en mayor o menor grado, seusaron en el desarrollo de varias memorias y te-sis [1, 3, 6, 10, 17]. Donde estas dieron lugar apublicaciones [2, 16, 19, 18] se usaron los mismosrepositorios de las tesis (y partes del texto de lasmismas) para componer los trabajos del caso. Haymemorias y tesis adicionales en progreso, as como

  • publicaciones enviadas para revision que no se ci-taran aca.

    4 Otros usos

    De forma similar a lo descrito se han manejadoapuntes de clases, con el profesor administrando elrepositorio central (en este caso es publico), e in-tegrando sugerencias de parte de los estudiantes yayudantes del ramo. Versiones del apunte se publi-can periodicamente en el sitio del ramo. Muchos delos aportes resultan ser comentarios en clase o enel foro del ramo consultando sobre inconsistencias.Algunos estudiantes han ledo los apuntes y hanhecho crticas detalladas sobre el texto.

    Hasta ahora esta tecnica se ha usado unicamen-te en ramos iniciales de pregrado (segundo ano),con lo que no cabe esperar aportes del curso di-rectamente en LATEX, y aun menos uso del sistemade control de versiones. Es intencion del primer au-tor extender esta forma de trabajo a otros ramos,e incluir a otros colegas en el esfuerzo.

    5 Conclusiones

    Las herramientas asociadas tradicionalmente aldesarrollo de software pueden usarse con muchoprovecho en otras areas. Esta forma de trabajar hademostrado ser flexible, y aplicable al desarrollo deuna variedad de textos.

    5.1 Tareas en curso o pendientes

    El trabajo descrito ha agudizado ciertas necesida-des en cuya solucion estamos trabajando. En par-ticular, interesan:

    Definir formatos estandar para memorias ytesis, ajustados a las normas internas de laUTFSM.

    Como parte de la ventaja de LATEX es que elmismo texto puede reusarse en diversos for-matos, sera util construir textos ejemplo. Enparticular, hay formatos que permiten usarel mismo fuente para textos formales (tesiso memoria, artculo, reporte) como para pre-sentaciones.

    Sera util condensar las experiencias en formade tutoriales o guas para los participantes.Esto requiere eso s complementar lo hechocon profesores adicionales.

    Contamos con una seleccion de textos y otrasreferencias para las herramientas usadas. Estadebiera organizarse y completarse. pensandoespecficamente en esta aplicacion.

    En la UTFSM hay formatos bien definidos paramemorias y tesis. Tradicionalmente cada quien haimplementado (con mayor o menor exito) el forma-to en su trabajo. Sera deseable contar con un estiloque maneje automaticamente las diversas particu-laridades del formato exigido (margenes, formatode pagina, pagina de ttulo). Parte de esto se halogrado, en que esto es de lo que se ha ido copiandoy adaptando entre los estudiantes. Pero sera mejorhacer esto en forma formal.

    De la misma forma, con el fin de mejorar el reusode los textos, es deseable contar con estilos para re-portes tecnicos del Departamento de Informatica.Para reuso en publicaciones formales, como los for-matos solicitados son muy variados, hay que adherira lo que la publicacion sugiera. Por suerte la ma-yora de las conferencias y revistas tienen formatospredefinidos.

    Un area de interes particular es el desarrollode tareas y demas evaluaciones de ramos, mante-niendolas bajo control de versiones junto con sussoluciones y pautas de correccion. Esto introduceproblemas nuevos, particularmente en lo que res-pecta a la seguridad de los repositorios. La solu-cion actual es que solo el profesor mantiene un re-positorio personal con las evaluaciones, y estas sediscuten solo en reuniones cara a cara. Usando co-rreo electronico cifrado [8, 11], acceso seguro a unservidor central [4, 14] y control de acceso en elrepositorio la mayor parte de estos problemas pue-den resolverse sin grandes dificultades tecnicas. Sinembargo, sera interesante poder integrar las eva-luaciones y sus soluciones (una vez dada la pruebao transcurridos los plazos maximos de entrega paratareas y similares) en un repositorio maestro de laasignatura. Aun no esta completamente claro comohacerlo.

    Agradecimientos

    Varias de las memorias y tesis que dieron lugar alpresente trabajo fueron desarrolladas en el ambi-to del proyecto ALMA-CONICYT 31060008, cuyofinanciamiento fue crucial en este trabajo. Agrade-cemos ademas a quienes ayudaron a refinar nuestroactual flujo de trabajo desarrollando memorias ytesis con el primer autor, dictando ramos en con-junto, o participando en diversos proyectos comoparte de CSRG de la UTFSM, en particular quie-nes desarrollan proyectos como parte de PIE>A.

    Parte de este trabajo fueron apoyadas porALMA-CONICYT 31060008 y 31080031, y el Cen-tro Cientfico-Tecnologico de Valparaso medianteel proyecto FB0821. Agradecemos el apoyo del De-partamento de Informatica de UTFSM y la Escuelade Ingeniera Informatica de PUCV donde se han

  • llevado a cabo las memorias y tesis que dieron basea este trabajo.

    Referencias

    [1] Mauricio A. Araya. Verifying real-time perio-dic properties on the ALMA Common Softwa-re time system. Masters thesis, Departamentode Informatica, Universidad Tecnica FedericoSanta Mara, May 2008.

    [2] Mauricio A. Araya, Rodrigo J. Tobar, Jorge A.Avarias, and Horst H. von Brand. Towards adistributed control framework with real-timesupport. In Gabriela P. Henning, Maria Ro-sa Galli, and Silvio Gonnet, editors, XXXVIConferencia Latinoamericana de InformaticaCDROM. CLEI, 2008.

    [3] Jorge Alejandro Avarias Alfaro. Data Distri-bution Service as an alternative to the COR-BA Notification Service for ALMA CommonSoftware. Memoria para optar al Ttulo de In-geniero Civil Informatico, Universidad TecnicaFederico Santa Mara, December 2008.

    [4] Daniel J. Barret, Richard E. Silverman, andRobert G. Byrnes. SSH, the Secure Shell: TheDefinitive Guide. OReilly Media, 2005.

    [5] Scott Chacon. Pro Git. Apress, 2009.

    [6] Chihau Andres Chau Chan. Analisis de la pla-taforma Android de Google para el desarrollode aplicaciones moviles. Memoria para optaral Ttulo de Ingeniero Civil Informatico, Pon-tificia Universidad Catolica de Valparaso, De-cember 2009.

    [7] Matthew B. Doar. Practical Development En-vironments. OReilly Media, 2005.

    [8] Simson Garfinkel. PGP: Pretty Good Privacy.OReilly Media, 1994.

    [9] Leslie Lamport. LATEX: A Document Prepara-tion System. Addison-Wesley, second edition,1994.

    [10] Daniela Andrea Leon Padilla. Estudio delcomportamiento de mecanismos de control decongestion TCP sobre redes inalambricas. Me-moria para optar al Ttulo de Ingeniero Ci-vil Informatico, Universidad Tecnica FedericoSanta Mara, November 2008.

    [11] Michael W. Lucas. PGP & GPG: Email for thePractical Paranoid. No Starch Press, 2006.

    [12] Mark Lutz. Programming Python. OReilly,third edition, 2006.

    [13] Ben Lynn. Git Magic. CreateSpace, 2010.

    [14] Michael Stahnke. Pro OpenSSH. Apress, 2005.

    [15] Travis Swicegood. Pragmatic Version ControlUsing git. Pragmatic Bookshelf, 2008.

    [16] Rodrigo Tobar, Joao Lopez, Mauricio A. Ara-ya, and Horst H. von Brand. CSAT deploy-ment and final status. In Encuentro Chilenode Computacion, page 40, November 2008.

    [17] Rodrigo J. Tobar. A real-time time service forthe ALMA Common Software. Masters the-sis, Departamento de Informatica, UniversidadTecnica Federico Santa Mara, October 2009.

    [18] Rodrigo J. Tobar, Mauricio A. Araya, HorstH. von Brand, and Thomas Juerges. Ad-ding support to ACS for Real-Time opera-tions through the usage of a Posix-compliantRTOS. In Astronomical Data Analysis Soft-ware & Systems (ADASS), October 2009.

    [19] Rodrigo J. Tobar, Horst H. von Brand, Mauri-cio A. Araya, and Joao S. Lopez. An amateurtelescope control system: Towards a generic te-lescope control model. In Alan Bridger andNicole M. Radziwill, editors, Advanced Soft-ware and Control for Astronomy II, number 1.SPIE, 2008.

    [20] Larry Wall, Tom Christiansen, and Jon Or-want. Programming Perl. OReilly, third edi-tion, 2000.

    IntroduccinHerramientas empleadasFlujo de trabajoTesistaProfesores gua y correferentesEncargado de bibliografa comnOtros participantes

    Otros usosConclusionesTareas en curso o pendientes