$30 off During Our Annual Pro Sale. View Details »

Metodologías ágiles, XP y Scrum

Metodologías ágiles, XP y Scrum

Jose I. Honrado

December 05, 2010
Tweet

More Decks by Jose I. Honrado

Other Decks in Programming

Transcript

  1. ›  Introducción ›  Metodologías ágiles ›  Definición ›  The Agile

    Alliance ›  Agile Manifesto ›  Ágiles vs. Tradicionales ›  Ejemplos de metodologías ágiles: ›  Programación extrema ›  Scrum Metodologías Ágiles Índice
  2. ›  Tradicionalmente las metodologías de gestión de proyectos han tenido

    una fuerte orientación predictiva. ›  A partir del detalle del producto que se quiere elaborar se definen fases perfectamente planificadas en el tiempo en base a los recursos disponibles. ›  A partir de esta proyección inicial, el objetivo es conseguir que se cumpla aquello que se había previsto: calendario, costes y calidad. Metodologías Ágiles Introducción (1)
  3. ›  Este tipo de metodologías han resultado ser útiles, pero

    tienen unos inconvenientes: ›  El jefe de proyecto puede no tener conocimientos técnicos, con lo que no podrá participar activamente en las tomas de decisiones. ›  En proyectos largos el producto final puede que no cubra las necesidades iniciales dado que han podido cambiar. Por tanto hay que rediseñar el producto. ›  Incertidumbre: vivimos en un entorno rápido e inestable, donde cumplir el plan inicial no garantiza el éxito. Metodologías Ágiles Introducción (2)
  4. ›  En definitiva, la creación de valor mediante la adaptación

    a las necesidades cambiantes aparece en un primer plano frente a la tradicional idea de diseñar un plan y cumplir unos calendarios/requerimientos estáticos. ›  Los proyectos gestionados con metodologías ágiles se inician sin un detalle cerrado de lo que va a ser construido. A nivel comercial, los proyectos pueden ser vendidos como servicios y no como productos. Metodologías Ágiles Introducción (3)
  5. ›  Es un marco de trabajo conceptual de la ingeniería

    de software que promueve iteraciones en el desarrollo a lo largo de todo el ciclo de vida del proyecto. ›  Existen muchos métodos de desarrollo ágil; la mayoría minimiza riesgos desarrollando software en cortos lapsos de tiempo. Metodologías Ágiles ¿Qué son las met. ágiles? (1)
  6. ›  No se trabaja con unos requisitos preestablecidos, los requisitos

    van evolucionando a medida que el proyecto avanza, concibiéndose estos como algo necesario para que el proyecto avance. ›  Se da prioridad a las comunicaciones cara a cara por encima de la documentación. Metodologías Ágiles ¿Qué son las met. ágiles? (2)
  7. Metodologías agiles Metodologías tradicionales Basadas en heurísticas provenientes de prácticas

    de producción de código Basadas en normas provenientes de estándares seguidos por el entorno de desarrollo Especialmente preparados para cambios durante el proyecto Cierta resistencia a los cambios Impuestas internamente (por el equipo) Impuestas externamente Proceso menos controlado, con pocos principios Proceso mucho más controlado, con numerosas políticas/normas No existe contrato tradicional o al menos es bastante flexible Existe un contrato prefijado El cliente es parte del equipo de desarrollo El cliente interactúa con el equipo de desarrollo mediante reuniones Grupos pequeños (<10 integrantes) y trabajando en el mismo sitio Grupos grandes y posiblemente distribuidos Pocos artefactos Más artefactos Pocos roles Más roles Menos énfasis en la arquitectura del software La arquitectura del software es esencial y se expresa mediante modelos Metodologías Ágiles Comparativa ágil vs tradicional
  8. ›  A mediados de los 90 apareció una reacción contraria

    a las metodologías tradicionales, las cuales eran vistas como excesivamente burocráticas, lentas e inconsistentes y por lo tanto ineficientes. ›  En el año 2001, se realiza una reunión en Snowbird, Utah, y se adopta el nombre de "metodologías ágiles". Poco después, se formará la "alianza ágil", cuyo punto de partida fue el Manifiesto Ágil. Metodologías Ágiles Evolución histórica
  9. ›  The Agile Alliance es una organización sin ánimo de

    lucro con membresía global comprometida con promover los principios y metodologías de desarrollo ágil. ›  Creen que los enfoques ágiles entregan un valor mayor más rápido y hacen que la industria del software sea más productiva, humana y sostenible. ›  Es la organizadora de la conferencia anual “Agile20XX” y ofrece patrocinios de otras conferencias y grupos de usuarios. ›  Tiene un sistema de apoyo a programas (conferencias, talleres, investigaciones, etc…) Metodologías Ágiles The Agile Alliance
  10. ›  En 2001 se reuniones 17 críticos de los modelos

    de mejora de desarrollo de software basados en procesos. ›  De allí salió el término «métodos ágiles» para definir a los métodos que estaban surgiendo como alternativas a los métodos formales. También definieron sus valores: ›  Individuos e interacciones sobre procesos y herramientas ›  Software funcionando sobre documentación extensiva ›  Colaboración con el cliente sobre negociación contractual ›  Respuesta ante el cambio sobre seguir un plan Metodologías Ágiles Manifesto
  11. ›  La mayor prioridad es satisfacer al cliente mediante la

    entrega temprana y continua de software con valor. ›  Se acepta que los requisitos cambien, incluso en etapas tardías del desarrollo. Los procesos Ágiles aprovechan el cambio para proporcionar ventaja competitiva al cliente. ›  Se entrega software funcional frecuentemente, entre dos semanas y dos meses, con preferencia al periodo de tiempo más corto posible. ›  Los responsables de negocio y los desarrolladores trabajan juntos de forma cotidiana durante todo el proyecto. ›  Los proyectos se desarrollan en torno a individuos motivados. Hay que darles el entorno y el apoyo que necesitan, y confiarles la ejecución del trabajo. Metodologías Ágiles Manifesto. Principios (1)
  12. ›  El software funcionando es la medida principal de progreso.

    ›  Los procesos Ágiles promueven el desarrollo sostenible. Los promotores, desarrolladores y usuarios debemos ser capaces de mantener un ritmo constante de forma indefinida. ›  La atención continua a la excelencia técnica y al buen diseño mejora la agilidad. ›  La simplicidad, o el arte de maximizar la cantidad de trabajo no realizado, es esencial. ›  Las mejores arquitecturas, requisitos y diseños emergen de equipos auto- organizados. ›  A intervalos regulares el equipo reflexiona sobre cómo ser más efectivo para a continuación ajustar y perfeccionar su comportamiento en consecuencia. Metodologías Ágiles Manifesto. Principios (2)
  13. ›  Esta basada en la potenciación de las relaciones interpersonales

    como clave para el desarrollo de software, promoviendo el trabajo en equipo y un buen ambiente en el entorno de trabajo. ›  Intenta reducir el impacto del cambio en las especificaciones al aplicar múltiples ciclos a corto plazo. Los cambios son contemplados de una manera natural y considerados inevitables. Metodologías Ágiles ¿Qué es prog. extrema (XP)?
  14. ›  Simplicidad. La simplicidad es la base de la programación

    extrema. La simplicidad facilita el mantenimiento y la elaboración del software. ›  Comunicación. Es fundamental la comunicación en todos sus aspectos. Con el cliente debe existir una comunicación fluida, pero también los programadores comunican a través del código. ›  Respeto. El respeto es necesario entre los miembros del equipo para que el software desarrollado sea de la máxima calidad posible. Metodologías Ágiles Valores XP (1)
  15. ›  Retroalimentación. Al estar el cliente integrado en el proyecto,

    se conoce su opinión en tiempo real, lo cual nos evita rehacer partes que no cumplen los requisitos. ›  Coraje. Se requiere coraje para confiar en la programación por parejas, aunque está parezca contraria a la productividad. También es necesario coraje para hacer lo que el cliente quiere, sin optar por un enfoque mas flexible, lo cual restaría simplicidad. Metodologías Ágiles Valores XP (2)
  16. ›  Programador. El programador escribe el código del sistema y

    las pruebas unitarias. ›  Cliente. Escribe las historias de usuario y las pruebas funcionales para validar su implementación. Además, asigna la prioridad a las historias de usuario y decide cuáles se implementan en cada iteración centrándose en aportar mayor valor al negocio. ›  Encargado de pruebas (Tester). Ayuda al cliente a escribir las pruebas funcionales. Ejecuta las pruebas regularmente, difunde los resultados en el equipo y es responsable de las herramientas de soporte para pruebas. Metodologías Ágiles Roles XP (1)
  17. ›  Encargado de seguimiento (Tracker). Proporciona realimentación al equipo. Verifica

    el grado de acierto entre las estimaciones realizadas y el tiempo real dedicado, para mejorar futuras estimaciones. Realiza el seguimiento del progreso de cada iteración. ›  Tutor (Coach). Es responsable del proceso global. Debe proveer guías al equipo de forma que se apliquen las prácticas XP y se siga el proceso correctamente. ›  Consultor. Es un miembro externo del equipo con un conocimiento específico en algún tema necesario para el proyecto, en el que puedan surgir problemas. Metodologías Ágiles Roles XP (2)
  18. ›  Manager (Big boss). Es el vínculo entre clientes y

    programadores, ayuda a que el equipo trabaje efectivamente creando las condiciones adecuadas. Su labor esencial es de coordinación. Metodologías Ágiles Roles XP (3)
  19. ›  Fase de exploración. El cliente escribe las historias que

    quieren que se incluyan en la primera versión. Paralelamente el equipo de proyecto se familiariza con la tecnología y herramientas que van a emplear. ›  Fase de planificación. Se establece la prioridad de las distintas historias y se acuerda el contenido de la primera entrega. Metodologías Ágiles Proceso XP (1)
  20. ›  Fase de iteraciones. En esta fase se realizan las

    iteraciones necesarias hasta la liberación de la primera versión. Al final de cada iteración se realizan las pruebas funcionales definidas por el cliente. ›  Fase de producción. Se realizan pruebas extra de rendimiento y funcionamiento antes de entregar el producto al cliente en caso de que no haya que ejecutar cambios importantes. Metodologías Ágiles Proceso XP(2)
  21. ›  Fase de mantenimiento. Aquí permanece el proyecto una vez

    entregada la primera versión y aún existen iteraciones en fase de producción, en esta fase se da soporte a los clientes. ›  Fase de cierre del proyecto. En esta fase se crea la documentación del proyecto. Se alcanza cuando el cliente ya no tiene mas historias que implementar y además se cumplen aspectos como fiabilidad o rendimiento. Metodologías Ágiles Proceso XP(3)
  22. ›  Es un proceso en el que se aplican de

    manera regular un conjunto de prácticas para trabajar en equipo y obtener el mejor resultado posible en un proyecto. ›  Se realizan entregas parciales y regulares del producto final, priorizadas por el beneficio que aportan al cliente. ›  Está especialmente indicado para proyectos en entornos complejos, donde los requisitos son cambiantes o poco definidos, o donde la flexibilidad o productividad son fundamentales. Metodologías Ágiles ¿Qué es Scrum?
  23. ›  Todas las personas que trabajan con Scrum tienen un

    rol muy definido dentro del proceso. ›  Existen dos niveles de implicación bien diferenciados: los que están comprometidos en el desarrollo del mismo, «Cerdos», y los que están afectados parcialmente, «Gallinas». ›  Los roles «Gallina» en realidad no son parte del proceso Scrum, pero deben tenerse en cuenta si se busca un resultado óptimo. Ejemplos de éstos son los usuarios a los que va destinado el producto, gente de marketing, intermediarios o comerciales. Metodologías Ágiles Roles en Scrum
  24. ›  Product Owner. Es el interlocutor entre el cliente y

    el equipo. Conoce y marca las prioridades del proyecto con las que se completarán los backlog’s. ›  Scrum Master. Es la persona que asegura el seguimiento de la metodología guiando las reuniones y ayudando al equipo ante cualquier problema que pueda aparecer. También se encarga de hacer de paraguas ante las presiones externas. ›  Scrum Team. Son las personas responsables de implementar las funcionalidades elegidas por el product owner. Metodologías Ágiles Roles en Scrum. Roles «cerdo»
  25. ›  En Scrum un proyecto se ejecuta en bloques temporales

    cortos y fijos. Iteraciones de un mes natural y hasta de dos semanas, si así se necesita ›  Cada iteración tiene que proporcionar un resultado completo, un incremento de producto final que sea susceptible de ser entregado con el mínimo esfuerzo al cliente cuando lo solicite. ›  Sprint. Cada una de las iteraciones de las que se compone el desarrollo con Scrum. Si existe razón de suficiente peso, puede abortarse un sprint y comenzar uno nuevo. Metodologías Ágiles Proceso en Scrum
  26. ›  Describe todas funcionalidades o requerimientos a realizar de manera

    priorizada. No deben ser especificadas a muy bajo nivel sino solo a grandes rasgos. Metodologías Ágiles Documentos. Product backlog
  27. ›  Uno o más requisitos del product backlog que se

    van a implementar en un determinado sprint. Metodologías Ágiles Documentos. Sprint backlog
  28. ›  Sprint planning meeting: se eligen las tareas del product

    backlog que se van a realizar en el sprint añadiéndolas al sprint backlog. (1d) ›  Daily meeting: se realiza todos los días de cada sprint. El objetivo es facilitar la transferencia de información y la colaboración entre miembros del equipo. (informal - 15m) ›  Sprint review: se revisa el sprint finalizado. El team es el encargado de mostrar los avances realizados en el sprint. (4h) ›  Sprint retrospective: se revisa como ha ido el sprint para hacer el siguiente más productivo. (informal - 3h) Metodologías Ágiles Reuniones
  29. ›  El futuro del desarrollo de software tiende hacia las

    metodologías ágiles. ›  Una empresa usando metodologías ágiles adquiere una ventaja competitiva frente a las empresas que no lo hagan. ›  Muchas empresas ya requieren conocimientos en metodologías ágiles para acceder a puestos de trabajo. ›  Por lo tanto, un informático que domine o simplemente conozca este tipo de metodologías, tiene un plus respecto a quien no lo haga. Metodologías Ágiles Conclusión
  30. ›  Agile Spain - http://www.agile-spain.com ›  Agilismo - http://agilismo.es › 

    Proyectos Ágiles - http://www.proyectosagiles.org ›  Scrum - http://scrum.es ›  Scrum en menos de 10 minutos: http://www.youtube.com/watch?v=Q5k7a9YEoUI ›  Agile 2010 (EUI - UPM) ›  Presente y futuro del «agilismo» en España: ›  http://www.youtube.com/watch?v=fpOSFR3waHA ›  Haciendo Realidad la Agilidad (por Henrik Kniberg) ›  http://www.youtube.com/watch?v=yE3xXY2M3RU Metodologías Ágiles Si quieres saber más…