Desarrollo de software ágil

Si quieres aumentar la potencia de tus equipos de software, añade prácticas de desarrollo de software ágil. En este artículo te enseñamos algunas de ellas.
software agil

Agile surge en el mundo del desarrollo de software como respuesta a la necesidad de solucionar todos los problemas que habían surgido desde que se comenzó a aplicar el modelo de desarrollo en cascada en los años 70. La adopción de marcos de trabajo como Scrum ayudan a reducir la incertidumbre que acompaña al código, pero puedes potenciarlo aún más si incorporas en tu equipo de desarrollo otras prácticas ágiles.

El efecto de aplicar un marco de trabajo como Scrum en un equipo de desarrollo de software se ve muchas veces lastrado por cómo se construye el software y las prácticas que utilizan. Imagina una empresa que opta por hacer sprints de dos semanas para entregar funcionalidad de forma frecuente. Pero la infraestructura tecnológica retrasa una semana más la llegada de los cambios a los usuarios. El lastre es muy grande. Incluso, si cuentas con una infraestructura rápida pero el código no se prueba correctamente, es cuestión de tiempo que aparezcan los errores y tengas que dedicar tiempo a solucionarlos, en lugar de continuar aportando valor al usuario.

Por suerte este problema se empezó a plantear en la década de los 90 cuando los desarrolladores se dieron cuenta de que el desarrollo en cascada tenía grandes carencias para el desarrollo de software. Sus reflexiones fueron el germen del Agile Manifesto y las prácticas de desarrollo de software se recogieron en metodologías como Extreme Programming (XP) y DevOps.

Pero, ¿qué es el desarrollo ágil?

Hasta principios del siglo XX, cada proyecto de software se estructuraba en una serie de fases que se completaban una detrás de otra, dando lugar al producto terminado al final del proceso. Lo que se conoce como desarrollo en cascada. Si había algún retraso en las primeras etapas, impactaba en las siguientes fases lo que se traducía en errores cuando el producto llegaba a manos del cliente. Frente a esta situación desde los años 90 algunos desarrolladores comenzaron a utilizar algunas prácticas para revertir esta situación.

En febrero de 2001 se reunieron en Snowbird 17 expertos de desarrollo de software para poner en común las prácticas que habían creado para hacer frente a los problemas a los que se enfrentaban en aquellos días en las empresas. El resultado de este encuentro fue el Agile Manifesto, un conjunto de 4 valores y 12 principios que recogen la esencia de esas prácticas.

En palabras de Robert C. Martin en su libro “Desarrollo Ágil Esencial”, uno de los firmantes del Agile Manifesto, el desarrollo ágil es “un proceso en el cual un proyecto se subdivide en iteraciones. El resultado generado por cada iteración se mide y se utiliza para evaluar de manera continua el calendario. Las características se implementan en el orden del valor comercial para que las más valiosas se implementen primero. La calidad se mantiene lo más alta posible. Los plazos se cumplen, sobre todo, mediante la manipulación del alcance”. Como ves, esta definición no se aleja de los marcos de trabajo o metodologías ágiles.

Aquí te dejamos algunas de las prácticas que para el desarrollo de software ágil:

– Integración continua: Si varios programadores trabajan sobre el mismo código, es normal que al unir sus cambios surjan problemas. Para evitar, desde hace tiempo, se viene aplicando la integración continua. Esta práctica automatiza el proceso de incorporar los cambios de un programador al resto del software construido. Cada vez que se incorpora un nuevo código, además, se ejecutan todas las pruebas para verificar que no se rompe nada de lo que está funcionando. De esta forma se reduce el esfuerzo de integrar los cambios, el tiempo de espera y se detectan errores al principio del proceso.

– Despliegue continuo: Una vez que el software está listo, hay que ponerlo en manos del usuario. Para ello necesitamos poner el código accesible para el usuario junto con los cambios en la infraestructura que sean necesarios. Con esta práctica se propone automatizar este proceso, de forma que no requiera de intervención humana para realizarse. Con ello conseguimos reducir los errores “manuales” y asegurando que se realiza siempre de la misma forma.

– Desarrollo dirigido por pruebas: La mejor forma de comprobar que tu software funciona correctamente es hacer pruebas. Pero si transcurre mucho tiempo entre tus pruebas te puedes encontrar con que no sepas en cuál de todas las líneas que has escrito está el error. Por ello, te proponemos que antes de añadir nuevo código, crees el test que lo probará. De esta forma, la primera vez que ejecutes la prueba, como no existe el código, fallará. Una vez que añadas el código, vuelve a ejecutar la prueba para comprobar que la prueba pasa correctamente. Así, cuando acabes el software tendrás además todas las pruebas que verifican su funcionamiento.

– Infraestructura como código: si alguna vez has tenido que configurar una máquina para poder ejecutar tu software en ella, sabrás que es un proceso laborioso que requiere de bastantes tareas manuales. Sin embargo, puedes realizar las operaciones de creación y mantenimiento desde código, como si de una aplicación software se tratase. Además, el código te servirá para ejecutarlo en tantas máquinas como necesites, creándose todas de la misma manera. Incluso puedes utilizar integración continua para añadir el código a tu repositorio y mantenerlo actualizado y disponible. Esta práctica reduce el riesgo a errores manuales y aumenta la velocidad de ejecución.

– Refactorización de código: Refactorizar es la acción de mejorar la estructura del código, sin modificar su comportamiento. Puedes modificar todo lo que necesites sin romper ninguna de las pruebas que validan su comportamiento antes de la refactorización. Esta práctica tiene que ser un proceso continuo que te permita tener el mejor código siempre, el más limpio, el más rentable… Además favorece la comprensión del código

Seguro que echas en falta otras prácticas muy comunes, como la programación en parejas (ya hablamos de ella en una entrada anterior)

¿Cuáles recomiendas tú para un desarrollo de software ágil?

Tabla de contenidos

Comparte:

Más artículos

Matriz RACI: ¿en qué nos puede ayudar?

La matriz RACI o Matriz de Asignación de Responsabilidades es una herramienta que nos permite identificar los roles y las responsabilidades de determinadas tareas en un proyecto de forma muy visual.

Sprint Reviews: ¿Cómo dominarlas?

La Sprint Review es un evento de Scrum de cierre de iteración. Supone un ejercicio de inspección, adaptación y transparencia sobre el producto que estamos construyendo.

Suscríbete y mantente al día de las novedades

¿Alguna duda?

¡Reserva 30 minutos con uno de nuestros expertos y soluciónala!