• 4 hours
  • Easy

Free online content available in this course.

course.header.alt.is_video

course.header.alt.is_certifying

Got it!

Last updated on 2/6/20

Las metodologías ágiles

Log in or subscribe for free to enjoy all this course has to offer!

Orígenes

En el año 2001 un grupo de desarrolladores, convocados por Kent Beck, que no se sentían cómodos con el modelo tradicional de desarrollo de software, se reunieron y firmaron el Manifiesto por el desarrollo Ágil de Software.

Kent Beck había publicado un par de años atrás el libro "Extreme Programming Explained", en el que exponía una nueva metodología que bautizó como "Extreme Programming" o desarrollo extremo. En la reunión se debatió sobre nuevas técnicas para desarrollar software que se llamaron "Metodologías Ágiles", para diferenciarlos de las metodologías previamente utilizadas.

Los valores

En el Manifiesto por el desarrollo Ágil, se resumen los principios sobre los que se basan estos métodos en cuatro postulados:

Anteponer los individuos e interacciones sobre procesos y herramientas

Los procesos son importantes, describen el conjunto de pasos que debemos dar para ejecutar un proyecto. También las herramientas nos ayudan a llevar adelante el trabajo de forma más sencilla y mejoran la eficiencia. Sin embargo, la clave de un proyecto son las personas, las herramientas y los procesos no pueden sustituir el conocimiento, experiencia y trabajo de las personas. 

Anteponer el software en funcionamiento sobre la documentación exhaustiva.

Es fundamental que se empiece a desarrollar el software lo antes posible. Con la base de un programa que puede utilizarse en fases prematuras del proyecto, se obtienen ideas importantes que ayudarán a mejorar y a adaptar el programa a las necesidades del usuario. En cambio, si intentamos reunir en un documento todos los requisitos que el programa debería cumplir, sería imposible concebir estas ideas en un primer momento. Los documentos son importantes, pero son menos importantes que los productos en funcionamiento. 

Anteponer la colaboración con el cliente sobre la negociación contractual.

La concepción de un producto teórico con el cliente, para más tarde entregarle el resultado práctico de la ejecución del proyecto, no es propio del desarrollo ágil. Durante el desarrollo del proyecto, el cliente es uno más del equipo y aporta sus comentarios e ideas que retroalimentan continuamente el proyecto.

Anteponer la respuesta ante el cambio sobre seguir un plan.

Como sabes, el mundo del desarrollo de software está en continua evolución, todo cambia muy rápido y es fundamental tener una pronta capacidad de respuesta a las novedades. Por ello, los planes preestablecidos a largo plazo pueden no ser lo suficientemente flexibles para los proyectos de desarrollo. El desarrollo Ágil prima la flexibilidad y adaptación a la planificación rigurosa y rígida.

Las metodologías Ágiles

Existen muchas formas de aplicar las Metodologías Ágiles para adaptarlas a las necesidades de cada grupo de trabajo y proyecto. Algunas de las más utilizadas en proyectos de desarrollo son las siguientes:

  • Scrum: la metodología ágil más popular hoy en día. Adopta la idea de que el proyecto tiene que desarrollarse de forma iterativa e incremental. El proyecto avanza a través e una serie de iteraciones llamados "sprints", al final de cada "sprint" se obtiene un producto potencialmente listo para su uso.

  • Extreme Programming (XP): esta metodología está pensada para mejorar la calidad del software y para dar una rápida respuesta a los cambios que el cliente quiera implementar. Además, aboga por la publicación continua de nuevas versiones para mejorar la productividad.

  • Feature Driven Development (FDD): consiste en subdividir las diferentes características del software que se debe desarrollar para facilitar su desarrollo. El propósito es entregar software funcional en periodos cortos de tiempo.

Prácticas ágiles de desarrollo de software

Ya conoces los valores y principios en las que se basan las metodologías ágiles, a partir de ellos se han creado diferentes metodologías para llevar a la práctica estas ideas. Además, las metodologías hacen uso de una serie de prácticas concretas que se adaptan a cada tipo de proyecto.

Algunas de las prácticas más populares de desarrollo ágil son las siguientes:

Historias de usuario (User stories)

Una historia de usuario es una representación de un requisito utilizando el lenguaje común del usuario. Las historias de usuario se suelen escribir en tarjetas o notas de tipo post-it, ya sean reales o virtuales.

Una historia de usuario suele escribir de la siguiente forma:

En ejemplo práctico de una historia de usuario puede ser así:

Programación por parejas (Pair Programming) 

La programación por pares es una técnica en la que dos programadores trabajan juntos en un mismo ordenador. Uno de ellos programa y el otro observa y analiza todas las líneas de código escritas por el que está programando. Las posiciones se intercambian frecuentemente, cada pocos minutos.

Desarrollo guiado por pruebas (Test-driven development)

El desarrollo guiado por pruebas consiste en la repetición del siguiente ciclo: 

  1. El requisito que va a implementar se traduce en un test específico.

  2. El software tiene que pasar el nuevo test. En su estado actual, no superará el test.

  3. Se desarrolla la funcionalidad específica que hace superar el test.

Implementación de las metodologías ágiles 

Las bases establecidas por el Manifiesto por el Desarrollo Ágil de Software, ha dado lugar a diferentes metodologías que se apoyan en diversas prácticas concretas para llevar a cabo estas ideas en proyectos reales. Algunos equipos implementan una metodología casi al pie de la letra, mientras que otros toman ciertas ideas y las adaptan a sus grupos de trabajo de forma más libre. En el próximo capítulo profundizaremos en la metodología Scrum, una de las más populares hoy en día. 

Ventajas e inconvenientes

Ventajas

  • En un proyecto nuevo es difícil tenerlo todo en cuenta al principio, los requisitos pueden ir manifestándose a medida que se avanza en el proceso de desarrollo. La flexibilidad de añadir y cambiar requisitos en cualquier momento del proyecto puede ser muy positiva.

  •  La comunicación fluida con el cliente evita el desarrollo de elementos pensados en un principio pero que no aportan valor al producto.

  • El cliente va viendo cómo el producto se desarrolla y tiene sensación de controlar hacia dónde se dirige el proyecto.

Inconvenientes

  • Las metodologías ágiles son fáciles de entender pero difíciles de llevar bien a la práctica. Requiere un fuerte compromiso y una estrecha colaboración entre todas las partes.

  • En las primeras fases, no se conocerá cómo quedará el proyecto una vez finalizado, esto puede generar dudas en clientes acostumbrados a tenerlo todo bien planificado. El cliente, en la mayoría de los casos, quiere saber lo antes posible el resultado que obtendrá por el precio acordado. Con las metodologías ágiles, estimar los plazos y el coste de un proyecto puede ser más difícil.

  • Las metodologías ágiles pueden ser ineficientes en grandes organizaciones. En empresas grandes suele haber especialistas del diseño de software, las pruebas, etc. En las empresas pequeñas en cambio, el equipo suele ser más multidisciplinar y puede adaptarse mejor a todas las fases del proceso de desarrollo.

Example of certificate of achievement
Example of certificate of achievement