Está en la página 1de 2

EL caos en la ingeniería del

software

Vamos a comenzar compartiendo una definición por Glenn E. James que dice
que “el borde del caos es un estado natural entre el orden y el caos, un gran
compromiso entre la estructura y la sorpresa. El borde del caos puede ser
visualizado como un inestable parcialmente estructurado estado del universo. Es
inestable porque está constantemente atraído por el caos o al orden absoluto.”
El caos habitualmente se refiere a lo impredecible, a lo inesperado que causa
una reacción a la cual no se está preparado.
Con esa definición, es evidente que cada vez que sucede una cosa inesperada o
sorpresiva, en cualquier aspecto de la vida cotidiana o eventualidad en algo que
estemos desarrollando, estamos ante una situación caótica, que nos saca de
una posición de comodidad, o de la rutina a la que estamos acostumbrados.
En un escenario ideal, se espera que el desarrollo del software, se dé, de una
forma evolutiva de las actividades, sin eventualidades ni complicaciones, que
afecte al modelo que se esté utilizando.
El borde del caos se define como el estado natural entre el orden y el caos, un
compromiso grande entre la estructura y la sorpresa. Este borde a su vez, es
muy inestable, ya que está constantemente atraído hacia el caos o el orden
absoluto.
Tenemos la tendencia a pensar de que en una organización, el orden lleva a un
resultado óptimo, y que este es un estado ideal. Pero, estudios realizados
previamente, indican que encontrarse en una situación donde estamos fuera de
equilibrio, proporciona notables incrementos en la creatividad, mejoras en la
organización propia y mejoras en el rendimiento en general.
El exceso de caos, por otro lado, puede hacer imposible la coordinación y
coherencia. La falta de estructura no siempre significa desorden.
La coordinación en un equipo de desarrollo de software, trae las ventajas de dar
la prioridad de la velocidad de desarrollo con el enfoque de cero defectos.
Extender el desarrollo a fin de lograr alta calidad podría dar como resultado la
entrega tardía del producto cuando haya desaparecido el espacio de
oportunidad.
Es importante notar que ser el primero en llegar al mercado no es garantía de
éxito. En realidad, muchos productos de software muy exitosos han llegado en
segundo o hasta en tercer lugar al mercado, estos aprenden de los errores de
sus antecesores.
Utilizando el concepto de caos y la coordinación para el proceso evolutivo en la
ingeniería del software, obtenemos el desarrollo adaptable de software, que es
un modelo de implementación de patrones ágiles para desarrollo de software.
Al igual que otras metodologías ágiles, su funcionamiento es cíclico y reconoce
que en cada iteración se producirán cambios e incluso errores, que generan
riesgos en el desarrollo lo cual nos sirve para aprender y volver a comenzar el
ciclo.
El caos en el desarrollo de software proviene de varias fuentes, que son la
naturaleza variable intrínseca de requisitos, los cambios introducidos por las
nuevas tecnologías, la dinámica del proceso de software y la naturaleza
compleja de la interacción humana.
Estas condiciones son suficientes para el desarrollo de sistemas adaptativos
complejos, donde los agentes son los desarrolladores de software o proyectos
colaborativos.
Para el desarrollo de sistemas complejos, se propone formar pequeños
equipos con sincronización continua y estabilización periódicamente; realizar
pruebas en paralelo como parte del proceso de la evolución; enfocar la
creatividad por las características evolutivas y recursos.
El reto para los equipos de software y sus administradores es establecer un
balance apropiado entre estos parámetros críticos del proyecto (a los que nos
referimos como caos), y el producto, y la satisfacción del cliente que es el
árbitro definitivo de la calidad del software.
El caos tiene aspectos negativos así como positivos.
El efecto negativo del caos en la ingeniería del software es que frena el
proyecto, requiere de un nuevo planteamiento, provoca una sensación de
inseguridad o inestabilidad del sistema a desarrollar para el programador; en
contraste el efecto positivo es proporcionarnos una situación, que fuerce al
cambio, a las mejoras, evolución, al trabajo en equipo y la coordinación dentro
de un proyecto.
Fin.

También podría gustarte