Lean Software Development

5,573 views

Published on

Explicación sobre el Lean Software Development preparada para la asignatura de "Introducción a la Ingeniería del Software" en la Universidad Europea de Madrid.

Published in: Education
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
5,573
On SlideShare
0
From Embeds
0
Number of Embeds
25
Actions
Shares
0
Downloads
256
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Lean Software Development

  1. 1. Lean Software Development Metodologías Ágiles David Fernández Martínez Universidad Europea de Madrid
  2. 2. Origen Mary & Tom Poppendieck Basado en el Toyotismo Mary: http://www.flickr.com/photos/8502118@N08/4076240155 Tom: http://www.flickr.com/photos/improveit/1573552241 Toyota logo: http://toyota.com
  3. 3. Toyotismo (I) Taiichi Ohno (1912 - 1990) Crisis productiva de los 70 Puntos básicos Flexibilidad laboral Estímulos sociales Just in Time Precios más bajos para el consumidor
  4. 4. Toyotismo (II) Producción Fabricar sólo lo necesario Detenerse si algo va mal Eliminar todo lo que no añada valor Filosofía de trabajo Respetar a los trabajadores Utilizar completamente sus capacidades Responsabilidad & autoridad
  5. 5. Imagen: Wikimedia Commons
  6. 6. Nueva forma de pensar (I) Forma de pensar anterior Cambiar de moldes es caro No se cambia de moldes Taiichi Ohno Se necesitan muchos moldes por máquina Cada cambio dura un minuto
  7. 7. Nueva forma de pensar (II) Forma de pensar anterior Los cambios en el código son costosos Diseño fijo antes de codificar Metodología ágil Se requieren multimples cambios Cambios en el último minuto
  8. 8. Ejemplo 1981 - GM lanza el Proyecto G-10 1988 - Buick Regal 1989 - Pontiac Grand Prix 1986 - Honda lanza el Proyecto Accord 1989 - Se presenta el modelo 1990’s - Modelo más vendido en Norte América http://www.flickr.com/photos/ice_e_fresh/96022679
  9. 9. Nueva forma de pensar (III) En vez de La prisa produce gastos La calidad cuesta más Sabemos que Los retrasos producen gastos La calidad hace ahorrar
  10. 10. http://www.flickr.com/photos/nickbush/450151862/
  11. 11. Principios Lean 1.Eliminar los pérdidas 2.Aumentar el feedback 3.Decidir lo más tarde posible 4.Entregar rápidamente 5.Crear integridad 6.Potenciar el equipo 7.Ver todo el conjunto
  12. 12. Eliminar las pérdidas Pérdida Todo lo que no crea valor para el consumidor El consumidor estaría igual de contento con el software sin esa característica Crear Valor para el consumidor
  13. 13. Identificar las pérdidas Fabricación Desarrollo de software Inventario Trabajo a medio hacer Procesos extra Papeleo Sobreproducción Características extra Transporte Cambiar tareas Espera Espera Movimiento Cambiar grupos Defectos Defectos
  14. 14. La mayor fuente de pérdidas Raramente Algunas veces Bastante Siempre Nunca Casi nunca o nunca 64% 19% 45% 16% 7% 13% Bastante o siempre Funciones y características de un sistema típico 20%
  15. 15. http://www.flickr.com/photos/nickbush/450151862/
  16. 16. Principios Lean 1.Eliminar los pérdidas 2.Aumentar el feedback 3.Decidir lo más tarde posible 4.Entregar rápidamente 5.Crear integridad 6.Potenciar el equipo 7.Ver todo el conjunto
  17. 17. Aumentar el feedback Modelo en Cascada ¡¡¡NO Análisis FUNCIONA!!! Diseño Implementación Pruebas Mantenimiento
  18. 18. Aumentar el feedback RECOMENDADO Modelo Iterativo Incremental
  19. 19. Proyectos en problemas ¡Aumentar el feedback! Feedback del cliente al equipo Feedback del equipo a la dirección Feedback sobre el producto al equipo Feedback hacia arriba y hacia abajo ¡No reducir el feedback! Añadir más procesos no suele ayudar
  20. 20. http://www.flickr.com/photos/nickbush/450151862/
  21. 21. Principios Lean 1.Eliminar los pérdidas 2.Aumentar el feedback 3.Decidir lo más tarde posible 4.Entregar rápidamente 5.Crear integridad 6.Potenciar el equipo 7.Ver todo el conjunto
  22. 22. Decidir lo más tarde posible La tecnología cambia rápidamente La situación del negocio evoluciona ¡El software cambiará!
  23. 23. Escalada del coste Dos tipos de cambios A gran escala Ejemplos: Idioma, usabilidad, seguridad, escalabilidad Reglas: Sólo unos pocos A alto nivel La mayor parte de los cambios ¡Que no se dispare el coste!
  24. 24. Decidir lo más tarde posible Compartir diseño parcialmente terminado Sentido de absorber cambios Tomar decisiones Evitar características extra basándose en hechos, no en Rápida capacidad de respuesta predicciones Momento de tomar decisiones
  25. 25. http://www.flickr.com/photos/nickbush/450151862/
  26. 26. Principios Lean 1.Eliminar los pérdidas 2.Aumentar el feedback 3.Decidir lo más tarde posible 4.Entregar rápidamente 5.Crear integridad 6.Potenciar el equipo 7.Ver todo el conjunto
  27. 27. Entregar rápidamente Las organizaciones más disciplinadas con las que responden a sus clientes De forma rápida De forma fiable Repetidamente Madurez del desarrollo de software Velocidad a la que de forma fiable y repetidamente se convierten los deseos del cliente a software desarrollado
  28. 28. Principios para la velocidad Basar la producción en la demanda No basarse en una planificación Trabajo fácil de entender Comunicación interna y compromiso Kanban Reuniones Usar lotes pequeños
  29. 29. Kanban (Fabricación) Imagen: Wikimedia Commons
  30. 30. Kanban (Software) Tarjetas o lista de caracterlísticas Los desarrolladores saben lo que hacer Pizarras Gráficos Reuniones diarias Estado Compromiso Necesidades
  31. 31. http://www.flickr.com/photos/nickbush/450151862/
  32. 32. Principios Lean 1.Eliminar los pérdidas 2.Aumentar el feedback 3.Decidir lo más tarde posible 4.Entregar rápidamente 5.Crear integridad 6.Potenciar el equipo 7.Ver todo el conjunto
  33. 33. Crear integridad Experiencia del cliente Integridad conceptual Componentes del sistema funciona como un todo Utilizamos la refactorización
  34. 34. Refactorización 1. Simplicidad • Objetivo de la mayor parte de los patrones 2. Claridad • Lenguaje común • Encapsulamiento • Código autodocumentado 3. Apropiado para el uso • Usabilidad • Rendimiento 4. ¡NO REPETIR! 5. No añadir cosas extra • No codificar antes de tiempo • No codificar tarde
  35. 35. http://www.flickr.com/photos/nickbush/450151862/
  36. 36. Principios Lean 1.Eliminar los pérdidas 2.Aumentar el feedback 3.Decidir lo más tarde posible 4.Entregar rápidamente 5.Crear integridad 6.Potenciar el equipo 7.Ver todo el conjunto
  37. 37. Potenciar el equipo 1982 - GM cierra la planta de Fremont, CA Baja productividad Alto absentismo 1983 - Vuelve a abrir como NUMMI (Toyota & GM) Misma plantilla 1985 Productividad y calidad duplicada
  38. 38. Compromiso 1. Equipo pequeño 2. Misión clara 3. A corto plazo 4. Capacidades necesarias • Expertos tecnología • Expertos dominio 5. Suficiente información para determinar la viabilidad 6. Proporcionar recursos necesarios 7. Libertad para tomar decisiones 8. Entonrno básico para una buena programación • Estándares de codificación, control de versiones, tests automáticos...
  39. 39. http://www.flickr.com/photos/nickbush/450151862/
  40. 40. Principios Lean 1.Eliminar los pérdidas 2.Aumentar el feedback 3.Decidir lo más tarde posible 4.Entregar rápidamente 5.Crear integridad 6.Potenciar el equipo 7.Ver todo el conjunto
  41. 41. Ver todo el conjunto Sistemas de software != Suma de sus partes Sistemas de software = partes + interacciones Defectos se acumulan en el proceso de desarrollo Importante tener bien definidas las relaciones Entender pensamiento Lean antes de aplicarlo Principios Lean al mismo tiempo + sentido común = base para el éxito
  42. 42. http://www.flickr.com/photos/nickbush/450151862/
  43. 43. Bibliografía POPPENDIECK, Mary; POPPENDIECK, Tom. Lean Software Development: An Agile Tooklit.1st Edition. New Jersey, USA: Addison Wesley, 2003. POPPENDIECK, Mary; POPPENDIECK, Tom. Implementing Lean Software Development: From Concept to Cash. 1st Edition. New Jersey, USA: Addison Wesley, 2007. Kanban [en línea]. Wikipedia, La enciclopedia libre, 2009 [fecha de consulta: 17 de enero de 2010]. Disponible en <http://es.wikipedia.org/wiki/Kanban>. Lean software development [en línea]. Wikipedia, La enciclopedia libre, 2009 [fecha de consulta: 16 y 17 de enero de 2010]. Disponible en <http:// es.wikipedia.org/wiki/Lean_software_development>. Toyotismo [en línea]. Wikipedia, La enciclopedia libre, 2009 [fecha de consulta: 16 de enero de 2010]. Disponible en <http://es.wikipedia.org/wiki/Toyotismo>. NUMMI [en línea]. Wikipedia, The Free Encyclopedia, 2010 [fecha de consulta: 17 de enero de 2010]. Disponible en <http://en.wikipedia.org/wiki/NUMMI>.
  44. 44. http://blog.dfm.com.es http://www.slideshare.net/davidfm @dave_dfm David Fernández, davidfm@linux.com

×