La materia tiene por objetivo que l@s estudiantes comprendan las problemáticas de calidad transversales a todo desarrollo de software como: versionado, escenarios complejos de versionado como múltiples líneas de desarrollo, testeo continuo, automatización, trazabilidad, etc. Además qie incorporen herramientas y prácticas continuas para atacar dichos aspectos.
Sea capaces de atacar dichas problemáticas tanto en proyectos de gran escala como al desarrollo de pequeños programas/aplicaciones, entre otras cosas

Modos de Cursada: Cuatrimestral Presencial

Horas Semanales: 8 horas

Demanda de tiempo en casa semanal: 8 horas

Sitio web:

  • Aún no disponible

Programa de la materia:

Contenidos Mínimos:

  • Validación y testing como un proceso continua que se lleva a cabo durante todo el ciclo de vida del software, desde que se comienza a programar hasta que, luego de ser implementado y utilizado, el sistema se vuelve obsoleto.
  • Test de integración. Problemática específica para la automatización de test de integración, persistencia e interfaz de usuario.
  • Técnicas para diagnostico de problemas: stacktraces, breakpoints, watchpoints. Manejo de excepciones. Relación con unit testing.
  • Reingeniería de software. Técnicas de refactorización sobre un proyecto funcionando.
    Migraciones y actualizaciones evolutivas a los modelos de datos. Compatibilidad hacia atrás.
    Herramientas metodológicas y conceptuales para trabajo en grupo. División de tareas planeando reunión de los resultados. Aprovechamiento de los conceptos de programación en objetos, por ejemplo: interfaces como forma de coordinar la tarea de distintas personas o grupos, mock objetos para simular los objetos de otros grupos, etc.
  • Versionado y compartición de programas fuente. Repositorios de código centralizados y distribuidos. Técnicas para la modificación de una misma base de código por múltiples desarrolladores en forma concurrente. Resolución de conflictos.
  • Versionado y compartición de bibliotecas y ejecutables. Administración de entregables y dependencias. Repositorios de bibliotecas.
  • Integración continua. Automatización de procesos en desarrollos de envergadura, como integración, compilación, verificación, versionado, despliegue, entre otros.
  • Control de cambios. Trazabilidad de requerimientos, errores y cambios de funcionalidad.
  • Herramientas para la administración integral de cambios y correcciones.
  • Aplicación e integración de las técnicas, practicas y herramientas aprendidas en un proyecto mediano de desarrollo de software.