Este documento describe los principios del desarrollo de software esbelto. Explica que se trata de aplicar conceptos de manufactura esbelta al desarrollo de software para eliminar procesos innecesarios. Detalla siete principios clave como eliminar el desperdicio, construir con calidad, crear conocimiento, postergar compromisos, entregas rápidas, respetar a las personas y optimizar el todo. También discute algunos mitos comunes sobre el desarrollo de software.
Este documento describe los principios del desarrollo de software esbelto. Explica que se trata de aplicar conceptos de manufactura esbelta al desarrollo de software para eliminar procesos innecesarios. Detalla siete principios clave como eliminar el desperdicio, construir con calidad, crear conocimiento, postergar compromisos, entregas rápidas, respetar a las personas y optimizar el todo. También discute algunos mitos comunes sobre el desarrollo de software.
Este documento describe los principios del desarrollo de software esbelto. Explica que se trata de aplicar conceptos de manufactura esbelta al desarrollo de software para eliminar procesos innecesarios. Detalla siete principios clave como eliminar el desperdicio, construir con calidad, crear conocimiento, postergar compromisos, entregas rápidas, respetar a las personas y optimizar el todo. También discute algunos mitos comunes sobre el desarrollo de software.
Profesor de la Escuela de Ingeniería en Sistemas Computacionales. Muchas de las técnicas del área de producción de la Ingeniería Industrial se han migrado al desarrollo de software en muchos casos con buen éxito. Recientemente los conceptos de manufactura esbelta se han empezado a utilizar en el área del desarrollo de software. Los orígenes de la manufactura esbelta se remontan a la década de 1960 con el sistema de producción de Toyota denominado Kanban cuyas características principales eran la autonomía total, el realizar los procesos justo a tiempo lo cual implica no manejar almacén y no realizar inspecciones. Este esquema hizo que rápidamente Toyota se ubicará como la primera armadora de carros en los Estados Unidos. Todos estos conceptos se migraron al área de producción para crear el concepto de manufactura esbelta. Los principios esbeltos aplicados a la producción más importantes son los siguientes: 1. Los que hacen las cosas son los que saben 2. Se manejan lotes chicos (privilegia los desarrollos personalizados a los de masa) En lo referente al desarrollo de software esbelto (Lean Software Development) fueron Mary y Tom Poppendieck los primeros en transferir los principios de la manufactura esbelta al software. El desarrollo de software esbelto está muy casado con el concepto de desarrollo ágiles aunque son conceptos totalmente distintos. El desarrollo esbelto implica agilidad aunque la agilidad no necesariamente implica ser esbelto. Por ejemplo una persona que es esbelta generalmente es ágil, una persona que es ágil no necesariamente esbelta (hay muchas personas que aun siendo obesas desarrollan agilidad). En cuestión de desarrollo de software, la agilidad implica desarrollar cosas con destreza (no necesariamente rápido) mientras que el desarrollo de software esbelto de manera esencial consiste en eliminar procesos innecesarios. En una era donde ser esbelto está de moda , ¿se puede poner a dieta los procesos de desarrollo de software? Por raro que parezca, no existe una defnición formal de metodologías esbeltas simplemente se usan los principios del pensamiento ágil. Cada autor varía los principios manejados. A continuación se muestran algunos principios básicos y su explicación. Principio1: Eliminar el desperdicio Por desperdicio se entiende todo aquel proceso que no crea valor para los clientes y que en muchas ocasiones retrasa la entrega de proyectos. ¿Qué cosas no crean valor en el desarrollo de software? Lista de requerimientos, diseño de la aplicación, errores y sobre todo funcionalidad no usada. Se tiene el mito que la especifcación temprana del producto de software reduce el desperdicio. En la práctica se ha comprobado que infuye más la forma de desarrollar que en sí el mismo producto debido a la complejidad del software. Por ejemplo: el desarrollar un software a través del modelo de cascada en teoría debería evitar problemas en el desarrollo. En la práctica siempre se dan problemas dado que el software es un producto no tangible cuyas especifcaciones van cambiando frecuentemente. Principio 2: Construir con calidad La inspección es un proceso fundamental para lograr el aseguramiento de la calidad del software. Se recomienda guiar nuestro desarrollo a través pruebas automatizadas sobretodo del tipo unitarias y de aceptación. En este sentido se tiene el mito de que el trabajo del tester es encontrar errores cuando su rol principal es verifcar que el producto de software sea de calidad. Una de las metas fundamental del desarrollo esbelto de software es reducir el tamaño del código de manera considerable tomando en cuenta la premisa que a menor código menor probabilidad de error. En este tenor, se debe seguir el principio de mantener lo más simple el diseño del software así como utilizar técnicas más avanzadas como la refactorización de código. Principio 3: Crear conocimiento Dada la naturaleza del software no es posible conocer las necesidades de un producto de software desde el inicio y tampoco es posible el diseñar sin implementar dado que en general el diseño se va puliendo poco a poco. Se debe de ver el desarrollo de software como un proceso de aprendizaje y mejora tanto del producto como del negocio en sí. Bajo este contexto, se tiene la creencia que el manejar predicciones crean predictibilidad, este concepto es erroneo dado que el desarrollo de software es un proceso sociotecnológico que al verse involucrado por el capital intelectual no es predecible. Principio 4: Postergar compromiso En este apartado se deben de tomar decisiones que no sean reversibles y encontrar soluciones que se puedan invertir. En palabras más claras, se debe tratar que el proceso de desarrollo no cambie, se quede estandarizado pero que la solución pueda ser modifcada fácilmente. En este punto el mito más generalizado en el desarrollo de software es la idea de que la planifcación crea compromiso. En el desarrollo de software no se cumple tal cual por que los requerimientos cambian. Principio 5: Entregas rápidas El entregar versiones del software antes de que esté terminado al 100% hace que se mejore la calidad, que el costo sea más bajo, que haya menos cambios. Se tiene el mito que el apuro causa desperdicio y en la práctica se ha demostrado que en software entre más rápido se entreguen partes funcionales del software Principio 6: Respetar a las personas Se debe fomentar el liderazgo y el emprendurismo a todos los niveles del equipo de desarrollador de software. El control del software debe estar basado en los objetivos. Principio 7: Optimizar el todo Se debe tener esta premisa siempre pero se debe de recordar que el cliente siempre quiere las cosas para ayer y las pruebas siempre están sobrecargadas por falta de tiempo. En este sentido se debe optimizar cuando se pueda y realmente sea necesario. Se tiene el mito generalizado de que si se maneja optimización automáticamente se mejora la calidad del producto de software. En la práctica pocas mejoras son sustanciales y sólo hacen generar desperdicio. Mito: optimizar por descomposición Referencias Gabardini, J. (2009) Lean Software Development. Facultad de Ingeniería – UBA, Argentina Wikipedia Fundation (2009), Software Esbelto, http://www.wikipedia.org, consultado en Agosto 2009.