Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Metodologías agiles de desarrollo de software

2,441 views

Published on

Sesión 2 del curso "Metodologías Ágiles de Desarrollo de Software" de la Universidad de Alicante (http://www.dccia.ua.es/dccia/inf/asignaturas/MADS/2013-14)

Published in: Technology
  • Be the first to comment

Metodologías agiles de desarrollo de software

  1. 1. Metodologías ágiles de desarrollo de software Sesión 2 Metodologías Ágiles de Desarrollo de Software
 Domingo Gallardo, DCCIA, Univ. Alicante
  2. 2. Índice Metodologías ágiles de desarrollo de software Metodologías Ágiles de Desarrollo de Software
 Domingo Gallardo, DCCIA, Univ. Alicante 2
  3. 3. ¿Qué es el software? Metodologías Ágiles de Desarrollo de Software, 2013-14
 Domingo Gallardo, DCCIA, Universidad de Alicante
  4. 4. Metáforas • La analogía es un proceso de pensamiento muy potente • Una metáfora establece una analogía entre algo que conocemos poco con algo similar que entendemos mejor • El uso de las metáforas está en la base del modelado • Metáforas sobre el desarrollo de software • • • Muchas y variadas Todas ellas tienen algo de verdad, resaltan un aspecto importante Ninguna es completa Metodologías Ágiles de Desarrollo de Software
 Domingo Gallardo, DCCIA, Univ. Alicante 4
  5. 5. Metáforas para el desarrollo de software • • • • • • Software como escritura: código escrito y leído Software como cultivo: crecimiento orgánico Software como cultivo por acreción: niveles que esconden detalles Software como construcción: planificación y objetivos Software como sistema legal: relación entre componentes Software como película: proceso creativo de múltiples profesionales Metodologías Ágiles de Desarrollo de Software
 Domingo Gallardo, DCCIA, Univ. Alicante 5
  6. 6. El software es único • El software, su desarrollo y su distribución es un invento único y totalmente nuevo en la historia de la humanidad • • • • • Flexible Modificable Reutilizable Publicable Desarrollo abierto y colaborativo Metodologías Ágiles de Desarrollo de Software
 Domingo Gallardo, DCCIA, Univ. Alicante 6
  7. 7. Software como producto a entregar • Software en 1980 • • • Programas en mainframes con terminales Software en la actualidad • • • Cajas llenas de CDs que se distribuyen en tiendas Servicios en Internet, interconexión de estado, procesamiento Múltiples dispositivos con los que interactuan los usuarios Vídeo de Microsoft (2009)
 “What is Software + Services?”
 http://www.youtube.com/watch?v=EXS0BFS6QT4
 Metodologías Ágiles de Desarrollo de Software
 Domingo Gallardo, DCCIA, Univ. Alicante 7
  8. 8. Software como producto a usar • El software es un producto único no sólo en su proceso de desarrollo, sino en su finalidad • • • El objetivo final del software es ser usado Para conseguir ese objetivo es necesario un gran trabajo de comunicación Mejora continua: Idea Evaluación Producto Metodologías Ágiles de Desarrollo de Software
 Domingo Gallardo, DCCIA, Univ. Alicante 8
  9. 9. Calidad en el software • Nuestra responsabilidad como ingenieros e ingenieras es desarrollar software de calidad, mejorando los procesos de desarrollo y el resultado final • Software que no funciona: • Software que solo cumple parcialmente lo que necesita el usuario, con errores y omisiones • • • Software con el que el usuario se tiene que “pelear” Software lento, poco eficiente Software poco modificable, poco entendible, con deuda técnica Metodologías Ágiles de Desarrollo de Software
 Domingo Gallardo, DCCIA, Univ. Alicante 9
  10. 10. Calidad del código: WTFs/minuto Robert C. Martin - Clean Code, 2008 Metodologías Ágiles de Desarrollo de Software
 10 Domingo Gallardo, DCCIA, Univ. Alicante
  11. 11. Ejemplos de aplicaciones software Metodologías Ágiles de Desarrollo de Software
 11 Domingo Gallardo, DCCIA, Univ. Alicante
  12. 12. Ejemplos de aplicaciones software Metodologías Ágiles de Desarrollo de Software
 12 Domingo Gallardo, DCCIA, Univ. Alicante
  13. 13. Ejemplos de aplicaciones software Metodologías Ágiles de Desarrollo de Software
 13 Domingo Gallardo, DCCIA, Univ. Alicante
  14. 14. Ejemplos de aplicaciones software Metodologías Ágiles de Desarrollo de Software
 14 Domingo Gallardo, DCCIA, Univ. Alicante
  15. 15. ¿Qué es una metodología de desarrollo? Metodologías Ágiles de Desarrollo de Software, 2013-14
 Domingo Gallardo, DCCIA, Universidad de Alicante
  16. 16. Metodologías de desarrollo Metodologías Ágiles de Desarrollo de Software
 16 Domingo Gallardo, DCCIA, Univ. Alicante
  17. 17. Metodologías de desarrollo • Una metodología de desarrollo del software define • • • Pasos a seguir Roles y responsabilidades de los distintos actores que intervienen en el proceso Una metodología es más que un conjunto de reglas • • • Valores Principios Buenas Prácticas y herramientas Metodologías Ágiles de Desarrollo de Software
 17 Domingo Gallardo, DCCIA, Univ. Alicante
  18. 18. Fases del desarrollo de un proyecto Metodologías Ágiles de Desarrollo de Software
 18 Domingo Gallardo, DCCIA, Univ. Alicante
  19. 19. Ciclo de vida clásico de un proyecto software • • • • • • • • • • • Valoración inicial del proyecto Toma de requisitos Diseño Desarrollo de componentes Pruebas unitarias Integración Pruebas de integración Despliegue Pruebas de rendimiento y funcionales Lanzamiento Mantenimiento Metodologías Ágiles de Desarrollo de Software
 19 Domingo Gallardo, DCCIA, Univ. Alicante
  20. 20. Modelo V de las fases de desarrollo Daich et. al - Software Test Technologies Report, 1994 Metodologías Ágiles de Desarrollo de Software
 20 Domingo Gallardo, DCCIA, Univ. Alicante
  21. 21. El problema de los modelos clásicos • Confianza excesiva en las especificaciones iniciales • • Desarrollo monolítico • • Problemas con cambios y futuro mantenimiento Es imposible estimar más allá de 6 meses • • Software que no satisface las necesidades del usuario Proyectos que acumulan retrasos Exceso de documentación inútil • El objetivo final del desarrollo es software que funciona, no pilas de documentos con diagramas UML y descripciones de APIs internas Metodologías Ágiles de Desarrollo de Software
 21 Domingo Gallardo, DCCIA, Univ. Alicante
  22. 22. Un chiste ¿o no? Historia del chiste Metodologías Ágiles de Desarrollo de Software
 22 Domingo Gallardo, DCCIA, Univ. Alicante
  23. 23. La propuesta ágil Metodologías Ágiles de Desarrollo de Software
 23 Domingo Gallardo, DCCIA, Univ. Alicante
  24. 24. Mejor Metodologías Ágiles de Desarrollo de Software
 24 Domingo Gallardo, DCCIA, Univ. Alicante
  25. 25. Modelo en espiral Boehm - A Spiral Model of Software Development and Enhancement, 1988 Metodologías Ágiles de Desarrollo de Software
 25 Domingo Gallardo, DCCIA, Univ. Alicante
  26. 26. Modelo en espiral • Sistema mínimo funcionando desde el principio • Cada interación añade un conjunto de funcionalidades (incremental) y, si es necesario, refina alguna de las ya existentes (evolutivo) • Al final de cada iteración en el modelo en espiral se obtenía un prototipo • Hoy las mejores prácticas, lenguajes, herramientas de desarrollo y entornos de despliegue hace posible obtener un sistema totalmente funcional Metodologías Ágiles de Desarrollo de Software
 26 Domingo Gallardo, DCCIA, Univ. Alicante
  27. 27. Modelo en espiral Metodologías Ágiles de Desarrollo de Software
 27 Domingo Gallardo, DCCIA, Univ. Alicante
  28. 28. ¿Qué es ágil? Metodologías Ágiles de Desarrollo de Software, 2013-14
 Domingo Gallardo, DCCIA, Universidad de Alicante
  29. 29. Metodologías Ágiles de Desarrollo de Software
 29 Domingo Gallardo, DCCIA, Univ. Alicante
  30. 30. El cambio es inevitable • Cambio durante la construcción del proyecto, el • • • Incertidumbres Modificaciones al ver los primeros resultados Cambio una vez terminado el proyecto • • Mantenimiento Modificaciones y ampliaciones debidos a cambios en el proceso de negocio Metodologías Ágiles de Desarrollo de Software
 30 Domingo Gallardo, DCCIA, Univ. Alicante
  31. 31. La realidad de los desarrollos Metodologías Ágiles de Desarrollo de Software
 31 Domingo Gallardo, DCCIA, Univ. Alicante
  32. 32. La realidad de los desarrollos • Lo que nos gustaría • • • • • Los clientes saben lo que quieren El equipo sabe cómo construirlo Nada cambiará en el camino Tenemos mucho tiempo y dinero para hacerlo La realidad • • • • Los clientes descubren lo que necesitan Los desarrolladores descubren cómo hacerlo Muchas cosas cambian en el camino Siempre hay más cosas qué hacer que 
 tiempo y dinero disponible Metodologías Ágiles de Desarrollo de Software
 32 Domingo Gallardo, DCCIA, Univ. Alicante
  33. 33. Qué no hacer Metodologías Ágiles de Desarrollo de Software
 33 Domingo Gallardo, DCCIA, Univ. Alicante
  34. 34. Abrazar el cambio Metodologías Ágiles de Desarrollo de Software
 34 Domingo Gallardo, DCCIA, Univ. Alicante
  35. 35. Abrazar el cambio • Una de las características principales del software es su flexibilidad • Los procesos, herramientas y plataformas deben aceptar sin tensiones el cambio • • Por ejemplo, no es asumible que añadir nuevos campos a un modelo obligue a revisar y modificar las consultas SQL desarrolladas El desarrollo debe ser robusto frente a futuros cambios • Importancia de las pruebas de regresión Metodologías Ágiles de Desarrollo de Software
 35 Domingo Gallardo, DCCIA, Univ. Alicante
  36. 36. Desarrollo incremental • En todas las metodologías ágiles se apuesta por un desarrollo en iteraciones cortas • Al final de cada iteración corta debe haberse avanzado en el desarrollo del producto software y deben existir una conjunto de características (features) adicionales que antes no existían y que se integran correctamente con las existentes previamente. • Un modelo ágil de desarrollo de software debe permitir la integración rápida de las nuevas características en el producto software existente. Metodologías Ágiles de Desarrollo de Software
 36 Domingo Gallardo, DCCIA, Univ. Alicante
  37. 37. Algunos principios ágiles • • Satisfacer al cliente mediante la entrega rápida de software útil • La simplicidad es esencial: el arte de maximizar la cantidad de trabajo no hecha • Las iteraciones cortas entregan valor al cliente y permiten obtener la retroalimentación (feedback) para el equipo Se entrega frecuentemente software que funciona (semanas en lugar de meses) Desarollo Feedback Prueba Metodologías Ágiles de Desarrollo de Software
 37 Domingo Gallardo, DCCIA, Univ. Alicante
  38. 38. Cómo cortar en rodajas un elefante http://blog.crisp.se/2013/07/25/henrikkniberg/elephant-carpaccio-facilitation-guide Metodologías Ágiles de Desarrollo de Software
 38 Domingo Gallardo, DCCIA, Univ. Alicante
  39. 39. Producto mínimo viable http://www.startuplessonslearned.com/2009/08/minimum-viable-product-guide.html Metodologías Ágiles de Desarrollo de Software
 39 Domingo Gallardo, DCCIA, Univ. Alicante
  40. 40. Producto mínimo viable • MVP (Minimum Viable Product) • • • Idea para construir sturtups aplicable al desarrollo de software Hacer primero lo que más incertidumbre genera Mejoras incrementales: • • • Conseguir futuras iteraciones cada vez más parecidas Velocidad constante Mejores estimaciones Metodologías Ágiles de Desarrollo de Software
 40 Domingo Gallardo, DCCIA, Univ. Alicante
  41. 41. Continuous delivery ! • Movimiento DevOps • • • Integra la agilidad en el desarrollo (Development) y la puesta en producción (Operations) Origen de las prácticas de entrega continua (continuous delivery) Entrega continua • • • • Integrar automáticamente Desplegar automáticamente a entornos de prueba Probar automáticamente Desplegar a producción automáticamente Metodologías Ágiles de Desarrollo de Software
 41 Domingo Gallardo, DCCIA, Univ. Alicante
  42. 42. Principios de la entrega continua 1. Crear un proceso de lanzamiento (release) de software repetible y fiable 2. Automatizar todo lo que sea posible 3. Mantener todo bajo el control de versiones 4. Si duele, hacerlo con más frecuencia 5. Introducir calidad en el sistema 6. Hecho significa lanzado 7. Todo el mundo es responsable del proceso de entrega 8. Mejora continua Metodologías Ágiles de Desarrollo de Software
 42 Domingo Gallardo, DCCIA, Univ. Alicante
  43. 43. Tubería de despliegue Dave Farley - Continuous Delivery at LMAX, 2012 Metodologías Ágiles de Desarrollo de Software
 43 Domingo Gallardo, DCCIA, Univ. Alicante
  44. 44. Herramientas y plataformas ágiles • Desarrollo • • • • • Sistemas de construcción: Maven Sistemas de control de versiones: Git / GitHub, Mercurial / Bitbucket Herramientas de prueba: JUnit, Selenium, Sonar Sistemas de integración continua: Hudson Despliegue • • Sistemas virtuales: VirtualBox, Vagrant Sistemas en la nube (Paas, Platform As A Service): Heroku, OpenShift Metodologías Ágiles de Desarrollo de Software
 44 Domingo Gallardo, DCCIA, Univ. Alicante
  45. 45. Resumen: métodos ágiles vs. cascada Ágil Cascada © Henrik Kniberg Metodologías Ágiles de Desarrollo de Software
 45 Domingo Gallardo, DCCIA, Univ. Alicante
  46. 46. Una nota final para emprendedores Metodologías Ágiles de Desarrollo de Software, 2013-14
 Domingo Gallardo, DCCIA, Universidad de Alicante
  47. 47. Aquí se hace software Metodologías Ágiles de Desarrollo de Software
 47 Domingo Gallardo, DCCIA, Univ. Alicante
  48. 48. Vídeo: “A day in The Cocktail” Metodologías Ágiles de Desarrollo de Software
 48 Domingo Gallardo, DCCIA, Univ. Alicante
  49. 49. Lecturas • Martin Fowler, The New Methodology (2005) Metodologías Ágiles de Desarrollo de Software
 49 Domingo Gallardo, DCCIA, Univ. Alicante

×