Modelos Ágiles de desarrollo software para grandes Sistemas de Defensa

Página creada Beltran Roja
 
SEGUIR LEYENDO
Modelos Ágiles de desarrollo software para grandes Sistemas de Defensa
Modelos Ágiles de desarrollo software para
          grandes Sistemas de Defensa

                       Francisco José López García

                               fjlopezg@gmail.com

                                     Julio 2021

                                     Resumen
         Como continuación del artículo sobre los modelos de reutilización
     del software para grandes sistemas de defensa[1], en este artículo se
     abordan los métodos llamados ágiles aplicados a los mismos. Se ofre-
     ce una visión histórica de los métodos iterativos de desarrollo softwa-
     re, precursores de la agilidad, mostrándose los conceptos que han ido
     evolucionando desde el modelo en espiral hasta llegar al Scrum. Ade-
     más, se identifican los principios y valores de la agilidad, y cómo estos
     se emplean para la reducción de los tiempos de desarrollo, integra-
     ción, pruebas y despliegue. Finalmente se realiza un breve repaso de
     los métodos actuales aplicados a grandes sistemas, así como otras
     alternativas de desarrollo.
         Los métodos ágiles nacieron de la creencia de que una aproxima-
     ción basada en la realidad humana, el aprendizaje, la innovación y el
     cambio producirían mejores resultados que los métodos tradicionales.

Reseña histórica. Desarrollo iterativo e incremental.
    El desarrollo iterativo e incremental es la piedra angular de los métodos ágiles,
donde aspectos como los incrementos de capacidades, la duración de la iteracio-
nes, el número de ellas o la realimentación de los usuarios, son aspectos clave
que se contraponen a las metodologías secuenciales de un solo paso, como lo
es el modelo en cascada (waterfall) .
    Las primeras referencias históricas que tenemos están relacionadas con el
programa Mercury de la NASA y con desarrollos de IBM en la “Federal System
Division (FDS)” a principios de 1960. Para este programa ya se emplearon ite-
raciones muy cortas (la mitad de una jornada), revisiones técnicas de todos los
cambios y redacción de pruebas antes de cada micro-incremento. [2]
    El mando y control para el primer submarino americano Trident (1972), con
más de un millón de líneas de código, se realizó con técnicas incrementales.

                                         1
Modelos Ágiles de desarrollo software para grandes Sistemas de Defensa
V.1 n.2

O´Neill, que fue el jefe del proyecto, planeó y ejecutó esta técnica a la que luego
llamó “Integration engineering”, organizando el proyecto en cuatro incrementos
de seis meses cada uno. [3]
    También, en 1972 el proyecto de defensa balística para el ejército de tierra
americano, con un presupuesto de 100 millones de dólares, se desarrolló en cinco
iteraciones.
    Otro megaproyecto coetáneo de IBM FSD, para la marina americana, es el
LAMPS (Light Airbone Multipurpose System), con el cual un buque extiende su
esfera de influencia mediante el uso de un helicóptero. Un proyecto de cuatro
años, desarrollado en 45 iteraciones, empleando a 200 personas-año y que inte-
gra siete millones de sentencias en ocho procesadores distintos.[4]
    Un programa de éxito empleando estas técnicas, y realizado también con
la colaboración de IBM FSD, fue el software del transbordador espacial (Space
Shuttle) de la NASA. Desarrollado a partir de octubre de 1977 con 17 liberacio-
nes en 31 meses. En diciembre de 1978 el software estaba completo después
de nueve liberaciones, pero fueron necesarias 8 iteraciones más para incluir los
cambios de requisitos y actividades de corrección de discrepancias inherentes a
un programa grande, complejo y desarrollado por primera vez.[5]
    A nivel académico, ya en 1975 Vic Basili and Joe Turner publican el artícu-
lo “Iterative Enhancement: A Practical Technique for Software Development ” [6],
donde se apuesta por el desarrollo del software de forma incremental. Se promue-
ve empezar con una implementación de un conjunto simple de requisitos, y de
forma iterativa ir creciendo y evolucionando el sistema con versiones sucesivas
hasta completarlo.
    En 1985 Barry Boehm´s publica el modelo en espiral para el desarrollo softwa-
