viernes, 27 de marzo de 2015

1)Métodos Ágiles de Programación

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:
  1. Concienciar a la organización de que debe esperar cambio e incertidumbre y no orden y estabilidad.
  2. Desarrollar procesos iterativos de gestión del cambio.
  3. Facilitar la colaboración y la interacción de las personas a nivel interpersonal, cultural y estructural.
  4. 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.

  1. Los métodos ágiles se utilizan en: --Desarrollo de Software
  2. ¿Qué modelo de desarrollo de software utilizan los métodos ágiles? --Iterativo
  3. ¿Cuáles son las principales características en las que se basa el método ágil? --Trabajo en equipo, adaptable, avances funcionales
  4. ¿Cuáles son las características que diferencian al método ágil del convencional? --Adaptable en cualquier etapa del proyecto
  5. 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
  • Dingsøyr, Torgeir; Dybå, Tore; Brede Moe, Nils. Agile Software Development: Current Research and Future Directions. 2010.
  • http://issi.dsic.upv.es/archives/f-1069167248521/actas.pdf
  • Jorge F., Introducción a las metodologías ágiles, otras formas de analizar y desarrollar, Universitat Oberta de Catalunya.