Articulo de referencia

Desarrollo de software ágil distribuido

El desarrollo ágil de software distribuido es un área de investigación que considera los efectos de aplicar los principios del desarrollo ágil de software a un entorno de desarr...

El desarrollo ágil de software distribuido es un área de investigación que considera los efectos de aplicar los principios del desarrollo ágil de software a un entorno de desarrollo distribuido globalmente , con el objetivo de superar los desafíos en proyectos que están distribuidos geográficamente.

Los principios del desarrollo ágil de software proporcionan estructuras que fomentan una mejor comunicación, un factor clave para trabajar con éxito en un entorno distribuido. Sin embargo, la ausencia de interacción presencial elimina uno de los principios fundamentales de la metodología ágil. Esto hace que el desarrollo ágil de software distribuido sea más complejo que el desarrollo ágil de software en general.

Historia / Investigación

La creciente globalización, gracias a las nuevas capacidades que ofrece la eficacia tecnológica de Internet, ha llevado a las empresas de desarrollo de software a externalizar sus esfuerzos de desarrollo a áreas económicamente más atractivas. Este fenómeno comenzó en la década de 1990, si bien su importancia estratégica se reconoció en la década de 2000. [ 1 ] La mayoría de los estudios iniciales relacionados también datan de esta época. [ 2 ]

Durante este tiempo, se publicó el Manifiesto Ágil , [ 3 ] que representa una evolución de los enfoques pesados ​​predominantes en el desarrollo de software. Esto llevó naturalmente a la pregunta: "¿puede el desarrollo de software distribuido ser ágil?". Una de las primeras revisiones exhaustivas que intentó responder a esta pregunta se realizó en 2006. [ 4 ] Al estudiar tres organizaciones, encontraron que "la incorporación cuidadosa de la agilidad en entornos de desarrollo de software distribuido es esencial para abordar varios desafíos de comunicación, control y confianza entre equipos distribuidos". Posteriormente, en 2014, se realizó una revisión sistemática de la literatura (RSL) para identificar los principales problemas para lograr que la agilidad funcione de manera distribuida. [ 5 ] En 2019, se realizó una RSL similar. [ 6 ]

Oportunidades

En un entorno distribuido, puede resultar difícil controlar la carga de trabajo y la contribución de cada miembro al producto final. Mediante la adopción de principios y prácticas ágiles, la visibilidad mejora, ya que existen múltiples iteraciones que permiten visualizar los problemas o las dificultades en las etapas iniciales del proyecto. La integración continua del código de programación, uno de los pilares del desarrollo ágil de software, también contribuye a reducir los problemas de configuración y gestión. La adopción de principios ágiles parece influir positivamente en la comunicación entre equipos, ya que el avance en ciclos facilita la comprensión de los objetivos a corto plazo. Las revisiones de sprint son un método eficaz para mejorar la comunicación externa, al tiempo que facilitan el intercambio de información sobre las funcionalidades y los requisitos previos entre socios o partes interesadas. Las prácticas ágiles también contribuyen a generar confianza entre los distintos equipos involucrados en el proceso, al estimular una comunicación constante y la entrega de los productos de programación. Según un estudio realizado por Passivara, Durasiewicz y Lassenius, la calidad del software y la comunicación mejoran, y la comunicación y la colaboración son más frecuentes gracias al enfoque Scrum utilizado en el proyecto. Además, se constató que la inspiración de los colegas se había expandido. [ 7 ] En este sentido, la adopción de prácticas ágiles en un entorno distribuido ha demostrado ser valiosa para la calidad del proyecto y su ejecución. Por lo tanto, estas pueden considerarse algunas de las ventajas que se logran al combinar la metodología ágil en el desarrollo distribuido, [ 8 ] sin embargo, la lista es exhaustiva. Los principales beneficios se pueden enumerar de la siguiente manera:

Mayor diversidad inter e intracultural

El entorno distribuido fomenta una mentalidad global sobre la local, donde el equipo puede intercambiar y aceptar ideas, perspectivas, culturas y estéticas ajenas. Miembros de diversas culturas tienen la oportunidad de adquirir y compartir conocimientos de sus compañeros desde diferentes puntos de vista. De esta manera, pueden abordar las tareas con ideas innovadoras.

Planes de trabajo flexibles

