Upload
demian-gutierrez
View
614
Download
1
Embed Size (px)
Citation preview
XP(Programación eXtrema)
Universidad de los AndesDemián Gutierrez
Octubre 2012
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
Modelos Incrementales(Modelo Incremental)
advertenciaLa 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
uno de los mejores libros que he leído
sobre ingeniería de software
Modelos ágiles(Mito: El costo del cambio)
Tomado de Extreme Programming Explained (Kent Beck)
Modelos ágiles(Objetivo: El costo del cambio)
Tomado de Extreme Programming Explained (Kent Beck)
Modelos ágiles(XP)
Versión inicial de la arquitectura, prototipos
para mitigar riesgos técnicos o para
comprender mejor el dominio
Iteraciones cortas1-4 semanas
Entregas frecuentes
http://www.extremeprogramming.org
Desarrollo guiado por pruebas
Modelos ágiles(XP)
Daily Meeting
Valor para el cliente
Auto-organización
Transparencia
Dentro de una
Iteración
http://www.extremeprogramming.org
Importancia del Software
Funcionando
Modelos ágiles(XP)
¿Suena Conocido?
Scrum
¿requisitos?(¿qué debe hacer el producto?)
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
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
¿quién?¿qué?
¿por qué?
Historias de Usuarios(Modelos ágiles – XP, SCRUM)
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
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
¿prácticas?
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.
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.
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.
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.
Modelos ágiles(XP / Prácticas)
Tomado de Extreme Programming Explained (Kent Beck)
Modelos ágiles(XP / Niveles de Planificación)
¿planificación a distintos niveles?
¿qué es planificar?
¿qué cosas se pueden planificar?
Modelos ágiles(XP / Niveles de Planificación)
¿planificación a distintos niveles?
Valores¿Por qué será esto importante?
(fix XP)
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.
Modelos ágiles(XP / Valores)
Tomado de Extreme Programming Explained (Kent Beck)
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.
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
Modelos ágiles(XP / Valores)
Coraje o ValentíaHacer 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
XP y Scrum
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
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
Scrum + XP
Más Información
Extreme Programming (XP)http://www.extremeprogramming.org/
Scrumhttp://www.scrumalliance.org/
http://scrum.org/
XP y el Curso
¿qué cree usted?
¿qué prácticas de XP puede aplicar en el
desarrollo del producto de este curso?