re, basado en su experiencia en la empresa TRW [7]. Con este modelo se prima
el análisis de riesgos, frente a una aproximación orientada a la documentación.
El modelo en espiral necesitaba ser parti-
cularizado para cada proyecto por perso-
nal experto en las áreas de contrato, es-
pecificación, hitos, revisión, planificación,
control y riesgos. Posteriormente en el año
2000 el propio Boehm aclaró el modelo en
el “Spiral Development Workshop”[8], don-
de se remarcan dos ideas fundamentales:
(1) se sigue una aproximación cíclica me-
diante la cual el sistema crece de forma
incremental mientras decrece el nivel de
riesgo, y (2) se establecen unos puntos de
control mediante los cuales nos asegura-
mos que las partes interesadas están sa-           Figura 1 Modelo en espiral [7].
tisfechas con la solución encontrada.
    En la segunda mitad de los años 90 el empleo del desarrollo incremental e
iterativo se populariza, apareciendo muchos métodos de este tipo. Este cambio
de mentalidad viene provocado por la gran cantidad de proyectos fracasados que
han seguido el estándar DoD-Std-2167 (1985) o la 2167A (1988),a pesar de ser el
estándar empleado durante años por los programas de defensa. . La Mil-Std-498

                                       2/13
Modelos Ágiles de desarrollo software para grandes Sistemas de Defensa
V.1 n.2

de 1994, que sustituye a las anteriores, ya describe que el desarrollo software
puede realizarse en uno o más incrementos, y para cada versión del software se
pueden superponer las distintas fases de forma iterativa. Finalmente, en el año
2000 la 498 fue reemplazada por el estándar DoD 5000.2, el cual recomienda
adoptar modelos evolutivos de adquisición o compra, así como técnicas iterativas
que expandan continuamente las capacidades de las versiones software.
    Los métodos RAD (Rapid Application Development) fueron formalizados en
1991 por J. Martin [9] para distinguirlos de los métodos tradicionales en cascada.
Los métodos RAD se diseñan para un desarrollo más rápido y con más calidad.
Se basan en cuatro aspectos fundamentales: herramientas, metodología, per-
sonas y gestión de estas (management). Un ciclo de cuatro fases consiste en
la realización de la planificación de los requisitos, el diseño del usuario, la
construcción y la transición. En RAD se realizan sucesivas iteraciones, refina-
mientos y movimientos desde el prototipo al sistema final.
    El método Rational Unified Process (RUP), basado en el anterior, es el de-
sarrollado por la empresa Rational Software (IBM), el cual fue descrito por Ivar
Jacobson, Grady Booch y James Rumbaugh en 1999. [10]
                                            En la figura 2 se muestran las dos di-
                                        mensiones del método[11]. El eje horizon-
                                        tal se aprecian los aspectos dinámicos del
                                        proceso del ciclo de vida divididos en cua-
                                        tro fases: inicio, elaboración, construc-
                                        ción y transición, dentro de las cuales se
                                        realizan varias iteraciones en número va-
                                        riable según el proyecto. El eje vertical re-
                                        presenta las disciplinas tales como requisi-
                                        tos, análisis, diseño e implementación. La
                                        figura muestra como las iteraciones están
             Figura 2 RUP
                                        presentes en todas las disciplinas, sin em-
                                        bargo, el énfasis varía en el tiempo.
    RUP identifica 6 “buenas prácticas”, con las que los equipos de desarrollo
software trabajan de forma efectiva. (1) Gestión de requisitos, utilizando la nota-
ción de casos de uso y escenarios para representar los requisitos. (2) Desarrollo
software iterativo, con hitos especificados y en donde las actividades se repiten,
pero con distinto énfasis dependiendo de la fase del proyecto. (3) Desarrollo ba-
sado en componentes, donde el sistema se divide, en interfaces bien definidas.
(4) Modelado visual, usando UML (Unified Modeling Language) como lenguaje
visual para especificar, construir y documentar el software. (5) Verificación con-
tinua de la calidad, especialmente al final de cada iteración. (6) Gestión de los
cambios, mediante la cual se coordinan las acciones de cambio, en cualquier
fase del proceso ..

Metodologías ágiles
   En 1999, Jeff Sutherland y otros, describen el método “SCRUM“ que utiliza
periodos de tiempo de 30 días por cada iteración [12]. El método toma su inspira-
ción de la aproximación japonesa empleada en los años ochenta para productos

                                        3/13
