Desarrollo de software adaptativo: conceptos

En este capítulo, comprenderemos los diversos conceptos del desarrollo de software adaptativo.

Teoría de los sistemas adaptativos complejos (CAS)

Brian Arthur y sus colegas, en el instituto de Santa Fe, utilizaron la teoría de Sistemas Adaptativos Complejos (CAS) para revolucionar la comprensión de la Física, la Biología, la Evolución y la Economía.

Brian Arthur culminó sus más de dos décadas de intentar convencer a los economistas de la corriente principal de que su punto de vista, dominado por supuestos fundamentales de rendimientos decrecientes, equilibrio y dinámica determinista, ya no era suficiente para comprender la realidad. El nuevo mundo es uno de rendimientos crecientes, inestabilidad e incapacidad para determinar la causa y el efecto.

Los dos mundos difieren en comportamiento, estilo y cultura. Ellos piden -

  • Diferentes técnicas de gestión
  • Diferentes Estrategias
  • Entendimiento diferente

Desarrollo de software complejo

Con la expansión del alcance de las aplicaciones de software, incluso las organizaciones de desarrollo de software están acumulando contradicciones similares a las mencionadas anteriormente.

  • One World está representado por el desarrollo determinista, derivado de prácticas de gestión que tienen sus raíces en los fundamentos de la estabilidad y la previsibilidad (que en términos de Arthur significa rendimientos decrecientes)

  • Second World está representado por las industrias que pasan de entornos de retorno decrecientes a entornos crecientes que son impredecibles, no lineales y rápidos.

Para abordar los problemas de este segundo mundo, Jig Highsmith ofreció un marco, Desarrollo de software adaptativo, que es diferente del Desarrollo de software determinista.

El desarrollo de software adaptativo se centra en abordar los sistemas complejos:

  • Desarrollo de software adaptativo para el ciclo de vida del desarrollo.

  • Técnicas de gestión adaptativa que exigen una mentalidad diferente a la de las prácticas tradicionales de gestión de proyectos.

En este tutorial, puede comprender ambas implementaciones.

El desarrollo de software adaptativo (ASD) se basa en dos perspectivas:

  • Perspectiva conceptual basada en la teoría de Sistemas Adaptativos Complejos (CAS), como se presenta en la primera sección de este capítulo.

  • Perspectiva práctica basada en

    • Años de experiencia con metodologías de desarrollo de software deterministas.

    • Consultar, practicar y escribir sobre técnicas de desarrollo rápido de aplicaciones (RAD); y trabajar con empresas de software de alta tecnología para gestionar el desarrollo de sus productos.

En este capítulo, comprenderá la perspectiva conceptual del desarrollo de software adaptativo.

Conceptos de sistemas adaptativos complejos (CAS)

La teoría de los sistemas adaptativos complejos (CAS) tiene muchos conceptos. El desarrollo de software adaptativo se basa en dos de estos conceptos:

  • Emergence
  • Complexity

Aparición

En proyectos de desarrollo de productos de software complejos, los resultados son intrínsecamente impredecibles. Sin embargo, los productos exitosos surgen de tales entornos todo el tiempo.

Esto puede suceder por Emergencia, como se ilustra en la teoría de Sistemas Adaptativos Complejos (CAS). Puede entenderse con un ejemplo simple, comportamiento de bandadas de aves.

Cuando observa una bandada de pájaros, nota que:

  • Cada pájaro intenta

    • Mantenga una distancia mínima de otros objetos en el entorno, incluidas otras aves.

    • Haga coincidir las velocidades con las aves de su vecindario.

    • Muévase hacia el centro de masa percibido de aves en su vecindad.

  • No hay reglas de comportamiento para el grupo. Las únicas reglas son sobre el comportamiento de aves individuales.

  • Sin embargo, existe un comportamiento emergente, la bandada de pájaros. Cuando los pájaros errantes se apresuran a alcanzarlos, la bandada se divide alrededor de los obstáculos y se reforma en el otro lado.

Esto muestra el requisito de los cambios de modelo mental más difíciles en el desarrollo adaptativo: desde las formas de administrar y organizar esa libertad individual hasta la noción de que un nuevo orden creativo emerge de manera impredecible a partir de la autoorganización espontánea.

Además del desarrollo, la emergencia es el concepto más importante también desde la perspectiva de la gestión.

Complejidad

En el contexto del desarrollo de software, la complejidad se trata de:

  • Las personas de un equipo como los desarrolladores, clientes, proveedores, competidores y accionistas, su número y su velocidad.

  • Tamaño y complejidad tecnológica.

Prácticas de desarrollo de software adaptativo

El desarrollo de software adaptativo ofrece una perspectiva diferente sobre las prácticas de gestión de software. En las secciones siguientes, puede comprender las dos prácticas importantes: Calidad y RAD, las cuales tienen ramificaciones para la recopilación de requisitos.

Puede encontrar los detalles de todas las prácticas en el capítulo, Prácticas de desarrollo de software adaptativo en este tutorial.

Calidad

En un entorno complejo, la antigua práctica de "Hágalo bien la primera vez" no funciona, ya que no puede predecir lo que es correcto al principio. Debe tener el objetivo de producir el valor correcto. Sin embargo, en un entorno complejo, las combinaciones y permutaciones de componentes de valor como alcance (características, rendimiento, niveles de defectos), programación y recursos son tan vastas que nunca puede haber un valor óptimo. Por lo tanto, el enfoque es cambiar para ofrecer el mejor valor en el mercado competitivo.

Prácticas RAD

Las prácticas RAD generalmente involucran una combinación de lo siguiente:

  • Ciclo de vida evolutivo
  • Grupos de enfoque de clientes, sesiones JAD, revisiones técnicas
  • Gestión de proyectos en cajas de tiempo
  • Ingeniería de software continua
  • Equipos dedicados con salas de guerra

Los proyectos RAD tienen un sabor emergente y adaptativo inherente. Muchas organizaciones de TI están en contra de RAD. Sin embargo, Microsoft y otros han producido un software increíblemente grande y complejo utilizando técnicas comparables a RAD porque plantea preguntas sobre su visión fundamental del mundo.

Las prácticas RAD y el proceso de Microsoft son ejemplos de desarrollo adaptativo en acción. Darles una etiqueta (es decir, desarrollo adaptativo) y darse cuenta de que hay un cuerpo creciente de conocimiento científico (es decir, teoría CAS) explica por qué funcionan. Esto debería proporcionar una base para un uso más amplio de estas prácticas.