06/05/2019
Actualidad Informática – IISS3
FCEQyN – UNaM
Lic. Sergio Daniel Caballero
“Todo lo que no crea valor para el
cliente, es considerado un
desperdicio”
Taiichi Ohno conocido como el padre del sistema de producción Toyota
1
06/05/2019
Problemas de Desperdicio
Desconocimiento de expectativas del cliente. Generar entregables continuos,
tomar como medida de avance el software funcionando. Esto establece en forma
indirecta que la participación del cliente siempre está relacionada con avanzar.
Energía y duplicidad de trabajo. Cada individuo busque defectos desde un punto
de vista diferente, minimizando así el re-trabajo.
Errores de comunicación. Comunicación verbal como una forma eficiente de
obtener claridad.
Inventario incorrecto. A diferencia de metodologías que miden el avance de un
proyecto en base a actividades realizadas, en Ágil el avance se mide en términos de
“software funcionando”.
Errores en el servicio. Retroalimentación continua y detección de errores lo antes
posible.
Potencial humano no utilizado. Todos el RRHH es importantes en todas las
etapas de desarrollo los roles se eligen en forma grupal.
Introducción
El término Lean Manufacturing surge con los americanos Daniel T. Jones y
James P. Womack en 1990, basándose en la filosofía y práctica del Sistema de
Producción Toyota.
Luego Mary Poppendieck y Tom Poppendieck, en su libro Desarrollo de
Software Lean, adaptan los principios tradicionales de Lean, brindando así un
conjunto de 22 herramientas enfocadas en los principios fundamentales del
Desarrollo Ágil de Software.
2
06/05/2019
Desarrollo de Software Lean
Combinación de la filosofía, prácticas y principios
utilizados en los Procesos de Producción con Lean
+
Metodologías Ágiles de Desarrollo.
Manifiesto Agil
Principios de Agilidad
1- Satisfacción del cliente a través de desarrollo
rápido
2- Flexibilidad al cambio
3- Entrega continua de software
4- Entrega es la base del avance
Principios de Agilidad
5- Flujo continuo a través de un paso constante
7- Comunicación frente a frente
6- Cooperación continua entre participantes
8- Confianza en los participantes
9- Búsqueda de excelencia
10- Simplicidad
11- adaptación a circunstancias de cambio
12- auto-organización
Lic. Sergio Daniel Caballero
3
06/05/2019
Principios del Desarrollo de Software Lean
1. Eliminar los residuos
2. Amplificar el aprendizaje
3. Decidir lo más tarde posible
4. Entregar lo mas rápido posible
5. Dar poder al equipo
6. Construir integridad intrínseca
7. Ver el todo
1. Eliminar los Residuos
El primer paso para implementar el desarrollo Lean es aprender el principio
fundamental más básico que es la eliminación de los residuos.
El segundo paso, consiste en descubrir las fuentes de donde provienen los
desperdicios y eliminarlos.
El siguiente paso, es hacerlo de nuevo. Con el tiempo, las cosas que parecen
esenciales pueden ser gradualmente eliminadas.
Las Herramientas empleadas son:
1: Ver los desperdicios
2: Mapa de la cadena de valor
4
06/05/2019
1. Eliminar los Residuos
• Brindar un liderazgo técnico y de mercado - la organización puede ser
exitosa si produce productos innovadores y tecnológicamente avanzados,
pero es importante comprender lo que valoran nuestros clientes y conocer
la tecnología que se está usando.
• Crear solamente cosas de valor - debemos ser cuidados con todos los
procesos que sigamos.
• Escribir menos código - mientras más código se tenga, más pruebas se van
a necesitar, por lo que se necesitará más trabajo. Si escribiremos pruebas
para funcionalidad que no se necesita estamos perdiendo el tiempo.
2. Amplificar el Aprendizaje
Los orígenes del pensamiento Lean radican en la producción, pero son ampliamente
aplicables a otras disciplinas.
“El proceso de producción de una fábrica NO se pueden transplantar
directamente al desarrollo de software”. Es decir, generar un buen software no es
un proceso de producción, es un proceso de desarrollo continuo.
Las Herramientas empleadas son:
3: Feedback
4: Interacciones
5: Sincronización
6: Desarrollo basado en conjuntos
5
06/05/2019
2. Amplificar el Aprendizaje
• Crear equipos de diseño y construcción - el líder del equipo de desarrollo
tiene que escuchar a los miembros y hacerles preguntas inteligentes que
los incite a buscar respuestas y volver lo más pronto posible con los
problemas que surgen, o con las soluciones inventadas.
• Mantener una cultura de mejora continua - crear un ambiente en donde
las personas estén mejorando continuamente en lo que trabajan - deben
saber que no son y no deben ser perfectas - y que siempre tienen algún
área que pueden mejorar.
• Enseñar métodos de resolución de problemas - los equipos de desarrollo
deberían comportarse como pequeños centros de investigación,
estableciendo hipótesis y realizando varios experimentos rápidos para
verificar su validez.
3. Decidir lo más tarde posible
• La toma de decisiones es considerado uno de los procesos más difíciles, ya que
involucra la elección entre varias opciones.
• En el proceso de desarrollo de software esto puede llevar al éxito o al fracaso del
proyecto y peor aún, de las empresas involucradas.
• En las prácticas de desarrollo, retrasar las decisiones es valioso porque se
pueden tomar mejores decisiones cuando estas se basan en hechos y no en
especulaciones. Construir la capacidad de cambio en el sistema es una estrategia
clave para retrasar los compromisos en el desarrollo de un sistema complejo.
Las Herramientas empleadas son:
7: Opciones de pensamiento
8: El último momento responsable
9: Tomar decisiones
6
06/05/2019
3. Decidir lo más tarde posible
• Agendar las decisiones irreversibles hasta el último momento
responsable - debemos saber hacia donde queremos ir pero no
conocemos el camino del todo, lo vamos descubriendo día a día - lo más
importante es mantener la dirección correcta.
• Romper con las dependencias - los componentes deben estar lo más
desacoplados posible para que puedan implementarse en cualquier
orden.
• Mantener opciones - desarrollar múltiples soluciones para todas las
decisiones críticas y ver cuales funcionan mejor.
4. Entregar lo más rápido posible
En la era de la evolución constante de la tecnología, no es el más grande el que
sobrevive, lo es el más rápido
Cuanto antes se entregue el producto final sin defectos mayores, más pronto se
recibirá la retroalimentación y será incorporada en la siguiente iteración . Cuanto
más cortos sean estos ciclos, más se puede aprender. Con la velocidad, las decisiones
pueden ser retrasadas. Speed asegura el cumplimiento de las necesidades actuales
del cliente y no lo que necesitaban ayer. Esto les permite de retrasar la toma de
decisiones sobre lo que realmente quieren hasta que sepan más. Comprimir la
cadena de valor tanto como sea posible es una estrategia fundamental de lean para la
eliminación de residuos.
Las Herramientas empleadas son:
10: Sistemas de extracción
11: Teoria de colas
12: Costo del retraso
7
06/05/2019
4. Entregar lo más rápido posible
• Trabajar en bloques pequeños - reducir el tamaño del proyecto, acortar
los ciclos de entrega, estabilizar el ambiente de trabajo (escuchá lo que te
dice la velocidad), repetir lo bueno y erradicar las prácticas que crean
obstáculos.
• Limitar el trabajo a la capacidad - limitar la cola de tareas al mínimo
(una o dos iteraciones por delante es suficiente), no hay que tener miedo
al quitar elementos de la cola - rechazar cualquier trabajo hasta que se
haya vaciado un lugar en la cola.
• Enfocarse en el tiempo del ciclo, no en la utilización - agregar tareas
pequeñas a la cola que no puedan atascar al proceso por un tiempo largo -
reducir el tiempo del ciclo y tener pocas cosas para procesar en la cola
5. Dar poder al equipo
La participación de los desarrolladores en los detalles de las decisiones técnicas es fundamental
para lograr la excelencia. La gente en la primera línea combina el conocimiento de los detalles
mínimos con el poder de la mente de muchos. Cuando se está equipado con la experiencia
necesaria y se está guiado por un líder, ellos tomarán mejores decisiones técnicas y mejores
decisiones de proceso que nadie puede hacer por ellos.
En el desarrollo de software lean el mecanismo de empuje es acordar ofrecer versiones cada vez
más refinadas del software de trabajo a intervalos regulares. La notificación se produce a través
de informes visibles, reuniones diarias, integración frecuente y pruebas exhaustivas.
Las Herramientas empleadas son:
13:Autodeterminación
14: Motivación
15: Liderazgo
16: Experiencia
8
06/05/2019
5. Dar poder al equipo
• Capacitar a los líderes de equipo - darles a los líderes de equipo
entrenamiento, guías y espacio libre para implementar el pensamiento
Lean en su ambiente.
• Mover la responsabilidad y la toma de decisiones al nivel más bajo
posible - dejar que las personas piensen y decidan por su cuenta - ellos
saben mejor que nadie cómo implementar algoritmos difíciles y aplicar
tecnologías de última generación.
• Fomentar orgullo por el trabajo - fomentar la pasión y la participación del
equipo hacia lo que hacen y cómo lo hacen.
6. Construir integridad intrínseca
Se percibe que un sistema tiene integridad cuando el usuario piensa: “Si. Eso es
exactamente lo que quiero. ¡Alguien entro en mi mente!”.
El flujo de información debe ser constante en ambas direcciones, desde el cliente
hasta los desarrolladores y viceversa. Esto se logra mediante la comprensión del
dominio del problema y resolverlo al mismo tiempo, no de forma secuencial.
9
06/05/2019
6. Construir integridad intrínseca
El software necesita un nivel adicional de integridad.
Un software con integridad tiene:
- Arquitectura coherente
- Puntuaciones altas en cuanto a:
• Usabilidad
• Aptitud para el uso
• Mantenible
• Adaptable
• Extensible.
La investigación ha demostrado que la integridad proviene de un liderazgo inteligente, conocimientos
especializados pertinentes, la comunicación efectiva y una sana disciplina.
Las Herramientas empleadas son:
17: Integridad Percibida
18: Integridad conceptual
19: Refactorización
20: Pruebas
7. Ver el conjunto
La integridad en los sistemas complejos requiere de una amplia experiencia en diversas áreas.
Ver el conjunto es ampliar el punto de vista personal e intentar verlo todo. No sólo una
actividad, no sólo un proceso, no sólo un equipo, no sólo nuestro negocio, no sólo el
consumidor, no sólo la competencia, no sólo el mercado, no sólo eso. Todo eso y más. Implica
activar todas las capacidades de observación que nos sea posible activar. Para entender qué
impactos tienen las decisiones que tomamos y las acciones que llevamos adelante.
Esto puede servir, entre otros beneficios, para no maximizar métricas locales que vayan en
decrecimiento de las métricas globales. Es decir, supuestas optimizaciones puntuales que des-
optimizan al sistema.
Las Herramientas empleadas son:
21: Mediciones
22: Contratos
10