jueves, 20 de marzo de 2014

Metodologías de Desarrollo Ágiles Vs. Metodologías Tradicionales


Principales diferencias entre Metodologías de Desarrollo Ágiles Vs. Metodologías Tradicionales:

Metodologías de Desarrollo:

Para el desarrollo de software, se requiere de diversos elementos que agrupados hacen que el desarrollo de software sea o no exitoso.

Para esto existen las metodologías tradicionales que se modificaron para poder aplicarlas  al desarrollo de software, aunque durante mucho tiempo fueron la única solución al desarrollo, hizo estas metodologías poco flexibles y muy cuadriculadas. Estas consistían en una serie fundamentos y conceptos aplicados al desarrollo de software, documentación, planificación y procesos. (Plantillas, técnicas de administración, revisiones, etc.)

Ante las dificultades de las metodologías tradicionales referentes al tiempo y flexibilidad, aparecen las metodologías ágiles como una respuesta metodológica, especialmente porque están orientadas a proyectos pequeños, constituyen una solución a la medida del entorno, simplificando las prácticas y asegurando la calidad del producto.

El término ágil, nace en febrero de 2001 en una reunión en Utah (EEUU), aplicado al desarrollo de software, su objetivo era idear los valores y principios que permitirían a los equipos de desarrollo crear software rápidamente, respondiendo a los cambios surgidos a lo largo del proyecto, ofreciendo una alternativa a los procesos tradicionales. En dicha reunión se creó The Agile Alliance[1], organización, sin ánimo de lucro, que promueve los conceptos relacionados con el desarrollo ágil de software, apoyando las organizaciones para que adopten dichos conceptos.

Según el Manifiesto ágil, se valora al individuo y las interacciones del equipo de desarrollo sobre el proceso y las herramientas, desarrollar software que funciona (más que conseguir una buena documentación), la colaboración con el cliente (más que la negociación mediante contrato),  respuesta a los cambios (más que seguir rigurosamente algún plan).

Cuadro comparativo: Metodologías tradicionales  y ágiles:

Metodologías Tradicionales
Metodologías Ágiles
- Rigidez ante los cambios, de manera lentos o moderada
- Los clientes interactúan con el equipo de desarrollo mediante reuniones
- Grupos de gran tamaño y varias veces distribuidos en diferentes sitios
- Dependencia de la arquitectura de software mediante modelos
- Poco Feedback lo que extiende el tiempo de entrega
- Mínimos roles
- Basadas en normas de estándares de desarrollo
- Procesos muy controlados por políticas y normas
- Seguimiento estricto del plan inicial de desarrollo
- Flexibilidad ante los cambios del proyecto de forma moderada a rápida
- Los clientes hacen parte del equipo de desarrollo
- Grupos pequeños (promedio 10 participantes in situ) en el mismo lugar.
- Menor dependencia de la arquitectura de software
- Continuo Feedback acortando el tiempo de entrega
- Diversidad de roles
- Basadas en heurísticas a partir de prácticas de producción de código
- Procesos menos controlados, pocas  políticas y normas
- Capacidad de respuesta ante los cambios

 

Estas diferencias, no solo afectan el proceso en sí, sino también el contexto del equipo de trabajo y su organización

La metodología ágil XP:

Una de las metodologías que más esta difundiéndose en la actualidad, es la Programación Extrema (XP[2], Extreme Programming). Esta metodología ágil está enfocada a fortalecer las relaciones interpersonales como clave para el éxito en desarrollo de software, promoviendo el trabajo en equipo, un buen clima laboral y preocupándose por el aprendizaje de los desarrolladores. Kent Beck, es el padre de XP (1999), esta metodología se basa en la retroalimentación continua entre el equipo de desarrollo y el cliente, simplificando las soluciones implementadas y disposición para los cambios; Adecuada para proyectos con requisitos imprecisos, cambiantes y con alto riesgo técnico.

Los roles de acuerdo con la propuesta original de Kent Beck son:

 - Programador: Escribe las pruebas unitarias y produce el código del sistema, se recomienda la programación por parejas para minimizar los errores ya que se revisa el código y se discute durante su programación.

 - Cliente: Escribe las historias de usuario y las pruebas funcionales para validar su implementación, también asigna la prioridad a las historias de usuario y decide cuáles se implementan en cada iteración centrándose en aportar mayor valor al negocio.

 - Tester o Delegado de pruebas: Ayuda al cliente a escribir las pruebas funcionales; Ejecuta las pruebas regularmente, difunde los resultados en el equipo y es el responsable de las herramientas de soporte para las pruebas.

 - Tracker o Encargado de seguimiento: Proporciona retroalimentación al equipo, verifica el grado de acierto entre las estimaciones realizadas y el tiempo real dedicado para mejorar estimaciones futuras, también hace seguimiento del progreso de cada iteración.

 - Entrenador o Coach: Responsable del proceso global, provee guías al equipo de manera que se apliquen las prácticas XP y se siga el proceso correctamente.

 - Consultor: Miembro externo del equipo, con conocimiento específico en algún tema necesario para el proyecto, ayuda a resolver problemas que puedan surgir.

 - Gestor o Big Boss: Es el vínculo entre clientes y programadores, encargado de que el equipo trabaje efectivamente creando condiciones adecuadas. Su labor principalmente es coordinación.

 

El ciclo de vida de XP consiste de seis fases:

            - Exploración

            - Planificación de la Entrega (Release)

            - Iteraciones,

            - Producción

            - Mantenimiento

            - Muerte del Proyecto

Software libre OSS

Es un modelo de desarrollo donde no hay un orden estricto de creación, tiene flexibilidad y diversidad en el desarrollo, interactúan diferentes actores y no es controlada por ningún tipo de persona o entidad, sino que prima una gran cantidad de intereses e intercambios, los desarrolladores son de clientes y desarrolladores a la vez, de forma colaborativa se desarrolla software de calidad con pequeños y frecuentes incrementos, tiene una decremento de costos mientras se incrementan la seguridad y la estabilidad, los detalles del diseño se revisan en línea, el código es escrito por pequeños grupos de desarrolladores agiles y las pruebas son procesos rápidos y colaborativos teniendo una retroalimentación es abundante y rápida con pruebas testeadas y pequeñas entregas frecuentes por la comunidad de desarrollo

Las herramientas de desarrollo que sustentan el OSS, son principalmente Internet, por la facilidad de colaboración.


[1]  www.agilealliance.com
[2]  www.extremeprogramming.org, www.xprogramming.com, c2.com/cgi/wiki?ExtremeProgramming

3 comentarios: