Title: Programacin Extrema
1Programación Extrema
2Contenido
- Motivación
- Qué es Programación Extrema?
- La filosofÃa detrás de la Programación Extrema
- El proceso XP
- Resumen de prácticas de la metodologÃa
- Conclusiones
- Referencias
3Motivación
- IngenierÃa de software a escala menor
- Modelos estudiados difÃciles de aplicar a la
realidad - Requisitos poco claros
- Requisitos poco estables
- Elevado costo de introducir cambios durante el
desarrollo - Elevado riesgo en contratos de desarrollo de
software
4Qué es Programación Extrema o XP?
- MetodologÃa liviana de desarrollo de software
- Conjunto de practicas y reglas empleadas para
desarrollar software - Basada en diferentes ideas acerca de cómo
enfrentar ambientes muy cambiantes - Originada en el proyecto C3 para Chrysler
- En vez de planificar, analizar y diseñar para el
futuro distante, hacer todo esto un poco cada
vez, a través de todo el proceso de desarrollo
5FilosofÃa detrás de XP
6Simplicidad
- Haz la cosa mas simple posible que funcione
- Mantén el sistema en la condición mas simple
posible
7Comunicación
- El cliente es parte del equipo de desarrollo
- Comunicación entre gestión y desarrollo
- Comunicación entre desarrolladores
8Testeo
- Velocidad, pero además calidad
- Testeo continuo a través de todo el proceso
- Testeo como herramienta de especificación y
desarrollo - Testeo como garantÃa de integridad del código
frente a cambios
9Agresividad
- Reacción frente a los cambios
10El proceso XP
11Un proyecto XP
Escenarios de testeo
Historias de usuario
Historias nuevas Velocidad del proyecto
bugs
requerimientos
Plan de entregas
Versión mas reciente
Aprobación del cliente
Metáfora de sistema
Pequeñas entregas
Prototipo arquitectónico
Planificación de entregas
Tests de aceptación
Iteración
Estimación incierta
Estimación confiable
Próxima iteración
Prototipo
12Iteración
Historias nuevas, Velocidad de proyecto
Plan de entregas
Historias de usuario
Aprender y comunicar
Funcionalidades nuevas
Velocidad de proyecto
Plan de iteración
Próxima iteración
Planificación de iteración
Versión mas reciente
Desarrollo
Corrección de bugs
Tests de aceptación fallados
Bugs
DÃa a dÃa
13Desarrollo
Aprender y comunicar
Tareas sin terminar
Programación en pares
Reconstrucción de código
Plan de iteración
Nueva funcionalidad
Demasiado por hacer
Tests de unidad pasados al 100
tareas
Próxima tarea o test de aceptación fallido
Manejo colectivo del software
Reunión de pie
Corrección de bugs
Test de aceptación aprobado
Tests de aceptación fallados
DÃa a dÃa
14Manejo colectivo del código
Mover Gente
100 de unidades de testeo pasados
Se necesita ayuda
Cambio de par
Ejecutar todas las unidades de testeo
Próxima tarea o test de aceptación
Unidad de testeo fallida
Creación de unidad de testeo
Pares
Programación en pares
Ejecutar test de aceptación fallados
Unidad de testeo aprobada
Código simple
Código complejo
Test de aceptación aprobado
Reconstrucción despiadada
15Resumen de prácticas
- Proceso de planificación
- Entregas pequeñas
- Metáfora del sistema
- Diseño simple
- Testeo
- Reconstrucción
- Programación en pares
- Propiedad colectiva
- Integración continua
- Semana de 40 horas
- Cliente siempre disponible
- Estándares de codificación
16Conclusiones
- Apostolado de metodologÃas exitosas
- Aporte de la experiencia práctica a los modelos
teóricos - Enfoque de conjunto de prácticas como
rompecabezas - TecnologÃa en expansión
- Importancia de revisitar las metodologÃas desde
la experiencia práctica
17Referencias
- K. Beck, Embracing change with Extreme
Programing, Computer, Vol. 32, No. 5 Oct. 1999,
pp 70-77 - L. Williams, R. Kessler, W. Cunningham and R.
Jeffries, Strenghthening the Case for Pair
Programing, IEEE Software, Vol. 17, No. 4
Jul/Aug 2000, pp 19-25 - R. Martin, Extreme Programing Development
through dialog, IEEE Software, Vol. 17, No. 4
Jul/Aug 2000, pp 12-13 - C3 Team, Chrysler goes to Extremes,
Distributed Computing, Oct 1998, pp 24-28 - http//www.xprogramming.com
- http//www.extremeprogramming.org
- http//c2.com/cgi/wiki?ExtremeProgrammingRoadmap