Metodologías ágiles

8
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

Transcript of Metodologías ágiles

METODOLOGÍAS ÁGILESEn 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:

SCRUMScrum 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 ProgrammingProgramació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 puntosDé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 LeanLean 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