SlideShare una empresa de Scribd logo
1 de 31
Descargar para leer sin conexión
Valores y prácticas XP
Sesión 4a

Metodologías Ágiles de Desarrollo de Software
Domingo Gallardo, DCCIA, Univ. Alicante
Elementos de Extreme Programming
•
•
•
•
•

Valores
Prácticas
Eventos
Artefactos
Roles

Metodologías Ágiles de Desarrollo de Software
Domingo Gallardo, DCCIA, Univ. Alicante

2
Las 4 variables en el desarrollo de un
proyecto
•
•
•
•

Tiempo
Alcance (scope)
Recursos
Calidad
Alcance

Calidad
Coste

Tiempo
Extreme Programming Pocket Guide, O’Reilly, 2003
Metodologías Ágiles de Desarrollo de Software
Domingo Gallardo, DCCIA, Univ. Alicante

3
La calidad no se negocia
•

Calidad

•
•
•
•

En el código
En su funcionalidad
En los aspectos de UX (User eXperience, interacción con el usuario)

La solución fácil para aumentar la velocidad es bajar la calidad, pero no
es una buena decisión:

•
•

La deuda técnica se acumula (pan para hoy, hambre para mañana)
El cliente presupone un mínimo de calidad en el producto y no va
quedarse satisfecho si no se cumple

Metodologías Ágiles de Desarrollo de Software
Domingo Gallardo, DCCIA, Univ. Alicante

4
Historia de XP
•

El origen de Extreme Programming (XP) se encuentra en la
comunidad Smalltalk, en particular en la colaboración
entre Kent Beck y Ward Cunningham a finales de los 80

•

Ambos refinaron sus prácticas durante los 90,
extendiendo la idea de que el desarrollo de software
es un proceso adaptativo y orientado a las personas

•

Kent Beck trabajaba de consultor y aplicó estas técnicas
en multiples proyectos, en concreto el proyecto C3 de
Chrysler (1993-1997) que se puede considerar el proyecto
de creación de XP. Kent Beck acuñó el nombre de Extreme
Programming en 1997.

•

La segunda edición del “libro blanco” de Kent Beck (2004) fue un hito
importante. A partir de ahí se ha popularizado la metodología,
aplicándose en múltiples proyectos y publicándose una abundante
bibliografía.
Metodologías Ágiles de Desarrollo de Software
Domingo Gallardo, DCCIA, Univ. Alicante

5
Las pruebas son el elemento
fundamental de XP
•

Si tuviéramos que quedarnos con la enseñanza más importante de XP sería, sin lugar
a dudas, el énfasis en las pruebas, y en concreto, en la práctica de TDD (Test Driven
Development, desarrollo dirigido por las pruebas)

•

Para XP las pruebas son el elemento fundamental del desarrollo, y todos los
desarrolladores deben escribirlas mientras que escriben el código que finalmente irá
a producción

•

Las pruebas se integran en un proceso de integración y construcción continua lo que
lleva a una plataforma muy estable para el desarrollo futuro

•

Este énfasis en las pruebas como parte integral del desarrollo ha sobrepasado a la
propia XP y se ha incorporado en múltiples metodologías y equipos de desarrollo
(aunque no utilicen el resto de prácticas XP)

•

Kent Beck es una de las figuras claves de TDD, con sus libros y el software que ha
desarrollado (jUnit).

Metodologías Ágiles de Desarrollo de Software
Domingo Gallardo, DCCIA, Univ. Alicante

6
Las promesas de XP
•
•
•
•

Reducir el riesgo del proyecto
Mejorar la respuesta antes cambios en el negocio
Mejorar la productividad a lo largo de toda la vida del software
Hacer más divertido el trabajo del equipo construyendo el software

Metodologías Ágiles de Desarrollo de Software
Domingo Gallardo, DCCIA, Univ. Alicante

7
Reglas de codificación
•
•
•

DTSTTCPW: Do The Simplest Thing That Could Possibly Work
YAGNI: You Aren’t Gonna Need It
OAOO: Once and Only Once

Metodologías Ágiles de Desarrollo de Software
Domingo Gallardo, DCCIA, Univ. Alicante

8
4 valores de XP
•
•
•
•

Comunicación
Retroalimentación (feedback)
Simplicidad
Valentía (courage)

Metodologías Ágiles de Desarrollo de Software
Domingo Gallardo, DCCIA, Univ. Alicante

9
La comunicación es clave

Henrik Kniberg, Agile & Lean Software Develompment Slides
Metodologías Ágiles de Desarrollo de Software
10
Domingo Gallardo, DCCIA, Univ. Alicante
Principios de XP
•
•
•
•
•
•
•

Humanidad
Economía
Beneficio mutuo
Auto similaridad
Mejora
Diversidad
Reflexión

•
•
•
•
•
•
•

Flujo
Oportunidad
Redundancia
Fallo
Calidad
Pasos de bebé
Responsabilidad aceptada

Metodologías Ágiles de Desarrollo de Software
11
Domingo Gallardo, DCCIA, Univ. Alicante
Evolución de XP
•

Dos ediciones del libro de Kent Beck Extreme Programming Explained

•
•
•

Primera edición: 2000
Segunda edición: 2005

Hay cambios significativos entre ambas ediciones, que reflejan la
evolución de XP y su maduración, incorporando algunas prácticas de
otras metodologías

•
•

