You are on page 1of 17

Programacin

Extrema

Leonardo Ramrez Z.

Contenido

Motivacin
Qu es Programacin Extrema?
La filosofa detrs de la Programacin
Extrema
El proceso XP
Resumen de prcticas de la metodologa
Conclusiones
Referencias

Motivacin

Ingeniera de software a escala menor


Modelos estudiados difciles 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

Qu es Programacin
Extrema o XP?

Metodologa liviana de desarrollo de


software
Conjunto de practicas y reglas empleadas
para desarrollar software
Basada en diferentes ideas acerca de cmo
enfrentar ambientes muy cambiantes
Originada en el proyecto C3 para Chrysler
En vez de planificar, analizar y disear para
el futuro distante, hacer todo esto un poco
cada vez, a travs de todo el proceso de
desarrollo

Filosofa detrs de XP

Simplicidad
Haz la cosa mas simple posible que
funcione
Mantn el sistema en la condicin
mas simple posible

Comunicacin
El cliente es parte del equipo de
desarrollo
Comunicacin entre gestin y
desarrollo
Comunicacin entre desarrolladores

Testeo
Velocidad, pero adems calidad
Testeo continuo a travs de todo el
proceso
Testeo como herramienta de
especificacin y desarrollo
Testeo como garanta de integridad
del cdigo frente a cambios

Agresividad

Reaccin frente a los cambios

El proceso XP

Un proyecto XP
Escenarios de testeo

Historias de
usuario

requerimientos

Metfora de
sistema

Prototipo
arquitectnico

Historias nuevas
Velocidad del proyecto

Planificacin
de entregas

Estimacin
incierta

Plan de
entregas

Estimacin
confiable

Prototipo

Iteracin

bugs

Versin mas
reciente

Tests de
aceptacin

Prxima
iteracin

Aprobacin
del cliente

Pequeas
entregas

Iteracin
Historias nuevas,
Velocidad de proyecto
Plan de
entregas

Prxima
iteracin

Bugs

Historias de
usuario

Velocidad de
proyecto

Tests de
aceptacin
fallados

Aprender y
comunicar

Planificacin
de iteracin

Plan de
iteracin

Funcionalidades
nuevas

Desarrollo
Correccin de
bugs

Da a da

Versin mas
reciente

Desarrollo

Aprender y
comunicar
Tareas sin terminar
Plan de
iteracin

tareas

Demasiado por
hacer

Reunin
de pie

Da a da

Tests de
aceptacin
fallados

Prxima tarea o test


de aceptacin fallido

Programacin en pares
Reconstruccin de cdigo

Tests de unidad
pasados al 100%

Nueva
funcionalidad

Manejo colectivo
del software
Test de
aceptacin
aprobado

Correccin de
bugs

Manejo colectivo del cdigo


Mover Gente
Cambio
de par

Prxima tarea
o test de
aceptacin

Pares

Creacin de
unidad de
testeo

Unidad de
testeo fallida
Unidad de
testeo
aprobada

Programacin
en pares
Cdigo
complejo

100% de
unidades de
testeo pasados

Se necesita
ayuda

Cdigo
simple

Reconstruccin
despiadada

Ejecutar
todas las
unidades
de testeo

Ejecutar
test de
aceptacin
fallados

Test de
aceptacin
aprobado

Resumen de prcticas

Proceso de
planificacin
Entregas pequeas
Metfora del sistema
Diseo simple
Testeo
Reconstruccin

Programacin en
pares
Propiedad colectiva
Integracin continua
Semana de 40 horas
Cliente siempre
disponible
Estndares de
codificacin

Conclusiones

Apostolado de metodologas exitosas


Aporte de la experiencia prctica a los
modelos tericos
Enfoque de conjunto de prcticas como
rompecabezas
Tecnologa en expansin
Importancia de revisitar las metodologas
desde la experiencia prctica

Referencias

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