Modelos Ágiles de desarrollo software para grandes Sistemas de Defensa
V.1 n.2

de Honda, Canon y Fujitsu y descrita por Hirotaka Takeuchi y Ikujiro Nonaka como
una aproximación ágil. [13].
    Asimismo, sobre finales de los noventa Kent Beck introduce el concepto de
Programación Extrema (Extreme Programming).[14]
    Los principios de agilidad están muy presentes en la programación extrema
ya que ésta se basa en una planificación abierta y flexible, el desarrollo iterati-
vo e incremental, el equipo humano como fuente principal del éxito, el software
funcionando por encima de la documentación, la interacción continua del cliente
con los desarrolladores, así como en la respuesta rápida y eficaz ante posibles
cambios.
    Además, la programación extrema se desarrolla teniendo en cuenta cinco va-
lores fundamentales: (1) Comunicación, entre los miembros del equipo y con los
clientes, rompiendo las barreras entre negocio y desarrollo. (2) Simplicidad, rea-
lizando una programación lo más simple posible, simplificando los diseños y re-
factorizando o rehaciendo el código conforme va creciendo. (3) Realimentación
(Feedback), integrando al cliente en el proyecto, realizando ciclos muy cortos de
desarrollo y mostrando continuamente los resultados. (4) Respeto, de tal forma
que el equipo pueda trabajar de forma eficiente y ofrecer un buen rendimiento.
(5) Valentía, diseñar y programar para hoy, no para el mañana, reconociendo los
errores tan pronto como se detecten.
    En febrero de 2001, diecisiete impulsores de metodologías “ligeras” para el
desarrollo de software convocados por Kent Beck, se reunieron en Snowbird,
(Utah) para tratar sobre técnicas de desarrollo software. En la reunión se acuñó
el término “Métodos Ágiles” como alternativa a las metodologías formales que se
consideraban excesivamente “pesadas”. Los principios quedaron plasmados en
lo que se ha llamado el Manifiesto Ágil [15]

                            Figura 3 Manifiesto Ágil[15]

                                       4/13
Modelos Ágiles de desarrollo software para grandes Sistemas de Defensa
V.1 n.2

Principios del Manifiesto Ágil
   Tras los cuatro valores descritos, los firmantes redactaron los principios que
de ellos se derivan[16]:

   • Nuestra principal prioridad es satisfacer al cliente a través de la entre-
     ga temprana y continua de software con valor. Software funcionando y
     útil en pocas semanas.

   • Aceptamos que los requisitos cambien, incluso en etapas tardías del
     desarrollo. Los procesos ágiles aprovechan el cambio para proporcio-
     nar ventaja competitiva al cliente. Los cambios han de asumirse como
     parte del proceso de maduración.

   • Entregamos software funcional frecuentemente, entre dos semanas y
     dos meses, con preferencia al período de tiempo más corto posible. El
     cliente se motiva viendo el software funcionando.

   • Los responsables del negocio y los desarrolladores trabajamos juntos
     de forma cotidiana durante todo el proyecto. La intervención temprana
     de los usuarios puede reducir el costo y el tiempo.

   • Los proyectos se desarrollan en torno a individuos motivados. Hay
     que darles el entorno y el apoyo que necesitan, y confiarles la ejecu-
     ción del trabajo. El ánimo, sentido de pertenencia y disposición del equipo,
     son fundamentales en el proyecto software.

   • El método más eficiente y efectivo de comunicar información al equipo
     de desarrollo y entre sus miembros es la conversación cara a cara.
     Establecer un buen sistema de comunicación.

   • El software funcionando es la medida principal de progreso. El usuario
     da realimentación conforme va utilizando el software aprobado..

   • Los procesos ágiles promueven el desarrollo sostenido. Los promoto-
     res, desarrolladores y usuarios debemos mantener un ritmo constante
     de forma indefinida. Mantener ciclos sostenidos y constantes durante el
     desarrollo.

   • La atención continua a la excelencia técnica y al buen diseño mejora la
     agilidad. La calidad vista desde el punto de vista del equipo y del usuario.

   • La simplicidad, o el arte de maximizar la cantidad de trabajo no reali-
     zado, es esencial. El equipo ha de centrarse en lo importante.

   • Las mejores arquitecturas, requisitos y diseños emergen de equipos
     auto-organizados. Principio de responsabilidad colectiva.

   • A intervalos regulares, el equipo reflexiona sobre cómo ser más efecti-
     vo para, a continuación, ajustar y perfeccionar su comportamiento en
     consecuencia. Estudiar el cambio para mejorar.

                                      5/13