Primera edición: 12 prácticas principales
Segunda edición: 13 prácticas principales y 11 prácticas secundarias

Metodologías Ágiles de Desarrollo de Software
12
Domingo Gallardo, DCCIA, Univ. Alicante
Las 12 prácticas de XP1

Kent Beck, Extreme Programming Explained, Primera edición 2000
Metodologías Ágiles de Desarrollo de Software
13
Domingo Gallardo, DCCIA, Univ. Alicante
Prácticas XP2

Kent Beck, Extreme Programming Explained, Segunda edición, 2005
Metodologías Ágiles de Desarrollo de Software
14
Domingo Gallardo, DCCIA, Univ. Alicante
1. Sit Together
•
•

Un espacio abierto en el que todo el equipo pueda trabajar

•
•

El espacio de trabajo debe promover que florezca la comunicación

Una forma de satisfacer la necesidad de espacio privado es limitando
el número de horas de trabajo
Cuantas más reuniones cara-a-cara, más humano y productivo se
convierte el proyecto

Metodologías Ágiles de Desarrollo de Software
15
Domingo Gallardo, DCCIA, Univ. Alicante
2. Whole Team
•

Sensación de equipo

•
•
•
•

Todos somos equipo
Estamos en esto juntos
Apoyamos el trabajo, el crecimiento y el aprendizaje de todos

Los equipos son dinámicos, cuando disminuye el número de cambios en
la BD el administrador ya no es necesario y puede dedicarse a otros
proyectos

Metodologías Ágiles de Desarrollo de Software
16
Domingo Gallardo, DCCIA, Univ. Alicante
3. Informative Workspace
•

Hacer que el espacio de trabajo se empape del proyecto en el que
estamos trabajando

•

Colocar las tarjetas con las historias en las paredes, agrupadas por
estado (más de esto cuando hablemos de Kanban)

•

Colocar también en un lugar visible distintas gráficas de evolución del
proyecto

Metodologías Ágiles de Desarrollo de Software
17
Domingo Gallardo, DCCIA, Univ. Alicante
4. Energized Work
•

Trabajar a pleno rendimiento, pero solo tantas horas como se pueda
ser productivo de forma sostenida

•

Con suficiente cafeína es muy fácil llegar al punto en el que el código
que se escribe quita valor al proyecto y (lo más peligroso) no darse
cuenta de ello

•
•

Es posible aumentar la productividad gestionando mejor el tiempo
Por ejemplo, declarar una franja de dos horas como Tiempo de
Programación, desconectar los e-mails y los móviles y dedicarse sólo
a eso

Metodologías Ágiles de Desarrollo de Software
18
Domingo Gallardo, DCCIA, Univ. Alicante
5. Pair Programming

Metodologías Ágiles de Desarrollo de Software
19
Domingo Gallardo, DCCIA, Univ. Alicante
5. Pair Programming
•

Todo el código que va a producción debe ser escrito con dos personas
sentadas frente a la máquina

•

Pair programming es un diálogo entre dos personas que están simultáneamente
analizando, diseñando, probando e intentando programar mejor

•

Ventajas

•
•
•
•
•

Se mantienen centrados mutuamente
Se clarifican ideas
Se vencen los bloqueos individuales
Se cumplen mejor los estándares del equipo

Consejos

•
•
•

Rotar las parejas
No juntar dos programadores novatos
No invadir el espacio personal del otro (monitores grandes)

Metodologías Ágiles de Desarrollo de Software
20
Domingo Gallardo, DCCIA, Univ. Alicante
6. Stories
•

Escribir las historias en tarjetas pequeñas, indicando un nombre, una
descripción y una estimación del tiempo

•

Es más adecuado hablar de “historias” que de “requisitos” (palabra
con connotaciones de “inmutabilidad” y “permanencia” que no son
compatibles con “abrazar el cambio”)

•

Al estimar cada historia es fácil darse cuenta del coste de cada una de
ellas y podemos combinarlas, priorizarlas

•

Colocar las tarjetas en la pared, en un sitio
visible, no en un programa

Metodologías Ágiles de Desarrollo de Software
21
Domingo Gallardo, DCCIA, Univ. Alicante
7. Weekly Cycle
•

Reunión al comienzo de cada semana

•

Revisión del progreso hasta la fecha, incluyendo si el progreso de la semana previa se
corresponde con lo previsto

•

Hacer que el cliente escoja historias que sumen una semana de tamaño para la
semana actual

•

Fraccionar las historias en tareas, los miembros del equipo se apuntan a las tareas y
las estiman

•

Comenzar la semana escribiendo las pruebas automáticas que se realizarán cuando las
historias estén completas y pasar el resto de la semana implementándolas e
integrándolas en el proyecto

•

Al final de la semana las nuevas historias deben estar disponibles para ser desplegadas

•

La semana es un ciclo corto para poder hacer experimentos del estilo “vamos a usar la
técnica del Pomodoro durante una semana” o “esta semana cambiamos de pareja cada
hora”

Metodologías Ágiles de Desarrollo de Software
22
Domingo Gallardo, DCCIA, Univ. Alicante
8. Quarterly Cycle
•

Es conveniente hacer reuniones con un ciclo superior al semanal para ver
la evolución del proyecto en conjunto

•

