Consultoría & Consultores

Una de las primeras decisiones a la que nos enfrentamos cuando comenzamos a enfocar un proyecto es elegir la metodología más adecuada para el mismo. Generalmente no es una decisión sencilla, siendo necesario debatir los requerimientos del proyecto antes de elegir la más apropiada.

Las dos metodologías más utilizadas en el desarrollo de proyecto son:

  1. Waterfall: También denominada en “cascada”, es el método que se ha utilizado tradicionalmente. Consiste en desarrollar un proyecto de forma secuencial, comenzando con las fases de análisis y diseño y terminando con las de testeo y puesta en producción.
  2. Agile: Una metodología de tipo RAD (Rapid Application Development), siendo Scrum el método más utilizado.

Ambas metodologías son usables, maduras y se pueden implementar en una gran variedad de proyectos. A continuación, analizaremos las fortalezas y debilidades de cada una de ellas.

comparativa waterfall vs agile

La metodología Waterfall

Esta metodología es una aproximación lineal al desarrollo de software y ha sido la más utilizada durante los últimos 30 años. La secuencia que sigue este método está compuesta de las siguientes fases:

  1. Captura y documentación de requisitos
  2. Diseño
  3. Desarrollo
  4. Test
  5. UATs
  6. Corrección de errores y ajustes finales
  7. Puesta en producción

En un desarrollo waterfall puro, cada una de estas fases representan una etapa diferenciada en el desarrollo del producto final. Cada una de estas etapas deben darse por concluidas antes de comenzar con la siguiente. Además, entre cada una de ellas, generalmente tenemos un hito bloqueante que nos impide avanzar a la siguiente si este no se libera adecuadamente. (P.ej. Los requisitos han de ser validados por el cliente antes de avanzar a la fase de diseño.)

Ventajas de la metodología Waterfall

No podemos negar que el uso de esta metodología aporta puntos positivos al desarrollo de un proyecto:

  • Desarrolladores y clientes se ponen de acuerdo en una fase muy temprana del proyecto. Esto lleva a una planificación y un diseño más sencillos y directos.
  • El progreso del proyecto es más fácil de medir y seguir, dado que el alcance completo del mismo se conoce de antemano.
  • Durante la fase de desarrollo, es posible que varios miembros del equipo participen o continúen con otros trabajos, dependiendo de la fase activa del proyecto. Por ejemplo, los analistas de negocio pueden aprender y documentar lo que se necesita hacer, mientras los desarrolladores están trabajando en otros proyectos. Los testers, a su vez, pueden preparar scripts de prueba a partir de la documentación de requisitos, mientras la codificación está en curso.
  • Excepto para revisiones, aprobaciones y reuniones de estado, no se requiere estrictamente la presencia del cliente después de la fase de requisitos.
  • Debido a que el diseño se completa al principio del ciclo de vida de desarrollo, esta metodología es idónea para proyectos en los que deben diseñarse múltiples componentes de software, a veces en paralelo, para su integración con sistemas externos.
  • Finalmente, el software puede ser diseñado completamente y con más cuidado, basado en una comprensión más completa de todos los entregables del software.

Desventajas de Waterfall

Pero también nos encontramos con circunstancias adversas cuando decidimos emplear una metodología waterfall puro:

  • Un aspecto que casi siempre falla es la eficacia de los requisitos. Reunir y documentar los requisitos de una manera que sea significativa para el cliente es, a menudo, la parte más difícil del desarrollo de software. En muchas ocasiones, los clientes se sienten intimidados por los detalles, y con este enfoque se requieren detalles específicos, proporcionados al principio del proyecto. Además, los clientes no siempre pueden visualizar una aplicación desde un documento de este tipo. Los wireframes y maquetas pueden ser de ayuda para llegar a una imagen certera de lo que obtendrá el usuario final.
  • Otro inconveniente del desarrollo waterfall es la posibilidad de que el cliente no esté satisfecho con el producto de software suministrado. Dado que todos los entregables se basan en requisitos documentados, es posible que un cliente no vea lo que se entregará hasta que esté casi terminado. Para entonces, los cambios pueden ser difíciles de implementar y costosos.