V.1 n.2

SCRUM
     Scrum es uno de los métodos ági-
les que sigue los principios anteriores,
es en la actualidad uno de los más po-
pulares y mayoritariamente implanta-
do en muchas organizaciones. Así se
muestra en “14th Annual State of Agi-
le Report” [17] donde se recoge la opi-
nión de más de 40.000 ejecutivos, pro-
fesionales y consultores que han par-
ticipado respondiendo a una encuesta
sobre la implantación de “Agile” desde
su inicio.
                                           Figura 4 Metodologías Ágiles usadas [18]
     En Scrum, tal y como se muestra
en la figura 5, el desarrollo se estruc-
tura en iteraciones o ciclos de trabajo llamados Sprints[18]. Cada uno de ellos
dura un tiempo fijo que dependiendo del proyecto se puede establecer entre una
y cuatro semanas.
     El modelo Scrum está diseñado para optimizar la flexibilidad, la creatividad y
la productividad, definiéndose los siguientes tres roles:
   • El propietario del producto (Product Owner), que se asegura de maximi-
     zar el valor del producto y para ello gestiona la pila de producto (Product
     Backloog) o fuente de requisitos/expectativas del producto, ordenándola,
     optimizándola y haciendo que está sea entendible por el equipo.

   • El equipo de desarrollo (Development Team), que es el encargado de rea-
     lizar el trabajo para entregar un incremento de producto terminado en cada
     Sprint. El equipo se autogestiona, es multifuncional, y es el responsable
     en su conjunto, de la entrega. El equipo está formado por 7 ± 2 personas
     y ha de incluir perfiles con conocimientos en análisis, desarrollo, pruebas,
     interfaces, bases de datos, arquitectura y otros.

   • El facilitador (Scrum Master), que es el responsable de que el equipo tra-
     baje ajustándose a la teoría, realizando la función de interface entre las
     personas externas y el equipo de desarrollo.
Se utilizan los siguientes artefactos:
   • La pila de producto, donde se enumeran todas las características, fun-
     cionalidades, requisitos, mejoras y correcciones, ordenados por orden de
     prioridad, a realizar en las siguientes entregas.

   • La lista de tareas del sprint (Sprint Backlog) que es el subconjunto se-
     leccionado de elementos de la pila de producto que se desarrollarán en el
     sprint actual, junto con su plan de realización.

   • El incremento (Increment), la suma de todos los ítems usables de la lista
     de tareas del sprint completadas por los desarrolladores, que satisfacen la

                                         6/13
V.1 n.2

     “definición de hecho” más todos los incrementos realizados con anterio-
     ridad, donde definición de hecho (Definition of Done), es el compromiso
     acordado por todas las partes conforme a los estándares, convenciones y
     guías de que algo se puede dar por realizado y concluido, es decir “hecho”.
Se realizan los siguientes eventos:
   • El sprint es el corazón de Scrum y es donde las ideas se convierten en va-
     lor. Cada sprint comienza cuando acaba el anterior y todo el trabajo necesa-
     rio para alcázar el objetivo del producto, incluidas las siguientes reuniones
     ocurren dentro del sprint.

   • Reunión de planificación del sprint (sprint planning meeting), donde el
     equipo decide que se desarrollará para el siguiente sprint en diálogo con
     el propietario del producto. El equipo estudia la pila de producto para com-
     prender el trabajo a realizar y se selecciona la cantidad de ítem que estiman
     incluir en el sprint, siempre utilizando la priorización realizada por el propie-
     tario del producto.

   • Scrum diario (Daily Scrum), reunión diaria de unos 15 minutos donde se
     discute el estado y el progreso del sprint. Estas reuniones mejoran la comu-
     nicación, identifican impedimentos y eliminan la necesidad de otras reunio-
     nes.

   • Reunión de revisión del sprint (Sprint Review), también llamado demos-
     tración, que se realiza cuando el sprint ha terminado y sirve para presentar
     al propietario del producto y a otras partes interesadas, los objetivos con-
     seguidos con el sprint.

   • Retrospectiva (Sprint Retrospective), donde se inspecciona como se pue-
     de producir una mejora en la productividad, la calidad del producto, la mo-
     tivación del equipo y como fue la última iteración o como está yendo el
     proyecto.

                                  Figura 5 Scrum

                                        7/13
