Logo DLSI

Tema 0 - Presentación (DCA)

Curso 2024-2025

Desarrollo Colaborativo de Aplicaciones

Objetivos

  • Aprender a trabajar en grupo, adquirir habilidades sociales, saber identificar roles dentro de un grupo de trabajo y adaptarse a ellos, etc…​

  • Aprender a identificar y corregir los fallos de una aplicación así como recibir informes de fallos desde usuarios de la misma.

  • Aprender a trabajar en paralelo con ramas de desarrollo y de corrección de fallos.

  • Aprender a optimizar los tiempos de compilación de una aplicación.

  • Aprender a internacionalizar una aplicación de manera eficiente.

  • Aprender a “interrogar” (introspección) al sistema donde se compilará una aplicación para adaptarla a él, así como crear instaladores de aplicaciones para hacer más sencilla su distribución y uso por parte de usuarios noveles.

  • Aprender a crear y usar tests.

  • Conocer y saber usar el concepto de diseño por contrato.

  • Aprender a usar sistemas de control de versiones para aplicarlos en el proceso de desarrollo del software creado, así como aprender a decidir cual de ellos puede ser el más apropiado en un momento determinado para un desarrollo concreto.

Temario

  • Tema-I: Estructura de un equipo de desarrollo - 1 semana

  • Tema-II: Despliegue / Instalación - 1 semana

    • Versiones de desarrollo vs estables, Ramas de desarrollo / corrección de fallos, Versiones debug / release

  • Tema-III: Bugtracking - 1 semana

    • Bugzilla, Trac, tickets, issues

  • Tema-IV: Sistemas de paquetes - 1 semana

    • tar, tgz, deb, rpm

  • Tema-V: Compilación de grandes proyectos - 2 semanas

    • make , distcc, ccache

  • Tema-VI: Configuración y adaptación automática de proyectos - 2 semanas

    • Autotools, CMake, Meson

  • Tema-VII: Generación y paso de tests - 2 semanas

    • junit/cppunit, boost::test, GLib.Test

  • Tema-VIII: Diseño por contrato - 1 semana

    • Precondiciones, postcondiciones, invariantes

  • Tema-IX: Internacionalización (I18N) - 1 semana

    • Gettext, ficheros .po y traducciones

  • Tema-X: Sistemas de Control de Versiones de última generación - 3 semanas

    • Centralizados vs. distribuidos, Operaciones basicas, git, mercurial, darcs

Primer período de evaluación (I)

  • La asignatura consta de dos bloques: Teoría y Prácticas. Cada uno de ellos tiene un peso del 50% en la nota final.

  • Para promediar teoría y prácticas es necesario obtener como mínimo un 4 en ambos bloques.

  • El bloque de prácticas consta de evaluación contínua (9 prácticas) con un peso del 50% sobre la nota final. Este bloque no es recuperable. Todas las prácticas se entregarán en pracdlsi en las fechas allí indicadas.

  • El bloque de teoría consta de un único examen final tipo test. Este bloque sí es recuperable.

  • La nota final es la suma de la nota del bloque de prácticas más la del bloque de teoría.

  • Para superar la asignatura, la nota final debe ser igual o superior a 5.

Segundo período de evaluación (I)

  • Aplicable sólo cuando se haya suspendido la asignatura en el primer período de evaluación.

  • En esta convocatoria deberán presentarse al examen final de teoría todos aquellos alumnos que no hayan llegado a una nota final mínima de 5 en la convocatoria anterior.

  • El examen de teoría es un examen tipo test.

  • En esta convocatoria la nota del bloque de prácticas es la de la convocatoria anterior.

  • Para promediar teoría y prácticas solo es necesario obtener como mínimo un 4 en el bloque de teoría.

  • La nota final es la suma de la nota del bloque de prácticas más la del bloque de teoría.

  • Para superar la asignatura, la nota final debe ser igual o superiora 5.

Sistema de evaluación que se aplicará en la convocatoria de diciembre

  • Un test que comprenderá la materia explicada en toda la asignatura. Su peso de puntuacion será del 50%.

  • Un test que comprenderá los conocimientos adquiridos en las prácticas con ordenador hechas durante toda la asignatura. Su peso de puntuacion será del 50%.

  • Para promediar teoría y prácticas es necesario obtener como mínimo un 4 en ambos bloques.

