Clase 03 XP
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Clase 03 XP

on

  • 879 views

 

Statistics

Views

Total Views
879
Views on SlideShare
841
Embed Views
38

Actions

Likes
1
Downloads
41
Comments
0

2 Embeds 38

https://twitter.com 28
http://moodle.codecompiling.net 10

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Clase 03 XP Presentation Transcript

  • 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ídosobre ingeniería de software
  • 6. Modelos ágiles(Mito: El costo del cambio) Tomado de Extreme Programming Explained (Kent Beck)
  • 7. Modelos ágiles(Objetivo: El costo del cambio) Tomado de Extreme Programming Explained (Kent Beck)
  • 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
  • 10. Modelos ágiles(XP) ¿Suena Conocido? Scrum
  • 11. ¿requisitos?(¿qué debe hacer el producto?)
  • 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
  • 14. ¿prácticas?
  • 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 aint 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.
  • 19. Modelos ágiles(XP / Prácticas) Tomado de Extreme Programming Explained (Kent Beck)
  • 20. Modelos ágiles(XP / Niveles de Planificación) ¿planificación a distintos niveles? ¿qué es planificar? ¿qué cosas se pueden planificar?
  • 21. Modelos ágiles(XP / Niveles de Planificación) ¿planificación a distintos niveles?
  • 22. Valores¿Por qué será esto importante? (fix XP)
  • 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
  • 27. XP y Scrum
  • 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
  • 30. Scrum + XP
  • 31. Más Información Extreme Programming (XP) http://www.extremeprogramming.org/ Scrum http://www.scrumalliance.org/ http://scrum.org/
  • 32. XP y el Curso ¿qué cree usted? ¿qué prácticas de XP puede aplicar en el desarrollo del producto de este curso?
  • 33. Gracias ¡Gracias!