stringtranslate.com

Desarrollo iterativo e incremental

El desarrollo iterativo e incremental es cualquier combinación de diseño iterativo o método iterativo y modelo de construcción incremental para el desarrollo .

El uso del término comenzó en el desarrollo de software , habiéndose sugerido ampliamente una combinación de larga data de los dos términos iterativo e incremental [1] para grandes esfuerzos de desarrollo. Por ejemplo, el DOD-STD-2167 de 1985 [2] menciona (en la sección 4.1.2): "Durante el desarrollo de software, puede estar en progreso más de una iteración del ciclo de desarrollo de software al mismo tiempo". y "Este proceso puede describirse como un enfoque de 'adquisición evolutiva' o de 'construcción incremental'". En software, la relación entre iteraciones e incrementos está determinada por el proceso general de desarrollo de software .

Modelo de desarrollo iterativo

Descripción general

Una versión simplificada de un ciclo de iteración típico en la gestión ágil de proyectos

La idea básica detrás de este método es desarrollar un sistema a través de ciclos repetidos (iterativos) y en porciones más pequeñas a la vez (incrementales), permitiendo a los desarrolladores de software aprovechar lo aprendido durante el desarrollo de partes o versiones anteriores del sistema. El aprendizaje proviene tanto del desarrollo como del uso del sistema, donde los posibles pasos clave en el proceso comienzan con una implementación simple de un subconjunto de requisitos de software y mejoran iterativamente las versiones en evolución hasta que se implementa el sistema completo. En cada iteración , se realizan modificaciones de diseño y se agregan nuevas capacidades funcionales. [3]

El procedimiento en sí consta del paso de inicialización, el paso de iteración y la Lista de control del proyecto. El paso de inicialización crea una versión base del sistema. El objetivo de esta implementación inicial es crear un producto al que el usuario pueda reaccionar. Debe ofrecer una muestra de los aspectos clave del problema y proporcionar una solución que sea lo suficientemente simple para comprender e implementar fácilmente. Para guiar el proceso de iteración, se crea una lista de control del proyecto que contiene un registro de todas las tareas que deben realizarse. Incluye elementos como nuevas características a implementar y áreas de rediseño de la solución existente. La lista de control se revisa constantemente como resultado de la fase de análisis.

Una iteración implica rediseño e implementación, que deben ser simples, directas y modulares, apoyando el rediseño en esa etapa o como una tarea futura agregada a la lista de control del proyecto. [ se necesita aclaración ] El nivel de detalle del diseño no está dictado por el enfoque iterativo. En un proyecto iterativo liviano, el código puede representar la principal fuente de documentación del sistema; sin embargo, en un proyecto iterativo crítico se puede utilizar un documento de diseño de software formal. El análisis de una iteración se basa en los comentarios de los usuarios y en las funciones de análisis del programa disponibles. Implica análisis de la estructura, modularidad, usabilidad , confiabilidad, eficiencia y logro de objetivos. La lista de control del proyecto se modifica a la luz de los resultados del análisis.

Desarrollo iterativo.

Etapas

El desarrollo incremental divide la funcionalidad del sistema en incrementos (porciones). En cada incremento, se entrega una porción de funcionalidad a través del trabajo interdisciplinario , desde los requisitos hasta la implementación . El Proceso Unificado agrupa incrementos/iteraciones en fases: inicio, elaboración, construcción y transición.

Cada una de las fases se puede dividir en 1 o más iteraciones, que generalmente están delimitadas por tiempos en lugar de características. Los arquitectos y analistas trabajan una iteración por delante de los desarrolladores y evaluadores para mantener completa su cartera de productos de trabajo.

Uso/Historial

Muchos ejemplos de uso temprano se proporcionan en el artículo de Craig Larman y Victor Basili "Desarrollo iterativo e incremental: una breve historia", [4] siendo uno de los primeros el Proyecto Mercurio de la NASA de la década de 1960 .

Algunos de esos ingenieros de Mercury formaron más tarde una nueva división dentro de IBM , donde "otro ejemplo temprano y sorprendente de un gran éxito del IID [fue] el corazón mismo del software del transbordador espacial de la NASA: el principal sistema de software de aviónica, que [ellos] construyeron a partir de 1977. hasta 1980. El equipo aplicó IID en una serie de 17 iteraciones durante 31 meses, con un promedio de alrededor de ocho semanas por iteración. Su motivación para evitar el ciclo de vida en cascada fue que los requisitos del programa lanzadera cambiaron durante el proceso de desarrollo de software". [4]

