1. XP
(Programación eXtrema)
Universidad de los Andes
Demián Gutierrez
Octubre 2012
2. Modelos ágiles
(XP)
XP (eXtreme Programing): Es una estrategia de
desarrollo de software creada hace aproximadamente
hace unos diez años que ha causado gran impacto entre
el colectivo de programadores del mundo
Kent Beck, su autor, es un programador que ha
trabajado en múltiples empresas
Con sus teorías ha conseguido el respaldo de gran parte
de la industria del software y el rechazo de otra parte
http://www.extremeprogramming.org
3. Modelos Incrementales
(Modelo Incremental)
advertencia
La Programación Extrema (XP) y otros
métodos no significan desarrollar
“sin método”
Los métodos ágiles requieren en el
fondo mucha disciplina para poder
ejecutarlos y mantener el orden de
forma satisfactoria
4. Esto NO es XP
(video)
http://youtu.be/xczAJctmdH0
5. uno de los
mejores libros
que he leído
sobre ingeniería
de software
8. Modelos ágiles
(XP)
Desarrollo
guiado por
pruebas
Versión inicial de la Iteraciones cortas Entregas
arquitectura, prototipos 1-4 semanas frecuentes
para mitigar riesgos
técnicos o para
comprender mejor el http://www.extremeprogramming.org
dominio
9. Modelos ágiles
(XP)
Valor para el cliente
Importancia del
Software Transparencia
Funcionando
Dentro de
una
Iteración
Auto-organización
Daily Meeting
http://www.extremeprogramming.org
12. Historias de Usuarios
(Modelos ágiles – XP, SCRUM)
Una historia de usuario es una narración que describe
cierta funcionalidad del sistema que tiene valor para un
usuario o comprador particular
Se recogen en unas sencillas tarjetas de forma
esquemática y en un lenguaje claro y preciso.
Aprobación de nuevos usuarios
¿quién? Yo como administrador del foro
quisiera poder aceptar o rechazar los
nuevos usuarios registrados para así ¿qué?
poder evitar que el foro se llene de
¿por qué? spammers
13. Historias de Usuarios
(Modelos ágiles – XP, SCRUM)
Aprobación de nuevos usuarios
Yo como administrador del foro
quisiera poder aceptar o rechazar los
nuevos usuarios registrados para así
poder evitar que el foro se llene de
spammers
Las historias de usuario sirven de “recordatorio” de la
funcionalidad que es necesario implementar en el
sistema
Antes de implementar una funcionalidad en particular se
produce una discusión con el usuario, se refina y
extiende la información de la historia de usuario
15. Modelos ágiles
(XP / Prácticas)
● El desarrollo del plan: Determinar rápidamente el alcance de
la siguiente iteración / entrega en base a las prioridades del
negocio (cliente) y los estimados técnicos. Estar dispuestos a
cambiar el plan a medida que es necesario.
● Liberar mucho, en incrementos pequeños: Poner el sistema
en producción los más rápido posible (el mínimo necesario) y
desarrollar las siguientes versiones con el ciclo lo mas corto
posible.
● Contar con una “Metáfora” para el sistema: Una historia o
una idea simple, compartida, de como funciona todo el
sistema.
16. Modelos ágiles
(XP / Prácticas)
● Diseño simple: Mantener el diseño lo más simple posible
(KISS: Keep it Simple Stup$%#id), concentrarse en el presente
y no en el futuro: (YAGNI: You ain't going to need it)
● Pruebas Unitarias (automatizadas): Sirven para evitar que
los programadores se equivoquen, para evitar las “parcelas” de
código y para validar constantemente la aplicación. Los
clientes también pueden escribir pruebas para validar /
demostrar ciertas características del sistema.
● Refactor: Los programadores reestructuran el sistema
siempre que es necesario, eliminando la duplicación,
mejorando la comunicación, simplificando o añadiendo
flexibilidad.
17. Modelos ágiles
(XP / Prácticas)
● Programación en parejas: Todo el código a ponerse en
producción es escrito en parejas. ¿Sabe usted por qué?
● Propiedad colectiva: Nadie es dueño de ninguna clase, de
ningún artefacto, de ninguna parte del código. (La prueba del
camión... ¿sabe usted cuantos desarrolladores pueden ser
atropellados por un camión antes de que el proyecto esté en
peligro?)
● Integración continua: Las características del sistema se
desarrollan y se integran a diario. Luego se corren las pruebas
y se verifica que la aplicación corra correctamente.
18. Modelos ágiles
(XP / Prácticas)
● 40 horas a la semana: Nadie. ¡NADIE! Trabaja horas extra.
¿Sabe usted porque?
● El cliente involucrado en el ambiente de desarrollo: El
cliente (o un representante) es un miembro más del equipo de
desarrollo.
● Estándares de codificación: Se definen estándares
adecuados de codificación y se respetan. Sobre todo aquellos
que enfatizan la “auto-documentación” y adecuada
documentación del código.
23. Modelos ágiles
(XP / Valores)
Simplicidad: Es la base de la programación extrema. La idea es
simplificar el diseño lo más posible para agilizar el desarrollo y
facilitar el mantenimiento.
Tomado de Extreme Programming Explained (Kent Beck)
24. Modelos ágiles
(XP / Valores)
Comunicación: Se realiza de diferentes formas:
1) Para los programadores el código comunica mejor. La simplicidad del
código hace que este sea legible. Es mejor tener “código
autodocumentado” que código con grandes cantidades de
documentación, ya que la documentación corre el riesgo de quedar
desfasada con el código a medida que este es modificado.
2) Las pruebas unitarias comunican, ya que describen el diseño de las
clases y métodos al mostrar ejemplos concretos de como usar su
funcionalidad.
3) Los programadores se comunican constantemente gracias a la
programación en parejas.
4) La comunicación con el cliente es fluida ya que el cliente es parte del
equipo.
25. Modelos ágiles
(XP / Valores)
Retroalimentación (feedback): El cliente está integrado en el
proyecto de modo que su opinión sobre el estado del proyecto se
conoce en tiempo real. Como las iteraciones son muy cortas
(1-4 semanas) se minimiza el tener que rehacer partes que no
cumplen con los requisitos y ayuda a los programadores a
centrarse en lo que es más importante
Respeto: Todo el mundo recibe y siente el respeto que merece
como miembro valioso del equipo de desarrollo. Todos en el equipo
aportan valor, aun si es simple entusiasmo. Los desarrolladores
respetan la experiencia de sus clientes y viceversa. La gerencia
respeta el derecho del equipo de aceptar la responsabilidad y
recibir la autoridad sobre su propio trabajo
26. Modelos ágiles
(XP / Valores)
Coraje o Valentía
Hacer XP es difícil... requiere mucha disciplina
Para los gerentes, muchas de las prácticas de XP
pueden parecer poco intuitivas o inclusive erradas
(programación en parejas, simplicidad, no pensar en
la flexibilidad a futuro, entre otras)
Para los programadores, muchas de las prácticas de
XP pueden parecer a contracorriente y poco
intuitivas (TDD, programación en parejas, propiedad
colectiva, etc).
Es necesario mucho “coraje” para aceptar las
prácticas y vencer los prejuicios
28. Scrum + XP
Scrum provee un marco de gestión,
pero no dice nada sobre el cómo se
debería hacer el software o cuales son
las prácticas técnicas que se deberían
usar
Scrum se puede usar para gestionar
muchos tipos de proyectos, no sólo
proyectos de software
29. Scrum + XP
XP provee un marco de gestión, pero
hace mucho más énfasis en las
prácticas técnicas necesarias para
desarrollar software
Es muy común que se utilice una
combinación de Scrum + XP