Lean software development

Trevor Parscal, jefe de edición en las oficinas de la Fundación Wikimedia en San Francisco. La imagen muestra de espaldas, a un varón caucásico, morocho, barbudo, con gafas, y con auriculares, delante de dos pantallas y un teclado.

La metodología de desarrollo de software lean (traducción aproximada en este contexto de lean: «austero», «firme», «seguro» o «eficiente») es una traducción de los principios y las prácticas de la forma de producir lean, hacia el área del desarrollo de software. Inicialmente, originado en el Sistema de Producción de Toyota y ahora, apoyado por una corriente que está surgiendo desde la comunidad Ágil. Este método ofrece todo un marco teórico sólido y basado en la experiencia, para las prácticas ágiles de gestión.

Origen

El término de desarrollo de software lean se utilizó por primera vez como título de una conferencia organizada por la iniciativa ESPRIT de la Unión Europea.[1]

Sin mantener relación alguna, Robert “Bob” Charette, planteó un año después el concepto de desarrollo de software lean como parte de su trabajo de investigación sobre mejores formas para administrar los riesgos en proyectos de software.

Más tarde, en mayo de 2003, Mary Poppendieck y Tom Poppendieck presentan su libro "Desarrollo de software Lean".[2]​ El libro presenta los tradicionales principios Lean en forma modificada, así como un conjunto de 22 instrumentos y herramientas y las comparaciones con otras prácticas ágiles. La participación de Mary y Tom en la comunidad del desarrollo ágil de software, incluyendo charlas en varias conferencias, ha dado lugar a dichos conceptos, que son más ampliamente aceptados en la comunidad de desarrollo ágil. Ejemplos de ello sería la utilización del término "lean-agile" por empresas de consultoría como NetObjectives Pace y CC, así como la inclusión de algunos de estos conceptos.

Los principios lean

El desarrollo lean puede resumirse en siete principios, similares a los principios de manufactura esbelta.

Eliminar los desperdicios

Todo lo que no añade valor al cliente se considera un desperdicio:

  • Código y funcionalidades innecesarias
  • Retraso en el proceso de desarrollo de software
  • Requisitos poco claros
  • Burocracia
  • Comunicación interna lenta

Con el fin de poder eliminar los desperdicios deberíamos ser capaces de reconocerlos y encontrarlos. Si alguna actividad podría ser excluida o el mismo resultado podría ser logrado sin ella, esta actividad es considerada un desperdicio. Los procesos y funcionalidades extra que no son usados por el cliente son desperdicios. Las esperas ocasionadas por otras actividades, equipos o procesos son desperdicio. Los defectos y la baja calidad son los desperdicios. Los gastos de gestión que no producen valor real son desperdicios. Se utiliza una técnica llamada value stream mapping (o mapa de flujo de valor) para distinguir y reconocer los desperdicios. El segundo paso consiste en señalar las fuentes de los desperdicios y eliminarlos. Lo mismo debe hacerse iterativamente hasta que incluso los procesos y procedimientos que parecían esenciales sean eliminados.

Amplificar el aprendizaje

El desarrollo de software es un proceso de aprendizaje continuo, a ello se le suman los retos de los equipos de desarrollo y el tamaño del producto final. El mejor enfoque para encarar una mejora en el ambiente de desarrollo de software es amplificar el aprendizaje. La acumulación de defectos debe evitarse ejecutando las pruebas tan pronto como el código está escrito en lugar de añadir más documentación o planificación detallada. Las distintas ideas podrían ser probadas escribiendo código e integrándolo. El proceso de recopilación de requisitos de usuarios podría simplificarse mediante la presentación de las pantallas de los usuarios finales para que estos puedan hacer sus aportes. El proceso de aprendizaje es acelerado con el uso de iteraciones cortas cada una de ellas acompañada de refactorización y sus pruebas de integración.

Incrementando la retroalimentación mediante reuniones cortas con los clientes se ayuda a determinar la fase actual de desarrollo y se ajustan los esfuerzos para introducir mejoras en el futuro. Durante las reuniones, tanto los clientes como el equipo de desarrollo, logran aprender sobre el alcance del problema y buscan posibles soluciones para un mejor desarrollo. Por lo tanto, los clientes comprenden mejor sus necesidades basándose en el resultado de los esfuerzos del desarrollo y los desarrolladores aprenden a satisfacer mejor estas necesidades.

