domingo, 7 de febrero de 2016

Métodos Ágiles de Programación

Introducción
La importancia de los métodos ágiles para el desarrollo y gestión se debe a que con el paso del tiempo han cambiado y/o evolucionado las situaciones bajo las que se rige el ciclo de vida del software, por lo que se ha recurrido a utilizar distintas maneras que permitan a los desarrolladores, reducir tiempos, reducir errores en el software, se busca mayor productividad, sin olvidar entregar un producto de calidad. En la época de los 80's y 90's surgen nuevos enfoques, pues la elaboración de software no es una tarea fácil. Las metodologías ágiles de proyectos vienen a ofrecer a las personas del equipo de trabajo una visión clara, dinámica y en tiempo real de lo que se está trabajando en cada momento.
Usando metodologías ágiles, el cliente es un miembro más del equipo de trabajo, por lo cual se tiene la participación activa de este en todos los momentos del ciclo de vida del proyecto, siendo una guía para que no haya desviaciones en el mismo y que las entregas parciales y finales sean lo que realmente pidió, eliminando ambigüedades o supuestos. Cada una de ellas tiene sus características e implicaciones, tienen puntos en común pero lo más destacado es que son metodologías que pueden adaptarse según las necesidades de la empresa o proyecto, y se han visto resultados al utilizarlas.

Desarrollo
En el pasado existía una idea de que la mejor forma de obtener un software de mayor calidad era planificándolo cuidadosamente, utilizando herramientas de análisis y diseño para el desarrollo de grandes sistemas de software de un ciclo de vida largo, que normalmente se componían de un gran número de programas individuales.
Estos sistemas eran desarrollados por grandes equipos de trabajo que a veces trabajaban para distintas compañías, estaban dispersos geográficamente y trabajaban el software durante mucho tiempo, por ejemplo, en los sistemas de control de un avión moderno podían pasar 10 años desde la especificación inicial hasta la utilización del sistema.
Esto propicio un descontento por los enfoques pesados y condujo a varios desarrolladores de software proponer nuevos métodos ágiles.
Para comenzar a desarrollar el tema definimos los siguientes conceptos:
¿Qué es un método? Modo ordenado y sistemático de proceder para llegar a un resultado o fin determinado.
¿Qué es agilidad? Es la aptitud que tiene alguien de ejecutar rápida, pronta, ligera y eficazmente tareas de índole física o intelectual.
El desarrollo ágil de software refiere a métodos de ingeniería del software basados en el desarrollo iterativo e incremental, estas metodologías son imprescindibles en un mundo en el que nos exponemos a cambios recurrentemente, de esta manera los métodos ágiles de programación son eficientes y eficaces, ya que nos proporcionan el alcance del mismo objetivo con menos recursos, y a su vez, se alcanzan objetivos propuestos.
Estos métodos ágiles permitieron a los equipos de desarrollo centrarse en el software mismo en vez de en su diseño y documentación. Los métodos ágiles dependen de un enfoque iterativo para la especificación, desarrollo y entrega del software, y principalmente fueron diseñados para apoyar al desarrollo de aplicaciones de negocio donde los requerimientos del sistema normalmente cambiaban rápidamente durante el proceso de desarrollo. Están pensados para entregar software funcional de forma rápida a los clientes, quienes pueden entonces proponer que se incluyan en iteraciones posteriores del sistema nuevos requerimientos o cambios en los mismos.
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.
La gente es el principal factor de éxito de un proyecto software. Es más importante construir un buen equipo que construir el entorno. Muchas veces se comete el error de construir primero el entorno y esperar que el equipo se adapte automáticamente. Es mejor crear el equipo y que éste configure su propio entorno de desarrollo en base a sus necesidades.

2.- El software que funciona, frente a la documentación exhaustiva.
La regla a seguir es “no producir documentos a menos que sean necesarios de forma inmediata para tomar un decisión importante”. Estos documentos deben ser cortos centrarse en lo fundamental.

3.-  La colaboración con el cliente, por encima de la negociación de un contrato.
Se propone que exista una interacción constante entre el cliente y el equipo de desarrollo. Esta colaboración entre ambos será la que marque la marcha del proyecto y asegure su éxito.