Cada 3 meses
• Identificar los cuellos de botella, especialmente los que no están
controlados por el equipo
• Planificar el tema o los temas para el cuatrimestre
• Escoger historias que sumen un trimestre para cumplir con los temas
escogidos
• Centrarse en una visión general de cómo el proyecto encaja en la
organización y del valor que añade

•

Los trimestres también son un buen ciclo para reflexionar sobre el equipo y
proponer y evaluar experimentos que duren más de una semana

Metodologías Ágiles de Desarrollo de Software
23
Domingo Gallardo, DCCIA, Univ. Alicante
9. Slack
•

Trabajar con un cierto colchón que suavice la tensión de cumplir
compromisos imposibles

•

Es importante establecer una atmósfera de confianza en la que los que
piden y los que desarrollan el producto se comunican de forma clara y
honesta

•

Trabajar con plazos no realistas introduce errores inmanejables, mina
la moral y construye relaciones antagonistas

•

Cumplir los compromisos, incluso modestos, elimina desperdicios
(waste), suaviza las tensiones, mejora la credibilidad y construye unas
relaciones basadas en la comunicación honesta

Metodologías Ágiles de Desarrollo de Software
24
Domingo Gallardo, DCCIA, Univ. Alicante
10. Ten-Minute Build
•

10 minutos para construir automáticamente todo el sistema y ejecutar
todos los tests

•

Todo el proceso de build y de paso de las pruebas debería estar
automatizado

•

No comprobar sólo las pruebas de la nueva parte añadida al sistema,
sino todas las anteriores

•

En continuous delivery se va un paso más allá y se automatiza también
el despliegue y el lanzamiento de las nuevas funcionalidades en
producción

Metodologías Ágiles de Desarrollo de Software
25
Domingo Gallardo, DCCIA, Univ. Alicante
11. Continuous Integration
• No dejar pasar más de dos horas sin integrar los cambios que hemos
programado

• La programación en equipo es un problema de “divide, vencerás e integrarás”
• La integración es un paso no predecible que puede costar más que el propio
desarrollo

• Integración síncrona: cada pareja después de un par de horas sube sus

cambios y espera a que se complete el build y se hayan pasado todas las
pruebas sin ningún problema de regresión

• Integración asíncrona: cada noche se hace un build diario en el que se

construye la nueva versión del sistema. Si se producen errores se notifica con
alertas de mails o cambia de color una lámpara de lava

• El sistema resultante debe ser un sistema listo para lanzarse sin demasiados

problemas. Si el objetivo es desplegar una web, hay que desplegar la web (en
el entorno de staging).

Metodologías Ágiles de Desarrollo de Software
26
Domingo Gallardo, DCCIA, Univ. Alicante
12. Test-First Programming
• Antes de escribir cualquier código escribir las pruebas
• Muchas ventajas (las veremos com más detalle cuando hablemos de TDD)
• Las pruebas sirven de especificación y aclaran el alcance del código que tenemos
que escribir

• Cohesión y acoplamiento - si es difícil escribir el test, es una señal de que tenemos
un problema de diseño. El código débilmente acoplado y altamente cohesionado
es más fácil de probar

• Confianza - escribiendo código limpio que funciona y demostrando tus intenciones
con las pruebas construye una relación de confianza con tus compañeros

• Ritmo - es muy fácil perderse durante horas cuando se está programando. Con el

enfoque de test-first, está claro lo que hay que hacer a continuación: o escribimos
una prueba o hacemos que funcione una prueba rota (broken test). El ciclo que se
genera se convierte pronto en algo natural y eficiente: test, code, refactor, test,
code, refactor

Metodologías Ágiles de Desarrollo de Software
27
Domingo Gallardo, DCCIA, Univ. Alicante
13. Incremental Design
•

Diseño gradual, con pasos pequeños y
seguros

•

El diseño no debe hacerse sólo al principio,
sino conforme vamos adquiriendo experiencia
Invertir cada día en el diseño del
sistema, luchando por ver cómo
la parte que estamos construyendo
puede mejorarlo en su conjunto

•

•

Pensar todo el tiempo en el problema
en conjunto, buscando formas de
diseñar mejor todo el sistema. Cuando
tengamos claro un diseño mejor, trabajar
gradual pero continuamente para alinear
el sistema real con este diseño

•

Los equipos XP trabajan duro para crear las condiciones bajo las que el coste de cambiar el software
sea bajo

•

Una regla sencilla para mejorar el diseño: eliminar la duplicación

Metodologías Ágiles de Desarrollo de Software
28
Domingo Gallardo, DCCIA, Univ. Alicante
Ejemplo: productos de Google

Henrik Kniberg, Agile & Lean Software Develompment Slides
Metodologías Ágiles de Desarrollo de Software
29
Domingo Gallardo, DCCIA, Univ. Alicante
Prácticas secundarias
Team

Business

14. Real Customer Involvement

20. Root-Cause Analysis

15. Team Continuity

21. Negotiated Scope Contract

16. Shrinking Teams

22. Pay-Per-Use

Programming

Deliverying

17. Shared Code

23. Incremental Deployment

18. Code and Test

24. Daily Deployment

19. Single Code Base

Metodologías Ágiles de Desarrollo de Software
30
Domingo Gallardo, DCCIA, Univ. Alicante
Lecturas
•
•

Ron Jeffries, What is Extreme Programming, 2003
Capítulo 1 de Kent Beck, Extreme Programming Explained, Second
Edition (2005)