Recomendaciones bibliográficas

  1. Managing the Testing Process: Practical Tools and Techniques for Managing Hardware and Software Testing. Rex Black. Ed. Wiley. ISBN-10: 0470404159. ISBN-13: 978-0470404157. Edition: 3

  2. Implementing Automated Software Testing: How to Save Time and Lower Costs While Raising Quality Elfriede Dustin, Thom Garrett, Bernie Gauf. Ed. Addison-Wesley Professional. ISBN-10: 0321580516. ISBN-13: 978-032158051. Edition: 1

  3. Software Project Management For Dummies. Teresa Luckey, Joseph Phillips. Ed. For Dummies. ISBN-10: 0471749346. ISBN-13: 978-0471749349, 1 edition

  4. Guía Rápida de Bugzilla (Spanish Edition). Adrián Ruffinatti. Ed. Amazon Digital Services, Inc. ASIN: B0077MBO1S.

  5. Mastering Cmake. Ken Martin, Bill Hoffman. Ed. Kitware, Inc.. 5th edition. ISBN-10: 193093422X. ISBN-13: 978-1930934221.

  6. Autotools: A Practioner’s Guide to GNU Autoconf, Automake, and Libtool. John Calcote. Ed. No Starch Press; 1 edition. ISBN-10: 1593272065. ISBN-13: 978-1593272067.

  7. Managing Projects with GNU Make (Nutshell Handbooks). Robert Mecklenburg. Ed. O’Reilly Media; Third Edition edition. ISBN-10: 0596006101. ISBN-13: 978-0596006105.

  8. The Boost C++ Libraries. Boris Schäling. Ed. XML Press. ISBN-10: 0982219199. ISBN-13: 978-0982219195.

  9. GNOME 3 Application Development Beginner’s Guide. Mohammad Anwari. Ed. Packt Publishing. ISBN-10: 1849519420. ISBN-13: 978-1849519427.

  10. Design by Contract, by Example. Richard Mitchell, Jim McKim. Ed. Addison-Wesley Publishing Company; 1st edition. ISBN-10: 0201634600. ISBN-13: 978-0201634600.

  11. Pro Git (Expert’s Voice in Software Development). Scott Chacon. Ed. Apress; 1 edition. ISBN-10: 1430218339. ISBN-13: 978-1430218333.

  12. Mercurial: The Definitive Guide. Bryan O’Sullivan. Ed. O’Reilly Media. ISBN-10: 0596800673. ASIN: B00CVE1FNO.

  13. Meson: The Meson Manual. Jussi Pakkanen. Ed. Diffraction Labs. ISBN: 978-952-94-2892-2

Enlaces de interés

  1. https://code.google.com/p/distcc/

  2. http://en.wikipedia.org/wiki/Distcc

  3. http://ccache.samba.org/

  4. http://es.wikipedia.org/wiki/Trac

  5. http://www.bugzilla.org/

  6. http://neugierig.org/software/chromium/notes/2011/02/ninja.html

  7. http://wiki.debian.org/HowToPackageForDebian

  8. http://www.debian.org/doc/manuals/maint-guide/build.en.html

  9. http://fedoraproject.org/wiki/How_to_create_an_RPM_package/es

  10. http://es.wikipedia.org/wiki/Gettext

  11. http://www.gnu.org/software/gettext/

  12. http://git-scm.com/

  13. http://git-scm.com/book

  14. http://www.monotone.ca/

  15. http://mercurial.selenic.com/

  16. http://en.wikipedia.org/wiki/Mercurial

  17. http://en.wikipedia.org/wiki/Darcs

  18. http://darcs.net/

  19. http://www-cs-students.stanford.edu/~blynn/gitmagic/

  20. http://gitready.com/

  21. http://www.boost.org/doc/libs/1_53_0/libs/test/doc/html/index.html

  22. http://sourceforge.net/apps/mediawiki/cppunit/index.php?title=Main_Page

  23. http://es.wikipedia.org/wiki/JUnit

  24. http://junit.org/

  25. https://developer.gnome.org/glib/2.36/glib-Testing.html

  26. http://www.gnu.org/software/make/manual/make.html

  27. http://www.gnu.org/software/autoconf/manual/autoconf.html

  28. http://sources.redhat.com/automake/automake.html

  29. http://www.cmake.org/

  30. http://www.cmake.org/cmake/help/cmake_tutorial.html

  31. https://mesonbuild.com/

  32. https://mesonbuild.com/Tutorial.html

  33. http://en.wikipedia.org/wiki/Design_by_contract

  34. http://dlang.org/dbc.html

  35. https://live.gnome.org/Vala/Tutorial#Assertions_and_Contract_Programming

  36. http://www.informit.com/articles/article.aspx?p=23953

  37. http://archive.cs.st-andrews.ac.uk/STSE-Handbook/SoftwareDevAndDeploy/

  38. http://www.ambysoft.com/essays/deploymentTips.html

  39. http://en.wikipedia.org/wiki/Software_deployment

Aclaraciones

En ningún caso estas transparencias son la bibliografía de la asignatura.