Los miembros del equipo pueden beneficiarse de una gran libertad y oportunidades en su forma de trabajar, con el único objetivo de completar las tareas y entregar los resultados a tiempo. Esto también implica una mayor responsabilidad con la organización. De esta manera, los empleados pueden equilibrar su vida profesional y personal, logrando así un buen equilibrio entre el trabajo y la vida personal.

Atravesar zonas horarias

Los equipos pueden abarcar varias zonas horarias, lo que permite un acceso continuo durante las 24 horas. Esto aumenta la productividad, ya que se contrata personal en todo el mundo. El trabajo nunca se interrumpe, puesto que siempre hay alguien disponible para resolver cualquier problema. Además, garantiza que el trabajo se realice las 24 horas del día, los 7 días de la semana, prácticamente sin interrupciones. Dado que un entorno distribuido prioriza la productividad y el rendimiento, la delegación de tareas facilita la consecución de los objetivos.

Personas con discapacidades y limitaciones de movilidad

Como ya se mencionó, el entorno ágil distribuido prioriza la productividad y el rendimiento sobre la presencia física. Esto beneficia a las personas con discapacidad, ya que les permite trabajar desde un entorno cómodo y contribuir al resultado final. Este escenario también aplica cuando el empleado no puede estar presente en la oficina y fichar; puede trabajar desde casa para completar las tareas, sin que ello afecte al resultado final.

Mayores niveles de prosperidad

Trabajar en un entorno ágil distribuido garantiza un mayor nivel de prosperidad y bienestar, tanto para los individuos como para la empresa. Esto se debe a que la responsabilidad de completar el trabajo no recae en una sola persona, ya que este se distribuye entre varias personas en todo el mundo. De esta manera, se garantiza el bienestar físico y mental. Además, a medida que múltiples personas aportan su parte y el proyecto pasa por varias iteraciones, la calidad final del trabajo mejora, lo cual beneficia a la empresa. Por lo tanto, se trata de una situación ventajosa para la empresa y sus empleados.

Costes de viaje reducidos

Trabajar en un entorno distribuido suele requerir reuniones y debates sobre objetivos, plazos, tareas, etc. Sin embargo, la adopción de principios y prácticas ágiles en este entorno ayuda a reducir los gastos de viaje, ya que facilita la comunicación mediante videoconferencias y otras opciones viables. Esto elimina la necesidad de presencia física y fomenta la interacción cara a cara, permitiendo que las reuniones se celebren desde cualquier lugar del mundo y sean accesibles para todos los miembros del equipo.

Idea iterativa de la metodología ágil

Dado que el trabajo se desarrolla de forma iterativa, se pueden realizar revisiones periódicas para controlar el estado del producto final y asegurar que todos los miembros del equipo comprendan el mismo nivel de detalle. Además, esto facilita la identificación de errores y fallos, que pueden corregirse en las primeras etapas, ya que el proceso se repite varias veces. La mayor participación en cada etapa del trabajo se traduce en una mejor calidad del producto final.

Amplia reserva de personal de RRHH

Al realizarse el mismo trabajo en distintas partes del mundo, se amplía el abanico de capacidades del grupo al acceder a un grupo más extenso de recursos humanos a nivel global. Esto genera la necesidad de que todos los departamentos de recursos humanos trabajen de forma coordinada para fomentar la colaboración y la toma de decisiones en las distintas áreas de la organización, así como para comunicarse con las partes interesadas y priorizar los resultados.

Reduce el espacio de oficina

El entorno ágil distribuido potencia la idea del trabajo remoto, eliminando la necesidad de ampliar las oficinas para dar cabida a más empleados. Además, aspectos relacionados con el trabajo como la electricidad, los ordenadores y el aparcamiento no suponen una gran preocupación, ya que los empleados tienen la libertad de trabajar desde el entorno que prefieran. Esto, en cierto modo, resulta beneficioso, pues permite ahorrar una gran cantidad de dinero que de otro modo se destinaría a estos gastos generales. La mejora iterativa con entrega continua al cliente es una práctica fundamental en el desarrollo ágil de software, y una que identifica con razón una de las dificultades más importantes de la externalización de proyectos: la menor visibilidad del estado del proyecto. Las reuniones presenciales periódicas permiten a los jefes de equipo, gestores de proyectos, clientes y usuarios realizar un seguimiento del progreso del proyecto en función del código funcional obtenido.

Desafíos y riesgos