Metodologías Ágiles de Desarrollo de Software
31
Domingo Gallardo, DCCIA, Univ. Alicante

Más contenido relacionado

La actualidad más candente

Presentación levantamiento y análisis de requerimientos
Presentación levantamiento y análisis de requerimientosPresentación levantamiento y análisis de requerimientos
Presentación levantamiento y análisis de requerimientosderlykari
 
Mapa conceptual sobre
Mapa conceptual sobre Mapa conceptual sobre
Mapa conceptual sobre Juan Anaya
 
Requerimientos de un Sistema (usando criterios del swebok)
Requerimientos de un Sistema (usando criterios del swebok)Requerimientos de un Sistema (usando criterios del swebok)
Requerimientos de un Sistema (usando criterios del swebok)Miguel Miranda
 
Control de concurrencias investigación
Control de concurrencias investigaciónControl de concurrencias investigación
Control de concurrencias investigaciónJhoel Dgez Garcia
 
Unidad I simulacion de sistemas nuevo
Unidad I simulacion de sistemas nuevoUnidad I simulacion de sistemas nuevo
Unidad I simulacion de sistemas nuevoUGMA
 
Sistema de-maquina-virtual
Sistema de-maquina-virtualSistema de-maquina-virtual
Sistema de-maquina-virtualkerlly villon
 
Pruebas de sistemas y aceptacion
Pruebas de sistemas y aceptacionPruebas de sistemas y aceptacion
Pruebas de sistemas y aceptacionAbner Gerardo
 
IDR Unidad 4: Validación y gestión de requisitos
IDR Unidad 4: Validación y gestión de requisitosIDR Unidad 4: Validación y gestión de requisitos
IDR Unidad 4: Validación y gestión de requisitosFranklin Parrales Bravo
 
Arquitectura Multinivel
Arquitectura MultinivelArquitectura Multinivel
Arquitectura Multinivelurumisama
 
Ventajas y desventajas de cmmi
Ventajas y desventajas de cmmiVentajas y desventajas de cmmi
Ventajas y desventajas de cmmiSandrea Rodriguez
 
1.4 software numerico
1.4 software numerico1.4 software numerico
1.4 software numericomorenito9001
 
IDR Unidad 1: Introducción y proceso de Ingeniería de requerimientos
IDR Unidad 1: Introducción y proceso de Ingeniería de requerimientosIDR Unidad 1: Introducción y proceso de Ingeniería de requerimientos
IDR Unidad 1: Introducción y proceso de Ingeniería de requerimientosFranklin Parrales Bravo
 
Doc. lista de requerimientos ver. 1.0
Doc. lista de requerimientos ver. 1.0Doc. lista de requerimientos ver. 1.0
Doc. lista de requerimientos ver. 1.0luimiguelandrade
 
Sesión 3: Modelos prescriptivos de proceso
Sesión 3: Modelos prescriptivos de procesoSesión 3: Modelos prescriptivos de proceso
Sesión 3: Modelos prescriptivos de procesoCoesi Consultoria
 
PSW Unidad 4 ESTIMACIÓN DE PROYECTOS DE SOFTWARE
PSW Unidad 4 ESTIMACIÓN DE PROYECTOS DE SOFTWAREPSW Unidad 4 ESTIMACIÓN DE PROYECTOS DE SOFTWARE
PSW Unidad 4 ESTIMACIÓN DE PROYECTOS DE SOFTWAREFranklin Parrales Bravo
 

La actualidad más candente (20)

Presentación levantamiento y análisis de requerimientos
Presentación levantamiento y análisis de requerimientosPresentación levantamiento y análisis de requerimientos
Presentación levantamiento y análisis de requerimientos
 
Mapa conceptual sobre
Mapa conceptual sobre Mapa conceptual sobre
Mapa conceptual sobre
 
Requerimientos de un Sistema (usando criterios del swebok)
Requerimientos de un Sistema (usando criterios del swebok)Requerimientos de un Sistema (usando criterios del swebok)
Requerimientos de un Sistema (usando criterios del swebok)
 
Control de concurrencias investigación
Control de concurrencias investigaciónControl de concurrencias investigación
Control de concurrencias investigación
 
Unidad I simulacion de sistemas nuevo
Unidad I simulacion de sistemas nuevoUnidad I simulacion de sistemas nuevo
Unidad I simulacion de sistemas nuevo
 
Sistema de-maquina-virtual
Sistema de-maquina-virtualSistema de-maquina-virtual
Sistema de-maquina-virtual
 
Pruebas de sistemas y aceptacion
Pruebas de sistemas y aceptacionPruebas de sistemas y aceptacion
Pruebas de sistemas y aceptacion
 
IDR Unidad 4: Validación y gestión de requisitos
IDR Unidad 4: Validación y gestión de requisitosIDR Unidad 4: Validación y gestión de requisitos
IDR Unidad 4: Validación y gestión de requisitos
 
Arquitectura Multinivel
Arquitectura MultinivelArquitectura Multinivel
Arquitectura Multinivel
 
Ventajas y desventajas de cmmi
Ventajas y desventajas de cmmiVentajas y desventajas de cmmi
Ventajas y desventajas de cmmi
 
1.4 software numerico
1.4 software numerico1.4 software numerico
1.4 software numerico
 
Ingeniería de software modelo incremental
Ingeniería de software  modelo incrementalIngeniería de software  modelo incremental
Ingeniería de software modelo incremental
 
