¿Qué es el desarrollo de software adaptativo?

Un enfoque de desarrollo de software adaptativo se basa en un modelo empírico de control de procesos. La palabra “empírico” significa “basado en la observación” y eso significa que tanto el diseño de la solución como el proceso para crear la solución se ajustan continuamente en función de la observación durante todo el proyecto.

  • Todas las metodologías ágiles son de naturaleza adaptativa y un enfoque adaptativo fomenta los cambios a lo largo del proyecto para optimizar el diseño de la solución general.
  • Lo contrario de “adaptativo” es “impulsado por el plan”. Un proyecto impulsado por un plan intenta definir y estabilizar los requisitos del proyecto antes del inicio del proyecto y controlar los cambios una vez que el proyecto está en progreso.

Un proceso adaptativo es el más adecuado para proyectos con mayores niveles de incertidumbre. Un ejemplo que me gusta usar es: si se dispusiera a encontrar una cura para el cáncer, sería algo ridículo intentar desarrollar un plan detallado para el esfuerzo inicial porque hay mucha incertidumbre. Esa es una situación ideal para un proceso de adaptación: comienza con una dirección general basada en lo que sabe y continúa refinando la dirección del proyecto en función de las observaciones a lo largo de la duración del proyecto.

Chuck Cobb
Autor de “La guía del administrador de proyectos para dominar Agile”
Echa un vistazo: Agile Project Management Academy

Adaptive Software Development (ASD) es un proceso de desarrollo de software que surgió del trabajo rápido de desarrollo de aplicaciones de Jim Highsmith y Sam Bayer. Es un principio de diseño para la creación de sistemas de software. El principio se centra en la rápida creación y evolución de los sistemas de software. Nunca hay un período en el que el software esté terminado; solo hay períodos estables entre los nuevos lanzamientos. El desarrollo de software adaptativo surgió del método de desarrollo rápido de aplicaciones. Estos dos métodos son similares en estructura, pero el desarrollo rápido de aplicaciones permite un momento en que el proyecto finaliza, mientras que el desarrollo de software adaptativo no.

El desarrollo de software adaptativo reemplaza el ciclo tradicional en cascada con una serie repetitiva de ciclos de especulación, colaboración y aprendizaje. Este ciclo dinámico proporciona un aprendizaje continuo y una adaptación al estado emergente del proyecto. Las características de un ciclo de vida de ASD son que está enfocado en la misión, basado en características, iterativo, timeboxed, impulsado por el riesgo y tolerante al cambio.

El enfoque del desarrollo de software adaptativo está en el código de la computadora. En lugar de planificar el software de antemano, los desarrolladores tienen una idea básica en mente y se ponen a trabajar. Cuando las piezas necesitan cambiarse o adaptarse a un nuevo sistema, los codificadores simplemente lo hacen. Si el programa necesita un parche, alguien lo hace.

En general, la falta de pasos previos a la planificación permite a los desarrolladores crear el software muy rápidamente. Si bien esto ocasionalmente dará como resultado un software que no realiza las funciones precisas requeridas, eso generalmente no es un problema. El ciclo de desarrollo en este proceso es tan corto que una nueva versión con características adicionales puede salir muy rápidamente. Este proceso o creación rápida de prototipos es la piedra angular tanto del desarrollo de software adaptativo como del desarrollo rápido de aplicaciones.

El desarrollo de software adaptativo es un principio de diseño para la creación de sistemas de software. El principio se centra en la rápida creación y evolución de los sistemas de software.
El método de desarrollo adaptativo surgió del método de desarrollo rápido de aplicaciones.
El desarrollo de software adaptativo reemplaza el ciclo tradicional en cascada con una serie repetitiva de ciclos de especulación , colaboración y aprendizaje .

ASD se compone de tres pasos ( especular , colaborar y aprender ). Entonces, aquí los pasos descritos brevemente:
Especular -> Iniciación y planificación
Colaborar -> Desarrollo de funciones concurrentes
Aprender -> Revisión de calidad