El desarrollo de software distribuido presenta desafíos inherentes debido a las diferencias espaciales, temporales y socioculturales entre los equipos distribuidos. Su combinación con los principios y prácticas ágiles, a su vez, incrementa la gravedad de los riesgos, ya que ambos métodos son directamente incompatibles. El desarrollo ágil de software se diseñó originalmente para equipos presenciales, dado que se basa en la comunicación informal y la colaboración estrecha. El desarrollo distribuido, en cambio, requiere comunicación formal, estándares claros, directrices establecidas y una estructura rígida. [ 9 ] Esta sección describe los riesgos y desafíos que implica el desarrollo ágil de software distribuido como resultado de los problemas de compatibilidad mencionados.

Desafíos

Como resultado de la incompatibilidad que se presenta al combinar principios y prácticas ágiles en un entorno distribuido, algunos de los desafíos que pueden surgir son los siguientes: [ 10 ]

Documentación

Las organizaciones que trabajan en el extranjero prefieren el diseño basado en la planificación, donde los requisitos detallados se envían a otro lugar para su elaboración. [ 11 ] Esto entra en conflicto con la práctica común de los equipos ágiles, que dan menor prioridad a la documentación. Como resultado, es mucho más probable que surjan malentendidos.

Programación en parejas

La programación en parejas , donde dos programadores trabajan codo con codo para resolver un problema específico, es una práctica ágil común. Se ha demostrado que produce mejores productos en menos tiempo, manteniendo a los programadores satisfechos con el proceso. [ 12 ] Debido a la distancia entre los equipos, esto es mucho más difícil de lograr.

diferentes zonas horarias

Dependiendo de la zona horaria de cada equipo distribuido, resulta más difícil programar reuniones en momentos en que ambos equipos estén disponibles. Es fácil darse la situación de que un miembro del equipo esté disponible y el otro no. Esto es especialmente problemático si una tarea inmediata tiene componentes del programa estrechamente relacionados; en tal caso, un equipo no podría avanzar sin la retroalimentación del otro.

Enseñanza

En un entorno distribuido, la desventaja de no poder mantener una comunicación fluida se hace sentir sobre todo con los desarrolladores sin experiencia que necesitan pasar por una fase de capacitación. Capacitar a empleados que no trabajan en la misma ubicación es un reto, dadas las diferencias de formación y culturales que dificultan que estos miembros del equipo sin experiencia se pongan al día rápidamente. Por ello, es necesario considerar métodos de enseñanza alternativos.

Distribución del trabajo

En cuanto a la distribución del trabajo, queremos evitar que la arquitectura refleje la distribución geográfica del equipo, distribuyendo el trabajo en función de la ubicación. Es mejor distribuir las tareas relacionadas con una única historia de usuario entre todo el equipo, pensando en términos de historias, no de componentes. La sobreespecialización por ubicación geográfica o componente es un indicio de que el equipo no está gestionando adecuadamente los desafíos de comunicación propios de los equipos distribuidos. Esta sobreespecialización tiene la consecuencia no deseada de modificar el producto para adaptarlo al desarrollo, en lugar de a los requisitos del cliente. [ 13 ]

Riesgos

Un estudio realizado en 2013 intentó consolidar la literatura sobre gestión de riesgos en el desarrollo ágil distribuido. [ 9 ] Un estudio más exhaustivo intentó categorizar los factores de riesgo para proyectos ágiles distribuidos en, [ 14 ] esto se realizó utilizando tanto literatura de investigación como experiencia real de trece organizaciones de TI. Para mayor brevedad, se omite la lista completa de 45 factores de riesgo, con sus correspondientes técnicas de gestión. En su lugar, se ofrece un breve resumen de las principales categorías y técnicas de gestión generales.

Ciclo de vida del desarrollo de software

Esta categoría comprende los factores de riesgo relacionados con diversas actividades del desarrollo de software, como la especificación de requisitos por parte del cliente y la planificación, modelado, construcción e implementación de la aplicación de software. [ 15 ] Muchos de los factores de riesgo en esta categoría se derivan de un intercambio de conocimientos ineficaz. Objetivos poco claros, requisitos, diferencias en las prácticas de los procesos estándar o inconsistencias entre los diseños, por nombrar algunos. Muchos de estos riesgos pueden gestionarse asegurando que el conocimiento se comparta de manera efectiva. Más específicamente, asegúrese de que el objetivo del proyecto sea absolutamente claro para todos los equipos, así como los requisitos. Automatice y estandarice la mayor parte posible del ciclo de desarrollo, de modo que cada equipo trabaje con la misma pila tecnológica e infraestructura. En resumen, asegúrese de que todos estén en sintonía.