Ensayo CMMI
Ensayo CMMIEnsayo CMMI
Ensayo CMMI
 
IDR Unidad 1: Introducción y proceso de Ingeniería de requerimientos
IDR Unidad 1: Introducción y proceso de Ingeniería de requerimientosIDR Unidad 1: Introducción y proceso de Ingeniería de requerimientos
IDR Unidad 1: Introducción y proceso de Ingeniería de requerimientos
 
Doc. lista de requerimientos ver. 1.0
Doc. lista de requerimientos ver. 1.0Doc. lista de requerimientos ver. 1.0
Doc. lista de requerimientos ver. 1.0
 
Programación Extrema (XP)
Programación Extrema (XP)Programación Extrema (XP)
Programación Extrema (XP)
 
Sesión 3: Modelos prescriptivos de proceso
Sesión 3: Modelos prescriptivos de procesoSesión 3: Modelos prescriptivos de proceso
Sesión 3: Modelos prescriptivos de proceso
 
Diseño de sistemas
Diseño de sistemasDiseño de sistemas
Diseño de sistemas
 
PSW Unidad 4 ESTIMACIÓN DE PROYECTOS DE SOFTWARE
PSW Unidad 4 ESTIMACIÓN DE PROYECTOS DE SOFTWAREPSW Unidad 4 ESTIMACIÓN DE PROYECTOS DE SOFTWARE
PSW Unidad 4 ESTIMACIÓN DE PROYECTOS DE SOFTWARE
 
Procesos e hilos_parte_3
Procesos e hilos_parte_3Procesos e hilos_parte_3
Procesos e hilos_parte_3
 

Similar a Valores y prácticas XP

Similar a Valores y prácticas XP (20)

10245215.ppth
10245215.ppth10245215.ppth
10245215.ppth
 
Extremeprograming
ExtremeprogramingExtremeprograming
Extremeprograming
 
Programacion Extrema (XP).pptx
Programacion Extrema (XP).pptxProgramacion Extrema (XP).pptx
Programacion Extrema (XP).pptx
 
Sesión 03-métodos-ágiles-del-desarrollo-de-software
Sesión 03-métodos-ágiles-del-desarrollo-de-softwareSesión 03-métodos-ágiles-del-desarrollo-de-software
Sesión 03-métodos-ágiles-del-desarrollo-de-software
 
Programación extrema (xp)
Programación extrema (xp)Programación extrema (xp)
Programación extrema (xp)
 
Metodologia xp cortesserranoeliud
Metodologia xp cortesserranoeliudMetodologia xp cortesserranoeliud
Metodologia xp cortesserranoeliud
 
Metodologias agiles Programacion Xtrema
Metodologias agiles Programacion Xtrema Metodologias agiles Programacion Xtrema
Metodologias agiles Programacion Xtrema
 
Metodología xp
Metodología xpMetodología xp
Metodología xp
 
Softagile
SoftagileSoftagile
Softagile
 
Desarrollo ágil de aplicaciones
Desarrollo ágil de aplicacionesDesarrollo ágil de aplicaciones
Desarrollo ágil de aplicaciones
 
Metodologiaxp
MetodologiaxpMetodologiaxp
Metodologiaxp
 
Metodologías de Desarrollo de Software
Metodologías de Desarrollo de SoftwareMetodologías de Desarrollo de Software
Metodologías de Desarrollo de Software
 
Metodologías Ágiles en la Práctica
Metodologías Ágiles en la PrácticaMetodologías Ágiles en la Práctica
Metodologías Ágiles en la Práctica
 
Programación extrema xp
Programación extrema xpProgramación extrema xp
Programación extrema xp
 
Programación extrema [XP]
Programación extrema [XP]Programación extrema [XP]
Programación extrema [XP]
 
Metodos agiles 4
Metodos agiles 4Metodos agiles 4
Metodos agiles 4
 
xp
xpxp
xp
 
programaciON EXTREMA.pptx
programaciON EXTREMA.pptxprogramaciON EXTREMA.pptx
programaciON EXTREMA.pptx
 
Programación extrema (xp)
Programación extrema (xp)Programación extrema (xp)
Programación extrema (xp)
 
Díme que desarrollas y te diré que metodología usar
Díme que desarrollas y te diré que metodología usarDíme que desarrollas y te diré que metodología usar
Díme que desarrollas y te diré que metodología usar
 

Más de Domingo Gallardo

Fundamentos de las metodologías ágiles
Fundamentos de las metodologías ágilesFundamentos de las metodologías ágiles
Fundamentos de las metodologías ágilesDomingo Gallardo
 
Metodologías agiles de desarrollo de software
Metodologías agiles de desarrollo de softwareMetodologías agiles de desarrollo de software
Metodologías agiles de desarrollo de softwareDomingo Gallardo
 
Manual de uso de la web 2.0
Manual de uso de la web 2.0Manual de uso de la web 2.0
Manual de uso de la web 2.0Domingo Gallardo
 

Más de Domingo Gallardo (7)

Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous Delivery
 
Kanban
KanbanKanban
Kanban
 
Introducción a Kanban
Introducción a KanbanIntroducción a Kanban
Introducción a Kanban
 
Fundamentos de las metodologías ágiles
Fundamentos de las metodologías ágilesFundamentos de las metodologías ágiles
Fundamentos de las metodologías ágiles
 
