La materia tiene por objetivo que l@s estudiantes entiendan que para llevar a cabo un proyecto de desarrollo de software hace falta llevar a cabo varias actividades además de programar, y tengan una noción de cuáles son estas actividades y las técnicas asociadas a cada una. Además que conozcan el concepto de metodología como definición de las actividades que involucra el desarrollo de software, su articulación y los roles que ocupan las personas que participan, entre otras cosas
Modos de Cursada: Cuatrimestral Presencial
Horas Semanales: 6 horas
Demanda de tiempo en casa semanal: 6 horas
Sitio web:
Programa de la materia:
Contenidos Mínimos:
- Metodologías ágiles: actividades, productos, formas de articulación, roles. Ejemplos: Scrum.
- Metodologías estructuradas: actividades, productos, formas de articulación, roles. Ejemplos: UP.
- Debate sobre similitudes y diferencias entre metodologías ágiles y estructuradas.
- Concepto de ciclo de vida, relación con distintas metodologías.
- Métricas: que son, que miden, para que sirven, cuando sirven. Ejemplos de métricas asociadas a desarrollo de software en general y actividades de programación en particular.
- Estimación de esfuerzos: relevancia de la experiencia previa para estimar, heurísticas utilizadas.
- Pertinencia de estimaciones relativas. Técnicas de estimación asociadas a metodologías agiles.
- Conceptos de requerimiento funcional y no funcional, pertinencia de definiciones comprensibles y adecuadas.
- Comprensión de requerimientos funcionales, detección de inconsistencias. Implementación en código de requerimientos funcionales, verificación de que el código construido cumple los requerimientos.
- Problemas asociados a requerimientos no funcionales: pertinencia de definiciones medibles, nociones sobre técnicas de verificación, posibilidad de garantizarlos por construcción.
- Nociones sobre distintos tipos de testing: de unidad, funcional, de sistema, de stress, de carga.
- Cualidades deseadas y técnicas para lograrlas: regresión, automatización, independencia. Ejemplos concretos de test de unidad y de test funcional. Noción de coverage.
- Prácticas asociadas a extreme programming: peer programming, relevancia de tests automáticos, integración continua, interacción de las actividades de coding y refactor.
- Noción de TDD.
- Nociones de riesgo y plan de contingencia.
- Ingeniería de Software de Sistema de Tiempo Real