Gestión de proyectos

La gestión de proyectos abarca tareas como la planificación, la organización, la dotación de personal, la dirección y el control del proyecto. Esta categoría implica riesgos derivados de la interacción entre las actividades de desarrollo y las de gestión. La adopción del desarrollo ágil distribuido transformará la forma en que se gestiona el proyecto. Si no se realiza con cuidado, los riesgos podrían incluir una menor velocidad inicial, la reorganización de los equipos en cada sprint o la falta de uniformidad en las capacidades de los equipos distribuidos geográficamente.

Conciencia de grupo

En esta categoría se agrupan los factores de riesgo relacionados con la falta de conciencia grupal. La conciencia grupal requiere comunicación, coordinación, colaboración y confianza constantes entre sus miembros. Los equipos que trabajan en el mismo lugar logran esta conciencia con mayor facilidad, ya que surge de forma más natural al estar en la misma ubicación física. Para gestionar los riesgos derivados de la falta de conciencia grupal, los equipos dispersos geográficamente deberán adoptar un enfoque más disciplinado en la comunicación, utilizando las herramientas tecnológicas más recientes. Prácticas como la colaboración inicial, para definir el rumbo del proyecto, han demostrado ser eficaces en la gestión de riesgos.

Colaboración con las partes interesadas externas

Estos factores se relacionan con la colaboración con clientes, proveedores y desarrolladores externos. Gestionar sus riesgos se reduce a garantizar que la coordinación y la comunicación con estos agentes externos se realicen de manera eficiente y clara.

Configuración de tecnología

En esta categoría se agrupan los factores de riesgo derivados del uso inadecuado de las herramientas. Por ejemplo, la falta de una estructura de comunicación eficaz puede solucionarse proporcionando a los equipos los medios para realizar videoconferencias. Además, es importante elegir las herramientas adecuadas para cada proyecto. Esto puede variar según el proyecto, el equipo y el caso de uso, por lo que se recomienda un análisis previo de las herramientas a utilizar.

Herramientas y mejores prácticas

Comunicación

Uno de los factores más importantes para superar los desafíos que plantea el desarrollo de software ágil distribuido es mejorar la comunicación. [ 10 ] Esto significa minimizar el tiempo que lleva configurar y finalizar una sesión de comunicación y dar preferencia a las videoconferencias sobre las conferencias de voz cuando estén disponibles.

Se deben fomentar las oportunidades de contacto cara a cara con todo el equipo para ayudar a construir una buena relación. Es beneficioso hacerlo al inicio para establecer un plan que el equipo pueda seguir durante todo el proyecto. Además, también es beneficioso en las últimas iteraciones antes de la entrega del producto final. [ 13 ]

Diferencias horarias

Una opción para abordar el problema de la disponibilidad para reuniones debido a las diferencias horarias es designar un representante del equipo que actúe como intermediario entre ambos equipos, habiendo establecido una buena relación con ambos. Otra opción es utilizar Scrum anidado con informes multinivel y múltiples reuniones diarias de Scrum. [ 16 ]

Una solución para las reuniones de Scrum en equipos con diferencias horarias consiste en distinguir entre reuniones locales y reuniones globales de Scrum. [ 17 ] Cada equipo tiene una reunión local al inicio de su jornada y una reunión global en otro momento del día. Esto solo es posible si sus jornadas laborales se superponen.

Mantenerse al día con las prácticas ágiles

Debido a la naturaleza distribuida del trabajo, un equipo podría desviarse de las prácticas ágiles bien establecidas. Por lo tanto, debería haber alguien con el rol de coach que mantenga al equipo en el camino correcto. Esta persona también debería encargarse de buscar alternativas para el entorno de trabajo distribuido utilizando prácticas ágiles.

Para mantener informados a todos los miembros del equipo sobre el enfoque ágil adoptado, es importante mantener la documentación del proyecto. Esto mejora la colaboración del grupo en el uso de principios y prácticas ágiles en un entorno de desarrollo de software distribuido [ 16 ] [ 18 ] [ 19 ] . [ 20 ] Para ello, se pueden utilizar diversas herramientas que ayudan al equipo a mantener la documentación. [ 18 ]

Uso de herramientas

