Agile vs Waterfall: ¿qué metodología de gestión de proyectos elegir?
¿Cuál es la mejor metodología para usar para el desarrollo de software? La decisión no siempre es una tarea fácil. ¿El proyecto agrega valor para el cliente, el negocio o tampoco?
Teniendo en cuenta estos factores, hemos decidido hacer una comparación de la cabeza a la cabeza de dos de las metodologías de desarrollo de software más utilizadas (Agile vs Waterfall) y evaluar a dónde se puede emplear mejor a cada uno.
¿Qué es ágil?
Agile es un enfoque magro y moderno para el desarrollo de software, creado esencialmente como una solución-respuesta a los inconvenientes de las metodologías anteriores. Dado el nombre, Agile enfatiza en la entrega temprana del producto y admite cambios adaptativos y flexibles que se pueden realizar en cualquier momento del ciclo de vida del proyecto.
Las metodologías ágiles contienen una amplia gama de formas diferentes: Scrum, Programación Extrema (XP), Desarrollo impulsado por la función (FDD) y Cristal.
9 Encuesta global de gestión de proyectos 2017, reveló que aproximadamente el 71% de las organizaciones usan enfoques ágiles.
Mecánica principal de ágil.
El flujo de trabajo ágil funciona en los siguientes principios:
Enfoque iterativo -El desarrollo se fragmenta en marcos de tiempo cortos conocidos como iteraciones, que duran 2 a 4 semanas. Cada iteración implica un rendimiento de equipo multifuncional que se enfoca en entregar el producto terminado al final de la caja de tiempo dada.
Gestión del cambio -Cada etapa de desarrollo sufre una revisión y análisis de progreso para garantizar que la satisfacción del cliente se alinee con el alcance del proyecto. Se alienta a los cambios que se hacen y se adopten y se adopten siempre que se requiera para fines de optimización y mejora.
Priorización -El equipo trabaja en total armonía en todos los dominios de una fase de desarrollo: planificación, diseño, codificación, pruebas y evaluación. Cada unidad de equipo se comunica con la otra unidad para compartir su informe de progreso y trabajar de manera colaboratoria para mitigar las lagunas existentes o los obstáculos inminentes.
Echa un vistazo a otros artículos ágiles sobre elGestor de tareas UDNBlog:
Ciclo de vida de desarrollo ágil
El ciclo de vida del desarrollo ágil es un desglose todo el trabajo en seis pasos:
Plan:Una vez finalizada la imagen más grande para el alcance del proyecto, el esquema se divide en objetivos más pequeños y fácilmente alcanzables. Cada uno de estos objetivos se asigna a iteraciones que tienen metas y características exclusivas para ellos mismos.
Análisis:En la fase de análisis, el equipo se une para resumir los principales requisitos del proyecto. Se realizan reuniones entre las partes interesadas y los gerentes para realizar el propósito y la demografía del uso del producto.
Diseño:El equipo comienza a trabajar en el diseño de software y el diseño del sistema utilizando los requisitos establecidos en la fase de análisis.
Codificación:Esta es la fase de implementación donde el desarrollo comienza con la primera iteración. Las características y aspectos del desarrollo se crean y luego se prueban para una funcionalidad impecable.
Pruebas:Una vez que se completan la codificación y el desarrollo, se prueban para los requisitos comerciales y los posibles errores. Esta fase se caracteriza por todo tipo de pruebas que pueden mejorar las eficiencias de producción, como las pruebas de la unidad, las pruebas de sistemas, las pruebas de integración y las pruebas de aceptación.
Despliegue:Esta es la última fase de un ciclo iterativo en el que se implementa el producto terminado a los clientes. Se obtiene la retroalimentación del cliente, y cualquier cambio o mejoras probables que se necesiten para realizar se incorpore en el próximo ciclo iterativo.
Marcos y metodologías ágiles populares.
Agile es un paraguas ancho que abarca múltiples marcos y metodologías para implementarlo lo más fácil posible. Uno de los más populares son:
1. Scrum
Sin duda, uno de los marcos ágiles más populares ampliamente adoptados por equipos es Scrum. El marco está destinado a manejar proyectos a través de medios iterativos e incrementales. Scrum se basa en la colaboración sistemática continua entre los miembros del equipo entre el ciclo del proyecto.
Hay tres roles principales en el Scrum, Scrum Master, Propietario del producto y el Equipo de Desarrollo.
Vayamos por estos elementos para comprender mejor su papel:
El Scrum Master, también conocido como "facilitador" ayuda al equipo a comprender el alcance del proyecto y actúa como una figura central dentro de un proyecto. Sus principales deberes incluyen la limpieza de las ambigüedades que los miembros del equipo podrían tener con respecto al alcance del proyecto y eliminar los obstáculos que estén deteniendo al equipo de trabajar de manera eficiente.
El propietario de un producto suele ser un interesado clave de un proyecto. Comunica la visión del producto con el equipo de desarrollo y proporciona comentarios oportunos sobre el trabajo que se está realizando. Además, también es responsable de priorizar las tareas que irían en el atraso.
El equipo de desarrollo es el equipo que está trabajando en todos los trabajos de desarrollo del producto. También conocido como el 'equipo Scrum', es un grupo multifuncional que es responsable de desarrollar el producto o servicio real.
Aparte de esto, el ciclo de trabajo se divide en 'Sprints', que generalmente dura de 2 a 4 semanas. Durante los sprints, los recursos diarios tienen lugar para informar sobre el progreso del proyecto y los cambios requeridos.
2. Kanban
Otra de las metodologías ágiles más populares adoptadas por equipos es Kanban. Esta metodología ágil se centra en dividir el trabajo en pequeñas partes y visualizar el flujo de trabajo a través de tarjetas de una manera que facilita la identificación de cuellos de botella.
Típicamente, laSistema kanbantrabaja a través del principio de categorizar el trabajo en categorías respectivas de 'hacer', 'en progreso', y 'hecho'. Puede mover fácilmente las tarjetas para representar el progreso. También establece los límites de trabajo en curso (WIP) para restringir la cantidad de elementos que se pueden agregar a una columna en particular para ayudar a mantener el enfoque solo en las tareas actuales.
Kanban es un sistema ligero y flexible que funciona mejor para los proyectos donde los requisitos a menudo cambian, ya que las tarjetas flotantes permiten realizar cambios rápidos en el flujo de trabajo y darle al equipo un enfrentamiento de lo que viene.
19 mejores herramientas de Kanban para usar en 2022
Echa un vistazo a otros artículos ágiles sobre elGestor de tareas UDNBlog:
3. magro
La metodología magra de Agile se centra en eliminar los residuos y construir flores de trabajo eficientes a través de mejoras continuas en el ciclo de vida del proyecto. Esta metodología funciona totalmente en el principio de agregar solo lo que crea valor y eliminando el resto.
'Residuos' aquí se refiere a cualquier tarea, reuniones, procesos de trabajo o documentación que pueda disminuirlo. Elimínalos, para que puedas lograr más en menos tiempo. La metodología magra recomienda eliminar a tres enemigos de magra - muda (residuos), mura (desigual), y muri (sobrecarga).
En pocas palabras, los cambios lean los equipos operan y mantienen su concentración centrada en el láser para optimizar los procesos de trabajo tanto como sea posible.
4. XP (programación extrema)
Programación extremaLa metodología de la gestión de proyectos ágiles se dirige a mejorar la calidad del software que se está desarrollando y la capacidad de respuesta para evolucionar los requisitos de los clientes. La metodología funciona para aumentar la productividad de los desarrolladores y establecer reglas básicas cuando se trata de codificación y pruebas.
Algunas de las reglas cuando se trata de XP, incluidas las historias de usuarios, la programación de la pareja, el desarrollo impulsado por la prueba y más. La programación extrema también se inclina a la liberación de software en los ciclos de desarrollo cortos, por lo que puede ajustar de acuerdo con los requisitos del cliente que vienen con el tiempo.
Las prácticas generales de la programación extrema se concentran en la revisión continua y las pruebas en todo el proyecto para solucionar cualquier error y problemas de la manera más activa posible. Y cuando se siguen correctamente, estas prácticas resultan en un software de mayor calidad.
5. Cristal
El cristal es una de las metodologías ágiles más flexibles que existen. El punto focal de esta metodología es individuos y sus interacciones, en lugar de procesos. El cristal se centra principalmente en 6 aspectos cuando se trata de desarrollo de software, personas, interacciones entre ellos, comunidad, comunicación, habilidades y talento.
La metodología es en realidad una familia de otras metodologías, como el cristal, el cristal amarillo, el cristal naranja y otros.
El genio detrás de Crystal, Alistair Cockburn, desarrolló directrices para la colaboración del equipo y el trabajo en equipo, en lugar de estrategias paso a paso para un proyecto. La metodología admite la responsabilidad y la transparencia del equipo y proporciona un enfoque adaptativo para permitir que el equipo responda a los requisitos cambiantes de manera efectiva.
6. Desarrollo impulsado por características (FDD)
Como su nombre lo indica, las características están en el corazón de esta metodología ágil. Las características de la FDD no necesariamente se refieren a las características del producto, en lugar de historias de usuarios en Scrum. El desarrollo basado en la función consiste en 5 actividades básicas: desarrollo de un modelo general, la construcción de una lista de características, planificación por función, diseño por función y edificio por función.
La lista de características generalmente se generan por la singularidad de cada modelo de proyecto, y el propósito principal de la FDD es entregar un producto de software centrado en el cliente.
La FDD también fomenta los informes de estado en todos los niveles para vigilar el progreso del proyecto y los resultados que vienen con el tiempo. Esto también elimina la confusión y el retrabajo excesivo entre el equipo de desarrollo.
7. Método de desarrollo de sistemas dinámicos (DSDM)
DSDM es un marco ágil que proporciona una base integral para planificar y ejecutar proyectos de desarrollo de software. Dating A 1994, se diseñó el método de desarrollo de sistemas dinámicos para crear un marco estándar de la industria para suministrar software de calidad.
Los 8 principios básicos en los que opera DSDM son:
Como un marco ágil flexible, DSDM se puede usar fácilmente para ellos y proyectos que no sean de TI.
Echa un vistazo a otros artículos ágiles sobre elGestor de tareas UDNBlog:
¿Cuál es el modelo de cascada?
Que data de hasta 1970,Cascada, es un método tradicional de desarrollo de software que funciona en un formato secuencial de desarrollo. Implica una progresión paso a paso del proceso, donde cada fase procede de manera lineal, lo que facilita la administración y la entienda.
Según un informe publicado por Gartner en 2015, 56% de los métodos de gestión de proyectos compuestos de metodología de cascada.
Mecánica principal en la que opera el modelo de cascada.
El modelo de cascada opera en los siguientes principios:
Objetivos distintos:El alcance a largo plazo del proyecto se determina antes de que comience el desarrollo. Los gerentes de proyectos, las partes interesadas y los clientes deben tener una visión clara de lo que el producto final se ajustará a ser.
Time-Boxing:Cada fase se designa una cantidad fija de tiempo. Una vez que se completa la fase, se hace congelarse, por lo que no hay una ruta de retorno al paso anterior.
Modo independiente de trabajo:Cada equipo para un dominio específico, trabaja en objetivos individuales con poca o ninguna colaboración con equipos que trabajan en otras unidades.
Aspectos clave de la metodología de la cascada.
losFlujo de trabajo de cascadaSe puede visualizar en los siguientes pasos:
Requisitos:Al igual que Agile, esta es la primera fase que reclama todos los requisitos técnicos y no técnicos del proyecto en un documento específico del requisito. Estos requisitos son estrictamente permanentes que definen el papel y la perspectiva del producto final.
Análisis:El equipo realiza un análisis de los sistemas y técnicas utilizadas para realizar el desarrollo del producto.
Diseño:Las especificaciones de diseño como servicios, lenguajes de programación y capas de datos se determinan y finalizan.
Codificación:En referencia a los requisitos, análisis y objetivos creados en las etapas anteriores, el equipo de desarrollo escribe el código fuente en la cuarta etapa.
Pruebas:En esta etapa, todos los tipos de probadores, comienzan a probar la versión terminada del producto para cualquier número de errores y errores.
Operaciones:La fase de operaciones es responsable de implementar la versión completa y probada del producto en el mercado.
Ágil vs cascada y amp; Contras
Dado que Agile es una metodología de desarrollo de software contemporáneo, proporciona una gran cantidad de beneficios y ventajas para los equipos de TI que eligen trabajar el uso de su metodología primaria.
En un Encuesta en línea de HP de 601 desarrollo y profesionales de TI ¡El 54% de los encuestados declaró que después de adoptar metodologías ágiles, experimentaron una mejor colaboración entre equipos que no existían de otra manera. Mientras que, el 43% dijo que el tiempo llevado al mercado se redujo masivamente.
Sin embargo, no todos los tipos de proyectos y los escenarios se despiden con las características liberales de Agile.
Echemos un vistazo a las ventajas y desventajas de Agile.
Esta es la ventaja más importante de Agile. A medida que se realiza el desarrollo en iteraciones, el equipo tiene acceso flexible para volver a la etapa anterior para que cualquier tipo y tamaño de los cambios.
Debido a que un proyecto ágil trabaja en ciclos cortos de iteraciones, puede ser difícil asignar una fecha de vencimiento definida a la línea de tiempo del proyecto.
El trabajo realizado en trozos más pequeños permite a los miembros del equipo terminar a tiempo. Además, dado que la codificación y las pruebas se realizan sincrónicamente con el plan y la fase de diseño del desarrollo, todos los cambios y mejoras se hacen adeptos con el flujo de trabajo en movimiento.
Esto aumenta la probabilidad de un lanzamiento temprano de productos también.
Las correcciones y las mejoras realizadas en cada ciclo agregan una carga adicional de trabajo en parte del equipo de desarrollo. Es probable que esto resulte en tiempo adicional si los miembros del equipo de desarrollo no exhiben la dedicación y la competencia.
Los comentarios de los clientes al final de cada ciclo iterativo permiten una participación igualienta al cliente en el resultado y el diseño del producto.
Dado que los equipos ágiles se construyen para una comunicación de cerca, todos los miembros del equipo deben estar cerca en todo momento durante el trabajo para llevar ese nivel de comunicación de manera efectiva.
Agile alienta a los equipos a trabajar juntos estableciendo una alineación con sus metas y objetivos. La comunicación transparente y frecuente entre diferentes unidades de equipo permite un mayor grado de productividad y las posibilidades de un conflicto.
Como ágil no hace cumplir el proyecto para tener un esquema estricto al inicio, el resultado final del producto puede resolver para ser completamente inesperado y muy diferente de lo que era el requisito de negocios inicial.
Agile facilita una sala constante para mejorar. Al final de cada iteración, el producto terminado se prueba para las lagunas y se realiza para mejorar después de que se complete cada ciclo de prueba.
Las mejoras también son una parte continua del desarrollo, ya que la retroalimentación del cliente se recupera a lo largo del ciclo de vida del proyecto.
A medida que el progreso está sucediendo en los ciclos en ágil, se vuelve difícil medir el rendimiento. No puede establecer un montón de KPI definido al inicio del proyecto, por lo que no sabe qué buscar durante el ciclo de vida del proyecto.
Agile apoya las ideas y las decisiones de evolución para adaptarse a la ventana de alcance y desarrollo del proyecto. Esto es especialmente beneficioso para las aplicaciones de software y las herramientas que no tienen un objetivo final definido y están sujetos a cambios según la experiencia del cliente.
Debido a que no hay un objetivo establecido al final del proyecto, se convierte en un desafío para predecir con precisión los recursos requeridos al comienzo del proyecto.
La incapacidad de decidir el costo, el tiempo y los recursos resulta en una planificación de recursos deficientes y puede resultar un problema más importante una vez que el proyecto avanza.
Aunque desde que Agile entró en el centro de atención, la metodología de la cascada ahora se ha convertido en forma en gran medida, pero el enfoque lineal del desarrollo de software todavía tiene un conjunto de beneficios exclusivos para sí mismo.
Aquí hay un conjunto de ventajas y desventajas de la metodología de la cascada: