Solange Jimenez S.
Economista e Investigadora
La metodología Agile viene del desarrollo de software. Ha sido adoptada por otras industrias. Está basada en la creación iterativa e incremental que resulta de la colaboración de equipos auto-organizados y multidisciplinarios.
Algunos de los métodos ágiles más notables son los siguientes:
Adaptive Software Development o Desarrollo Adaptable de software (ASD) de Jim Highsmith y Sam Bayer, se caracteriza por su adaptación al cambio. Ciclo: especular-colaborar-aprender, en lugar de planificar-diseñar-construir. Está orientado a la funcionalidad del producto en vez de las tareas necesarias para alcanzar el objetivo.
El método Crystal Clear, indicado para pequeños equipos de desarrollo sentados cerca el uno del otro para facilitar la comunicación. Utiliza pizarras blancas para mejorar el acceso a la información por parte de los integrantes del equipo y el ritmo de desarrollo y entrega es rápido (cada 2 semanas o una vez al mes). De esta manera el testeo puede suceder rápidamente. Durante todo el proceso de desarrollo, el equipo se cuestiona a sí mismo, para mejorar continuamente.
Feature-Driven Development o desarrollo basado en funcionalidades (FDD) es un enfoque de desarrollo ágil de software creado por Jeff De Luca y Peter Coad. Los desarrolladores se agrupan en dos tipos, "dueños de clases" o "programadores jefe". Ciclo: desarrollar (un modelo global); construir una lista de funcionalidades; planificar por funcionalidad; diseñar por funcionalidad; construir por funcionalidad.
Dynamic Systems Development Method o Método de Desarrollo de Sistemas Dinámicos (DSDM). Fundamentos: involucración del cliente, equipos autónomos y con poder decisión, transparencia y alta frecuencia de desarrollo, comunicación con las partes interesadas, desarrollo iterativo e incremental, testeo continuo y cooperación de todas las partes involucradas. Ciclo: estudio de viabilidad (para decidir si es realista o no)-informe; prototipo; análisis de funcionalidades (en el que se escriben todas las especificaciones); iteraciones del diseño técnico; desarrollo; entrega.
Adaptive Software Development (ASD), es un método de adaptación continua. Se basa en automatizar e industrializar la mayor parte de procesos posibles. Se emplean herramientas de modelación y se genera de forma automática todo el código posible. No hay ningún ciclo estático.
Behavior Driven Development (BDD), dirigido por el comportamiento. Las funcionalidades son descritas en conjunto por los usuarios, desarrolladores y demás partes involucradas en el proyecto. El objetivo se describe mediante ejemplos, facilitándole así a los desarrolladores entender el trabajo a realizar. Utiliza el método Given-When-Then, un enfoque desarrollado por Daniel Terhorst-North y Chris Matts, el cual utiliza pruebas de aceptación para cada historia de usuario.
Domain Driven Design (DDD), una técnica de diseño de aplicaciones personalizadas, donde el diseño es el centro del negocio, y no los aspectos técnicos. El equipo técnico y el funcional (desarrolladores de dominio y expertos del dominio) construyen un modelo/prototipo de la aplicación, bajo un lenguaje común que incrementa la comprensión entre ambos equipos.
Test Driven Development (TDD), es el desarrollo dirigido por Tests o pruebas. Las pruebas se escriben antes del código, y cada prueba describe un rasgo de la funcionalidad.
Lean software development, desarrollo de software lean (traducción aproximada en este contexto de lean: «austero», «firme», «seguro» o «eficiente»). Inicialmente, originado en el Sistema de Producción de Toyota. Todo lo que no añade valor al cliente se considera un desperdicio y es eliminado: códigos y funcionalidades innecesarias; retraso en el proceso de desarrollo de software; requisitos poco claros; burocracia y comunicación interna lenta.
El OpenUP, es un proceso mínimo y suficiente, lo que significa que solo el contenido fundamental y necesario es incluido. Por lo tanto, no provee lineamientos para todos los elementos que se manejan en un proyecto, pero tiene los componentes básicos que pueden servir de base a procesos específicos.
Scrum, es un proceso en el que se aplican de manera regular un conjunto de buenas prácticas para trabajar colaborativamente en equipo y obtener el mejor resultado posible de proyectos. Características: adoptar una estrategia de desarrollo incremental, en lugar de la planificación y ejecución completa del producto; basar la calidad del resultado más en el conocimiento tácito de las personas en equipos auto-organizados que en la calidad de los procesos empleados y solapar las diferentes fases del desarrollo, en lugar de realizar una tras otra en un ciclo secuencial o en cascada. Durante cada sprint, un periodo entre una y cuatro semanas (la magnitud es definida por el equipo y debe ser lo más corta posible), el equipo crea un incremento de software potencialmente entregable (utilizable).
En general, el método Agile sigue cuatro valores aplicables al desarrollo de software y otros ámbitos del trabajo creativo: valorar más a los individuos y su interacción que a los procesos y las herramientas; valorar más el software que funciona que la documentación exhaustiva; valorar más la colaboración con el cliente que la negociación contractual y valorar más la respuesta al cambio que el seguimiento de un plan.
Es clave tomar en cuenta cada contexto para seleccionar el enfoque y las herramientas apropiadas.