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

Documentación de Software: Artefactos

Concepto Un artefacto es un producto tangible resultante del proceso de desarrollo de software. Ya sea un documento o un modelo. Para hacer el desarrollo de un sistema de Software manejable completo, los artefactos están organizados en conjuntos correspondientes a las disciplinas. Como lo pueden ser para arquitectura de software, diseño de software o para la base de datos. Los roles usan artefactos para ejecutar actividades y producen artefactos durante la ejecución de sus actividades. Arquitectura de Software  Modelo de desarrollo Modelo de análisis Modelo de Diseño  Documento de Arquitectura de Software Modelo de Implementación Directrices de Programación Diseño de Software  Diagramas de casos de Uso Análisis de clases (Diagramas de clase y objetos) Diagramas de secuencia Base de Datos Modelo de datos Entidad-relación Modelo de diseño Modelo conceptual Modelo físico Modelo lógico Artefactos

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...

Mapa Conceptual Métodos Ágiles