Otra idea para ampliar el aprendizaje es a través de la integración del cliente en el ambiente de desarrollo para concentrar la comunicación en las soluciones futuras y no en las soluciones posibles, promoviendo así el nacimiento de la solución a través del diálogo con el cliente.

Decidir lo más tarde posible

El desarrollo de software está siempre asociado con cierto grado de incertidumbre, los mejores resultados se alcanzan con un enfoque basado en opciones por lo que se pueden retrasar las decisiones tanto como sea posible hasta que éstas se basen en hechos y no en suposiciones y pronósticos inciertos. Cuanto más complejo es un proyecto, más capacidad para el cambio debe incluirse en éste, así que debe permitirse el retraso de los compromisos importantes y cruciales. El enfoque iterativo promueve este principio: la capacidad de adaptarse a los cambios y corregir los errores, ya que un error podría ser muy costoso si se descubre después de la liberación del sistema.

Un enfoque de desarrollo de software ágil puede llevarles opciones rápidamente a los clientes, lo que implica, retrasar algunas decisiones cruciales hasta que los clientes hayan reconocido mejor sus necesidades. Esto también permite la adaptación tardía a los cambios y previene las costosas decisiones delimitadas por la tecnología. Esto no significa que no haya planificación involucrada en el proceso, por el contrario, las actividades de planificación deben centrarse en las diferentes opciones y se les adapta a la situación actual; así como, se deben clarificar las situaciones confusas estableciendo las pautas para una acción rápida. Evaluar las diferentes opciones es eficaz tan pronto como queda claro que ellos no son libres, pero proporcionando la flexibilidad necesaria para una tardía toma de decisiones.

Entregar tan rápido como sea posible

En la era de la rápida evolución tecnológica, no es el más grande quien sobrevive, sino el más rápido. Cuanto antes se entrega el producto final sin defectos considerables más pronto se pueden recibir comentarios y se incorporan en la siguiente iteración. Cuanto más cortas sean las iteraciones, mejor es el aprendizaje y la comunicación dentro del equipo. Sin velocidad, las decisiones no pueden ser postergadas. La velocidad asegura el cumplimiento de las necesidades actuales del cliente y no lo que éste requería para ayer. Esto les da la oportunidad de demorarse pensando lo que realmente necesitan, hasta que adquieran un mejor conocimiento. Los clientes valoran la entrega rápida de un producto de calidad.

La ideología de producción Just In Time podría aplicarse a programas de desarrollo, reconociendo sus necesidades específicas y el ambiente. Lo anterior se logra mediante la presentación de resultados , la necesidad de dejar que el equipo se organice y dividiendo las tareas para lograr el resultado necesario para una iteración específica.

Al principio, el cliente dispone los requisitos necesarios. Esto podría ser simplemente presentar los requisitos en pequeñas fichas o historias y los desarrolladores estimarán el tiempo necesario para la aplicación de cada tarjeta. Así, la organización del trabajo cambia en sistema autopropulsado: cada mañana durante una reunión inicial cada miembro del equipo evalúa lo que se ha hecho ayer, lo que hay que hacer hoy y mañana y pregunta por cualquier nueva entrada necesaria de parte de sus colegas o del cliente. Esto requiere la transparencia del proceso, que es también beneficioso para la comunicación del equipo.

Otra idea clave del Sistema de Desarrollo de Producto de la Toyota se establece a base de diseño. Si un nuevo sistema de frenos es necesario para un coche, por ejemplo, tres equipos pueden diseñar soluciones al mismo problema. Cada equipo aprende sobre el ambiente del problema y diseños de una posible solución. Cuando una solución se considera irrazonable, se desecha. Al final de un periodo, los diseños sobrevivientes se comparan y se elige uno, quizá con algunas modificaciones basadas en el aprendizaje de los demás, un gran ejemplo de compromiso aplazado hasta el último momento posible. Las decisiones en el software también podrían beneficiarse de esta práctica para minimizar el riesgo provocado por un solo gran diseño realizado por adelantado.

Capacitar al equipo

Ha habido una creencia tradicional en la mayoría de las empresas acerca de la toma de decisiones en la organización: los administradores dicen a los trabajadores cómo hacer su propio trabajo. En una técnica llamada Work-Out, los roles cambian: a los directivos se les enseña a escuchar a los desarrolladores, de manera que éstos puedan explicar mejor qué acciones podrían tomarse, así como ofrecer sugerencias para mejoras. Los directores de proyecto más experimentados simplemente han declarado la clave de éxito de los proyectos: "Buscar la buena gente y dejarles hacer su propio trabajo".

Otra creencia errónea ha sido considerar a las personas como recursos. Las personas podrían ser los recursos desde el punto de vista de una hoja de datos estadísticos, pero en el desarrollo de software, así como cualquier organización de negocios, las personas necesitan algo más que la lista de tareas y la seguridad de que no será alterada durante la realización de las tareas. Las personas necesitan motivación y un propósito superior para el cual trabajar: un objetivo alcanzable dentro de la realidad con la garantía de que el equipo puede elegir sus propios compromisos. Los desarrolladores deberían tener acceso a los clientes; el jefe de equipo debe proporcionar apoyo y ayuda en situaciones difíciles, así como asegurarse de que el escepticismo no arruine el espíritu de equipo.

Construir integridad intrínseca

El siempre exigente cliente debe tener una experiencia general del sistema. A esto se le llama percepción de integridad: ¿Cómo es publicitado, entregado, implementado y accedido? ¿Es su uso intuitivo? ¿Precio? ¿Hasta qué punto resuelve los problemas?. Integridad Conceptual significa que los componentes separados del sistema funcionan bien juntos, como en un todo, logrando equilibrio entre la flexibilidad, sostenibilidad, eficiencia y capacidad de respuesta. Esto podría lograrse mediante la comprensión del dominio del problema y resolviéndolo al mismo tiempo, no secuencialmente. La información necesaria es recibida por los pequeños lotes, no en una vasta cantidad y con una preferible comunicación cara a cara, sin ninguna documentación por escrito. El flujo de información debe ser constante en ambas direcciones, a partir del cliente a los desarrolladores y viceversa, evitando así la gran y estresante cantidad de información después de un largo periodo de desarrollo en el aislamiento.

Una de las maneras más saludables hacia una arquitectura integrante es la refactorización. Cuantas más funcionalidades se añaden a las del sistema, mas se pierde del código base para futuras mejoras. Así como en la Programación extrema (XP), la refactorización es mantener la sencillez, la claridad, la cantidad mínima de funcionalidades en el código. Las repeticiones en el código son signo de un mal diseño de código y deben evitarse. El completo y automatizado proceso de construcción debe ir acompañada de una suite completa y automatizada de pruebas, tanto para desarrolladores y clientes que tengan la misma versión, sincronización y semántica que el sistema actual. Al final, la integridad debe ser verificada con una prueba global, garantizando que el sistema hace lo que el cliente espera que haga. Las pruebas automatizadas también son consideradas como parte del proceso de producción y, por tanto, si no agregan valor deben considerarse residuos. Las pruebas automatizadas no deberían ser un objetivo, sino, un medio para un fin; específicamente para la reducción de defectos.

Véase todo el conjunto

Los sistemas de software hoy en día no son simplemente la suma de sus partes, sino también el producto de sus interacciones. Los defectos en el software tienden a acumularse durante el proceso de desarrollo por medio de la descomposición de las grandes tareas en pequeñas tareas y de la normalización de las diferentes etapas de desarrollo. Las causas reales de los defectos deben ser encontradas y eliminadas. Cuanto más grande sea el sistema, más serán las organizaciones que participan en su desarrollo y más partes son las desarrolladas por diferentes equipos y mayor es la importancia de tener bien definidas las relaciones entre los diferentes proveedores con el fin de producir una buena interacción entre los componentes del sistema.

La manera de pensar ofrecida por Lean tiene que ser bien entendida por todos los miembros de un proyecto antes de aplicarla de manera concreta en una situación de la vida real.

