Agile es un enfoque iterativo y limitado en el tiempo para la entrega de software que crea software de forma incremental desde el inicio del proyecto, en lugar de intentar entregarlo todo a la vez.
¿Por qué ágil?
La tecnología en esta era actual está progresando más rápido que nunca, lo que obliga a las empresas de software globales a trabajar en un entorno que cambia a un ritmo vertiginoso. Debido a que estas empresas operan en un entorno en constante cambio, es imposible recopilar un conjunto completo y exhaustivo de requisitos de software. Sin estos requisitos, se vuelve prácticamente difícil que funcione cualquier modelo de software convencional.
Los modelos de software convencionales, como Waterfall Model, que depende de la especificación completa de los requisitos, el diseño y la prueba del sistema, no están orientados hacia el desarrollo rápido de software. Como consecuencia, un modelo de desarrollo de software convencional no logra entregar el producto requerido.
Aquí es donde el desarrollo ágil de software viene al rescate. Fue especialmente diseñado para curar las necesidades del entorno que cambia rápidamente al adoptar la idea de desarrollo incremental y desarrollar el producto final real.
Ahora leamos sobre los principios en los que Agile ha puesto sus cimientos:
Principios:
- La máxima prioridad es satisfacer al cliente mediante la entrega temprana y continua de software valioso.
- Da la bienvenida a los requisitos cambiantes, incluso al final del desarrollo.
- Entregue software que funcione con frecuencia, desde un par de semanas hasta un par de meses, con preferencia por el plazo más breve.
- Construir proyectos en torno a personas motivadas. Bríndeles el entorno y el apoyo que necesitan, y confíe en ellos para hacer el trabajo.
- El software que funciona es la medida principal del progreso.
- La simplicidad, el arte de maximizar la cantidad de trabajo no realizado, es esencial.
- El método más eficiente y efectivo para transmitir información a un equipo de desarrollo y dentro de él es una conversación cara a cara.
Desarrollo en Agile: Veamos una breve descripción de cómo ocurre el desarrollo en la filosofía Agile.
- En el desarrollo ágil, el diseño y la implementación se consideran las actividades centrales en el proceso del software.
- La fase de diseño e implementación también incorpora otras actividades, como la obtención y prueba de requisitos.
- En un enfoque ágil, la iteración ocurre entre actividades. Por lo tanto, los requisitos y el diseño se desarrollan juntos, en lugar de por separado.
- La asignación de requisitos y la planificación y el desarrollo del diseño se ejecutan en una serie de incrementos. A diferencia del modelo convencional, en el que es necesario completar la recopilación de requisitos para pasar a la fase de diseño y desarrollo, proporciona al desarrollo ágil un nivel adicional de flexibilidad.
- Un proceso ágil se enfoca más en el desarrollo de código que en la documentación.
Ejemplo: Veamos un ejemplo para comprender claramente cómo funciona Agile en realidad.
Una empresa de software llamada ABC desea crear un nuevo navegador web para la última versión de su sistema operativo. El plazo para la tarea es de 10 meses. El jefe de la empresa asignó dos equipos llamados Equipo A y Equipo B.para esta tarea Para motivar a los equipos, el director de la empresa dice que el primer equipo que desarrolle el navegador recibirá un aumento salarial y un plan de viaje patrocinado por completo durante una semana. Con los sueños de sus salvajes fantasías de viaje, los dos equipos emprendieron el viaje del navegador web. El equipo A decidió seguir las reglas y decidió elegir el modelo Waterfall para el desarrollo. El equipo B, después de una intensa discusión, decidió dar un salto de fe y elegir Agile como su modelo de desarrollo.
El plan de Desarrollo del Equipo A es el siguiente:
- Análisis y Recopilación de Requerimientos – 1.5 Meses
- Diseño de Sistema – 2 Meses
- Fase de codificación – 4 Meses
- Integración y prueba del sistema: 2 meses
- Pruebas de aceptación del usuario: 5 semanas
El plan de Desarrollo para el Equipo B es el siguiente:
- Dado que se trataba de un Agile, el proyecto se dividió en varias iteraciones.
- Las iteraciones son todas de la misma duración.
- Al final de cada iteración, se debe entregar un producto funcional con una nueva característica.
- En lugar de gastar 1,5 meses en la recopilación de requisitos, decidirán las características principales que se requieren en el producto y decidirán cuáles de estas características se pueden desarrollar en la primera iteración.
- Cualquier característica restante que no se pueda entregar en la primera iteración se entregará en la próxima iteración posterior, según la prioridad
- Al final de las primeras iteraciones, el equipo entregará un software funcional con las funciones básicas principales.
Ambos equipos han puesto su mejor esfuerzo para llevar el producto a una etapa completa. Pero luego, de la nada, debido al entorno que cambia rápidamente, el jefe de la empresa ideó un conjunto de características completamente nuevo y desea implementarlo lo más rápido posible y desea impulsar un modelo de trabajo en 2 días. El equipo A ahora estaba en una solución, todavía estaban en su fase de diseño y aún no habían comenzado a codificar y no tenían un modelo de trabajo para mostrar. Y además, era prácticamente imposible para ellos implementar nuevas funciones ya que el modelo de cascada no se revierte a la fase anterior una vez que pasa a la siguiente etapa, lo que significa que tendrían que comenzar desde cero nuevamente. Eso incurriría en un alto costo y muchas horas extras. El equipo B estaba por delante del equipo A en muchos aspectos, todo gracias al desarrollo ágil. También tenían el producto de trabajo con la mayoría de los requisitos básicos desde el primer incremento. Y fue pan comido para ellos agregar los nuevos requisitos. Todo lo que tenían que hacer era programar estos requisitos para el próximo incremento y luego implementarlos.
ventajas:
- La implementación del software es más rápida y, por lo tanto, ayuda a aumentar la confianza del cliente.
- Puede adaptarse mejor a los requisitos que cambian rápidamente y responder más rápido.
- Ayuda a obtener comentarios inmediatos que se pueden usar para mejorar el software en el próximo incremento.
- Personas, no procesos. Las personas y las interacciones tienen una mayor prioridad que los procesos y las herramientas.
- Atención continua a la excelencia técnica y al buen diseño.
Desventajas:
- En el caso de grandes proyectos de software, es difícil evaluar el esfuerzo requerido en las etapas iniciales del ciclo de vida del desarrollo del software.
- El desarrollo ágil está más centrado en el código y produce menos documentación.
- El desarrollo ágil depende en gran medida de las aportaciones del cliente. Si el cliente tiene ambigüedad en su visión del resultado final, es muy probable que el proyecto se desvíe.
- La comunicación cara a cara es más difícil en las organizaciones a gran escala.
- Solo los programadores senior son capaces de tomar el tipo de decisiones requeridas durante el proceso de desarrollo. Por lo tanto, es una situación difícil para los nuevos programadores adaptarse al entorno.
Agile es un marco que define cómo se debe llevar a cabo el desarrollo de software. Agile no es un método único, representa la diversa colección de métodos y prácticas que siguen las declaraciones de valor proporcionadas en el manifiesto. Los métodos y prácticas ágiles no prometen resolver todos los problemas presentes en la industria del software (ningún modelo de software puede hacerlo). Pero seguro que ayudan a establecer una cultura y un entorno donde surgen soluciones.
Publicación traducida automáticamente
Artículo escrito por Naveen_Naidu y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA