Juiner Solís García
Jean Carlos Gallego
Jose Antonio Montaño Riascos
Lewis David Riascos Riascos
INTRODUCCIÓN A LEAN
• Lean proviene de Lean Manufacturing y es un conjunto de principios para alcanzar la calidad, la velocidad y la alineación del
cliente. La programación Lean fue un concepto de industria japonesa adoptado por los Estados Unidos durante la década de
1980. Su objetivo principal es la mejora continua del producto en todos los niveles y etapas operacionales.
SE DEBIÓ QUITAR EL VIDEO POR RAZONES DE TAMAÑO DE ARCHIVO
¿QUE ES LEAN PROGRAMMING ?
• Lean Programing es una metodología que se enfoca en optimizar la eficiencia y minimizar el desperdicio en aplicaciones de
software durante su diseño y creación. Esta metodología se puede aplicar en toda la organización e involucrar a todas las
partes interesadas en el desarrollo y la entrega de una aplicación de software. Mary y Tom Poppendieck adaptaron los
principios de Lean Manufacturing para ajustarse al desarrollo de software.
SIETE PRINCIPIOS DE LA PROGRAMACIÓN LEAN.
• Lean Software Development incorpora siete principios, originalmente descritos en el libro Implementing Lean Software
Development: From Concept to Cash1, de Mary y Tom Poppendieck. Cada uno de estos siete principios contribuye a la
"inclinación" de un proceso de desarrollo de software.
1. Eliminar residuos
Los desechos son cualquier cosa que no aporte valor al producto final, incluidos los procesos
ineficientes, la documentación innecesaria y las características que no se utilizarán. Eliminar el
desperdicio es el principio rector en Lean Software Development.
2. Calidad de construcción
Significa prevenir defectos, en lugar de utilizar la integración y las pruebas posteriores a la
implementación para detectarlos después de los hechos.
3. Crear conocimiento
El conocimiento necesario para desarrollar un proyecto, incluidos los requisitos, la arquitectura y
las tecnologías, rara vez se conoce o comprende por completo al inicio del proyecto. Crear
conocimiento y registrarlo a lo largo del proyecto garantiza que el producto final esté en línea con
las expectativas del cliente.
4. Aplazar el compromiso
Tomar decisiones irreversibles en el último momento razonable permite tiempo para la creación de más conocimiento,
lo que resulta en mejores decisiones. Diferir el compromiso es una postergación positiva.
5. Entregar rápido
La entrega rápida pone el producto en frente del cliente rápidamente para que puedan proporcionar
retroalimentación. La entrega rápida se logra utilizando iteraciones cortas, que producen software en pequeños
incrementos al enfocarse en un número limitado de los requisitos de mayor prioridad.
6. Respetar a las personas
Respetar a las personas significa brindarle al recurso más importante del equipo de desarrollo, a sus miembros, la
libertad de encontrar la mejor manera de realizar una tarea, reconocer sus esfuerzos y respaldarlos cuando esos
esfuerzos no tengan éxito.
7. Optimizar todo
La optimización de todo el proceso de desarrollo genera mejores resultados que la optimización de los procesos
locales de forma aislada, lo que generalmente se realiza a expensas de otros procesos locales.
VENTAJAS
cv
• Eliminación de Residuos
• Entrega Oportuna
• Empoderamiento del equipo
DESVENTAJAS
• Dependencia al equipo
• El éxito dependen del equipo
• Toma decisiones tardías
LEAN VS. AGILE
• La comparación del desarrollo de software Lean y Agile revela que comparten muchas características, incluida la entrega
rápida de valor para el cliente, pero se diferencian de dos maneras significativas: alcance y enfoque. El alcance estrecho de
Agile aborda el desarrollo de software y se centra en la adaptabilidad para entregar de forma rápida. Lean mira la imagen más
grande, el contexto en el que ocurre el desarrollo, y entrega valor rápidamente al enfocarse en la eliminación de desechos.
Como resultado, son complementarios, y los procesos del mundo real a menudo se basan en ambos.
MENOS CÓDIGO
MENOS CÓDIGO
• Menos código no se trata de escribir menos software, se trata de implementar la funcionalidad requerida con una cantidad
mínima de código. Las grandes bases de código implican más tiempo de implementación, integración y depuración, así como
mayores costos de mantenimiento a largo plazo. Todos estos son trabajos sin valor agregado (es decir, desperdicio) cuando la
base del código contiene código innecesario o ineficiente.
• Todos los aspectos del desarrollo de software pueden afectar el tamaño de la base del código. El análisis de requisitos que da
como resultado características con poca probabilidad de uso y diseños genéricos y omnicomprensivos generan códigos
adicionales. La fluencia del alcance y las funciones innecesarias aumentan la cantidad de código. Incluso las pruebas pueden
generar código innecesario si el código bajo prueba no es necesario.
• Minimizar el tamaño de la base del código requiere dos acciones: identificar y eliminar el código innecesario, y escribir un
código eficiente. Minimizar el tamaño de la base de código no es diferente de un programa de ejercicio físico: una dieta para
eliminar el exceso y ejercicio para darle forma a lo que queda.
ELIMINAR EL CÓDIGO INNECESARIO
ELIMINAR EL CÓDIGO INNECESARIO
• Eliminar código innecesario significa identificar el código o las fuerzas que lo crean y eliminarlo.
• Adopte un enfoque feroz y minimalista. Cada bit de código agregado a la base de código debe ser justificable. Elimine los
requisitos excesivos, simplifique los diseños y elimine el creep del alcance.
• Reutilice el código y emplee bibliotecas para reducir la cantidad de código nuevo que se debe escribir.
• Priorice los requisitos para que los desarrolladores implementen características importantes primero. A medida que los
clientes ajustan las prioridades en el transcurso del desarrollo, impulsan el desarrollo de solo las funciones útiles; las
características no utilizadas nunca se implementan.
• Desarrollar solo para la iteración actual. Trabajar demasiado adelante conlleva el riesgo de realizar un trabajo que se
descartará a medida que los requisitos y el diseño cambien con el tiempo.
MEJORA LA EFICIENCIA DEL CÓDIGO
MEJORA LA EFICIENCIA DEL CÓDIGO
• La eficiencia del código no se refiere a la creación de código pequeño y compacto mediante el uso de trucos arcanos y accesos
directos. De hecho, lo opuesto es verdad; el código eficiente utiliza estándares de codificación y mejores prácticas.
• Use estándares de codificación para escribir código legible y comprensible. Use las mejores prácticas y técnicas comprobadas
que sean bien entendidas por otros desarrolladores.
• Desarrollar código flexible y extensible. Diseñe e implemente código con patrones de diseño, refactorización y diseño
emergente.
• El enfoque de "diseño grande al principio", o BDUF, puede llevar al sobrediseño y al código no utilizado. El enfoque opuesto, a
veces denominado "no lo va a necesitar" o YAGNI, crea solo lo que se necesita en este momento, pero puede generar diseños
frágiles y un código ineficiente. Un compromiso que solo crea lo que actualmente es necesario, pero lo modera con un
pensamiento para el futuro, es un mejor enfoque. El libro de Scott Bain Emergent Design2 describe este enfoque.