"Piensa en grande, actúa en pequeño, equivócate rápido; aprende con rapidez" estas consignas resumen la importancia de comprender el terreno y la idoneidad de implementar los principios Lean a lo largo del proceso de desarrollo de software. Sólo cuando todos los principios de Lean se aplican al mismo tiempo, combinado con un fuerte "sentido común" en relación con el ambiente de trabajo, hay una base para el éxito en el desarrollo de software.

Véase también

Notas y referencias

  • Poppendieck, M., Poppendieck, T., Lean software development: an agile toolkit for software development managers.

Referencias

  1. Stuttgart, Alemania, octubre de 1992
  2. B.), Poppendieck, Mary (Mary (2003). Lean software development : an agile toolkit. Addison-Wesley. ISBN 0321150783. OCLC 52423196. 

Enlaces externos

Read other articles:

2 Petrus 1Dua halaman yang memuat akhir Surat 1 Petrus dan permulaan Surat 2 Petrus pada Papirus 72, yang dibuat sekitar abad ke3/ke-4 M.KitabSurat 2 PetrusKategoriSurat-surat AmBagian Alkitab KristenPerjanjian BaruUrutan dalamKitab Kristen22← 1 Petrus 5 pasal 2 → 2 Petrus 1 (disingkat 2Ptr 1) adalah bagian pertama dari Surat Petrus yang Kedua dalam Perjanjian Baru di Alkitab Kristen.[1] Digubah oleh Simon Petrus, salah satu dari Keduabelas Rasul pertama Yesus Kristus.[...

 

Pemilihan umum Bupati Morowali 20242018202927 November 2024Kandidat Peta persebaran suara Peta Provinsi Sulawesi Tengah yang menyoroti Kabupaten Morowali Bupati petahanaRachmansyah Ismail (Penjabat) Bupati & Wakil Bupati terpilih Belum diketahui Pemilihan umum Bupati Morowali 2024 dilaksanakan pada 27 November 2024 untuk memilih Bupati Morowali periode 2024–2029.[1] Pemilihan Bupati Morowali tahun tersebut akan diselenggarakan setelah Pemilihan umum Presiden Indonesia 2024 (Pil...

 

Gallic fortified town and capital of the Aedui Not to be confused with Bibrax, the oppidum of the Remi. BibracteWalls of BibracteLocation within FranceAlternative nameMont BeuvrayLocationNear Autun, FranceRegionGaulCoordinates46°55′23″N 4°02′15″E / 46.92306°N 4.03750°E / 46.92306; 4.03750TypeOppidumHistoryPeriodsIron Age EuropeCulturesAedui Plan of the oppidum of Bibracte Bibracte, a Gallic oppidum (fortified settlement), was the capital of the Aedui a...

Winnie-the-Pooh Winnie the Pooh (versi 1926)PengarangA. A. MilneIlustratorE. H. ShepardNegaraBritania RayaBahasaInggrisPenerbitMethuen & Co. Ltd. (London)Tanggal terbit14 Oktober 1926 Winnie-the-Pooh atau umumnya disingkat menjadi Pooh Bear dan pernah disebut dengan Edward Bear, adalah karakter beruang fiksi yang diciptakan oleh A.A. Milne. Buku pertama mengenai karakter ini adalah Winnie-the-Pooh (1926), lalu diikuti dengan The House at Pooh Corner (1928). Pada 1997, Perserikatan Ba...

 

His ExcellencyMarcus Stephen Presiden NauruMasa jabatan19 Desember 2007 – 10 November 2011PendahuluLudwig ScottyPenggantiFreddie Pitcher Informasi pribadiLahir1 Oktober 1969 (umur 54)Sunting kotak info • L • B Marcus Stephen (lahir 1 Oktober 1969[1]) adalah Presiden Republik Nauru saat ini, menempati kantornya pada Desember 2007. Ia juga bekas seorang atlet angkat beban terkenal, pemenang tujuh medali emas dan lima perak di Commonwealth Games,[2] ...

 

Indian actor (1950–2017) Tom AlterAlter in 2016BornThomas Beach Alter(1950-06-22)22 June 1950Mussoorie, Uttar Pradesh (now Uttarakhand), IndiaDied29 September 2017(2017-09-29) (aged 67)Mumbai, Maharashtra, IndiaOccupationActorYears active1975–2017Spouse Carol Evans ​(m. 1977)​Children2RelativesMartha Chen (sister)Stephen Alter (first cousin) Thomas Beach Alter (22 June 1950 – 29 September 2017)[1] was an Indian actor.[2] He was best...

Ayub 26Kitab Ayub lengkap pada Kodeks Leningrad, dibuat tahun 1008.KitabKitab AyubKategoriKetuvimBagian Alkitab KristenPerjanjian LamaUrutan dalamKitab Kristen18← pasal 25 pasal 27 → Ayub 26 (disingkat Ayb 26) adalah bagian dari Kitab Ayub di Alkitab Ibrani dan Perjanjian Lama dalam Alkitab Kristen. Kitab ini menceritakan riwayat Ayub, seorang yang saleh, dan pencobaan yang dialaminya.[1][2] Teks Naskah sumber utama: Masoretik, Septuaginta dan Naskah Laut Mati. Pas...

 

Due to personal issues, Zackmann08 will be away from Wikipedia for an undefined period of time. User Talk Awards Sources Contacts Notes Templates/Tools Bookmarks My Sandbox vte This is Zackmann08's talk page, where you can send him messages and comments. Put new text under old text. Click here to start a new topic. New to Wikipedia? Welcome! Learn to edit; get help. Assume good faith Be polite and avoid personal attacks Be welcoming to newcomers Seek dispute resolution if needed Archives: 1,...

 

List of events ← 1863 1862 1861 1864 in Japan → 1865 1866 1867 Decades: 1840s 1850s 1860s 1870s 1880s See also:Other events of 1864History of Japan  • Timeline  • Years Events from the year 1864 in Japan. Incumbents Emperor: Kōmei Events August 20 - Kinmon incident Births October 8 – Kikunae Ikeda, chemist (d. 1936)[1] Deaths vteYears in Japan (538–present)Asuka period (538–710) 646 660 684 703 Nara period (710–794) 721 729 737 ...

Village in Blagoevgrad Province, BulgariaZheleznitsaVillageCountry BulgariaProvinceBlagoevgrad ProvinceMunicipalitySimitli MunicipalityTime zoneUTC+2 (EET) • Summer (DST)UTC+3 (EEST) Zheleznitsa is a village in Simitli Municipality, in Blagoevgrad Province, in southwestern Bulgaria.[1] The Zheleznitsa Tunnel on the Struma motorway, Bulgaria's longest road tunnel, bypasses the village. References ^ Guide Bulgaria, Accessed May 5, 2010 vte Simitli MunicipalityCapital: S...

 

البكيرية الأسماء السابقة نادي الأمل (1962 - 2018) الألوان الأبيض والبنفسجي تأسس عام 1382 هـ - 1962 الملعب ملعب نادي البكيرية البكيرية(السعة: 5000) البلد السعودية  الدوري دوري الدرجة الأولى السعودي الإدارة المالك وزارة الرياضة رئيس مجلس الإدارة عبد الرحمن الحضيف المدرب دراغان تادي�...

 

2nd century ruler of the Indo-Parthian Kingdom of Arachosia For the Parthian prince, see Pacorus. Coin of Pakores.Obv Bust of king with Greek legend ΒΑΣΙΛΕΥΣ (ΒΑΣΙΛΕΩΝ) ΝΕΓΑ ΠΑΚΟΡΗΣ.Rev Nike standing right, holding a victory wreath. Kharoshthi legend. Pacores or Pakores (Greek: ΠΑΚΟΡΗϹ Pakorēs; Kharosthi: 𐨤𐨐𐨂𐨪 Pa-ku-ra, Pakura;[1] Aramaic: 𐡐𐡊𐡅𐡓𐡉 pkwry)[2] (100–135 AD) was a king who ruled the remnants of the Indo-...

United States legal code section This article is part of a series on theUnited States Code United States Code Title 1 - General Provisions Title 2 - The Congress Title 3 - The President Title 4 - Flag and Seal, Seat of Government, and the States Title 5 - Government Organization and Employees Title 6 - Domestic Security Title 7 - Agriculture Title 8 - Aliens and Nationality Title 9 - Arbitration Title 10 - Armed Forces Title 11 - Bankruptcy Title 12 - Banks and Banking Title 13 - Census Title...

 

此條目可参照阿拉伯語維基百科和英語維基百科相應條目来扩充。 (2022年6月15日)若您熟悉来源语言和主题,请协助参考外语维基百科扩充条目。请勿直接提交机械翻译,也不要翻译不可靠、低品质内容。依版权协议,译文需在编辑摘要注明来源,或于讨论页顶部标记{{Translated page}}标签。   「胡塞」重定向至此。关于该组织创始人,请见「侯赛因·胡塞」。 安拉的辅�...

 

Réseau hydrographique de l'Allier Localisation du département de l'Allier sur la carte des bassins hydrographiques français. Géographie Pays France Région Auvergne-Rhône-Alpes Département Allier Bassins Bassins hydrographiques Loire-Bretagne Sous-bassins DCE Loire moyenne Allier - Loire amont Caractéristiques Principaux cours d'eau la Loire, l'Allier, la Sauldre, l'Yèvre, l'Allier, la Sioule, l'Aumance, la Besbre, l'Acolin, le Cher, l'Arnon. Longueur totale 6 000 km Cours eau > 5...

日本 > 東京都 > 新宿区 > 内藤町 内藤町 町丁 新宿御苑 北緯35度41分10秒 東経139度42分39秒 / 北緯35.686206度 東経139.710953度 / 35.686206; 139.710953国 日本都道府県  東京特別区 新宿区地域 四谷地域 人口情報(2023年(令和5年)1月1日現在[1]) 人口 1,292 人 世帯数 691 世帯 面積([2])  0.479298247 km²人口密度 2695.61 人/km&...

 

Questa voce o sezione sull'argomento missioni spaziali non cita le fonti necessarie o quelle presenti sono insufficienti. Puoi migliorare questa voce aggiungendo citazioni da fonti attendibili secondo le linee guida sull'uso delle fonti. Segui i suggerimenti del progetto di riferimento. Sojuz 12Emblema missione Dati della missioneOperatoreProgramma spaziale sovietico NSSDC ID1973-067A SCN06836 Nome veicoloSojuz 7K-T 11F615A8 (numero di serie 37) VettoreLanciatore Sojuz 11A511 Codice chi...

 

On converting relations to functions of several real variables Part of a series of articles aboutCalculus ∫ a b f ′ ( t ) d t = f ( b ) − f ( a ) {\displaystyle \int _{a}^{b}f'(t)\,dt=f(b)-f(a)} Fundamental theorem Limits Continuity Rolle's theorem Mean value theorem Inverse function theorem Differential Definitions Derivative (generalizations) Differential infinitesimal of a function total Concepts Differentiation notation Second derivative Implicit differentiation ...

Hanna-BarberaLogo L'ex edificio della Hanna-Barbera al 3400 Cahuenga Blvd. West a Hollywood, California, visto in una fotografia del 2007. La piccola struttura gialla (in basso a destra) era originariamente il posto di guardia per l'ingresso della proprietà ad est dell'edificio. Stato Stati Uniti Forma societariaSussidiaria Fondazione7 luglio 1957 a Los Angeles Fondata daWilliam HannaJoseph BarberaGeorge Sidney Chiusura2001 (assorbita dalla Warner Bros. Animation a seguito della mor...

 

Paris-Nice 1996GénéralitésCourse 54e Paris-NiceÉtapes 9Date 10 - 17 mars 1996Distance 1 325 kmPays traversé(s) FranceLieu de départ ChâteaurouxLieu d'arrivée NicePartants 152Coureurs au départ 152Coureurs à l'arrivée 108Vitesse moyenne 38,438 km/hRésultatsVainqueur Laurent JalabertDeuxième Lance ArmstrongTroisième Chris BoardmanClassement par points Laurent JalabertMeilleur grimpeur Laurent BrochardMeilleure équipe MotorolaParis-Nice 1995Paris-Nice 1997modifier - modifier le co...