• slidebg1

Metodologías ágiles en el desarrollo de software


Históricamente, el desarrollo de software ha sido una tarea tediosa y compleja, donde muchas veces la rentabilidad de la misma estaba muy por debajo de su coste. Eran épocas de desarrollos interminables, de infinidad de líneas de código donde cualquier cambio en el proyecto inicial suponía un auténtico quebradero de cabeza para el desarrollador. La poca (o nula) tolerancia y/o previsión a cambios, los métodos arcaicos de programación, etc. no contribuían a generar un ecosistema adecuado para el correcto desarrollo de software.

 

Margaret Hamilton, directora de ingeniería de software del proyecto Apolo posando junto al código impreso del proyecto

 

Con el paso de los años, fueron surgiendo nuevos lenguajes de programación (en teoría más sencillos...), entornos más amigables, frameworks que facilitaban muchas tareas, conceptos que las empresas dedicadas al desarrollo de software acogieron rápidamente para mejorar la calidad y los plazos de entrega de sus proyectos. Pero, ¿es esto suficiente en la actualidad? 

Obviamente, ¡NO! 

En un mundo tan cambiante, donde predominan los tiempos y la rentabilidad, muchas veces las empresas olvidan el tercer factor fundamental… la calidad. Pero, ¿es posible meter estas tres variables en la ecuación y obtener un resultado positivo? 

Obviamente, ¡SÍ!

Si repasamos un poco la historia, en 2001, un grupo de expertos, a petición del ingeniero Kent Beck (creador de las metodologías XP y TDD), se reunieron para debatir la situación del desarrollo de software y acuñaron la expresión “metodologías ágiles”. La expresión hacía referencia a un marco de trabajo en el cual era posible aumentar la calidad del desarrollo, reducir los tiempos, eliminar la incertidumbre, aceptar la tolerancia a cambios… en definitiva, incrementar la satisfacción del cliente.

Los asistentes a la reunión firmaron el siguiente escrito:

 

“Estamos descubriendo formas mejores de desarrollar

software tanto por nuestra propia experiencia como

ayudando a terceros. A través de este trabajo hemos

aprendido a valorar:

Individuos e interacciones sobre procesos y herramientas

Software funcionando sobre documentación extensiva

Colaboración con el cliente sobre negociación contractual

Respuesta ante el cambio sobre seguir un plan

 

Esto es, aunque valoramos los elementos de la derecha,

valoramos más los de la izquierda.”



Lo que dió lugar a los 12 principios del Manifiesto Ágil

1. Nuestra mayor prioridad es satisfacer al cliente mediante la entrega temprana y continua de software con valor.

2. Aceptamos que los requisitos cambien, incluso en etapas tardías del desarrollo. Los procesos Ágiles aprovechan el cambio para proporcionar ventaja competitiva al  cliente.

3. Entregamos software funcional frecuentemente, entre dos semanas y dos meses, con preferencia al periodo de  tiempo más corto posible.

4. Los responsables de negocio y los desarrolladores trabajamos juntos de forma cotidiana durante todo el proyecto.

5. Los proyectos se desarrollan en torno a individuos  motivados. Hay que darles el entorno y el apoyo que  necesitan, y confiarles la ejecución del trabajo.

6. El método más eficiente y efectivo de comunicar  información al equipo de desarrollo y entre sus  miembros es la conversación cara a cara.

7. El software funcionando es la medida principal de progreso.

8. Los procesos Ágiles promueven el desarrollo sostenible. Los promotores, desarrolladores y usuarios debemos ser capaces de mantener un ritmo constante de forma indefinida.

9. La atención continua a la excelencia técnica y al buen diseño mejora la Agilidad.

10. La simplicidad, o el arte de maximizar la cantidad de trabajo no realizado, es esencial.

11. Las mejores arquitecturas, requisitos y diseños emergen de equipos auto-organizados.

12. A intervalos regulares el equipo reflexiona sobre cómo ser más efectivo para a continuación ajustar y perfeccionar su comportamiento en consecuencia.

Por tanto, las tres variables se asocian perfectamente en la ecuación “metodologías ágiles”, lo que significa que una empresa dedicada al desarrollo de software que no opte por una metodología ágil difícilmente podrá sobrevivir al entorno actual pero, sobre todo, a los nuevos tiempos que se avecinan.

Es decir, la duda no debería ser ¿es necesario utilizar una metodología ágil para desarrollar software? La duda, más bien, debería ser ¿qué metodología ágil escojo para desarrollar software?

Algunas de las principales opciones, a día de hoy, son:

1. Scrum: “Scrum es un marco de trabajo para desarrollar, entregar y mantener productos complejos”.

2. eXtreme Programming (XP): “Extreme Programming (XP) es un marco de desarrollo de software ágil que tiene como objetivo producir software de mayor calidad y una mejor calidad de vida para el equipo de desarrollo.”

3. Kanban:  “Sistema de información que controla de modo armónico la fabricación de los productos necesarios en la cantidad y tiempo necesarios en cada uno de los procesos.”

4. Scrumban: metodología que utiliza lo mejor de scrum y de kanban.

5. Lean: “Originado en el Sistema de Producción de Toyota, este método ofrece todo un marco teórico sólido y basado en la experiencia, para las prácticas ágiles de gestión.”

6. Feature-Driven Development (FDD): “Feature-Driven Development (FDD) es una metodología ágil basada en la calidad y el monitoreo constante del proyecto.”

7. Test-Driven Development (TDD): “Test-Driven Development es un proceso de desarrollo de software que se basa en la repetición de un ciclo de desarrollo muy corto: los requisitos se convierten en casos de prueba muy específicos, luego se mejora el software para pasar las nuevas pruebas.”

En el gráfico siguiente, se puede observar la tendencia actual (2017) en cuanto al uso de metodologías ágiles.

 

 

Conclusión

Las empresas que no adopten una metodología ágil para el desarrollo de software van a tener muy complicado sobrevivir al mundo actual. Cierto es que, implantar una metodología ágil en una empresa tradicional, no es una tarea sencilla pero, sin lugar a dudas, merece la pena realizar este esfuerzo (inversión) para afrontar el futuro con garantías. 

Be agile, my friend!

 

 

Referencias:

es.wikipedia.org/wiki/desarrollo_agil_de_software

agilemanifesto.org/iso/es/manifesto.html

scrumguides.org/docs

agilealliance.org/glossary/xp/

Públicado el 24/01/2018

Comparte este post: