Ir al contenido principal

Métodos Ágiles


¿Qué es un método? 

A menudo para comprender un concepto es necesario recurrir a los conceptos de los que este deriva o simplemente a los orígenes de este. 

Un método se puede definir como: 
El proceso, trazado por medio de reglas y procedimientos para el uso de técnicas y herramientas, que conduce a un objetivo en especifico. está basado en una determinada filosofía.

Una definición formal aplicada para el software:
“Una metodología es una colección de procedimientos, técnicas, herramientas y documentos auxiliares que ayudan a los desarrolladores de software en sus esfuerzos por implementar nuevos sistemas de información. Una metodología esta formada por fases, cada una de las cuales se puede dividir en sub-fases, que guiarán a los desarrolladores de sistemas a elegir las técnicas mas apropiadas en cada momento del proyecto y también a planificarlo, gestionarlo, controlarlo y evaluarlo.”
-David Avison, Guy Fitzgerald-

¿Qué conlleva agilidad? 

Una vez comprendido el concepto de método debemos definir el concepto de agilidad, que, muchas veces suele considerarse "mejor", la agilidad significa básicamente la capacidad para ejecutar rápida, pronta, ligera y eficazmente alguna tarea. Agilidad no es para nada sinónimo de calidad y por lo tanto un método ágil no tiene por que asegurar calidad.

¿Cómo se usa en desarrollo de software? 


Uniendo los dos conceptos de método y agilidad podemos sencillamente definir un método ágil:
El proceso, trazado por medio de reglas y procedimientos para el uso de técnicas y herramientas basadas en una determinada filosofía con el fin de lograr un objetivo y, en su proceso, ejecutar las tareas necesarias rápida, pronta y ligeramente.

Este concepto sirve a nivel teórico. Pero es un concepto muy básico y que en la ingeniería de software no nos dice realmente algo útil. Para terminar de definirlo debemos de estudiar un poco el contexto histórico del surgimiento de los Métodos ágiles.

Contexto histórico del surgimiento de Los Métodos Ágiles


Los métodos tradicionales usados comúnmente en proyectos grandes resultaron ineficaces para ciertas situaciones que empezaron a surgir. Las causas son muchas y normalmente se dice que la combinación de todas estas fue lo que permitió una nueva forma de desarrollar software. 
Podemos enlistar las mas relevantes:

  • Lentitud de reacción, exceso de documentación, en definitiva, falta de agilidad de los modelos de desarrollo existente.
  • Explosión de la red y las aplicaciones Web. Surgió la web y con ello aplicaciones y sistemas en tiempos muy cortos, la vida del software se vio altamente reducida. Se requirió un rápido desarrollo para sobrevivir en el mercado. 
  • Movimiento Open-Source. También llamado código abierto permitió que las comunidades en Internet desarrollaran en tiempos muy cortos debido a la cantidad de personas participando en estos proyectos y que contaban con la ventaja de que no conllevaban tanta normatividad.
Las metodologías tradicionales no funcionaban en pequeños proyecto por que no eran flexibles a cambios. En marzo de 2001, Kent Beck convocó a 17 críticos de los modelos de mejora basados en procesos. En la reunión se acuñó el término “Métodos Ágiles" donde surgiría un resumen en forma de cuatro principios, que actualmente conocemos como “Manifiesto Ágil”.

Manifiesto Ágil 

Basado en 4 valores: 

  • Individuos e interacciones - sobre procesos y herramientas
  • Software funcionando - sobre documentación extensiva
  • Colaboración con el cliente - sobre negociación contractual
  • Respuesta ante el cambio -  sobre seguir un plan

Los doce principios del manifiesto ágil


Nuestra mayor prioridad es satisfacer al cliente
mediante la entrega temprana y continua de software
con valor.

Aceptamos que los requisitos cambien, incluso en etapas 
tardías del desarrollo. Los procesos Ágiles aprovechan
el cambio para proporcionar ventaja competitiva al 
cliente.

Entregamos software funcional frecuentemente, entre dos
semanas y dos meses, con preferencia al periodo de 
tiempo más corto posible.

Los responsables de negocio y los desarrolladores
trabajamos juntos de forma cotidiana durante todo
el proyecto.

Los proyectos se desarrollan en torno a individuos 
motivados. Hay que darles el entorno y el apoyo que 
necesitan, y confiarles la ejecución del trabajo. 

El método más eficiente y efectivo de comunicar 
información al equipo de desarrollo y entre sus 
miembros es la conversación cara a cara.

El software funcionando es la medida principal de 
progreso.

Los procesos Ágiles promueven el desarrollo 
sostenible. Los promotores, desarrolladores y usuarios
debemos ser capaces de mantener un ritmo constante 
de forma indefinida.

La atención continua a la excelencia técnica y al 
buen diseño mejora la Agilidad.

La simplicidad, o el arte de maximizar la cantidad de
trabajo no realizado, es esencial.

Las mejores arquitecturas, requisitos y diseños
emergen de equipos auto-organizados.

A intervalos regulares el equipo reflexiona sobre
cómo ser más efectivo para a continuación ajustar y
perfeccionar su comportamiento en consecuencia.

Conclusión


Los métodos ágiles son una herramienta muy útil se se usan adecuadamente y no existe, ni existirá, una formula para saber cual usar. Se deben de usar dependiendo de los recursos y el tipo de proyecto. Sin duda los métodos ágiles son una herramienta que debemos conocer ya que juega una pieza fundamental en el desarrollo de software en la actualidad. Pero, que lamentablemente, no garantizan un producto de calidad. Eso lo hace todo el equipo de desarrollo.


Referencias:


Alianza Ágil . (2001). Manifiesto por el Desarrollo Ágil de Software. 2/12/2017, de Alianza Ágil Sitio web: http://agilemanifesto.org/iso/es/manifesto.html

Jose Carlos Carvajal Riola. (2008). Metodologías . En METODOLOGÍAS ÁGILES(176). Barcelona, España: Tesis Final de Máster

M.C. José Martín Olguín Espinoza. (2004). Análisis Orientado a Objetos Ingeniería del Software. Universidad Autónoma de Baja California.




Rodrigo R. Rubio Haro



Entradas populares de este blog

Tabla Periódica de la Web: Resumen

  Resumen. Al momento de desarrollar un proyecto, se propone la fase de resumen del proyecto en donde se recolecta la información necesaria para proceder con la planeación del proyecto. Aunque todas las etapas de desarrollo son importantes, al ser la primera, definirá en gran parte si el proyecto tiene éxito o no. Veremos el desglose de cada uno de los elementos de esta etapa. En la etapa de resumen tenemos 8 elementos. 1. Definición de Proyecto (PrD) Definir el proyecto es establecer la idea principal del proyecto, la piedra angular. En este primer elemento debemos considerar que deberá moldearse y pulirse esa idea. 2. Target (Ta) Definida la idea principal del proyecto, tenemos que delimitar lo más posible el público objetivo o target que se verá beneficiado del proyecto.  3. Objetivos (Go) Establecer objetivos específicos sobre que tendrá que realizar el sistema, estos deben de estar en función del público elegido. 4. Especificaciones Técnicas (TS) Las especificaciones Técnicas a di

Tabla Periódica de la Web: Planeación

Planeación. Una vez que tenemos claro que cosas se quieren llevar a cabo en nuestra webapp, diseñar un plan teniendo en cuenta nuestros objetivos, recursos, presupuesto, entre otros factores, nos permitirá desarrollar nuestro proyecto enfocado completamente a las necesidades planteadas.  Es importante integrar al equipo de desarrollo en la etapa de planeación, se fomenta el sentimiento de propiedad y usualmente se verán más comprometidos con el proyecto. Este punto se puede argumentar con el principio de los equipos autónomos de las metodologías ágiles. 1. Investigación y desarrollo de Conceptos Una vez dados los primeros requisitos del cliente, se deberá hacer una investigación, está dependerá de la complejidad de lo solicitado. Investigar y desarrollar los conceptos dados. La investigación tiene como fin que el equipo de desarrollo comience a formular propuestas para la arquitectura de la aplicación. 2. Lluvia de ideas Organizar sesiones de este tipo, permitirá al equipo de desarroll

Calidad en aplicaciones web (Web Apps)

RUBIO HARO RODRIGO RODOLFO CALIDAD PARA WEB APPS Se suele definir como propiedades de un objeto, producto, servicio, o en realidad, casi cualquier cosa; que permite caracterizarla y valorarla con respecto a las restantes de su categoría, sector o especie. La industria del software se ha guiado de ciertos estándares para asegurar la calidad. Sin embargo, con el  crecimiento exponencial de la aplicaciones web, se han fragmentados algunos de estos aspectos para asegurar "la calidad". No es lo mismo hacer un sistema tradicional, que desarrollar una aplicación web, y por lo tanto, hemos de considerar los conceptos que mas influyen en la calidad de una aplicación web. Las características más relevantes -usabilidad, funcionalidad, fiabilidad, eficiencia y capacidad de mantenimiento- proporcionan una base verdaderamente útil para evaluar la calidad de los sistemas basados en Web. Olsina y sus colaboradores [OSL99] han preparado un «árbol de requisitos de calidad» que iden