V.1 n.2

Métodos ágiles para grandes sistemas.
    El desarrollo de grandes sistemas, con millones de líneas de código, requiere
grandes cantidades de desarrolladores y los métodos como Scrum recomiendan
que los equipos de desarrollo sean pequeños, entre 5 y 11 personas. Para re-
solver este problema de escalabilidad existen distintas metodologías de las que
podemos destacar las siguientes:
     Scrum de Scrums (SoS)[19][20], donde en cada sprint, equipos Scrum se
coordinan entre si y son responsables de generar un conjunto de incrementos de
un único producto. Se define un Scrum de Scrums Master (SoSM) que facilita el
refinamiento de la pila de producto. Adicionalmente a las reuniones diarias del
Scrum, se realizan también una también otras diarias y conjuntas Scaled Daily
Scrum (SDS), en donde participan los Scrum Master de cada equipo además de
otras personas del mismo. En esta metodología solo existe una única pila de pro-
ducto y un único responsable denominado Chief Product Owner. Una variante
de esta metodología es Nexus[21]. La diferencia fundamental se encuentra en
que, en Nexus, el foco se pone en el equipo de integración Nexus (Nexus Inte-
gration team), que es el responsable de garantizar que un incremento integrado
se produzca al menos una vez por sprint.

       (a) Figura 6 Scrum de Scrums           (b) Figura 7 Nexus framework [21]

    LeSS (Large-Scale Scrum)[22], en 2005 Vodde y Larman desarrollaron es-
te marco de trabajo que sigue los principios de Scrum, pero con el objetivo de
que sea empleado satisfactoriamente en grandes proyectos. Las diferencias con
Scrum se centran en que tanto el refinamiento de la pila de producto como la
planificación del sprint se descompone en dos reuniones diferentes. En la pri-
mera, un grupo representativo establece los objetivos globales del sprint. En la
segunda reunión cada grupo, de forma separada, detallan el trabajo a realizar.
La misma definición de “hecho” es aplicable a todos los grupos. Las reuniones
diarias del Scrum se realizan por cada equipo de forma individual, pero están
abiertas a miembros de otros equipos. Se añade una reunión global retrospectiva
con el propósito de explorar las mejoras globales. Dicha reunión se realiza una
vez por semana, con una duración de 45 minutos, donde participan el propietario
del producto, los facilitadores y de forma rotativa un miembro representativo de
cada equipo.

                                      8/13
V.1 n.2

                           Figura 8 LeSS Framework[22]

    Pero el método ágil escalable más popular es el SAFe (Scaled Agile Frame-
work) [23], donde un conjunto de equipos llamado tren de despliegue ágil (Agile
Release Train, ART), trabajan en el mismo objetivo: el incremento de progra-
ma (Program increment, PI). A nivel de equipo, aquí llamado equipo ágil, SAFe
trabaja igual que Scrum. Hay que destacar que SAFe propone un conjunto de
prácticas de calidad que se han de seguir en cada incremento. A nivel de progra-
ma se trabaja con los mismos elementos, pero a escala (hasta 150 personas); el
equipo trabaja para crear un incremento de programa a entregar después de 5
sprints (10 semanas). El contenido de cada despliegue del tren (Release train)
es determinado por el gestor del producto (Product Manager), por medio de la pi-
la del programa (Program Backlog). Además, se define un facilitador del tren
(Train Scrum Master).
    Un incremento del programa comienza con la reunión de planificación donde
asiste todo el equipo. Se planifican los próximos sprints basados en una parti-
ción por características (features) y se alinean las necesidades de los distintos
equipos. Los facilitadores de cada equipo y facilitadores del tren tienen reuniones
dos veces por semana para asegurarse la correcta sincronización de los equipos.
Normalmente se utiliza uno de los sprints para una verificación final, pruebas, pla-
nificación de la demostración a nivel de programa y replanificación del próximo
ciclo.

                                       9/13
