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:
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.