La metodología Agile

Agile es un enfoque iterativo y basado en equipos para el desarrollo. Este enfoque enfatiza la entrega rápida de una aplicación en componentes funcionales completos. Cada Sprint tiene una duración definida con una lista continua de entregables, planificada al principio del sprint. Los entregables son priorizados por el valor del negocio, determinado por el cliente. Si no se puede completar todo el trabajo planificado para el sprint, se vuelven a priorizar las tareas y se incluyen en el siguiente sprint.

A medida que el trabajo se completa, este puede ser revisado y evaluado por el equipo del proyecto y el cliente, a través de las ceremonias Agile . Las metodologías Agile cuentan con un alto nivel de participación del cliente en todo el proyecto, pero especialmente durante estas revisiones.


Ventajas de la metodología Agile

  • El cliente adquiere un fuerte sentido de pertenencia al trabajar estrechamente con el equipo durante todo el proyecto.
  • El cliente tiene oportunidades frecuentes y tempranas para ver el trabajo que se está llevando a cabo, tomar decisiones y solicitar cambios a lo largo del proyecto de desarrollo.
  • Si el lanzamiento al mercado de una aplicación es prioritario, gracias a las metodologías Agile se puede producir una versión básica de software operativo que puede ser completada en sucesivas iteraciones.
  • El desarrollo está centrado en el usuario.


Desventajas de Agile

  • El elevado grado de implicación del cliente, aunque es excelente para el resultado final del proyecto, puede presentar problemas para algunos ya que no disponen del tiempo o interés para este tipo de participación.
  • Ágile funciona mejor cuando los miembros del equipo de desarrollo están completamente dedicados al proyecto.
  • Debido a que Agile se enfoca en la entrega con timebox o caja de tiempo y la re-priorización frecuente, es posible que algunos elementos establecidos para la entrega no se completen dentro del plazo asignado, lo que incrementaría el coste del proyecto. Además, la participación de los clientes a menudo conduce a características adicionales, solicitadas a lo largo del proyecto, lo que puede derivar en un aumento del tiempo y el coste total de la implementación.
  • Las estrechas relaciones de trabajo en un proyecto Agile son más fáciles de gestionar cuando los miembros del equipo están ubicados en el mismo espacio físico, lo que no siempre es posible.
  • La naturaleza iterativa del desarrollo agile puede llevar a una frecuente refactorización si el alcance completo del sistema no es considerado en la arquitectura y diseño inicial. Sin esta refactorización, el sistema puede sufrir una reducción de la calidad global. Esto se hace más pronunciado en implementaciones de mayor escala o con sistemas que incluyen un alto nivel de integración.

Entonces, ¿cómo elegimos entre waterfall y Agile?

Decidir la metodología más adecuada para cada caso no es una decisión sencilla, cada proyecto, por sus características intrínsecas, requiere distintas formas de gestión. Es conveniente hacer una investigación del proyecto con detenimiento, así como de las circunstancias que lo rodean y del entorno del propio cliente.

En ocasiones, implementar íntegramente una metodología, ya sea waterfall o Agile, es bastante complejo. Es por ello que, dependiendo de la tipología del proyecto, recomendamos un enfoque metodológico híbrido, al que hemos denominamos Hybrid Agile. Esta metodología, parte de Scrum, y suaviza un poco la curva de adaptación al mismo, sin perder la capacidad de introspección, transparencia e iteración de las metodologías Agile, a la vez que introduce ciertas características de metodologías más tradicionales, haciendo así que en entornos que tienen escasa formación en enfoques Agile, los equipos de trabajo y el cliente se sientan más cómodos.

Esta metodología hibrida incluye el uso de prototipos, donde sea posible, para proporcionar al cliente una mejor visión de su producto terminado al principio del ciclo de diseño y desarrollo. Esto ayuda a mejorar la comprensión del equipo de los requisitos y la comunicación con el cliente.

De nuestra experiencia, consideramos los siguientes factores (reflejados en la tabla comparativa) a la hora de elegir una metodología frente a la otra.

Tabla comparativa entre las metodologías Waterfall y Agile

Comparativa entre las metodologías waterfall y agile