Se pueden utilizar diversas herramientas y plataformas para mejorar la comunicación en un entorno distribuido. Estas son incluso más esenciales que en un entorno no distribuido para minimizar la distancia virtual entre los equipos distribuidos.

Comunicación

Existen diversas herramientas para facilitar la comunicación en el desarrollo de software distribuido . Herramientas asíncronas como el correo electrónico, herramientas síncronas como el software de videoconferencia y herramientas híbridas como la mensajería instantánea proporcionan a los miembros del equipo los medios necesarios para celebrar reuniones y comunicarse. Otro ejemplo son las herramientas que permiten el uso de redes sociales para crear una experiencia compartida entre los miembros del equipo, independientemente de su ubicación.

Gestión de proyectos

Para guiar el proyecto y garantizar que todos los equipos y miembros del equipo tengan una visión clara del trabajo que se debe realizar, se deben utilizar plataformas de gestión de proyectos, como herramientas de gestión de incidencias.

Herramientas de desarrollo

Para brindar una experiencia compartida a todos los miembros del equipo, cada uno debe tener acceso a las mismas herramientas para su desarrollo. [ 21 ] Contar con las mismas herramientas de gestión de configuración de software vinculadas a las herramientas de gestión de proyectos permite a los desarrolladores trabajar al mismo ritmo y comunicarse sobre el desarrollo de manera similar.

Gestión del conocimiento

Para que todos los miembros del equipo tengan acceso al mismo conocimiento sobre el producto y el desarrollo, se pueden utilizar herramientas como software Wiki o bases de conocimiento.

Compatibilidad con el Manifiesto Ágil

Los valores y principios del Manifiesto Ágil se han explorado en su aplicabilidad a un entorno de trabajo distribuido en 12 estudios de caso. [ 22 ] Los estudios han seguido a empresas de software que aplicaron el desarrollo ágil de software distribuido en sus proyectos. De los 12 casos, 10 empresas con sede en Estados Unidos y siete con sede en India. Los hallazgos se resumen en la siguiente tabla:

De esto aprendemos que todos los estudios de caso enfatizaron el primer valor del Manifiesto Ágil que establece que las personas y las interacciones deben valorarse por encima de los procesos y las herramientas. El Manifiesto Ágil prefiere el software funcional a la documentación exhaustiva sin necesariamente negar la documentación por completo. Este valor también se refleja en la mayoría de los casos. Solo se han identificado cuatro casos que enfatizan la importancia de la colaboración con el cliente sobre la negociación de contratos. Como puede verse claramente en la tabla, el cuarto valor ha sido el menos adoptado de todos los valores por las empresas de software: "en lugar de seguir estrictamente las prácticas de desarrollo ágil tal como se definen comúnmente, las empresas las ajustan continuamente para adaptarlas a las necesidades cambiantes de sus proyectos". [ 23 ] Con respecto a los principios ágiles, no es una sorpresa que la conversación cara a cara con el equipo de desarrollo haya sido valorada por todos los estudios. Esto se simuló electrónicamente entre los equipos onshore y offshore. Sobre si estar abiertos a cambios en los requisitos incluso en etapas avanzadas del desarrollo, ninguna de las empresas de software en el estudio proporcionó detalles. Por esto podemos suponer que no se consideró tan importante como algunos de los otros principios.

