clase 03 xp

33
XP (Programación eXtrema) Universidad de los Andes Demián Gutierrez Octubre 2012

Upload: demian-gutierrez

Post on 28-Jun-2015

611 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Clase 03 XP

XP(Programación eXtrema)

Universidad de los AndesDemián Gutierrez

Octubre 2012

Page 2: Clase 03 XP

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

Page 3: Clase 03 XP

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

Page 4: Clase 03 XP

Esto NO es XP(video)

http://youtu.be/xczAJctmdH0

Page 5: Clase 03 XP

uno de los mejores libros que he leído

sobre ingeniería de software

Page 6: Clase 03 XP

Modelos ágiles(Mito: El costo del cambio)

Tomado de Extreme Programming Explained (Kent Beck)

Page 7: Clase 03 XP

Modelos ágiles(Objetivo: El costo del cambio)

Tomado de Extreme Programming Explained (Kent Beck)

Page 8: Clase 03 XP

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

Page 9: Clase 03 XP

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

Page 10: Clase 03 XP

Modelos ágiles(XP)

¿Suena Conocido?

Scrum

Page 11: Clase 03 XP

¿requisitos?(¿qué debe hacer el producto?)

Page 12: Clase 03 XP

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é?

Page 13: Clase 03 XP

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

Page 14: Clase 03 XP

¿prácticas?

Page 15: Clase 03 XP

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.

Page 16: Clase 03 XP

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.

Page 17: Clase 03 XP

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.

Page 18: Clase 03 XP

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.

Page 19: Clase 03 XP

Modelos ágiles(XP / Prácticas)

Tomado de Extreme Programming Explained (Kent Beck)

Page 20: Clase 03 XP

Modelos ágiles(XP / Niveles de Planificación)

¿planificación a distintos niveles?

¿qué es planificar?

¿qué cosas se pueden planificar?

Page 21: Clase 03 XP

Modelos ágiles(XP / Niveles de Planificación)

¿planificación a distintos niveles?

Page 22: Clase 03 XP

Valores¿Por qué será esto importante?

(fix XP)

Page 23: Clase 03 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)

Page 24: Clase 03 XP

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.

Page 25: Clase 03 XP

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

Page 26: Clase 03 XP

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

Page 27: Clase 03 XP

XP y Scrum

Page 28: Clase 03 XP

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

Page 29: Clase 03 XP

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

Page 30: Clase 03 XP

Scrum + XP

Page 31: Clase 03 XP

Más Información

Extreme Programming (XP)http://www.extremeprogramming.org/

Scrumhttp://www.scrumalliance.org/

http://scrum.org/

Page 32: Clase 03 XP

XP y el Curso

¿qué cree usted?

¿qué prácticas de XP puede aplicar en el

desarrollo del producto de este curso?