Diferencia entre programación en espiral y programación orientada a eventos

Diferencia entre programación en espiral y programación orientada a eventos

Hace unos días uno de los lectores del blog, me escribió si podía tocar el tema acerca de cual era la diferencia entre la programación en espiral y la programación orientada a eventos, con mucho gusto le respondo lo siguiente:

La programación en espiral y la programación orientada a eventos no son similares ni tampoco opuestos, de hecho pueden convivir entre ellos.

PROGRAMACIÓN EN ESPIRAL

La programación en espiral entra en la clasificación de Modelo de desarrollo de software
Y la programación orientada a eventos entra en la clasificación de Paradigma de programación.

Hay un concepto genérico que es el ciclo de vida del software, que comprende desde el requerimiento, desarrollo e implementación, etc. Existen distintos modelos para hacerle frente al ciclo de vida de software, por ejemplo el clásico modelo en cascada, donde todo es en secuencia y dependiente de la fase anterior para empezar la siguiente. La desventaja es que hasta la última etapa es donde se ve el resultado por lo que difícilmente se adapta a los cambios.

Existen otros modelos que aceptan cambios uno de ellos es la Programación en espiral/Modelo en espiral, donde el ciclo de vida se divide en un cuadrante. En teoría es útil para proyectos grandes por que permite hacer análisis de riesgo, actualmente no he escuchado que se utilice, es algo complejo, de hecho la IEEE lo tiene clasificado como modelo no operativo.

Hay otras alternativas como lo son el Modelo 'ágil' y sus metodologías ágiles que se basan en ese tipo de modelo (ágil) como Scrum, XP, etc.

Al ser un modelo de desarrollo de software es independiente de que lenguaje se usa, ya que solo es una manera de 'partir' la complejidad del proyecto.

PROGRAMACIÓN ORIENTADA A EVENTOS

La programación orientada a eventos es un paradigma donde el flujo del sistema depende de las acciones que realice el usuario, éste paradigma no es excluyente y puede convivir con otros paradigmas, por ejemplo al entrar a https://www.google.com/, la interfaz está a la espera de lo que realice el usuario (ingresar texto o dar clic en los vínculos), por lo que está utilizando el paradigma orientado a eventos pero también podría por ejemplo utilizar el paradigma orientado a objetos, esto depende de como los desarrolladores quieran manejar Javascript. Cualquier lenguaje que permita realizar interfaces y manipularlas (javascript,java, c#, vb, python, etc.), se podrá trabajar con éste paradigma,  aunque considero que el lenguaje con el que se puede trabajar más libremente con éste paradigma es Javascript pero para enseñar los conceptos quizá es mejor un lenguaje tipado como java, c#, ya que el código javascript se puede convertir en spaghetti.

CONCLUSIÓN

En conclusión: el modelo en espiral describe cómo se afrontarán cada una de las etapas de todo el ciclo de vida de software (análisis, desarrollo, implementación, etc.) mientras que la programación orientada a eventos se ubica en la etapa de desarrollo del ciclo de vida de software.