Referencias

  1. Jiménez, M., Piattini, M., & Vizcaíno, A. (2009). Desafíos y mejoras en el desarrollo de software distribuido: una revisión sistemática. *Advances in Software Engineering*, *2009*.
  2. Prikladnicki, R., Damian, D., & Audy, JLN (2008, junio). Patrones de evolución en la práctica del desarrollo de software distribuido: resultados cuantitativos de una revisión sistemática. En *12.ª Conferencia Internacional sobre Evaluación y Valoración en Ingeniería de Software (EASE) 12* (págs. 1-10)
  3. Fowler, M., & Highsmith, J. (2001). El manifiesto ágil. Software Development, 9(8), 28-35.
  4. Ramesh, B., Cao, L., Mohan, K., & Xu, P. (2006). ¿Puede el desarrollo de software distribuido ser ágil? Communications of the ACM, 49(10), 41-46.
  5. Razavi, AM, & Ahmad, R. (2014, septiembre). Desarrollo ágil en entornos grandes y distribuidos: una revisión sistemática de la literatura sobre aspectos organizacionales, gerenciales y culturales. En 2014 8th. Malaysian Software Engineering Conference (MySEC) (pp. 216-221). IEEE.
  6. Ghani, I., Lim, A., Hasnain, M., Ghani, I., & Babar, MI (2019). Desafíos en el entorno de desarrollo de software ágil distribuido: una revisión sistemática de la literatura. KSII Transactions on Internet & Information Systems, 13(9).
  7. M. Paasivaara, S. Durasiewicz, C. Lassenius, Uso de Scrum en el desarrollo ágil distribuido: un estudio de casos múltiples, Conferencia Internacional IEEE sobre Ingeniería de Software Global, págs. 195-204, 2009
  8. Shrivastava, S. V y Date, H. (2010). Desarrollo ágil de software distribuido: una revisión. Seo-chogu: Revista de informática e ingeniería. 10-17
  9. 1 2 Shrivastava, SV y Rathod, U., 2014. Riesgos en el desarrollo ágil distribuido: una revisión. Procedia - Ciencias Sociales y del Comportamiento, 133, pp.417-424.
  10. 1 2 Shrivastava, SV, 2010. Desarrollo de software ágil distribuido: una revisión. Preimpresión de arXiv arXiv:1006.1955.
  11. M. Fowler, “Uso de un proceso de software ágil con desarrollo offshore”, http://martinfowler.com/articles/agileOffshore.html , julio de 2006 (Consultado el 11 de mayo de 2020)
  12. Williams, L., Kessler, RR, Cunningham, W. y Jeffries, R., 2000. Fortaleciendo el argumento a favor de la programación en parejas. IEEE Software, 17(4), pp.19-25
  13. 1 2 Ade Miller, “Desarrollo ágil distribuido en Microsoft: patrones y prácticas”, Patrones y prácticas de Microsoft, http://www.pnpguidance.net/Post/DistributedAgile 16 DevelopmentMicrosoftPatternsPractices, octubre de 2008. (consultado el 11 de mayo de 2020)
  14. Shrivastava, SV, & Rathod, U. (2015). Categorización de factores de riesgo para proyectos ágiles distribuidos. *Information and Software Technology*, *58*, 373-387.
  15. Pressman, RS (2005). *Ingeniería de software: un enfoque práctico*. Palgrave Macmillan.
  16. 1 2 Smits, H. y Pshigoda, G., 2007, agosto. Implementación de Scrum en una organización de desarrollo de software distribuida. En Agile 2007 (AGILE 2007) (págs. 371-375). IEEE.
  17. J. Sutherland, A. Viktorov, J. Blount y N. Puntikov, "Distributed Scrum: Gestión ágil de proyectos con equipos de desarrollo subcontratados", 40.ª Conferencia Internacional Anual de Hawái sobre Ciencias de Sistemas (HICSS'07), Waikoloa, HI, 2007, págs. 274a-274a, doi: 10.1109/HICSS.2007.180.
  18. 1 2 Hossain, E., Babar, MA, Paik, HY y Verner, J., diciembre de 2009. Procesos de identificación y mitigación de riesgos para el uso de Scrum en el desarrollo global de software: un marco conceptual. En 2009 16th Asia-Pacific Software Engineering Conference (pp. 457-464). IEEE.
  19. Holmström, H., Fitzgerald, B., Ågerfalk, PJ y Conchúir, E.Ó., 2006. Las prácticas ágiles reducen la distancia en el desarrollo global de software. Information systems management, 23(3), pp.7-18.
  20. Berczuk, S., 2007, agosto. De vuelta a lo básico: El papel de los principios ágiles en el éxito con un equipo scrum distribuido. En Agile 2007 (AGILE 2007) (págs. 382-388). IEEE.
  21. Sutherland, J. (28 de febrero de 2020). Equipos distribuidos: Cómo mitigar un riesgo empresarial significativo derivado del coronavirus. Recuperado el 13 de mayo de 2020 de https://www.scruminc.com/distributed-teams-how-to-mitigate-a-significant-business-risk-of-the-coronavirus/
  22. Bose, I., 2008. Lecciones aprendidas de proyectos de software ágiles distribuidos: un análisis basado en casos. Communications of the Association for Information Systems, 23(1), p. 34.
  23. Ramesh, B., Cao, L., Mohan, K. y Xu, P., 2006. ¿Puede el desarrollo de software distribuido ser ágil? Communications of the ACM, 49(10), pp.41-46.
  • Manifiesto Ágil
  • Glosario Ágil
  • Patrones ágiles