Las Metodologías Ágiles
A principios de la década del ’90, surgió un enfoque que fue bastante revolucionario para su momento ya que iba en contra de toda creencia de que mediante procesos altamente definidos se iba a lograr obtener software en tiempo, costo y con la requerida calidad. Se dio a conocer en la comunidad de Ingeniería de Software con el nombre de RAD o Rapid ApplicationDevelopment. RAD consistía en un entorno de desarrollo altamente productivo, en el que participaban grupos pequeños de programadores utilizando herramientas que generaban código en forma automática tomando como entradas sintaxis de alto nivel. En general, se considera que Metodologías Ágiles 7 este fue uno de los primeros hitos en pos de la agilidad en los procesos de desarrollo. La historia de las Metodologías Ágiles y su apreciación como tales en la comunidad de la Ingeniería de Software tiene sus inicios en la creación de una de las metodologías utilizada como arquetipo: XP - eXtremeProgramming, que nace de la mente de Kent Beck, tomando ideas recopiladas junto a Ward Cunningham. Durante 1996, Beck es llamado por Chrysler como asesor del proyecto Chrysler ComprehensiveCompensation (C3) payrollsystem. Dada la poca calidad del sistema que se estaba desarrollando, Beck decide tirar todo el código y empezar de cero utilizando las prácticas que él había ido definiendo a lo largo del tiempo. El sistema, que administra la liquidación de aproximadamente 10.000 empleados, y consiste de 2.000 clases y 30.000 métodos, es puesto en operación en Mayo de 1997 casi respetando el calendario propuesto. Como consecuencia del éxito de dicho proyecto, Kent Beck dio origen a XP iniciando el movimiento de metodologías ágiles al que se anexarían otras metodologías surgidas mucho antes que el propio Beck fuera convocado por Chrysler. Es así como que este tipo de metodologías fueron inicialmente llamadas “metodologías livianas”, sin embargo, aun no contaban con una aprobación pues se le consideraba por muchos desarrolladores como meramente intuitiva. Luego, con el pasar de los años, en febrero de 2001, tras una reunión celebrada en Utah-EEUU, nace formalmente el término “ágil” aplicado al desarrollo de software. En esta misma 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 con el objetivo de 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 Alliance, una organización, sin ánimo de lucro, dedicada a promover los conceptos relacionados con el desarrollo ágil de Metodologías Ágiles 8 software y ayudar a las organizaciones para que adopten dichos conceptos. El punto de partida fue el Manifiesto Ágil, un documento que resume la filosofía “ágil”.
¿Por qué usar Metodologías Ágiles?
Podemos decir que las metodologías tradicionales presentan los siguientes problemas a la hora de abordar proyectos:
• Existen unas costosas fases previas de especificación de requisitos, análisis y diseño. La corrección durante el desarrollo de errores introducidos en estas fases será costosa, es decir, se pierde flexibilidad ante los cambios.
• El proceso de desarrollo está encorsetado por documentos firmados. Metodologías
• El desarrollo es más lento. Es difícil para los desarrolladores entender un sistema complejo en su globalidad.
Las metodologías ágiles de desarrollo están especialmente indicadas en proyectos con requisitos poco definidos o cambiantes. Estas metodologías se aplican bien en equipos pequeños que resuelven problemas concretos, lo que no está reñido con su aplicación en el desarrollo de grandes sistemas, ya que una correcta modularización de los mismos es fundamental para su exitosa implantación. Dividir el trabajo en módulos abordables minimiza los fallos y el coste. Las metodologías ágiles presentan diversas ventajas, entre las que podemos destacar:
• Capacidad de respuesta a cambios de requisitos a lo largo del desarrollo
• Entrega continua y en plazos breves de software funcional
• Trabajo conjunto entre el cliente y el equipo de desarrollo
• Importancia de la simplicidad, eliminado el trabajo innecesario
• Atención continua a la excelencia técnica y al buen diseño
• Mejora continua de los procesos y el equipo de desarrollo
Crítica de a las Metodologías Ágiles
Es natural que exista oposición a las metodologías ágiles y que en ocasiones la reacción frente a ellos adoptará una fuerte actitud combativa. Si los ágiles han sido implacables en sus críticas a las metodologías rigurosas, los adversarios que se han ganado noi se han quedado atrás en sus réplicas. Metodologías Ágiles 35 Uno de los ataques más duros y tempranos contra las metodologías ágiles proviene de una carta de Steven Rakitin a la revista Computer, bajo la rúbrica “El Manifiesto genera cinismo”. Refiriéndose a la estructura opositiva del Manifiesto, Rakitin expresa que en su experiencia, los elementos de la derecha (vinculados a la mentalidad planificadora) son esenciales, mientras que los de la izquierda sólo sirven como excusas para que los hackers escupan código irresponsablemente sin ningún cuidado por la disciplina de ingeniería. Así como hay una lectura literal y una estrecha del canon de CMM, Rakitin practica una “interpretación hacker” de propuestas de valor tales como “responder al cambio en vez de seguir un plan” y encuentra que es un generador de caos. La interpretación hacker de ese mandamiento sería algo así como: “¡Genial! Ahora tenemos una razón para evitar la planificación y codificar como nos dé la gana”. Más tarde, un par de libros de buena venta, Questioning Extreme Programming de Pete McBreen y Extreme ProgrammingRefactored: The case against XP de Matt Stephens y Doug Rosenberg promovieron algunas dudas sobre XP pero no llegaron a constituirse como impugnaciones convincentes por su uso de evidencia circunstancial, su estilo redundante, su tono socarrón y su falta de método argumentativo. Inesperadamente, el promotor de RAD Steve McConnell se ha opuesto con vehemencia a las ideas más radicales del movimiento ágil.
El Manifiesto Ágil.
El Manifiesto comienza enumerando los principales valores del desarrollo ágil. Se valora:
Al individuo y las interacciones del equipo de desarrollo sobre el proceso y las herramientas. La gente es el principal factor de éxito de un proyecto software. Si se sigue un buen proceso de desarrollo, pero el equipo falla, el éxito no está asegurado; sin embargo, si el equipo funciona, es más fácil conseguir el objetivo final, aunque no se tenga un proceso bien definido.
Desarrollar software que funciona más que conseguir una buena documentación. Aunque se parte de la base de que el software sin documentación es un desastre, la regla a seguir es “no producir documentos a menos que sean necesarios de forma inmediata para tomar un decisión importante”.
Metodología Ágil
|
Metodología Tradicional
|
Pocos Artefactos. El modelado es prescindible, modelos desechables.
|
Más Artefactos. El modelado es esencial, mantenimiento de modelos
|
Pocos Roles, más genéricos y flexibles
|
Más Roles, más específicos
|
No existe un contrato tradicional, debe ser bastante flexible
|
Existe un contrato prefijado
|
Cliente es parte del equipo de desarrollo (además in-situ)
|
El cliente interactúa con el equipo de desarrollo mediante reuniones
|
Orientada a proyectos pequeños. Corta duración (o entregas frecuentes), equipos pequeños (< 10 integrantes) y trabajando en el mismo sitio
|
Aplicables a proyectos de cualquier tamaño, pero suelen ser especialmente efectivas/usadas en proyectos grandes y con equipos posiblemente dispersos
|
La arquitectura se va definiendo y mejorando a lo largo del proyecto
|
Se promueve que la arquitectura se defina tempranamente en el proyecto
|
Énfasis en los aspectos humanos: el individuo y el trabajo en equipo
|
Énfasis en la definición del proceso: roles, actividades y artefactos
|
Basadas en heurísticas provenientes de prácticas de producción de código
|
Basadas en normas provenientes de estándares seguidos por el entorno de desarrollo
|
Se esperan cambios durante el proyecto
|
Se espera que no ocurran cambios de gran impacto durante el proyecto
|
No hay comentarios:
Publicar un comentario