Algunas organizaciones, como el Departamento de Defensa de EE. UU., prefieren metodologías iterativas, comenzando con MIL-STD-498 "que fomenta claramente la adquisición evolutiva y el IID".

La Instrucción 5000.2 del Departamento de Defensa publicada en 2000 estableció una clara preferencia por el IID:

Hay dos enfoques, evolutivo y de un solo paso [en cascada], para alcanzar la capacidad total. Se prefiere un enfoque evolutivo. … [En este] enfoque, la capacidad final entregada al usuario se divide en dos o más bloques, con incrementos crecientes de capacidad... el desarrollo de software debe seguir un proceso de desarrollo en espiral iterativo en el que las versiones de software en continua expansión se basan en el aprendizaje de desarrollo anterior. También se puede hacer por fases.

Las revisiones recientes de DoDI 5000.02 ya no se refieren al "desarrollo en espiral", sino que defienden el enfoque general como base para programas de adquisición/desarrollo intensivo de software. [5] Además, la Agencia de los Estados Unidos para el Desarrollo Internacional (USAID) también emplea un enfoque de desarrollo iterativo e incremental en su ciclo de programación para diseñar, monitorear, evaluar, aprender y adaptar proyectos de desarrollo internacional con un enfoque de gestión de proyectos que se centra en incorporar Estrategias de colaboración, aprendizaje y adaptación para iterar y adaptar la programación. [6]

Contraste con el desarrollo en cascada

La principal causa del fracaso de los proyectos de desarrollo de software es la elección del modelo, por lo que se debe hacer con mucho cuidado. [ vago ] [7]

Por ejemplo, el paradigma de desarrollo en cascada completa los productos de trabajo de cada disciplina en un solo paso antes de pasar a la siguiente disciplina en un paso posterior. El valor empresarial se entrega de una vez y solo al final del proyecto, mientras que retroceder [ se necesita aclaración ] es posible en un enfoque iterativo. Al comparar los dos enfoques, comienzan a surgir algunos patrones: [ cita necesaria ]

Directrices de implementación

Las pautas que impulsan la implementación y el análisis del software incluyen: [ cita necesaria ]

Uso en hardware y sistemas integrados.

Si bien el término desarrollo iterativo e incremental se inició en la industria del software, muchos esfuerzos de desarrollo de hardware y software integrado utilizan técnicas iterativas e incrementales.

Se pueden ver ejemplos de esto en varias industrias. Un sector que recientemente se ha visto sustancialmente afectado por este cambio de mentalidad ha sido la industria de los lanzamientos espaciales , con nuevas fuerzas competitivas sustanciales en acción generadas por una innovación tecnológica más rápida y amplia aportada por la formación de empresas privadas que se dedican a los lanzamientos espaciales. Estas empresas, como SpaceX [8] y Rocket Lab , [9] ahora ofrecen servicios comerciales de lanzamiento orbital en la última década, algo que sólo seis países habían hecho antes de hace una década [10] . Las nuevas innovaciones en los enfoques de desarrollo tecnológico, los precios y las ofertas de servicios, incluida la capacidad que existe solo desde 2016 de volar al espacio en una etapa de refuerzo (reutilizable) previamente volada , reducen aún más el precio de obtener acceso al espacio. [11] [8]

SpaceX ha sido explícito sobre su esfuerzo por llevar prácticas de diseño iterativo a la industria espacial y utiliza la técnica en naves espaciales, vehículos de lanzamiento, electrónica y aviónica, y operaciones operativas de hardware de vuelo. [12]

A medida que la industria ha comenzado a cambiar, otros competidores de lanzamiento también están comenzando a cambiar sus prácticas de desarrollo a largo plazo con agencias gubernamentales . Por ejemplo, el gran proveedor estadounidense de servicios de lanzamiento United Launch Alliance (ULA) inició en 2015 un proyecto de una década de duración para reestructurar su negocio de lanzamiento (reduciendo dos vehículos de lanzamiento a uno ) utilizando un enfoque iterativo e incremental para llegar a un vehículo parcialmente reutilizable. y un sistema de lanzamiento mucho más económico durante la próxima década. [13]

Ver también

