Conecta con nosotros

A Fondo

Siete metodologías «Agile» que puedes incorporar desde ya a tu empresa

Publicado el

El desarrollo Agile ha supuesto un antes y un después en los departamentos IT de las empresas. Su apuesta por métodos de programación de software basados en el desarrollo iterativo e incremental, el ser capaces de adaptarse a un entorno de requisitos que cambia con frecuencia y la apuesta por implicar al cliente en los proyectos ha conseguido agilizar tareas, acortar tiempos de producción, ahorrar en costes innecesarios y comprender mejor qué es lo que se precisa para llevar un proyecto a buen puerto.

Por otro lado, ha supuesto pasar de una estructura fuertemente jerarquizada a otra en la que prima la colaboración entre equipos autoorganizados, multidisciplinares, capaces de trabajar de forma simultánea en las distintas fases del proyecto y tomar y compartir decisiones a corto plazo.

Incorporar estas metodologías sin embargo no siempre es sencillo. Al ser las iteraciones más cortas, los mismos procesos se repiten con más frecuencia. Así, cada iteración del ciclo de vida incluye planificación, análisis de requisitos, diseño, codificación, pruebas y documentación, lo cual no siempre está al alcance de todas las empresas.

Pese a ello desde su puesta en marcha en los años 70, su adaptación a los departamentos IT de las empresas en los años 90 y su popularización con el cambio de siglo, ha demostrado ser una de las formas más eficaces y sobre todo, menos frustrantes, de desarrollar nuevo software. Igualmente interesante es comprender que no existe una única metodología agile o forma de trabajar ágil. Y aunque es cierto que la inmensa mayoría comparten principios que son muy similares, también lo es que mientras que algunas ponen su foco de acción en el cliente, otras priorizan el equipo; mientras que unas apuestan desde el primer momento por el cambio continuo, otras son más conservadoras y se definen como tolerantes al cambio. Dicho lo cual, a continuación os mostramos siete de las metodologías agile más populares en todo tipo de empresas.

Desarrollo adaptativo de software

Inspirado en el la metodología del desarrollo rápido de aplicaciones patrocinado por Jim Highsmith y Sam Bayer, el desarrollo adaptativo de software (ASD) apuesta por la continua adaptación del proceso de desarrollo al trabajo real.

Un proyecto basado en la «filosofía» ASD parte de una serie de ciclos continuos de especulación, colaboración y aprendizaje: enfocado a la misión, basado en características, iterativo, guiado por riesgos y tolerante al cambio.

Cada uno de los ciclos está basado en las cortas iteraciones con diseño, construcción y pruebas. Durante estas iteraciones el conocimiento se obtiene introduciendo pequeños errores basados en falsas suposiciones y al corregir esos errores en la fase de prueba, se accede así a una mayor experiencia, consiguiendo eventualmente dominar por completo el problema.

Agile Unified Process

El Proceso Unificado de Desarrollo Software o simplemente Proceso Unificado es un marco de desarrollo de software que se caracteriza por estar dirigido por casos de uso, centrado en la arquitectura y por ser iterativo e incremental. El refinamiento más conocido y documentado del Proceso Unificado es el Proceso Unificado de Rational (RUP) o simplemente UP. Sus fases son Inicio (se define el proyecto), Elaboración (se obtiene la visión refinada del proyecto a realizar), Construcción (abarca la evolución hasta convertirse en un producto listo que incluye los requisitos mínimos) y Transición (fase final en la que un desarrollo debe estar listo para ser probado).

En el terreno de las metodologías Agile, el Proceso Unificado Ágil (Agile Unified Process) representa una versión simplificada de RUP. Describe en este sentido una manera más simple de desarrollar y validar aplicaciones y desarrollos, incluyendo técnicas como el desarrollo dirigido por pruebas, el modelado ágil, gestión de cambios ágil y refactorización  para mejorar la productividad.

Lean software development

La metodología Lean tiene gran predicamento en el mundo industrial y se hizo famosa en los años 60 por ser la impulsora del modelo de producción de las fábricas de Toyota. Aplicada al mundo del desarrollo de software, esta metodología apuesta por eliminar lo que denomina desperdicio es decir, el trabajo que no aporta valor al resultado final.

El desarrollo de software bajo esta filosofía se basa en los siguientes principios: eliminar los desperdicios (todo aquello que no aporta valor al cliente, como código o funcionalidades no deseadas), amplificar el aprendizaje (incorporar una metodología de aprendizaje continuo), tomar decisiones lo más tarde posible (ya que los requisitos de los clientes pueden cambiar de un día para otro, son sustituidos por user stories), entregar lo antes posible (cada entrega incluya lo que necesitan los usuarios lo antes posible, basándose en prioridades, impacto o valor), potenciar el equipo (facilitar que los desarrolladores participen en la toma de decisiones), crear la integridad (contar con un sistema de pruebas automatizadas) y visualizar todo el conjunto (pensar en grande, actuar en pequeño, equivocarse rápido y aprender con rapidez).

Desarrollo Kanban

Como muchos saben, Kanban es un popular método de gestión de tareas que muchas empresas aplican a la hora de abordar la planificación y ejecución de todo tipo de proyectos. En los últimos años esta metodología agile también se ha incorporado a los departamentos IT y al desarrollo de aplicaciones siguiendo los mismos principios básicos. Aplicado en este terreno, su principal objetivo es limitar el trabajo en curso que indica qué producir, cuándo producirlo y cuánto producir.

Las cinco prácticas centrales de esta metodología incluyen Visualizar (visualizar el flujo de trabajo para comprender cómo avanza), Limitar el trabajo en curso (el cambio continuo, gradual y evolutivo es la manera de hacer mejoras en el sistema), Dirigir y gestionar el flujo (supervisar, medir y reportar el flujo de trabajo en cada estado), Hacer las políticas de proceso explícitas (determinar reglas y directrices de trabajo en función de las necesidades) y Reconocer y proponer oportunidades de mejora.

A la hora de implementarlo el sistema apuesta por perseguir el cambio incremental y evolutivo y por asumir posiciones de liderazgo en todos los niveles, de modo que la responsabilidad es compartida por todos en cada uno de los mismos.

Programación extrema (XP)

La programación extrema (XP) es una metodología agile de desarrollo de software formulada por Ken Beck en su libro de 1999, «Programming Explained: embrace change«. Al igual que otras metodologías agile se diferencia del desarrollo tradicional en que pone más énfasis en la adaptabilidad que en la previsibilidad.

Los defensores de la XP consideran que los cambios de requisitos sobre la marcha son un aspecto natural, inevitable e incluso deseable del desarrollo de proyectos, y que resulta mucho más natural ser capaz de adaptarse a los cambios de los requisitos en cualquier punto del ciclo de vida del proyecto que intentar definir todos los necesarios al principio del mismo.

Los valores fundamentales de esta metodología son los siguientes: Simplicidad (se apuesta por la refactorización para mantener el código simple a medida que crece), Comunicación (el código comunica mejor cuanto más simple sea. Si es complejo, hay que esforzarse para hacerlo inteligible), Retroalimentación (se implica al cliente en el desarrollo del proyecto y se conoce su opinión en tiempo real, apostando por ciclo de desarrollo muy cortos), Valentía (diseñar y programar para hoy, no para mañana. Se puede reconstruir el código siempre que sea necesario) y Respeto (no se pueden hacer cambios que hagan que las pruebas existentes fallen).

SCRUM

SCRUM es un marco de trabajo que define un conjunto de prácticas y roles, y que puede tomarse como punto de partida para definir el proceso de desarrollo que se ejecutará durante un proyecto. Este modelo fue identificado y definido por Ikujiro Nonaka y Takeuchi a principios de los 80, al analizar cómo desarrollaban los nuevos productos algunas de las grandes empresas tecnológicas como Xerox, Canon, Brother o Epson.

Aplicado al desarrollo de software, se basa en tres pilares básicos: Adoptar una estrategia de desarrollo incremental, Basar la calidad del resultado en el conocimiento de las personas que forman parte de los equipos y no tanto en los procesos y Solapar las distintas fases de desarrollo en vez de realizar las tareas de forma secuencial.

Otras características que se tienen en cuenta con la Gestión regular de la expectativas del cliente (feedback continuo), la apuesta por equipos auto-dirigidos y auto-organizados y las organización de una reunión diaria de SCRUM que no más de 15 minutos de duración que evalúa el estado del proyecto.

Método de desarrollo de sistemas dinámicos

El Método de Desarrollo de Sistemas dinámicos (en inglés Dynamic Systems Development Method o DSDM) es un método que provee un framework para el desarrollo ágil de software, apoyado por la continua implicación del cliente final y extremadamente sensible a requerimientos cambiantes.

Diseñado en los años 90, es uno de los primeros sistemas que aborda los problemas que ocurren con frecuencia en el desarrollo de sistemas de información en áreas como la gestión del tiempo y el presupuesto y otras razones comunes por los que el proyecto puede acabar fracasando como la falta de implicación del cliente o del management de la propia empresa.

 

 

 

Periodista tecnológico con más de una década de experiencia en el sector. Editor de MuyComputerPro y coordinador de MuySeguridad, la publicación de seguridad informática de referencia.

Lo más leído