Metodologías Agiles

Metodologías Agiles
Información sobre la plantilla
Metodagil.jpg
Concepto:Son serie de técnicas para la gestión de proyectos que han surgido como contraposición a los métodos clásicos de gestión

Metodologías Ágiles. Las metodologías ágiles son una serie de técnicas para la gestión de proyectos que han surgido como contraposición a los métodos clásicos de gestión como CMMI. Aunque surgieron en el ámbito del desarrollo de software, también han sido exportadas a otro tipo de proyectos. Todas las metodologías que se consideran ágiles cumplen con el manifiesto ágil que no es más que una serie de principios que se agrupan en 4 valores: 1- Los individuos y su interacción, por encima de los procesos y las herramientas. 2- El software que funciona, frente a la documentación exhaustiva. 3- La colaboración con el cliente, por encima de la negociación contractual. 4- La respuesta al cambio, por encima del seguimiento de un plan.

Metodología ágil vs tradicional

Con el auge de la tecnología, y con el objetivo de agilizar y automatizar los procesos en el desarrollo de software, está la necesidad de implantar Metodologías de Desarrollo de Software que ayudan a entregar un producto de calidad en tiempo y costo estimados, las metodologías ágiles de desarrollo de software han despertado interés gracias a que proponen simplicidad y velocidad para crear sistemas. Las metodologías tradicionales no se adaptan a las nuevas necesidades o expectativas que tienen los usuarios hoy en día, en parte que los métodos usados no son flexibles ante la posibilidad de la exigencia de nuevos requerimientos. Estos cambios generalmente implican altos costos, demanda de tiempo y la reestructuración total del proyecto que se esté llevando; en contraparte, los métodos ágiles permiten un desarrollo iterativo y adaptable que permite la integración de nuevas funcionalidades a lo largo del desarrollo del proyecto; para que tanto el cliente como el desarrollador queden satisfechos porque el producto final tiene una calidad adecuada.

Descripción

Un proceso es ágil cuando el desarrollo de software es:

  • Incremental. Entregas pequeñas de software, con ciclos rápidos.
  • Cooperativo. Cliente y desarrolladores trabajan juntos constantemente con una cercana comunicación.
  • Sencillo. El método en sí mismo es simple, fácil de aprender y modificar. Está bien documentado y es adaptable. Permite realizar cambios de último momento.

Sus elementos claves son:

  • Poca documentación
  • Simplicidad
  • Análisis como una actividad constante
  • Diseño evolutivo
  • Integraciones
  • Testeos diarios

Cuando usar metodologías ágiles

No existe una metodología universal para hacer frente con éxito a cualquier proyecto de desarrollo de software. Toda metodología debe ser adaptada al contexto del proyecto (recursos técnicos y humanos, tiempo de desarrollo, tipo de sistema). Históricamente, las metodologías tradicionales han intentado abordar la mayor cantidad de situaciones de contexto del proyecto, exigiendo un esfuerzo considerable para ser adaptadas, sobre todo en proyectos pequeños y con requisitos muy cambiantes. Las metodologías ágiles ofrecen una solución casi adecuada para una gran cantidad de proyectos. Sin embargo existen métodos más generales y con mejores resultados que otros. Saber qué reglas y metodologías aplicar en cada caso es más importante y útil que seguir ciegamente siempre las mismas.

Casos donde no conviene usar métodos ágiles

Las propias prácticas de los métodos ágiles limitan o descartan su uso en algunos proyectos. A continuación se detallan algunos casos donde no conviene usar métodos ágiles. - Aplicaciones distribuidas. Las pruebas unitarias son complicadas de aplicar entre componentes. Sería necesario construir una arquitectura de pruebas para probar directamente los componentes, que podría ser tan complicada como el sistema que se desea construir. - Aplicaciones que requieren seguir un diseño estricto. Por ejemplo: sistemas operativos, software de telecomunicaciones. - Aplicaciones que requieren una documentación exhaustiva. Por ejemplo: sistemas militares, médicos o industriales. - Aplicaciones basadas fundamentalmente en interfaces gráficas de usuario: No es fácil aplicar pruebas unitarias a las interfaces gráficas. - Aplicaciones con código heredado. Habría que reescribir todo el código heredado siguiendo los principios ágiles. - Proyectos muy grandes. La comunicación entre los miembros del equipo es difícil de conseguir. - Proyectos escritos en lenguajes no orientados a objetos. Lenguajes como C, Pascal, Cobol o Fortran hacen imposible técnicas como la refactorización. - Aplicaciones donde la escalabilidad o la eficacia sean importantes. La escalabilidad o la eficacia no son características que se pueden añadir durante el proceso del desarrollo del software o que puedan obtenerse refactorizando: deben considerarse desde un principio.

Características

- Basadas en heurísticas provenientes de prácticas de producción de código - Especialmente preparados para cambios durante el proyecto - Impuestas internamente (por el equipo) - Proceso menos controlado, con pocos principios - No existe contrato tradicional o al menos es bastante flexible - El cliente es parte del equipo de desarrollo - Grupos pequeños (<10 integrantes) y trabajando en el mismo sitio - Pocos artefactos - Pocos roles - Menos énfasis en la arquitectura del software

Tipos de Metodologías ágiles

- XP, o Programación Extrema, es uno de los ejemplos más exitosos de metodología ágil. - Scrum - Crystal - Evolutionary Project Management (Evo) - Feture Driven Development (FDD) - Adaptive Software Developmen(ASD) - Lean Development (LD) y Lean Software Development (LSD) - RUP Ágil, existiendo dos variantes AUP y EUP - RAD

Ventajas de las metodologías ágiles

Las metodologías ágiles presentan diversas ventajas como: - Rápida respuesta a cambios de requisitos a lo largo del desarrollo. - Entrega continua y en plazos cortos de software funcional. - Trabajo conjunto entre el cliente y el equipo de desarrollo. - Minimiza los costos frente a cambios. - Importancia de la simplicidad, al eliminar 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. - Evita malentendidos de requerimientos entre el cliente y el equipo. - El equipo de desarrollo no malgasta el tiempo y dinero del cliente desarrollando soluciones innecesariamente generales y complejas que en realidad no son un requisito del cliente. - Cada componente del producto final ha sido probado y satisface los requerimientos.

Desventajas de los métodos ágiles

Como en cualquiera otra metodología, también hay desventajas y problemas que surgen a la hora de implementarlas: - Falta de documentación del diseño. El código no puede tomarse como una documentación. En sistemas de tamaño grande se necesitar leer los cientos o miles de páginas del listado de código fuente. - Problemas derivados de la comunicación oral. Este tipo de comunicación resulta difícil de preservar cuando pasa el tiempo y está sujeta a muchas ambigüedades. - Falta de calidad. Probar el código de forma constante no genera productos de calidad, sólo revela falta de análisis y diseño. - Fuerte dependencia de las personas. Como se evita en lo posible la documentación y los diseños convencionales, los proyectos ágiles dependen críticamente de las personas. - Falta de procesos de revisión del código. Con métodos como el PSP o TSP se han conseguido reducciones de errores que oscilan entre el 60 y el 80%. La programación en parejas tiene resultados del 20 al 40%, que no es mucho frente al 10 y el 25% de un programador. - Falta de reusabilidad. La falta de documentación hacen difícil que pueda reutilizarse el código ágil. - Sobre costos y retrasos derivados de la refactorización continua. Para un sistema de ciertas proporciones, los costos y retrasos derivados de la refactorización no pueden despreciarse. - Restricciones en cuanto a tamaño de los proyectos abordables. - Rigidez. Algunos métodos ágiles son muy rígidos: deben cumplirse muchas reglas de una forma estricta para garantizar el éxito del proyecto. Por ejemplo XP exige en realidad mucho esfuerzo, concentración y orden. - Cambios. Los modelos de datos son “pesados” y no pueden cambiarse así como así solo porque el cliente que ira incorporar más funciones al sistema. - Problemas derivados del fracaso de los proyectos ágiles. Si un proyecto ágil fracasa no hay documentación o hay muy poca; lo mismo ocurre con el diseño. La comprensión del sistema se queda en las mentes de los desarrolladores.

Fuentes

  • Giraldo, Z. “Herramientas de Ingeniería de software”.
  • Gómez, J. “¿Metodología?... Sí, pero, ¿cuál? ” 12 de enero del 2006.