Desarrollo de software adaptativo - Conceptos

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

Teoría de sistemas adaptativos complejos (CAS)

Brian Arthur y sus colegas, en el instituto Santa Fe, utilizaron la teoría de los 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 tratando de convencer a los economistas de la corriente principal de que su punto de vista, dominado por supuestos fundamentales de rendimientos decrecientes, equilibrio y dinámicas deterministas, ya no era suficiente para comprender la realidad. El nuevo mundo es uno de rendimientos crecientes, inestabilidad e incapacidad para determinar causa y efecto.

Los dos mundos difieren en comportamiento, estilo y cultura. Piden

  • Diferentes técnicas de gestión
  • Diferentes estrategias
  • Diferente comprensión

Desarrollo de software complejo

Con el alcance de las aplicaciones de software en expansión, 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 basadas en los principios básicos de estabilidad y 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 crecientes que son impredecibles, no lineales y rápidos.

Para abordar los problemas de este segundo mundo, Jig Highsmith ofreció un marco de desarrollo de software adaptable 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 requieren una mentalidad diferente de 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 da en la primera sección de este capítulo.

  • Perspectiva práctica basada en

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

    • Consul , practicar y escribir sobre técnicas de Desarrollo rápido de aplicaciones (RAD); y trabajando con compañías 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:

  • Aparición
  • Complejidad

Aparición

En proyectos complejos de desarrollo de productos de software, los resultados son inherentemente impredecibles. Sin embargo, los productos exitosos emergen de tales entornos todo el tiempo.

Esto puede suceder por Emergencia, como se ilustra en la teoría de los Sistemas Adaptativos Complejos (CAS). Se puede entender con un simple ejemplo, el comportamiento de bandada de las aves.

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

  • Cada pájaro intenta

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

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

    • Avanzar hacia el centro de masa de aves percibido en su vecindario.

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

  • Sin embargo, existe un comportamiento emergente, el agrupamiento de aves. Cuando las aves errantes se apresuran a ponerse al día, la bandada se divide alrededor de obstáculos y reformas 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 gestionar y organizar esa libertad individual hasta la noción de que un nuevo orden creativo emerge impredeciblemente de la autoorganización espontánea.

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

Complejidad

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

  • Los individuos de un equipo, como los desarrolladores, clientes, proveedores, competidores y accionistas, sus números y su velocidad.

  • Tamaño y complejidad tecnológica.

Prácticas de desarrollo de software adaptativo

Adaptive Software Development 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, que tienen ramificaciones para reunir los 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 "Hazlo bien la primera vez" no funciona, ya que no puedes 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 el alcance (características, rendimiento, niveles de defectos), la programación y los recursos son tan grandes que nunca puede haber un valor óptimo. Por lo tanto, el objetivo es cambiar para ofrecer el mejor valor en el mercado competitivo.

Prácticas RAD

Las prácticas RAD generalmente implican 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 continua de software
  • Equipos dedicados con salas de guerra

Los proyectos RAD tienen un sabor inherente adaptativo y emergente. 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 de 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 creciente cuerpo de conocimiento científico (es decir, teoría CAS) explica por qué funcionan. Esto debería proporcionar una base para un uso más extenso de estas prácticas.