Introducción
En los años 90 hubo varios desarrolladores de software que notaron que los métodos convencionales de planificación de proyectos no se adecuaban de manera correcta a los pequeños y medianos trabajos, por lo que empezaron a desarrollar nuevas métodos de desarrollar estos proyectos. Estos métodos ágiles de programación se basaban en nuevos paradigmas de adaptabilidad, de entregas y de planificación. A continuación presento un mapa conceptual sobre los métodos ágiles de programación y un cuestionario sobre el mismo tema.
Desarrollo
Las metodologías tradicionales de desarrollo de software son
orientadas por planeación. Inician el desarrollo de un proyecto con un riguroso
proceso de elicitación de requerimientos, previo a etapas de análisis y diseño.
Con esto tratan de asegurar resultados con alta calidad circunscritos a un
calendario.
En las metodologías
tradicionales se concibe un solo proyecto, de grandes dimensiones y estructura
definida; se sigue un proceso secuencial en una sola dirección y sin marcha
atrás; el proceso es rígido y no cambia; los requerimientos son acordados de
una vez y para todo el proyecto, demandando grandes plazos de planeación previa
y poca comunicación con el cliente una vez ha terminado ésta. En cambio las metodologías ágiles son flexibles, pueden ser
modificadas para que se ajusten a la realidad de cada equipo y proyecto.
Los proyectos ágiles se subdividen en proyectos más pequeños
mediante una lista ordenada de características. Cada proyecto es tratado de
manera independiente y desarrolla un subconjunto de características durante un
periodo de tiempo corto, de entre dos y seis semanas. La comunicación con el
cliente es constante al punto de requerir un representante de él durante el
desarrollo. Los proyectos son altamente colaborativos y se adaptan mejor a los
cambios; de hecho, el cambio en los requerimientos es una característica
esperada y deseada, al igual que las entregas constantes al cliente y la
retroalimentación por parte de él. Tanto el producto como el proceso son
mejorados frecuentemente. Los métodos ágiles más conocidos y empleados son:
Extreme Programming
La principal suposición que se realiza en XP es la
posibilidad de disminuir la mítica curva exponencial del costo del cambio a lo
largo del proyecto, lo suficiente para que el diseño evolutivo funcione. Esto
se consigue gracias a las tecnologías disponibles para ayudar en el desarrollo
de software y a la aplicación disciplinada de algunas prácticas como el juego
de la planificación, entregas pequeñas, metáfora, diseño simple, pruebas,
refactorización, programación en parejas, propiedad colectiva del código,
integración continua entre otros.
Scrum
Está especialmente indicada para proyectos con un rápido
cambio de requisitos. Sus principales características se pueden resumir en dos.
El desarrollo de software se realiza mediante iteraciones, denominadas sprints,
con una duración de 30 días. El resultado de cada sprint es un incremento
ejecutable que se muestra al cliente. La segunda característica importante son
las reuniones a lo largo proyecto, entre ellas destaca la reunión diaria de 15
minutos del equipo de desarrollo para coordinación e integración.
Adaptive Software Development
Esta metodología parte de la idea de que las necesidades del
cliente son siempre cambiantes durante el desarrollo del proyecto (y
posteriormente a su entrega). Su impulsor es Jim Highsmith, la novedad de esta
metodología es que en realidad no es una metodología de desarrollo de software, sino
un mé- todo (como un caballo de troya) a través del cual inculcar una cultura
adaptativa a la empresa, ya que su velocidad de adaptación a los cambios
marcará la diferencia entre una empresa próspera y una en declive. Los
objetivos de esta metodología son cuatro:
- Concienciar a la organización de que debe esperar cambio e incertidumbre y no orden y estabilidad.
- Desarrollar procesos iterativos de gestión del cambio.
- Facilitar la colaboración y la interacción de las personas a nivel interpersonal, cultural y estructural.
- Marcar una estrategia de desarrollo rápido de aplicaciones pero con rigor y disciplina
Crystal methodologies
No se trata de una única metodología sino de un conjunto de ellas
centradas en las personas que tienen que desarrollar el software, el equipo es la base
de estas metodologías creadas por Alistair Cockburn. Desarrollar aplicaciones
ha de ser como un juego en el que todos cooperan, aportan su parte de invención
y se comunican. ¿Por qué olvidamos esta parte? Crystal establece una serie de
políticas de trabajo en equipo (Methods) orientadas a fomentar la mejora de estas
habilidades. Dependiendo del tamaño del equipo, se establece una metodología u
otra designadas por color: Crystal Clear (para 3-8 personas), Crystal Yellow (para
10-20 personas), Crystal Orange (para 25-50), etc.
Feature Driven Development
Se basa en un ciclo muy corto de iteración, nunca superior a dos
semanas, y en el que el análisis y los desarrollos están orientados a cumplir
una lista de "características" (features) que tiene que tener el
software a desarrollar.
A continuación se presenta un mapa conceptual realizado con el software cmap tools además de algunas preguntas resueltas.
- Los métodos ágiles se utilizan en: --Desarrollo de Software
- ¿Qué modelo de desarrollo de software utilizan los métodos ágiles? --Iterativo
- ¿Cuáles son las principales características en las que se basa el método ágil? --Trabajo en equipo, adaptable, avances funcionales
- ¿Cuáles son las características que diferencian al método ágil del convencional? --Adaptable en cualquier etapa del proyecto
- En los métodos ágiles el cliente: --Se incorpora al equipo de trabajo
Conclusión
Es notorio que los métodos ágiles de programación son de inmensa utilidad cuando deseamos llevar a cabo proyectos cortos o medianos, y por eso es importante conocerlos y estar preparado para usarlos. Es de primordial importancia que los proyectos se realicen de la manera más efectiva posible, y estos métodos son una herramienta poderosa para ayudarnos a lograr nuestro cometido.
Referencias
- http://www.willydev.net/descargas/prev/TodoAgil.Pdf