V.1 n.2

                          Figura 9 SAFe Framework [23]

Otras aproximaciones.
    No obstante lo anterior, las empresas suelen aplicar los métodos ágiles adap-
tándolos a su organización y a la forma en la que han venido realizado los desa-
rrollos tradicionalmente. Como ejemplo podemos ver la solución que ha adoptado
la empresa Lockheed Martin (LM), intentando unir lo mejor de las metodologías
ágiles ágil y el mundo de las líneas de producto de ingeniería (LPE) [24]. Para en-
carar una transformación como esta, LM formó a su personal en la metodología
SAFe, como base fundamental para aplicar las prácticas ágiles y la coordinación
entre los distintos grupos de trabajo. LM adopta un ciclo de entregas de una ver-
sión (release) cada cuatro meses, con sprints de dos semanas, (por lo tanto ocho
sprints forman una versión).
    El trabajo de cada sprint está definido en la pila de producto como historias
de usuario, o mínima capacidad que aporta valor y puede ser implementada y
probada en uno o dos días. Cada historia de usuario se descompone en tareas,
que se corresponden con un trabajo de entre 8 o 16 horas. Las historias de usuario
se agrupan en capacidades (Features), o conjunto de historias de usuario que
formarán parte de la versión. Un conjunto de capacidades forma una Épica (Epic),
o capacidad mayor que se expande a múltiples versiones. La figura 10 muestra
una representación de esta descomposición. Los distintos equipos Scrum siguen
la metodología realizando las reuniones diarias, las revisiones y demo, así como
las retrospectivas de los sprints.

                                      10/13
V.1 n.2

   Figura 10. Descomposición en épica, capacidades, historias de usuario y tareas.

Conclusiones y futuro
    A pesar de que las grandes corporaciones se resisten a cambiar sus métodos
de trabajo, cada vez más las aproximaciones iterativas e incrementales, así como
los derivados de la filosofía ágil están ganando adeptos.
    Los últimos informes del Standish Group[25] demuestran que los proyectos de
gran tamaño que siguen los métodos ágiles, tienen hasta seis veces más éxito y
la mitad de las posibilidades de fallar, que los métodos en cascada.
    Grandes empresas tales como Lockheed Martin, Thales, Raytheon y en Es-
paña GMV[26], Indra[27] y Navantia[28] entre otras, están experimentando con
metodologías ágiles o bien están implementando sus propias variantes, con el
objetivo de obtener los beneficios de la reducción de tiempos en el desarrollo,
integración, pruebas y despliegue.
    Seguramente estamos acercándonos a un cambio en la forma de hacer las
cosas, pero es indudable que hoy en día las estrategias ágiles son las más ex-
tendidas.
    Para abordar el cambio del modelo tradicional al ágil se debería construir una
forma de desarrollo basada en los principios y valores ya expuestos en este artícu-
lo, pero a su vez deben utilizarse todas las herramientas disponibles, sin olvidar
integrar las mejores prácticas utilizadas hasta hoy.
    Como en toda actividad humana hemos de aprender de nuestros errores y
construir evolucionando, creando valor a partir de unos principios como son los
que inspiran las metodologías ágiles.

bibliografía
     [1] F. J. López García, “Del modelo tradicional a los modelos de reutilización
del Software para grandes Sistemas de Defensa.
” https://www.puentedehierro.org/ojs/index.php/pdh/article/view/8/10 (accessed Jun.
22, 2021).
     [2] C. Larman and V. R. Basili, “Iterative and incremental developments. a brief
history,” Computer, vol. 36, no. 6, pp. 47–56, 2003, doi: 10.1109/MC.2003.1204375.
     [3] D. O’Neill, “Integration engineering perspective,” The Journal of Systems
and Software, vol. 3, no. 1, pp. 77–83, 1983, doi: 10.1016/0164-1212(83)90006-7.
     [4] H. D. Mills, “The management of software engineering, part I: Principles of
software engineering,” IBM Systems Journal, vol. 38, no. 2/3, pp. 289–295, 1999,
[Online]. Available:
https://www.proquest.com/scholarly-journals/management-software-engineering-
part-i-principles/docview/222415760/se-2?accountid=14495.

                                       11/13
V.1 n.2

    [5] W. A. Madden and K. Rone, “Design, development, integration: space shuttle