Notas

  1. ^ Larman, Craig (junio de 2003). "Desarrollo iterativo e incremental: una breve historia" (PDF) . Computadora . 36 (6): 47–56. doi :10.1109/MC.2003.1204375. ISSN  0018-9162. S2CID  9240477. Estábamos realizando un desarrollo incremental ya en 1957, en Los Ángeles, bajo la dirección de Bernie Dimsdale [en ServiceBureau Corporation de IBM]. Era colega de John von Neumann , por lo que quizá lo aprendió allí, o lo asumió como algo totalmente natural. Recuerdo que Herb Jacobs (principalmente, aunque todos participamos) desarrolló una gran simulación para Motorola, donde la técnica utilizada fue, hasta donde yo sé...'
  2. ^ DOD-STD-2167 Desarrollo de software de sistemas de defensa (4 de junio de 1985) en eachspec.com
  3. ^ Farcic, Viktor (21 de enero de 2014). "Modelos de desarrollo de software: desarrollo iterativo e incremental". Conversaciones sobre tecnología .
  4. ^ ab Desarrollo iterativo e incremental: una breve historia, Craig Larman y Victor Basili, IEEE Computer, junio de 2003
  5. ^ Kendall, franco; Gilmore, J. Michael; Halvorsen, Terry (2 de febrero de 2017). «Funcionamiento del Sistema de Adquisiciones de Defensa» (PDF) . Emisiones del Departamento de Defensa . Subsecretario de Defensa para Adquisiciones, Tecnología y Logística. págs. 12-14. Archivado desde el original (PDF) el 9 de agosto de 2017 . Consultado el 9 de agosto de 2017 .
  6. ^ USAID. "Política operativa del ciclo del programa del Capítulo 201 de ADS" Archivado el 23 de octubre de 2019 en Wayback Machine . Consultado el 19 de abril de 2017.
  7. ^ Kudryashov, Alexey (29 de febrero de 2024). "Modelo incremental versus modelo en cascada en el desarrollo de software". Cyfrania: consultoría y desarrollo de software personalizado .
  8. ^ ab Belfiore, Michael (9 de diciembre de 2013). "El cohetero". La política exterior . Archivado desde el original el 10 de diciembre de 2013 . Consultado el 11 de noviembre de 2018 .
  9. ^ "¡Vista exclusiva al interior de la nueva megafábrica previamente secreta de Rocket Lab!". Astronauta cotidiano . 11 de octubre de 2018. Archivado desde el original el 12 de octubre de 2018 . Consultado el 11 de noviembre de 2018 .
  10. ^ Clark, Stephen (28 de septiembre de 2008). "Dulce éxito por fin para Falcon 1 Rocket". Vuelos espaciales ahora . Consultado el 11 de noviembre de 2018 . el primer cohete de combustible líquido desarrollado de forma privada que alcanza con éxito la órbita.
  11. ^ Berger, Eric (25 de junio de 2018). "El cohete ruso Proton, anterior al Apolo, finalmente dejará de volar. Los problemas técnicos y el auge de SpaceX son factores que contribuyen". arsTechica . Consultado el 26 de junio de 2018 . El rápido aumento de alternativas de bajo costo, como el cohete Falcon 9 de SpaceX, ha provocado que el número de lanzamientos de Proton en un año determinado disminuya de ocho aproximadamente a solo uno o dos.
  12. ^ Fernholz, Tim (21 de octubre de 2014). "Lo que hizo falta para que SpaceX de Elon Musk revolucionara a Boeing, superara a la NASA y se convirtiera en una empresa espacial seria". Cuarzo . Consultado el 11 de noviembre de 2018 . Pero SpaceX siempre se consideró una empresa de tecnología, y sus enfrentamientos con la NASA a menudo tomaron una forma que los desarrolladores de computadoras (o cualquiera familiarizado con el problemático lanzamiento de Healthcare.gov) reconocería como generacional. SpaceX siguió un proceso de diseño iterativo, mejorando continuamente los prototipos en respuesta a las pruebas. La gestión de productos tradicional exige un plan sólido ejecutado hasta su finalización, una receta para sobrecostos.
  13. ^ Gruss, Mike (24 de abril de 2015). "Evolución de un plan: los ejecutivos de la ULA explican la lógica detrás de las opciones de diseño de Vulcan". Noticias espaciales . Consultado el 25 de abril de 2015 . El anuncio de ULA del 13 de abril de que desarrollaría un cohete denominado Vulcan utilizando un enfoque incremental cuya primera iteración es esencialmente un Atlas 5 equipado con una nueva primera etapa.

Referencias