TECNOLOGIAS DE LA INFORMACION
METODOLOGIA XP
PROGRAMACION
¿Qué es Extreme Programming?
• ¿En qué consiste XP?
• La Programación Extrema es una
metodología ligera de desarrollo de software
que se basa en la simplicidad, la comunicación y
la realimentación o reutilización del código
desarrollado.
• ES UN METODO LIGERO
Origen de la metodología XP
• Fue formulada por Kent Beck, autor del primer
libro sobre la materia, Extreme Programming
Explained: Embrace Change (1999). Es el más
destacado de los procesos ágiles de desarrollo
de software.
• XP Nace en busca de simplificar el desarrollo
del software y que se lograra reducir el costo
del proyecto.
• Todo en el software cambia. Los requisitos
cambian. El diseño cambia. El negocio cambia.
La tecnología cambia. El equipo cambia. Los
miembros del equipo cambian. El problema
no es el cambio en sí mismo, puesto que
sabemos que el cambio va a suceder; el
problema es la incapacidad de adaptarnos a
dicho cambio cuando éste tiene lugar.
OBJETIVOS
• Obtención del producto, software
funcionando, y con la satisfacción del cliente.
• Minimización del riesgo actuando sobre:
– Variables del proyecto :
• Coste
• Tiempo
• Calidad
• Alcance
VALORES
SIMPLICIDAD COMUNICACIÓN FEEDBACK CORAJE RESPETO
• Los valores originales de la programación
extrema son: simplicidad, comunicación,
retroalimentación (feedback) y coraje. Un
quinto valor, respeto, fue añadido en la
segunda edición de Extreme Programming
Explained. Los cinco valores se detallan a
continuación:
Simplicidad
• La simplicidad consiste en desarrollar
sólo el sistema que realmente se
necesita. Implica resolver en cada
momento sólo las necesidades actuales.
• Los costes y la complejidad de predecir
el futuro son muy elevados, y la mejor
forma de acertar es esperar al futuro.
• Con este principio de simplicidad, junto
con la comunicación y el feedback
resulta más fácil conocer las
necesidades reales
Comunicación
• XP pone en comunicación directa y continua a
clientes y desarrolladores. El cliente se integra
en el equipo para establecer prioridades y
resolver dudas. De esta forma ve el avance día
a día, y es posible ajustar la agenda y las
funcionalidades de forma consecuente
Feedback rápido y continuo
Una metodología basada en el desarrollo incremental
de pequeñas partes, con entregas y pruebas
frecuentes y continuas, proporciona un flujo de
retro-información valioso para detectar los
problemas o desviaciones.
De esta forma fallos se localizan muy pronto.
La planificación no puede evitar algunos errores,
que sólo se evidencian al desarrollar el sistema.
La retro-información es la herramienta que permite
reajustar la agenda y los planes.
Coraje
Disciplina en la aplicación de XP
Parar cuando se está cansado
Permitir que el usuario tome las decisiones
de negocio
Permitir que el desarrollador tome las
decisiones técnicas
Descartar código si es necesario
Introducir cambios cuando las cosas no
funcionan
Respeto
• El respeto se manifiesta de varias formas. Los
miembros del equipo se respetan los unos a otros,
porque los programadores no pueden realizar cambios
que hacen que las pruebas existentes fallen o que
demore el trabajo de sus compañeros. Los miembros
respetan su trabajo porque siempre están luchando
por la alta calidad en el producto y buscando el diseño
óptimo o más eficiente para la solución a través de la
refactorización del código. Los miembros del equipo
respetan el trabajo del resto no haciendo menos a
otros, una mejor autoestima en el equipo eleva su
ritmo de producción.
Roles en XP
Programador
Escribe las pruebas unitarias y produce el
código del sistema.
◦ Pieza básica en desarrollos XP
◦ Más responsabilidad que en otros modos de
desarrollo
◦ Responsable sobre el código
◦ Responsable sobre el diseño (refactorización,
simplicidad)
◦ Responsable sobre la integridad del sistema (pruebas)
◦ Capacidad de comunicación (pair-programming)
◦ Acepta críticas (código colectivo)
Cliente
Escribe las historias de usuario y las pruebas
funcionales para validar su implementación. Asigna la
prioridad a las historias de usuario y decide cuáles se
implementan en cada iteración centrándose en aportar
el mayor valor de negocio.
◦ Pieza básica en desarrollos XP
◦ Define especificaciones (user stories)
◦ Influye sin controlar
◦ Confía en el grupo de desarrollo
◦ Define pruebas funcionales
Tester Encargado de pruebas
Ayuda al cliente a escribir las pruebas
funcionales. Ejecuta pruebas regularmente,
difunde los resultados en el equipo y es
responsable de las herramientas de soporte
para pruebas.
◦ Apoya al cliente en la
preparación/realización de las pruebas
funcionales
◦ Ejecuta las pruebas funcionales y publica los
resultados
Tracker Encargado de Seguimiento
Es el encargado de seguimiento. Proporciona realimentación
al equipo. Debe verificar el grado de acierto entre las
estimaciones realizadas y el tiempo real dedicado,
comunicando los resultados para mejorar futuras
estimaciones.
◦ Recoge, analiza y publica información sobre la marcha
del proyecto sin afectar demasiado el proceso
◦ Supervisa el cumplimiento de la estimaciones en cada
iteración
◦ Informa sobre la marcha de la iteración en curso
◦ Controla la marcha de las pruebas funcionales, de los
errores reportados, de las responsabilidades aceptadas
y de las prueba añadidas por los errores encontrados
Entrenador (Coach)
Responsable del proceso global. Guía a los miembros
del equipo para seguir el proceso correctamente.
◦ Experto en XP
◦ Responsable del proceso en su conjunto
◦ Identifica las desviaciones y reclama atención
sobre las mismas
◦ Guía al grupo de forma indirecta (sin dañar su
seguridad ni confianza)
◦ Interviene directamente si es necesario
◦ Atajar rápidamente el problema
Consultor
Es un miembro externo del equipo con un
conocimiento específico en algún tema
necesario para el proyecto. Ayuda al
equipo a resolver un problema específico.
- Apoya al equipo XP en cuestiones
puntuales
Gestor (Big boss) Encargado de
proyecto
Es el dueño de la tienda y el vinculo entre
clientes y programadores. Su labor esencial es la
coordinación.
◦ Favorece la relación entre usuarios y
desarrolladores
◦ Confía en el equipo XP
◦ Cubre las necesidades del equipo XP
◦ Asegura que alcanza sus objetivos
Captura de Requisitos en XP
• Historias del Usuario (User-Stories)
– Establecen los requisitos del cliente
– Trozos de funcionalidad que aportan valor
– Se les asignan tareas de programación con un nº
de horas de desarrollo
– Las establece el cliente
– Son la base para las
Programación en XP
• La programación de tareas se realiza por parejas
• La pareja diseña, prueba, implementa e integra el
código de la tarea
• Código dirigido por las pruebas
• Código modular, intentando refactorizar siempre
que se pueda
Modelo de un Proyecto XP
Prácticas de XP
PRÁCTICAS DE CODIFICACIÓN
1.- Simplicidad de código y de diseño para producir
software fácil de modificar.
2.- Reingeniería continua para lograr que el código
tenga un diseño óptimo.
3.- Desarrollar estándares de codificación, para
comunicar ideas con claridad a través del código.
4.- Desarrollar un vocabulario común, para
comunicar las ideas sobre el código con claridad.
PRÁCTICAS DE DESARROLLO
1.- Adoptar un método de desarrollo basado en las
pruebas para asegurar que el código se comporta
según lo esperado.
2.- Programación por parejas, para incrementar el
conocimiento, la experiencia y las ideas.
3.- Asumir la propiedad colectiva del código, para
que todo el equipo sea responsable de él.
4.- Integración continua, para reducir el impacto de
la incorporación de nuevas funcionalidades.
PRÁCTICAS DE NEGOCIO
1.- Integración de un representante del cliente en el equipo, para encauzar las
cuestiones de negocio del sistema de forma directa, sin retrasos o pérdidas por
intermediación.
2.- Adoptar el juego de la planificación para centrar en la agenda el trabajo más
importante.
3.- Entregas regulares y frecuentes para satisfacer la inversión del cliente.
4.- Ritmo de trabajo sostenible, para terminar la jornada cansado pero no
agotado.
Ventajas y desventajas de Extreme
Programming
Ventajas:
Programación organizada.
Menor taza de errores.
Satisfacción del programador.
Desventajas:
Es recomendable emplearlo solo en
proyectos a corto plazo.
Altas comisiones en caso de fallar.
CONCLUSIONES
- 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