Metodologías agiles de desarrollo de software
Metodologías agiles de desarrollo de softwareMetodologías agiles de desarrollo de software
Metodologías agiles de desarrollo de software
 
Inteligencia Colectiva
Inteligencia ColectivaInteligencia Colectiva
Inteligencia Colectiva
 
Manual de uso de la web 2.0
Manual de uso de la web 2.0Manual de uso de la web 2.0
Manual de uso de la web 2.0
 

Último

Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...AlanCedillo9
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 

Último (19)

Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 

Valores y prácticas XP

  • 1. Valores y prácticas XP Sesión 4a Metodologías Ágiles de Desarrollo de Software Domingo Gallardo, DCCIA, Univ. Alicante
  • 2. Elementos de Extreme Programming • • • • • Valores Prácticas Eventos Artefactos Roles Metodologías Ágiles de Desarrollo de Software Domingo Gallardo, DCCIA, Univ. Alicante 2
  • 3. Las 4 variables en el desarrollo de un proyecto • • • • Tiempo Alcance (scope) Recursos Calidad Alcance Calidad Coste Tiempo Extreme Programming Pocket Guide, O’Reilly, 2003 Metodologías Ágiles de Desarrollo de Software Domingo Gallardo, DCCIA, Univ. Alicante 3
  • 4. La calidad no se negocia • Calidad • • • • En el código En su funcionalidad En los aspectos de UX (User eXperience, interacción con el usuario) La solución fácil para aumentar la velocidad es bajar la calidad, pero no es una buena decisión: • • La deuda técnica se acumula (pan para hoy, hambre para mañana) El cliente presupone un mínimo de calidad en el producto y no va quedarse satisfecho si no se cumple Metodologías Ágiles de Desarrollo de Software Domingo Gallardo, DCCIA, Univ. Alicante 4
  • 5. Historia de XP • El origen de Extreme Programming (XP) se encuentra en la comunidad Smalltalk, en particular en la colaboración entre Kent Beck y Ward Cunningham a finales de los 80 • Ambos refinaron sus prácticas durante los 90, extendiendo la idea de que el desarrollo de software es un proceso adaptativo y orientado a las personas • Kent Beck trabajaba de consultor y aplicó estas técnicas en multiples proyectos, en concreto el proyecto C3 de Chrysler (1993-1997) que se puede considerar el proyecto de creación de XP. Kent Beck acuñó el nombre de Extreme Programming en 1997. • La segunda edición del “libro blanco” de Kent Beck (2004) fue un hito importante. A partir de ahí se ha popularizado la metodología, aplicándose en múltiples proyectos y publicándose una abundante bibliografía. Metodologías Ágiles de Desarrollo de Software Domingo Gallardo, DCCIA, Univ. Alicante 5
  • 6. Las pruebas son el elemento fundamental de XP • Si tuviéramos que quedarnos con la enseñanza más importante de XP sería, sin lugar a dudas, el énfasis en las pruebas, y en concreto, en la práctica de TDD (Test Driven Development, desarrollo dirigido por las pruebas) • Para XP las pruebas son el elemento fundamental del desarrollo, y todos los desarrolladores deben escribirlas mientras que escriben el código que finalmente irá a producción • Las pruebas se integran en un proceso de integración y construcción continua lo que lleva a una plataforma muy estable para el desarrollo futuro • Este énfasis en las pruebas como parte integral del desarrollo ha sobrepasado a la propia XP y se ha incorporado en múltiples metodologías y equipos de desarrollo (aunque no utilicen el resto de prácticas XP) • Kent Beck es una de las figuras claves de TDD, con sus libros y el software que ha desarrollado (jUnit). Metodologías Ágiles de Desarrollo de Software Domingo Gallardo, DCCIA, Univ. Alicante 6
  • 7. Las promesas de XP • • • • Reducir el riesgo del proyecto Mejorar la respuesta antes cambios en el negocio Mejorar la productividad a lo largo de toda la vida del software Hacer más divertido el trabajo del equipo construyendo el software Metodologías Ágiles de Desarrollo de Software Domingo Gallardo, DCCIA, Univ. Alicante 7
  • 8. Reglas de codificación • • • DTSTTCPW: Do The Simplest Thing That Could Possibly Work YAGNI: You Aren’t Gonna Need It OAOO: Once and Only Once Metodologías Ágiles de Desarrollo de Software Domingo Gallardo, DCCIA, Univ. Alicante 8
  • 9. 4 valores de XP • • • • Comunicación Retroalimentación (feedback) Simplicidad Valentía (courage) Metodologías Ágiles de Desarrollo de Software Domingo Gallardo, DCCIA, Univ. Alicante 9
  • 10. La comunicación es clave Henrik Kniberg, Agile & Lean Software Develompment Slides Metodologías Ágiles de Desarrollo de Software 10 Domingo Gallardo, DCCIA, Univ. Alicante
  • 11. Principios de XP • • • • • • • Humanidad Economía Beneficio mutuo Auto similaridad Mejora Diversidad Reflexión • • • • • • • Flujo Oportunidad Redundancia Fallo Calidad Pasos de bebé Responsabilidad aceptada Metodologías Ágiles de Desarrollo de Software 11 Domingo Gallardo, DCCIA, Univ. Alicante
  • 12. Evolución de XP • Dos ediciones del libro de Kent Beck Extreme Programming Explained • • • Primera edición: 2000 Segunda edición: 2005 Hay cambios significativos entre ambas ediciones, que reflejan la evolución de XP y su maduración, incorporando algunas prácticas de otras metodologías • • Primera edición: 12 prácticas principales Segunda edición: 13 prácticas principales y 11 prácticas secundarias Metodologías Ágiles de Desarrollo de Software 12 Domingo Gallardo, DCCIA, Univ. Alicante
  • 13. Las 12 prácticas de XP1 Kent Beck, Extreme Programming Explained, Primera edición 2000 Metodologías Ágiles de Desarrollo de Software 13 Domingo Gallardo, DCCIA, Univ. Alicante
  • 14. Prácticas XP2 Kent Beck, Extreme Programming Explained, Segunda edición, 2005 Metodologías Ágiles de Desarrollo de Software 14 Domingo Gallardo, DCCIA, Univ. Alicante
  • 15. 1. Sit Together • • Un espacio abierto en el que todo el equipo pueda trabajar • • El espacio de trabajo debe promover que florezca la comunicación Una forma de satisfacer la necesidad de espacio privado es limitando el número de horas de trabajo Cuantas más reuniones cara-a-cara, más humano y productivo se convierte el proyecto Metodologías Ágiles de Desarrollo de Software 15 Domingo Gallardo, DCCIA, Univ. Alicante
  • 16. 2. Whole Team • Sensación de equipo • • • • Todos somos equipo Estamos en esto juntos Apoyamos el trabajo, el crecimiento y el aprendizaje de todos Los equipos son dinámicos, cuando disminuye el número de cambios en la BD el administrador ya no es necesario y puede dedicarse a otros proyectos Metodologías Ágiles de Desarrollo de Software 16 Domingo Gallardo, DCCIA, Univ. Alicante
  • 17. 3. Informative Workspace • Hacer que el espacio de trabajo se empape del proyecto en el que estamos trabajando • Colocar las tarjetas con las historias en las paredes, agrupadas por estado (más de esto cuando hablemos de Kanban) • Colocar también en un lugar visible distintas gráficas de evolución del proyecto Metodologías Ágiles de Desarrollo de Software 17 Domingo Gallardo, DCCIA, Univ. Alicante
  • 18. 4. Energized Work • Trabajar a pleno rendimiento, pero solo tantas horas como se pueda ser productivo de forma sostenida • Con suficiente cafeína es muy fácil llegar al punto en el que el código que se escribe quita valor al proyecto y (lo más peligroso) no darse cuenta de ello • • Es posible aumentar la productividad gestionando mejor el tiempo Por ejemplo, declarar una franja de dos horas como Tiempo de Programación, desconectar los e-mails y los móviles y dedicarse sólo a eso Metodologías Ágiles de Desarrollo de Software 18 Domingo Gallardo, DCCIA, Univ. Alicante
  • 19. 5. Pair Programming Metodologías Ágiles de Desarrollo de Software 19 Domingo Gallardo, DCCIA, Univ. Alicante
  • 20. 5. Pair Programming • Todo el código que va a producción debe ser escrito con dos personas sentadas frente a la máquina • Pair programming es un diálogo entre dos personas que están simultáneamente analizando, diseñando, probando e intentando programar mejor • Ventajas • • • • • Se mantienen centrados mutuamente Se clarifican ideas Se vencen los bloqueos individuales Se cumplen mejor los estándares del equipo Consejos • • • Rotar las parejas No juntar dos programadores novatos No invadir el espacio personal del otro (monitores grandes) Metodologías Ágiles de Desarrollo de Software 20 Domingo Gallardo, DCCIA, Univ. Alicante
  • 21. 6. Stories • Escribir las historias en tarjetas pequeñas, indicando un nombre, una descripción y una estimación del tiempo • Es más adecuado hablar de “historias” que de “requisitos” (palabra con connotaciones de “inmutabilidad” y “permanencia” que no son compatibles con “abrazar el cambio”) • Al estimar cada historia es fácil darse cuenta del coste de cada una de ellas y podemos combinarlas, priorizarlas • Colocar las tarjetas en la pared, en un sitio visible, no en un programa Metodologías Ágiles de Desarrollo de Software 21 Domingo Gallardo, DCCIA, Univ. Alicante
  • 22. 7. Weekly Cycle • Reunión al comienzo de cada semana • Revisión del progreso hasta la fecha, incluyendo si el progreso de la semana previa se corresponde con lo previsto • Hacer que el cliente escoja historias que sumen una semana de tamaño para la semana actual • Fraccionar las historias en tareas, los miembros del equipo se apuntan a las tareas y las estiman • Comenzar la semana escribiendo las pruebas automáticas que se realizarán cuando las historias estén completas y pasar el resto de la semana implementándolas e integrándolas en el proyecto • Al final de la semana las nuevas historias deben estar disponibles para ser desplegadas • La semana es un ciclo corto para poder hacer experimentos del estilo “vamos a usar la técnica del Pomodoro durante una semana” o “esta semana cambiamos de pareja cada hora” Metodologías Ágiles de Desarrollo de Software 22 Domingo Gallardo, DCCIA, Univ. Alicante
  • 23. 8. Quarterly Cycle • Es conveniente hacer reuniones con un ciclo superior al semanal para ver la evolución del proyecto en conjunto • Cada 3 meses • Identificar los cuellos de botella, especialmente los que no están controlados por el equipo • Planificar el tema o los temas para el cuatrimestre • Escoger historias que sumen un trimestre para cumplir con los temas escogidos • Centrarse en una visión general de cómo el proyecto encaja en la organización y del valor que añade • Los trimestres también son un buen ciclo para reflexionar sobre el equipo y proponer y evaluar experimentos que duren más de una semana Metodologías Ágiles de Desarrollo de Software 23 Domingo Gallardo, DCCIA, Univ. Alicante
  • 24. 9. Slack • Trabajar con un cierto colchón que suavice la tensión de cumplir compromisos imposibles • Es importante establecer una atmósfera de confianza en la que los que piden y los que desarrollan el producto se comunican de forma clara y honesta • Trabajar con plazos no realistas introduce errores inmanejables, mina la moral y construye relaciones antagonistas • Cumplir los compromisos, incluso modestos, elimina desperdicios (waste), suaviza las tensiones, mejora la credibilidad y construye unas relaciones basadas en la comunicación honesta Metodologías Ágiles de Desarrollo de Software 24 Domingo Gallardo, DCCIA, Univ. Alicante
  • 25. 10. Ten-Minute Build • 10 minutos para construir automáticamente todo el sistema y ejecutar todos los tests • Todo el proceso de build y de paso de las pruebas debería estar automatizado • No comprobar sólo las pruebas de la nueva parte añadida al sistema, sino todas las anteriores • En continuous delivery se va un paso más allá y se automatiza también el despliegue y el lanzamiento de las nuevas funcionalidades en producción Metodologías Ágiles de Desarrollo de Software 25 Domingo Gallardo, DCCIA, Univ. Alicante
  • 26. 11. Continuous Integration • No dejar pasar más de dos horas sin integrar los cambios que hemos programado • La programación en equipo es un problema de “divide, vencerás e integrarás” • La integración es un paso no predecible que puede costar más que el propio desarrollo • Integración síncrona: cada pareja después de un par de horas sube sus cambios y espera a que se complete el build y se hayan pasado todas las pruebas sin ningún problema de regresión • Integración asíncrona: cada noche se hace un build diario en el que se construye la nueva versión del sistema. Si se producen errores se notifica con alertas de mails o cambia de color una lámpara de lava • El sistema resultante debe ser un sistema listo para lanzarse sin demasiados problemas. Si el objetivo es desplegar una web, hay que desplegar la web (en el entorno de staging). Metodologías Ágiles de Desarrollo de Software 26 Domingo Gallardo, DCCIA, Univ. Alicante
  • 27. 12. Test-First Programming • Antes de escribir cualquier código escribir las pruebas • Muchas ventajas (las veremos com más detalle cuando hablemos de TDD) • Las pruebas sirven de especificación y aclaran el alcance del código que tenemos que escribir • Cohesión y acoplamiento - si es difícil escribir el test, es una señal de que tenemos un problema de diseño. El código débilmente acoplado y altamente cohesionado es más fácil de probar • Confianza - escribiendo código limpio que funciona y demostrando tus intenciones con las pruebas construye una relación de confianza con tus compañeros • Ritmo - es muy fácil perderse durante horas cuando se está programando. Con el enfoque de test-first, está claro lo que hay que hacer a continuación: o escribimos una prueba o hacemos que funcione una prueba rota (broken test). El ciclo que se genera se convierte pronto en algo natural y eficiente: test, code, refactor, test, code, refactor Metodologías Ágiles de Desarrollo de Software 27 Domingo Gallardo, DCCIA, Univ. Alicante
  • 28. 13. Incremental Design • Diseño gradual, con pasos pequeños y seguros • El diseño no debe hacerse sólo al principio, sino conforme vamos adquiriendo experiencia Invertir cada día en el diseño del sistema, luchando por ver cómo la parte que estamos construyendo puede mejorarlo en su conjunto • • Pensar todo el tiempo en el problema en conjunto, buscando formas de diseñar mejor todo el sistema. Cuando tengamos claro un diseño mejor, trabajar gradual pero continuamente para alinear el sistema real con este diseño • Los equipos XP trabajan duro para crear las condiciones bajo las que el coste de cambiar el software sea bajo • Una regla sencilla para mejorar el diseño: eliminar la duplicación Metodologías Ágiles de Desarrollo de Software 28 Domingo Gallardo, DCCIA, Univ. Alicante
  • 29. Ejemplo: productos de Google Henrik Kniberg, Agile & Lean Software Develompment Slides Metodologías Ágiles de Desarrollo de Software 29 Domingo Gallardo, DCCIA, Univ. Alicante
  • 30. Prácticas secundarias Team Business 14. Real Customer Involvement 20. Root-Cause Analysis 15. Team Continuity 21. Negotiated Scope Contract 16. Shrinking Teams 22. Pay-Per-Use Programming Deliverying 17. Shared Code 23. Incremental Deployment 18. Code and Test 24. Daily Deployment 19. Single Code Base Metodologías Ágiles de Desarrollo de Software 30 Domingo Gallardo, DCCIA, Univ. Alicante
  • 31. Lecturas • • Ron Jeffries, What is Extreme Programming, 2003 Capítulo 1 de Kent Beck, Extreme Programming Explained, Second Edition (2005) Metodologías Ágiles de Desarrollo de Software 31 Domingo Gallardo, DCCIA, Univ. Alicante