METODOLOGÍAS ÁGILES
En febrero de 2001, tras una reunión celebrada en Utah-EEUU, nace el término
“ágil” aplicado al desarrollo de software. En esta reunión participan un grupo de
17 expertos de la industria del software, incluyendo algunos de los creadores o
impulsores de metodologías de software. Su objetivo fue esbozar los valores y
principios que deberían permitir a los equipos desarrollar software rápidamente
y respondiendo a los cambios que puedan surgir a lo largo del proyecto.
Se pretendía ofrecer una alternativa a los procesos de desarrollo de software
tradicionales, caracterizados por ser rígidos y dirigidos por la documentación
que se genera en cada una de las actividades desarrolladas.
Tras esta reunión se creó The Agile Alliance3
, una organización, sin ánimo de lucro, dedicada a promover los conceptos
relacionados con el desarrollo ágil de software y ayudar a las organizaciones
para que adopten dichos conceptos. El punto de partida es fue el Manifiesto
Ágil, un documento que resume la filosofía “ágil”
Las metodologías ágiles de desarrollo de software son imprescindibles en un
mundo en el que las cosas cambian a velocidad de vértigo. Los programadores
vivimos preocupados sobre cuáles son las últimas tendencias, que lenguajes o
prácticas quedan obsoletos y con la constante espada de Damocles de pensar
que lo que estamos desarrollando hoy quizás no sirva para nada mañana.
El mundo del desarrollo, para bien o para mal, ha evolucionado desde un
modelo en el que se planificaban y estructuraban minuciosamente todas las
fases a un modelo en el que el desarrollo debe ser lo más rápido y eficiente
posible. Personalmente soy un gran fan de los metodologías ágiles de
desarrollo de software, cutos principios están enunciados en este manifiesto.
Estas son los métodos de desarrollo ágil de páginas que dominan el
panorama a día de hoy:
SCRUM
Scrum es una metodología ágil fantástica para desarrolladores. Consiste en un
modelo de asignación de tareas diarias basado en reuniones rápidas y control
de la evolución de los procesos. Es muy bueno para llevar un seguimiento de
las tareas que se están llevando a cabo y saber en que puntos se ha atascado
el equipo. Además la profundidad de las tareas que se asignan
en SCRUM tiende a ser incremental, y esto coincide exactamente con el
devenir normal de un desarrollo.
Es genial para empresas de desarrollo de software orientadas a varios clientes.
Los actores que intervienen en esta metodología son:
• Propietarios del producto
• Usuarios del producto
• Scrum master
• Equipo de scrum.
Crystal Methodologies
Se trata de un conjunto de metodologías para el desarrollo de software
caracterizadas por estar centradas en las personas que componen el equipo y
la reducción al máximo del número de artefactos producidos. Han sido
desarrolladas por Alistair
Cockburn. El desarrollo de software se considera un juego cooperativo de
invención ycomunicación, limitado por los recursos a utilizar. El equipo de
desarrollo es un factor clave, por lo que se deben invertir esfuerzos en mejorar
sus habilidades y destrezas, así como tener políticas de trabajo en equipo
definidas. Estas políticas dependerán del tamaño del equipo, estableciéndose
una clasificación por colores, por ejemplo Crystal Clear (3 a 8 miembros) y
Crystal Orange (25 a 50 miembros).
Dynamic Systems Development Method
(DSDM) [17]. Define el Marco para desarrollar un proceso de producción de
software. Nace en 1994 con el objetivo de crear una metodología RAD
unificada. Sus principales características son: es un proceso iterativo e
incremental y el equipo de desarrollo y el usuario trabajan juntos. Propone
cinco fases: estudio viabilidad, estudio del negocio, modelado funcional, diseño
y construcción, y finalmente implementación. Las tres últimas son iterativas,
además de existir realimentación a todas las fases.
Adaptive Software Development
(ASD) [9]. Su impulsor es Jim Highsmith. Sus principales características son:
iterativo, orientado a los componentes software más que a las tareas y
tolerante a los cambios. El ciclo de vida que propone tiene tres fases
esenciales: especulación, colaboración y aprendizaje. En la primera de ellas se
inicia el proyecto y se planifican las características del software; en la segunda
desarrollan las características y finalmente en la tercera se revisa su calidad, y
se entrega al cliente. La revisión de los componentes sirve para aprender de
los errores y volver a iniciar el ciclo de desarrollo.
Feature -Driven Development
(FDD) [3]. Define un proceso iterativo que consta de 5 pasos.
Las iteraciones son cortas (hasta 2 semanas). Se centra en las fases de diseño
e implementación del sistema partiendo de una lista de características que
debe reunir el software. Sus impulsores son Jeff De Luca y Peter Coad.
XP o Xtream Programming
Programación Extrema es un método ágil que se suele utilizar en equipos con
muy pocos programadores que tienen muy pocos procesos abiertos al mismo
tiempo. Consiste principalmente en diseñar, implementar, programar e
implantar lo más rápido posible en equipos de programadores muy pequeños,
principalmente parejas, saltándose la documentación y los procedimientos
tradicionales. Se fundamente en la capacidad del equipo para comunicarse
entre sí y las ganas de aprender de los errores propios inherentes en un
programador. La gran ventaja que tiene este sistema es la increíble capacidad
de respuesta del equipo ante imprevistos, aunque es una metodología para la
que es difícil documentar.
XP es un método estupendo para equipos extremadamente pequeños que se
centran en un solo cliente.
El proceso de desarrollo en XP se puede resumir como:
Mientras (sistema_es_útil) {
Captar requisitos
User Stories
Methaphor
Planificar
Release planning
Iteration planning
Desarrollar
Programming
Presentar la entrega
Releasing
}
Puntos clave: el juego de planificación, entregas cortas, diseños simples,
refactorización. La gran foto
XP es una metodología muy utilizada pero como todo tiene también sus
puntos
Débiles. Entre ellos que pocos son los que utilizan la metodología completa.
A continuación se muestran y se explican las prácticas que componen a la
Programación Extrema.
XP no es sólo tirar líneas de código fuente
Desarrollo Lean
Lean Software Development, también conocido como Lean Programming es
un conjunto de técnicas que engloban una metodología de desarrollo ágil de
software orientado a conseguir exactamente lo que necesita el cliente. Es una
evolución del Método Toyota de Producción aplicado al desarrollo y que
está muy de moda entre los equipos de desarrollo en startups. Principalmente
consiste en ciclos de evolución de software incrementales en los que se
postponen las decisiones lo más posible hasta haber obtenido un feedback del
cliente y así reaccionar lo más rápido y eficazmente posible a sus necesidades.
Se fundamenta en tener un equipo potente y comprometido y el principio de
aprendizaje continuo sobre el producto.
El Desarrollo Lean una metodología fantástica para startups que están
desarrollando un software orientado a tener éxito en el mercado, como
desarrolladores de videojuegos o apps para móviles.
Método Tradicional vs Ágil