4.- La respuesta al cambio, por encima del seguimiento de un plan.
La habilidad de responder a los cambios que puedan surgir a los largo del proyecto (cambios en los requisitos, en la tecnología, en el equipo, etc.) determina también el éxito o fracaso del mismo. Por lo tanto, la planificación no debe ser estricta sino flexible y abierta.

¿Por qué utilizar metodologías ágiles?
En resumen, las metodologías ágiles presentan las siguientes ventajas:
  • Las metodologías ágiles son especialmente recomendadas en proyectos con requisitos poco definidos o cambiantes. Formados por equipos pequeños que resuelven problemas concretos.
  • Dividir el trabajo en módulos minimiza los fallos y el coste.
  • Tienen capacidad de respuesta a  posibles cambios de requisitos a lo largo del proceso de desarrollo.
  • Permiten la entrega continua y en plazos breves de los objetivos que se van consiguiendo.
  • Trabajo conjunto entre el cliente y el equipo de desarrollo.
  • Prevalece la simplicidad, lo que conlleva la eliminación del trabajo innecesario.
  • Atención continua.

Estos son algunos ejemplos de métodos de desarrollo ágil:
  • SCRUM  
  • XP Xtream Programming
  • Desarrollo Lean



Conclusión
Los métodos ágiles son una parte fundamental en el desarrollo del software, se basan en principios que buscan principalmente la participación del cliente, entrega incremental que incluye las especificaciones del cliente en cada incremento, se basa en las personas y no tanto en los procesos, esto último con la finalidad de explotar y reconocer las habilidades del equipo de desarrollo; aceptar el cambio, pues si el mercado, la visión general o el público al que va a estar dirigido cambia, el software cambia con ellos, así como mantener la simplicidad.
Es importante reconocer que no existe una metodología 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, etc.).

Por lo que el éxito de la industria del desarrollo de software se basa en elegir y utilizar el método ágil que se adapte más a las características y situaciones con las que se cuenta, es decir, aprovechar los recursos tanto como se pueda. Sin estas herramientas, el desarrollo de software seguiría siendo rutinario y pobremente eficaz.

Referencias
-Carvajal Riola, J. C. (Septiembre 2008). Metodologías Ágiles: Herramientas y modelo de desarrollo de aplicaciones Java EE como metodología empresarial. Tesis Final de Máster. Barcelona.
-Cockbun, A. (2001). Desarrollo de Software Ágil. Addison Wesley.
-Daniel Grifor.es. (Noviembre de 2014). Obtenido de Metodologías ágiles de desarrollo de software: http://danielgrifol.es/metodologias-agiles-de-desarrollo-de-software/
-Grupo ISSI. (2003). Metodologías Ágiles en el Desarrollo de Software. Alicante España: jisbd.
-Raya, R. (24 de Julio de 2014). Lean Monitor Blog. Obtenido de http://blog.leanmonitor.com/es/que-son-las-metodologias-agiles/
-Somerville, I. (2005). Ingeniería de Software. Madrid: Pearson.


Mapa conceptual

Evaluación
1. Los métodos ágiles se utilizan en:
a) Programación Orientada a Objetos
b) Desarrollo de software
c) Soporte de Software
d) Programación estructurada
e) Calidad de Software

2. ¿Qué modelo de desarrollo de software utilizan los métodos ágiles?
a) Cascada
b) Lineal
c) Iterativo
d) Espiral
e) Evolutivo

3. ¿Cuáles son las principales características en las que se basa el método ágil?
a) Trabajo en equipo, adaptable, avances funcionales
b) Satisfacción del cliente, reduce tiempo, una sola entrega final.
c) Comunicación, no se adapta a los cambios, no es interactivo.
d) Orientado a resultados, no hay comunicación, no hay trabajo en equipo

4. ¿Cuáles son las características que diferencian al método ágil del convencional?
a) El cliente participa en el equipo de desarrollo
b) Trabajo en equipo
c) Satisfacción del cliente
d) Presenta avances incrementales del proyecto al cliente
e) Adaptable en cualquier etapa del proyecto

5. En los métodos ágiles el cliente:
a) Desarrolla Software
b) Se incorpora al equipo de trabajo
c) Trabaja en otros proyectos de software
d) Resuelve problemas de comunicación del equipo
e) Proporciona los recursos materiales

No hay comentarios:

Publicar un comentario