primary flight software system,” Commun. ACM, vol. 27, pp. 914–925, 1984.
    [6] V. R. Basil and A. J. Turner, “Iterative enhancement: A practical technique
for software development,” IEEE Transactions on Software Engineering, vol. SE-
1, no. 4, pp. 390–396, 1975, doi: 10.1109/TSE.1975.6312870.
    [7] B. W. Boehm, “A spiral model of software development and enhancement,”
Computer, vol. 21, no. 5, pp. 61–72, 1988, doi: 10.1109/2.59.
    [8] B. Boehm and W. Hansen, “Spiral Development: Experience, Principles,
and Refinements,” p. 47, Jul. 2000.
    [9] J. Martin, Rapid Application Development. 1991.
    [10] I. Jacobson, The unified software development process. Reading, Mas-
sachusetts: Reading, Massachusetts : Addison-Wesley, 1999.
    [11] P. Kruchten, The rational unified process : an introduction, 3rd ed. Boston:
Addison-Wesley, 2003.
    [12] M. Beedle, M. Devos, K. Schwaber, and J. Sutherland, “SCRUM: An ex-
tension pattern language for hyperproductive software development,” Dec. 1998.
    [13] H. Takeuchi and I. Nonaka, “The New New Product Development Game,”
Harvard Business Rev, pp. 137–146, 1986.
    [14] K. Beck and C. Andres, Extreme programming explained: embrace chan-
ge, 2a, 10a reimp. Boston: Addison-Wesley.
    [15] “Manifiesto por el Desarrollo Ágil de Software.”
https://agilemanifesto.org/iso/es/manifesto.html (accessed Jun. 22, 2021).
    [16] “Principios del Manifiesto Ágil.” https://agilemanifesto.org/iso/es/principles.html
(accessed Jun. 22, 2021).
    [17] “14th Annual State of Agile Report,” 2020. Accessed: Jun. 15, 2021. [On-
line]. Available:
https://stateofagile.com/#ufh-i-615706098-14th-annual-state-of-agile-report/7027494.
    [18] K. Schwaber and J. Sutherland, “The Scrum Guide The Definitive Guide
to Scrum: The Rules of the Game,” 2020. Accessed: Jun. 18, 2021. [Online].
    [19] J. Sutherland, “Agile Can Scale: Inventing and Reinventing SCRUM in
Five Companies,” vol. 14, pp. 5–11, Dec. 2001.
    [20] J. Sutherland, “The Scrum@Scale Guide Online | Scrum@Scale Fra-
mework.” https://www.scrumatscale.com/scrum-at-scale-guide-online/ (accessed
Jun. 21, 2021).
    [21] “Online Nexus Guide | Scrum.org.” https://www.scrum.org/resources/online-
nexus-guide (accessed Jun. 21, 2021).
    [22] “Overview - Large Scale Scrum (LeSS).” https://less.works/ (accessed
Jun. 21, 2021).
    [23] “SAFe 5 for Lean Enterprises.” https://www.scaledagileframework.com/
(accessed Jun. 21, 2021).
    [24] S. P. Gregg, R. Scharadin, and P. C. Clements, “The Best of Both Worlds:
Agile Development Meets Product Line Engineering at Lockheed Martin,” INCO-
SE International Symposium, vol. 26, no. 1, pp. 951–965, 2016, doi: 10.1002/j.2334-
5837.2016.00204.x.
    [25] “Standish Group 2015 Chaos Report - Q&A with Jennifer Lynch.”
https://www.infoq.com/articles/standish-chaos-2015/ (accessed Jun. 23, 2021).

                                        12/13
V.1 n.2

    [26] H. Garzón, J. A. Chaos, B. Martín, and J. Garzás, “Un caso de estudio so-
bre transformación Ágil, en software para centros de control de satélites, basado
en Lean Change y Cherry Picking.”
    [27] “Gestión Ágil en grandes empresas: la experiencia de Indra.”
https://www.slideshare.net/233gradosdeTI/gestin-gil-en-grandes-empresas-la-experiencia-
de-indra (accessed Jun. 22, 2021).
    [28] J. I. Silvera, J. Luis, M. José, M. Luquero, and M. Bustelo, “Navantia’s
Digital Twin Implementation Perspective in Military Naval Platform Life Cycle.”

                                    13/13
También puede leer